You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2124 lines
62 KiB

(window.webpackJsonp = window.webpackJsonp || []).push([
["chart-bottom-toolbar"], {
"+GaQ": function(e, t, n) {
"use strict";
n.d(t, "a", (function() {
return a
}));
var i = n("q1tI");
function a(e) {
if (e.map) {
return i.Children.toArray(e.children).map(e.map)
}
return e.children
}
},
"02pg": function(e, t, n) {
"use strict";
n.d(t, "a", (function() {
return o
}));
var i = n("q1tI"),
a = n("TSYQ"),
s = n("XiJV");
function o(e) {
return i.createElement("div", {
className: a(s.separator, e.className)
})
}
},
"1TxM": function(e, t, n) {
"use strict";
n.d(t, "c", (function() {
return l
})), n.d(t, "a", (function() {
return c
})), n.d(t, "b", (function() {
return h
}));
var i = n("q1tI"),
a = n.n(i),
s = n("17x9"),
o = n.n(s);
const r = a.a.createContext({});
function l(e, t) {
o.a.checkPropTypes(t, e, "context", "RegistryContext")
}
function c(e) {
const {
validation: t,
value: n
} = e;
return l(n, t), a.a.createElement(r.Provider, {
value: n
}, e.children)
}
function h() {
return r
}
},
"20PO": function(e, t) {
e.exports =
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18" fill="none"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M9.7 9l4.65-4.65-.7-.7L9 8.29 4.35 3.65l-.7.7L8.29 9l-4.64 4.65.7.7L9 9.71l4.65 4.64.7-.7L9.71 9z"/></svg>'
},
"2mG+": function(e, t, n) {
e.exports = {
button: "button-2-onvH7F"
}
},
"5o6O": function(e, t, n) {
e.exports = {
tabs: "tabs-3I2ohC86",
tab: "tab-3I2ohC86",
noBorder: "noBorder-3I2ohC86",
disabled: "disabled-3I2ohC86",
active: "active-3I2ohC86",
defaultCursor: "defaultCursor-3I2ohC86",
slider: "slider-3I2ohC86",
content: "content-3I2ohC86"
}
},
"6KyJ": function(e, t, n) {
"use strict";
var i, a = n("q1tI"),
s = n("TSYQ"),
o = n("K9GE"),
r = n("YZ9j");
n("O7m7");
! function(e) {
e[e.Initial = 0] = "Initial", e[e.Appear = 1] = "Appear", e[e.Active = 2] = "Active"
}(i || (i = {}));
class l extends a.PureComponent {
constructor(e) {
super(e), this._stateChangeTimeout = null, this.state = {
state: i.Initial
}
}
render() {
const {
className: e,
color: t = "black"
} = this.props, n = s(r.item, {
[r[t]]: Boolean(t)
});
return a.createElement("span", {
className: s(r.loader, e, this._getStateClass())
}, a.createElement("span", {
className: n
}), a.createElement("span", {
className: n
}), a.createElement("span", {
className: n
}))
}
componentDidMount() {
this.setState({
state: i.Appear
}), this._stateChangeTimeout = setTimeout(() => {
this.setState({
state: i.Active
})
}, 2 * o.b)
}
componentWillUnmount() {
this._stateChangeTimeout && (clearTimeout(this._stateChangeTimeout), this
._stateChangeTimeout = null)
}
_getStateClass() {
switch (this.state.state) {
case i.Initial:
return r["loader-initial"];
case i.Appear:
return r["loader-appear"];
default:
return ""
}
}
}
n.d(t, "a", (function() {
return l
}))
},
"9VJd": function(e, t) {
e.exports =
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28" fill="none"><path stroke="currentColor" d="M5.5 13v-2.5m8.5 11h6.5a2 2 0 0 0 2-2v-9m-17 0v-2c0-1.1.9-2 2-2h13a2 2 0 0 1 2 2v2m-17 0h17"/><path fill="currentColor" d="M10 4h1v4h-1V4zM17 4h1v4h-1V4z"/><path stroke="currentColor" d="M4 18.5h7.5m0 0L8 22m3.5-3.5L8 15"/></svg>'
},
"9dlw": function(e, t, n) {
"use strict";
n.d(t, "a", (function() {
return d
}));
var i = n("q1tI"),
a = n.n(i),
s = n("i8i4"),
o = n.n(s),
r = n("AiMB"),
l = n("DTHj"),
c = n("X0gx"),
h = n("8Rai");
function d(e) {
const {
controller: t,
children: n,
isOpened: s,
closeOnClickOutside: d = !0,
doNotCloseOn: u,
onClickOutside: m,
onClose: g,
...p
} = e, b = Object(i.useContext)(c.a), v = Object(h.a)({
handler: function(e) {
m && m(e);
if (!d) return;
if (u && e.target instanceof Node) {
const t = o.a.findDOMNode(u);
if (t instanceof Node && t.contains(e.target)) return
}
g()
},
mouseDown: !0,
touchStart: !0
});
return s ? a.a.createElement(r.a, {
top: "0",
left: "0",
right: "0",
bottom: "0",
pointerEvents: "none"
}, a.a.createElement("span", {
ref: v,
style: {
pointerEvents: "auto"
}
}, a.a.createElement(l.b, {
...p,
onClose: g,
onScroll: function(t) {
const {
onScroll: n
} = e;
n && n(t)
},
customCloseDelegate: b,
ref: t
}, n))) : null
}
},
ApAi: function(e, t) {
e.exports =
'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"><path fill="none" stroke="currentColor" d="M11 1.5h3.5a2 2 0 0 1 2 2V7m0 5v2.5a2 2 0 0 1-2 2H11m-4 0H3.5a2 2 0 0 1-2-2V11m0-4V3.5a2 2 0 0 1 2-2H7"/></svg>'
},
"J+f8": function(e, t, n) {
"use strict";
n.d(t, "a", (function() {
return a
}));
var i = n("q1tI");
const a = i.createContext(!1)
},
J3OW: function(e, t, n) {
e.exports = {
button: "button-15caiVtH",
separator: "separator-15caiVtH"
}
},
K3s3: function(e, t, n) {
"use strict";
n.d(t, "a", (function() {
return r
})), n.d(t, "b", (function() {
return l
})), n.d(t, "c", (function() {
return c
}));
var i = n("q1tI"),
a = n("TSYQ"),
s = n("Eyy1"),
o = n("5o6O");
const r = o;
function l(e) {
const t = a(e.className, o.tab, {
[o.active]: e.isActive,
[o.disabled]: e.isDisabled,
[o.defaultCursor]: !!e.shouldUseDefaultCursor,
[o.noBorder]: !!e.noBorder
});
return i.createElement("div", {
className: t,
onClick: e.onClick,
ref: e.reference,
"data-type": "tab-item",
"data-value": e.value,
"data-name": "tab-item-" + e.value.toString().toLowerCase()
}, e.children)
}
function c(e) {
return class extends i.PureComponent {
constructor() {
super(...arguments), this.activeTab = {
current: null
}
}
componentDidUpdate() {
Object(s.ensureNotNull)(this._slider).style.transition = "transform 350ms",
this._componentDidUpdate()
}
componentDidMount() {
this._componentDidUpdate()
}
render() {
const {
className: t
} = this.props, n = this._generateTabs();
return i.createElement("div", {
className: a(t, o.tabs),
"data-name": this.props["data-name"]
}, n, i.createElement(e, {
reference: e => {
this._slider = e
}
}))
}
_generateTabs() {
return this.activeTab.current = null, i.Children.map(this.props.children,
e => {
const t = e,
n = Boolean(t.props.isActive),
a = {
reference: e => {
n && (this.activeTab.current = e), t.props
.reference && t.props.reference(e)
}
};
return i.cloneElement(t, a)
})
}
_componentDidUpdate() {
const e = Object(s.ensureNotNull)(this._slider).style;
if (this.activeTab.current) {
const t = this.activeTab.current.offsetWidth,
n = this.activeTab.current.offsetLeft;
e.transform = `translateX(${n}px)`, e.width = t + "px", e.opacity = "1"
} else e.opacity = "0"
}
}
}
c((function(e) {
return i.createElement("div", {
className: o.slider,
ref: e.reference
})
}))
},
KKsp: function(e, t, n) {
"use strict";
n.d(t, "a", (function() {
return r
}));
var i = n("q1tI"),
a = n("TSYQ"),
s = n.n(a),
o = n("NOPy");
function r(e) {
const {
size: t = "normal",
className: n
} = e;
return i.createElement("div", {
className: s()(o.separator, "small" === t && o.small, "normal" === t && o
.normal, "large" === t && o.large, n)
})
}
},
MfqI: function(e, t, n) {
"use strict";
n.r(t);
var i = n("q1tI"),
a = n.n(i),
s = n("i8i4"),
o = n("YFKU"),
r = n("17x9"),
l = n("TSYQ"),
c = n("cvc5"),
h = n("Kxc7"),
d = n("82wv"),
u = n("Iksw"),
m = n("tWVy"),
g = n("/KDZ"),
p = n("N5tr"),
b = n("KKsp"),
v = n("Eyy1"),
f = n("JWMC"),
_ = n("1TxM"),
C = n("aIyQ"),
S = n.n(C),
y = n("dfhE");
class E {
constructor(e) {
this._state = {
ranges: []
}, this._change = new S.a, this._rangeChangedListenerBound = this
._onRangeChanged.bind(this);
const {
chartWidget: t
} = this._context = e;
t.withModel(null, () => {
const e = t.model(),
n = e.mainSeries();
n.onStatusChanged().subscribe(this, this._updateAvailableRanges), h
.enabled("update_timeframes_set_on_symbol_resolve") && n
.dataEvents().symbolResolved().subscribe(this, this
._updateAvailableRanges), n.priceScale().properties().childs()
.lockScale.subscribe(this, this._updateAvailableRanges);
const i = e.model().appliedTimeFrame();
i.subscribe(this._rangeChangedListenerBound), this
._rangeChangedListenerBound(i.value()), this
._updateAvailableRanges()
})
}
state() {
return this._state
}
onChange() {
return this._change
}
selectRange(e) {
this._setState({
activeRange: e.value.value
});
const {
chartWidgetCollection: t
} = this._context, n = {
val: e.value,
res: e.targetResolution
};
t.setTimeFrame(n)
}
destroy() {
const {
chartWidget: e
} = this._context;
e.withModel(null, () => {
const t = e.model(),
n = t.mainSeries();
n.onStatusChanged().unsubscribe(this, this._updateAvailableRanges), h
.enabled("update_timeframes_set_on_symbol_resolve") && n
.dataEvents().symbolResolved().unsubscribe(this, this
._updateAvailableRanges), n.priceScale().properties().childs()
.lockScale.unsubscribe(this, this._updateAvailableRanges), t.model()
.appliedTimeFrame().unsubscribe(this._rangeChangedListenerBound)
}), this._change.destroy()
}
_setState(e) {
this._state = Object.assign({}, this._state, e), this._change.fire(this._state)
}
_onRangeChanged(e) {
let t;
null !== e && "period-back" === e.val.type && (t = e.val.value), this._setState({
activeRange: t
})
}
_updateAvailableRanges() {
const {
availableTimeFrames: e,
chartWidget: t
} = this._context;
if (!t.hasModel()) return;
const n = t.model().mainSeries(),
i = n.status();
if (i === y.STATUS_LOADING || i === y.STATUS_RESOLVING) return;
const a = e(n.symbolInfo(), n.status());
0 !== a.length && this._setState({
ranges: a
})
}
}
const x = Object(_.b)();
function w(e) {
var t;
return (t = class extends i.PureComponent {
constructor(e, t) {
super(e, t), this._handleUpdate = e => {
this.setState(e)
}, this._handleSelectRange = e => {
Object(f.trackEvent)("GUI", "Chart Bottom Toolbar", "range " + e
.value), this._binding.selectRange(e)
}, Object(_.c)(t, {
availableTimeFrames: r.any.isRequired,
chartWidgetCollection: r.any.isRequired,
chartWidget: r.any.isRequired
}), N.has(t.chartWidget) || N.set(t.chartWidget, new E(t));
const n = this._binding = Object(v.ensureDefined)(N.get(t.chartWidget));
this.state = n.state()
}
componentDidMount() {
this._binding.onChange().subscribe(this, this._handleUpdate)
}
componentWillUnmount() {
this._binding.onChange().unsubscribe(this, this._handleUpdate)
}
render() {
return i.createElement(e, {
goToDateButton: this.props.goToDateButton,
className: this.props.className,
ranges: this.state.ranges,
activeRange: this.state.activeRange,
onSelectRange: this._handleSelectRange
})
}
}).contextType = x, t
}
const N = new WeakMap;
var R = n("cdbK"),
T = n("l4ku"),
k = n("02pg"),
M = n("2uTr"),
A = n("9VJd"),
W = n("J3OW");
function O(e) {
const {
ranges: t,
activeRange: n,
onSelectRange: i
} = e;
return a.a.createElement(a.a.Fragment, null, t.map(e => a.a.createElement(T.a, {
key: e.value.value,
label: e.description || e.text,
active: n === e.value.value,
checked: n === e.value.value,
checkable: !0,
disabled: !1,
onClick: s.bind(null, e),
doNotCloseOnClick: !1,
subItems: []
})));
function s(e) {
e && i && i(e), Object(m.b)()
}
}
function B(e) {
const {
onGoToDateClick: t
} = e;
return a.a.createElement(a.a.Fragment, null, a.a.createElement(k.a, {
className: W.separator
}), a.a.createElement(T.a, {
icon: A,
label: Object(M.appendEllipsis)(Object(o.t)("Go to")),
onClick: t,
active: !1,
checked: !1,
checkable: !1,
disabled: !1,
doNotCloseOnClick: !1,
subItems: []
}))
}
const j = {
title: window.t("Date Range"),
goToDate: Object(M.appendEllipsis)(window.t("Go to"))
},
I = Object(_.b)();
class D extends i.PureComponent {
constructor(e, t) {
super(e, t), this._handleGoToDateClick = () => {
const {
chartWidget: e
} = this.context;
Object(R.showGoToDateDialog)(e), Object(m.b)()
}, this._handleRangeSelect = e => {
e && this.props.onSelectRange && this.props.onSelectRange(e), Object(m
.b)()
}, this._renderChildren = e => {
const {
ranges: t,
activeRange: n,
goToDateButton: a
} = this.props;
return e ? i.createElement(i.Fragment, null, i.createElement(O, {
ranges: t,
activeRange: n,
onSelectRange: this._handleRangeSelect
}), a && i.createElement(B, {
onGoToDateClick: this._handleGoToDateClick
})) : i.createElement(i.Fragment, null, t.map(e => i.createElement(p
.b, {
key: e.value.value,
label: e.description || e.text,
isActive: n === e.value.value,
onClick: this._handleRangeSelect,
onClickArg: e
})), a && i.createElement(b.a, null), a && i.createElement(p
.b, {
label: j.goToDate,
onClick: this._handleGoToDateClick
}))
}, Object(_.c)(t, {
chartWidget: r.any.isRequired
})
}
render() {
return i.createElement(g.a, {
rule: "screen and (max-width: 428px)"
}, e => i.createElement(d.a, {
className: W.button,
content: j.title,
arrow: !0,
verticalAttachEdge: u.c.Top,
verticalDropDirection: u.d.FromBottomToTop,
horizontalMargin: 4,
"data-name": "date-ranges-menu",
isDrawer: e
}, this._renderChildren(e)))
}
}
D.contextType = I;
const L = w(D);
var z = n("K3s3"),
P = n("W9Y+");
function F(e) {
const t = l(e.className, P.item, {
[P.isActive]: e.isActive,
[P.isFirst]: e.isFirst,
[P.isLast]: e.isLast
});
return i.createElement("div", {
className: t,
onClick: e.onClick,
ref: e.reference
}, e.children)
}
var U = n("nPPD"),
q = n("RZ2Z");
const H = Object(U.a)(z.a, q);
var K = n("qSb5");
const G = Object(z.c)((function(e) {
return i.createElement("div", {
className: l(e.className, H.slider),
ref: e.reference
}, i.createElement("div", {
className: H.inner
}))
}));
const X = w((function(e) {
const {
className: t,
ranges: n,
activeRange: a,
onSelectRange: s
} = e;
return i.createElement(G, {
className: l(K.sliderRow, t),
"data-name": "date-ranges-tabs"
}, n.map((e, t) => i.createElement(F, {
key: e.value.value,
value: e.value.value,
isFirst: 0 === t,
isLast: t === n.length - 1,
isActive: a === e.value.value,
onClick: s && s.bind(null, e)
}, i.createElement("div", {
title: e.description || e.text,
className: "apply-common-tooltip"
}, e.text))))
}));
var V = n("Iivm"),
Y = n("/DW5"),
Z = n("ul7r"),
Q = n("c7H2");
const J = Object(Y.b)({
keys: ["Alt", "G"],
text: "{0} + {1}"
}),
$ = Object(_.b)();
class ee extends i.PureComponent {
constructor(e, t) {
super(e, t), this._handleClick = () => {
const {
chartWidget: e
} = this.context;
Object(f.trackEvent)("GUI", "Chart Bottom Toolbar", "go to"), Object(R
.showGoToDateDialog)(e)
}, Object(_.c)(t, {
chartWidget: r.any.isRequired
})
}
render() {
const {
className: e,
ranges: t
} = this.props;
return t.length > 0 && i.createElement("div", {
className: l("apply-common-tooltip", Q.button, e),
"data-name": "go-to-date",
"data-tooltip-hotkey": J,
onClick: this._handleClick,
title: Object(o.t)("Go to")
}, i.createElement(V.a, {
className: Q.icon,
icon: Z
}))
}
}
ee.contextType = $;
const te = w(ee);
var ne = n("URQ3");
function ie(e) {
const {
reference: t,
className: n,
children: a,
...s
} = e;
return i.createElement("button", {
...s,
className: l(n, ne.button),
ref: t
}, i.createElement("span", {
className: ne.inner
}, a))
}
var ae = n("/+9u"),
se = n("4kQX"),
oe = n("7KDR"),
re = n("5VQP");
class le extends i.PureComponent {
constructor(e) {
super(e), this._element = null, this._menu = null, this._handleRef = e => {
this._element = e
}, this._showMenu = () => {
if (this._menu && this._menu.isShown()) return this._menu.hide(),
void this._menu.destroy();
const {
getActions: e,
right: t
} = this.props, n = Object(v.ensureNotNull)(this._element), i = e();
0 !== i.length && re.ContextMenuManager.createMenu(i).then(e => {
this._menu = e, e.show((e, i) => {
const a = n.getBoundingClientRect();
return {
clientX: t ? a.right - e : a.left,
clientY: a.top - Math.min(i, a.top),
overrideHeight: a.top < i ? a.top : void 0
}
}, this._element || void 0)
})
}
}
render() {
const {
children: e
} = this.props;
return i.createElement("span", {
onClick: this._showMenu,
ref: this._handleRef
}, e)
}
}
var ce = n("jCNj"),
he = n("2mG+");
const de = {
hint: window.t("Timezone")
};
const ue = Object(_.b)();
class me extends i.PureComponent {
constructor(e, t) {
super(e, t), this._timeFormatter = new se.TimeFormatter, this._tickInterval =
void 0, this._tickClock = () => {
const {
chartApiInstance: e
} = this.context;
if (void 0 !== this._timezone) {
const t = Object(ce.utc_to_cal)(this._timezone, e.serverTime());
this.setState({
time: this._timeFormatter.format(t)
})
}
}, this._getActions = () => {
if (!this.props.withMenu) return [];
const {
chartWidget: e
} = this.context;
return function(e) {
e.updateActions();
const t = e.actions();
return t && t.applyTimeZone instanceof oe.Action ? t
.applyTimeZone.getSubItems() : []
}(e)
}, Object(_.c)(t, {
chartWidget: r.any.isRequired,
chartApiInstance: r.any.isRequired
}), this.state = {
time: ""
}
}
componentDidMount() {
const {
chartWidget: e
} = this.context;
this._tickInterval = setInterval(this._tickClock, 1e3), e.withModel(null,
() => {
const t = e.model();
t.model().mainSeries().dataEvents().symbolResolved().subscribe(this,
this.updateTimezonesButton), t.model().properties().timezone
.subscribe(this, this.updateTimezonesButton)
})
}
componentWillUnmount() {
const {
chartWidget: e
} = this.context;
clearInterval(this._tickInterval), e.withModel(null, () => {
const t = e.model();
t.model().mainSeries().dataEvents().symbolResolved().unsubscribe(
this, this.updateTimezonesButton), t.model().properties()
.timezone.unsubscribe(this, this.updateTimezonesButton)
})
}
render() {
const {
className: e,
withMenu: t
} = this.props, {
time: n
} = this.state, a = void 0 !== this._timezone ? Object(ae.a)(this._timezone
.name()).string : null;
return i.createElement(le, {
getActions: this._getActions
}, i.createElement(ie, {
className: l(e, he.button, "apply-common-tooltip"),
title: t ? de.hint : void 0,
disabled: !t,
"data-name": "time-zone-menu"
}, n && a && `${n} (${a})`))
}
updateTimezonesButton() {
const {
chartWidget: e
} = this.context;
if (!e.hasModel()) return;
if (null === e.model().mainSeries().symbolInfo()) return;
let t = e.model().model().timezone();
if ("exchange" === t) {
const n = Object(v.ensureNotNull)(e.model().mainSeries().symbolInfo())
.timezone;
n && (t = n)
}
this._timezone = Object(ce.get_timezone)(t), this._tickClock()
}
}
me.contextType = ue;
var ge = n("z6ID");
function pe(e) {
return i.createElement("span", {
className: l(ge.separator, e.className)
})
}
var be = n("tU7i"),
ve = n("qFKp");
class fe {
constructor(e, t, n) {
this._highlighted = !1, this._chartWidget = e, this._priceScaleGetter = t, this
._owner = n, this._setHighlight = this._setHighlight.bind(this), this
._removeHighlight = this._removeHighlight.bind(this)
}
destroy() {
this._highlighted && this._removeHighlight()
}
handlers() {
const e = ve.CheckMobile.any();
return {
onMouseEnter: e ? void 0 : this._setHighlight,
onMouseLeave: e ? void 0 : this._removeHighlight
}
}
_setHighlight() {
const e = this._chartWidget.model().model(),
t = e.paneForSource(e.mainSeries()),
n = this._priceScaleGetter();
if (null === t || null === n) return;
const i = this._chartWidget.paneByState(t);
if (null !== i) {
const t = i.rightPriceAxisesContainer().findAxisWidgetForScale(n);
let a = null;
null !== t && (a = t.axisInfo());
const s = i.leftPriceAxisesContainer().findAxisWidgetForScale(n);
null !== s && (a = s.axisInfo());
const o = i.highlightedPriceAxis();
null !== a && o.value().axis !== a && (o.setValue({
owner: this._owner,
axis: a
}), e.lightUpdate(), this._highlighted = !0)
}
}
_removeHighlight() {
const e = this._chartWidget.model().model(),
t = e.paneForSource(e.mainSeries());
if (null === t) return;
const n = this._chartWidget.paneByState(t);
if (null !== n) {
const t = n.highlightedPriceAxis(),
i = t.value();
null !== i.axis && i.owner === this._owner && (t.setValue({
owner: this._owner,
axis: null
}), e.lightUpdate(), this._highlighted = !1)
}
}
}
const _e = Object(_.b)();
const Ce = Object(_.b)();
const Se = Object(_.b)();
const ye = Object(_.b)();
var Ee = n("+GaQ"),
xe = n("XAms"),
we = n("T4/F"),
Ne = n("ApAi"),
Re = n("PP+v");
const Te = {
extLabel: window.t("ext"),
extHint: window.t("Extended Hours is available only for intraday charts"),
percentageHint: window.t("Toggle Percentage"),
logLabel: window.t("log", {
context: "scale"
}),
logHint: window.t("Toggle Log Scale"),
autoLabel: window.t("auto", {
context: "scale"
}),
autoHint: window.t("Toggle Auto Scale"),
fullscreenHint: window.t("Toggle Maximize Chart"),
adjLabel: window.t("adj", {
context: "adjustments"
}),
adjHint: window.t("Adjust data for dividends"),
adjForDividendsOnlyHint: window.t("Data is adjusted for dividends only"),
adjForSplitsOnlyHint: window.t("Data is adjusted for splits only")
},
ke = (Me = e => i.createElement(be.b, {
text: Te.logLabel,
title: Te.logHint,
className: e.className,
isActive: e.isLogarithm,
isGrouped: !0,
onClick: e.onClick,
onMouseEnter: e.onMouseEnter,
onMouseLeave: e.onMouseLeave,
"data-name": "logarithm"
}), (Ae = class extends i.PureComponent {
constructor(e, t) {
super(e, t), this._priceScale = null, this._handleSelect = () => {
const e = this.context.chartWidget.model(),
t = Object(v.ensureNotNull)(this.state.series),
n = t.priceScale(),
i = n.mode();
t.priceScale().isLockScale() || e.setPriceScaleMode({
log: !i.log
}, n, window.t("Toggle Log Scale"))
}, Object(_.c)(t, {
chartWidget: r.any.isRequired
}), this.state = {
isActive: !1,
series: null
}, this._priceAxisHighlighter = new fe(this.context.chartWidget,
() => this._priceScale, "logarithm")
}
componentDidMount() {
const e = this.context.chartWidget;
e.withModel(null, () => {
const t = e.model().mainSeries(),
n = t.priceScale();
this._handleMainSeriesPriceScaleChanged(n), t
.priceScaleChanged().subscribe(this, this
._handleMainSeriesPriceScaleChanged), this
._handleModeChanged({}, n.mode()), this.setState({
isActive: t.priceScale().isLog(),
series: t
})
})
}
componentWillUnmount() {
const e = this.context.chartWidget;
e.withModel(null, () => {
e.model().mainSeries().priceScaleChanged().unsubscribe(this,
this._handleMainSeriesPriceScaleChanged)
}), null !== this._priceScale && (this._priceScale.modeChanged()
.unsubscribeAll(this), this._priceScale = null), this
._priceAxisHighlighter.destroy()
}
render() {
const {
className: e
} = this.props, {
isActive: t,
series: n
} = this.state;
return i.createElement(Me, {
...this._priceAxisHighlighter.handlers(),
className: e,
isLogarithm: t,
isDisabled: null === n,
onClick: this._handleSelect
})
}
_handleMainSeriesPriceScaleChanged(e) {
null !== this._priceScale && this._priceScale.modeChanged().unsubscribe(
this, this._handleModeChanged), this._priceScale = e, this
._priceScale.modeChanged().subscribe(this, this._handleModeChanged),
this._handleModeChanged({}, e.mode())
}
_handleModeChanged(e, t) {
Boolean(t.log) !== this.state.isActive && this.setState({
isActive: Boolean(t.log)
})
}
}).contextType = _e, Ae);
var Me, Ae;
const We = function(e) {
var t;
return (t = class extends i.PureComponent {
constructor(e, t) {
super(e, t), this._priceScale = null, this._handleSelect = () => {
const e = this.context.chartWidget.model(),
t = Object(v.ensureNotNull)(this.state.series)
.priceScale(),
n = t.mode();
e.setPriceScaleMode({
autoScale: !n.autoScale
}, t, window.t("Toggle Auto Scale"))
}, Object(_.c)(t, {
chartWidget: r.any.isRequired
}), this.state = {
isActive: !1,
series: null
}, this._priceAxisHighlighter = new fe(this.context.chartWidget,
() => this._priceScale, "auto")
}
componentDidMount() {
const e = this.context.chartWidget;
e.withModel(null, () => {
const t = e.model().mainSeries(),
n = t.priceScale();
this._handleMainSeriesPriceScaleChanged(n), t
.priceScaleChanged().subscribe(this, this
._handleMainSeriesPriceScaleChanged), this
._handleModeChanged({}, n.mode()), this.setState({
isActive: t.priceScale().isAutoScale(),
series: t
})
})
}
componentWillUnmount() {
const e = this.context.chartWidget;
e.withModel(null, () => {
e.model().mainSeries().priceScaleChanged().unsubscribe(
this, this._handleMainSeriesPriceScaleChanged)
}), null !== this._priceScale && (this._priceScale.modeChanged()
.unsubscribeAll(this), this._priceScale = null), this
._priceAxisHighlighter.destroy()
}
render() {
const {
className: t
} = this.props, {
isActive: n,
series: a
} = this.state;
return i.createElement(e, {
...this._priceAxisHighlighter.handlers(),
className: t,
isAuto: n,
isDisabled: null === a,
onClick: this._handleSelect
})
}
_handleMainSeriesPriceScaleChanged(e) {
null !== this._priceScale && this._priceScale.modeChanged()
.unsubscribe(this, this._handleModeChanged), this._priceScale =
e, this._priceScale.modeChanged().subscribe(this, this
._handleModeChanged), this._handleModeChanged({}, e.mode())
}
_handleModeChanged(e, t) {
Boolean(t.autoScale) !== this.state.isActive && this.setState({
isActive: Boolean(t.autoScale)
})
}
}).contextType = Ce, t
}(e => i.createElement(be.b, {
text: Te.autoLabel,
title: Te.autoHint,
className: e.className,
isActive: e.isAuto,
isGrouped: !0,
onClick: e.onClick,
onMouseEnter: e.onMouseEnter,
onMouseLeave: e.onMouseLeave,
"data-name": "auto"
})),
Oe = function(e) {
var t;
return (t = class extends i.PureComponent {
constructor(e, t) {
super(e, t), this._priceScale = null, this._handleSelect = () => {
const e = this.context.chartWidget.model(),
t = Object(v.ensureNotNull)(this.state.series),
n = t.priceScale(),
i = n.mode();
t.priceScale().isLockScale() || e.setPriceScaleMode({
percentage: !i.percentage
}, n, window.t("Toggle Percentage Scale"))
}, Object(_.c)(t, {
chartWidget: r.any.isRequired
}), this.state = {
isActive: !1,
series: null
}, this._priceAxisHighlighter = new fe(this.context.chartWidget,
() => this._priceScale, "percentage")
}
componentDidMount() {
const e = this.context.chartWidget;
e.withModel(null, () => {
const t = e.model().mainSeries(),
n = t.priceScale();
this._handleMainSeriesPriceScaleChanged(n), t
.priceScaleChanged().subscribe(this, this
._handleMainSeriesPriceScaleChanged), this
._handleScaleChange({}, n.mode()), this.setState({
isActive: t.priceScale().isPercentage(),
series: t
})
})
}
componentWillUnmount() {
const e = this.context.chartWidget;
e.withModel(null, () => {
e.model().mainSeries().priceScaleChanged().unsubscribe(
this, this._handleMainSeriesPriceScaleChanged)
}), null !== this._priceScale && (this._priceScale.modeChanged()
.unsubscribeAll(this), this._priceScale = null), this
._priceAxisHighlighter.destroy()
}
render() {
const {
className: t
} = this.props, {
isActive: n,
series: a
} = this.state;
return i.createElement(e, {
...this._priceAxisHighlighter.handlers(),
className: t,
isPercentage: n,
isDisabled: null === a,
onClick: this._handleSelect
})
}
_handleMainSeriesPriceScaleChanged(e) {
null !== this._priceScale && this._priceScale.modeChanged()
.unsubscribe(this, this._handleScaleChange), this._priceScale =
e, this._priceScale.modeChanged().subscribe(this, this
._handleScaleChange), this._handleScaleChange({}, e.mode())
}
_handleScaleChange(e, t) {
Boolean(t.percentage) !== this.state.isActive && this.setState({
isActive: Boolean(t.percentage)
})
}
}).contextType = Se, t
}(e => i.createElement(be.b, {
icon: we,
title: Te.percentageHint,
className: e.className,
isActive: e.isPercentage,
isDisabled: e.isDisabled,
isGrouped: !0,
onClick: e.onClick,
onMouseEnter: e.onMouseEnter,
onMouseLeave: e.onMouseLeave,
"data-name": "percentage"
}));
const Be = Object(Y.b)({
keys: ["Alt", "Enter"],
text: "{0} + {1}"
}),
je = function(e) {
var t;
return (t = class extends i.PureComponent {
constructor(e, t) {
super(e, t), this._handleClick = e => {
const {
resizerDetacher: t,
chartWidgetCollection: n
} = this.context;
e.shiftKey && t.detachable.value() ? t.detach() : this.state
.isFullscreen ? t.exitFullscreen() : t
.requestFullscreen()
}, this._handleLayoutChange = e => {
this.setState({
isFullscreen: e
})
}, this._handlePhoneSize = () => {
0
}, Object(_.c)(t, {
chartWidgetCollection: r.any.isRequired,
resizerDetacher: r.any.isRequired
});
const {
resizerDetacher: n
} = t;
this.state = {
isFullscreen: n.fullscreen.value(),
isChangeLayoutButton: this._isChangeLayoutButton()
}
}
componentDidMount() {
const {
resizerDetacher: e,
chartWidgetCollection: t
} = this.context, {
mobileChangeLayoutEnabled: n
} = this.props;
e.fullscreen.subscribe(this._handleLayoutChange)
}
componentWillUnmount() {
const {
resizerDetacher: e,
chartWidgetCollection: t
} = this.context, {
mobileChangeLayoutEnabled: n
} = this.props;
e.fullscreen.unsubscribe(this._handleLayoutChange)
}
render() {
const {
className: t
} = this.props, {
isFullscreen: n,
isChangeLayoutButton: a
} = this.state;
return i.createElement(e, {
className: t,
isFullscreen: n,
onClick: this._handleClick
})
}
_isChangeLayoutButton() {
return !1
}
}).contextType = ye, t
}(e => i.createElement(be.b, {
icon: Ne,
title: Te.fullscreenHint,
className: e.className,
isActive: e.isFullscreen,
onClick: e.onClick,
"data-tooltip-hotkey": Be,
"data-name": "fullscreen"
})),
Ie = {
properties: !0,
fullscreen: !0,
preventPhoneLayout: !0
},
De = {
fullscreen: Number.MIN_SAFE_INTEGER,
preventPhoneLayout: Number.MIN_SAFE_INTEGER,
properties: Number.MIN_SAFE_INTEGER,
separator: -2,
timeZones: -1,
auto: 0,
logarithm: 1,
percentage: 2,
session: 3,
adj: 4
},
Le = (() => {
const e = new Map;
return e.set(ke, "logarithm"), e.set(Oe, "percentage"), e.set(We, "auto"), e.set(je,
"fullscreen"), e
})();
function ze(e) {
0
}
const Pe = {
dateRangeMode: "hidden",
separator: !0,
timeZones: !0,
fullscreen: !0,
preventPhoneLayout: !0,
properties: !0,
auto: !0,
logarithm: !0,
percentage: !0,
session: !0,
adj: !0
},
Fe = Object(_.b)();
class Ue extends i.PureComponent {
constructor(e, t) {
var n, a;
super(e, t), this._timezoneButtonRef = null, this._layout = Object.assign({},
Pe), this._raf = null, this._toolbar = null, this._rangeExpanded = null,
this._rangeCollapsed = null, this._seriesComponents = {}, this._injector = (
n = () => this._layout, a = (e, t) => this._seriesComponents[t] = e, (e,
t, s) => {
if (i.isValidElement(e) && "string" != typeof e.type) {
const {
props: o
} = e;
if ("string" == typeof o.className) {
const r = {
className: l(o.className, 0 === t && Re.first, t ===
s.length - 1 && Re.last)
},
c = n(),
h = Object(v.ensureDefined)(Le.get(e.type));
return i.createElement("div", {
key: null === e.key ? void 0 : e.key,
className: l(Re.inline, c[h] && Re.collapsed),
ref: e => a(e, h),
onClick: () => ze()
}, i.cloneElement(e, r))
}
}
return e
}), this._handleResize = () => {
null === this._raf && (this._raf = requestAnimationFrame(() => {
const e = this._layout,
t = Object(v.ensureNotNull)(this._toolbar),
n = Object(v.ensureNotNull)(this._rangeExpanded),
i = (a = function(e) {
const t = {};
return Object.keys(e).forEach(n => {
const i = e[n];
if (null !== i) {
const e = s.findDOMNode(i);
null !== e && (t[n] = e)
}
}), t
}(this._seriesComponents), Object.keys(a).map(
e => ({
name: e,
width: a[e].offsetWidth
})).sort((e, t) => De[e.name] - De[t.name]));
var a;
const o = t.offsetWidth,
r = i.reduce((e, t) => e + t.width, 0),
l = n.offsetWidth,
c = !Boolean(n.textContent) || o - r - l <= 0 ?
"collapsed" : "expanded";
if (Object.assign(e, {
dateRangeMode: c
}), "expanded" !== c) {
const t = o - Object(v.ensureNotNull)(this
._rangeCollapsed).offsetWidth - 0;
let n = 0,
a = 0;
for (const s of i) n += s.width, s.name in Ie ? (
a += s.width, Object.assign(e, {
[s.name]: !1
})) : Object.assign(e, {
[s.name]: t <= n
});
t <= a && Object.assign(e, {
dateRangeMode: "hidden"
})
} else Object.assign(e, {
separator: !1,
timeZones: !1,
fullscreen: !1,
preventPhoneLayout: !1,
properties: !1,
auto: !1,
logarithm: !1,
percentage: !1,
session: !1,
adj: !1
});
this._applyResizing(), this._raf = null
}))
}, this._handleTimezoneButtonRef = e => {
this._timezoneButtonRef = e
}, this._handleMeasure = () => {
null !== this._toolbar && this.resizeUI()
}, this._handleFullscreenableChange = e => {
this._setStateWithResize({
isFullscreenable: e
})
}, this._handlePreventPhoneLayoutButtonVisibility = () => {
0
}, this._handleToolbarRef = e => this._toolbar = e, this
._handleRangeCollapsedRef = e => this._rangeCollapsed = e, this
._handleRangeExpandedRef = e => this._rangeExpanded = e, this
._handleTimeZonesRef = e => {
this._seriesComponents.timeZones = e
}, this._handleSessionsRef = e => {
this._seriesComponents.session = e
}, this._handleSeparatorRef = e => {
this._seriesComponents.separator = e
}, Object(_.c)(t, {
onContentBoxChanged: r.any.isRequired,
chartApiInstance: r.any.isRequired,
chartWidget: r.any.isRequired,
chartWidgetCollection: r.any.isRequired,
resizerDetacher: r.any.isRequired
});
const {
resizerDetacher: o
} = this.context;
this.state = {
isFullscreenable: o.fullscreenable.value(),
isPreventPhoneLayoutButton: this._isPreventPhoneLayoutButton()
}
}
componentDidMount() {
const {
onContentBoxChanged: e,
resizerDetacher: t,
chartWidgetCollection: n,
chartWidget: i
} = this.context;
e.subscribe(this, this._handleResize), t.fullscreenable.subscribe(this
._handleFullscreenableChange), this.updateTimezonesButton(), this
.resizeUI()
}
componentWillUnmount() {
const {
onContentBoxChanged: e,
resizerDetacher: t,
chartWidgetCollection: n,
chartWidget: i
} = this.context;
e.unsubscribe(this, this._handleResize), t.fullscreenable.unsubscribe(this
._handleFullscreenableChange), null !== this._raf && (
cancelAnimationFrame(this._raf), this._raf = null)
}
render() {
const e = this._layout,
{
timeFramesWidgetEnabled: t,
timeWidgetEnabled: n,
percentageScaleButtonEnabled: a,
logScaleButtonEnabled: s,
autoScaleButtonEnabled: o,
fullscreenButtonEnabled: r
} = this.props;
return i.createElement("div", {
className: Re.toolbar,
ref: this._handleToolbarRef,
onContextMenu: xe.a
}, t && i.createElement(Ee.a, null, i.createElement("div", {
className: l(Re.dateRangeWrapper, "collapsed" !== e
.dateRangeMode && Re.collapsed),
ref: this._handleRangeCollapsedRef
}, i.createElement("div", {
className: l(Re.dateRangeCollapsed)
}, i.createElement(L, {
goToDateButton: this.props.goToDateEnabled
}))), i.createElement(c, {
onMeasure: this._handleMeasure
}, i.createElement("div", {
className: l(Re.dateRangeWrapper, "expanded" !== e
.dateRangeMode && Re.collapsed),
ref: this._handleRangeExpandedRef
}, i.createElement("div", {
className: l(Re.dateRangeExpanded)
}, i.createElement(X, null), this.props
.goToDateEnabled && i.createElement(pe, null), this
.props.goToDateEnabled && i.createElement(te, null))))), i
.createElement("div", {
className: Re.seriesControlWrapper
}, n && i.createElement(c, {
onMeasure: this._handleMeasure
}, i.createElement("div", {
className: l(Re.inline, e.timeZones && Re.collapsed),
ref: this._handleTimeZonesRef
}, i.createElement("div", {
className: Re.inline,
onClick: this._trackTimezonesButtonClick
}, i.createElement(me, {
className: Re.timezone,
withMenu: this.props.timezoneMenuEnabled,
ref: this._handleTimezoneButtonRef
})))), !1, i.createElement("div", {
ref: this._handleSeparatorRef,
className: l(Re.inline, e.separator && Re.collapsed)
}, i.createElement(pe, null)), i.createElement(Ee.a, {
map: this._injector
}, !1, a && !h.enabled("fundamental_widget") && i.createElement(
Oe, {
className: Re.icon
}), s && i.createElement(ke, {
className: Re.item
}), o && i.createElement(We, {
className: Re.item
}), r && this.state.isFullscreenable && i.createElement(je, {
className: Re.icon,
mobileChangeLayoutEnabled: this.props
.mobileChangeLayoutEnabled
}), !1)))
}
updateTimezonesButton() {
null !== this._timezoneButtonRef && this._timezoneButtonRef
.updateTimezonesButton()
}
resizeUI() {
this._handleResize()
}
_updateButtonsVisibility() {
0
}
_trackTimezonesButtonClick() {
ze()
}
_setStateWithResize(e) {
Object.assign(this._layout, Pe), this._applyResizing(), this.setState(e, () =>
this._handleResize())
}
_applyResizing() {
const {
dateRangeMode: e,
...t
} = this._layout;
this._rangeExpanded && this._rangeExpanded.classList.toggle(Re.collapsed,
"expanded" !== e), this._rangeCollapsed && this._rangeCollapsed
.classList.toggle(Re.collapsed, "collapsed" !== e), Object.keys(t).forEach(
e => {
const n = e,
i = this._seriesComponents[n];
i && i.classList.toggle(Re.collapsed, t[n])
})
}
_isPreventPhoneLayoutButton() {
return !1
}
}
Ue.contextType = Fe;
const qe = {
onContentBoxChanged: r.any,
computeContentBox: r.any,
chartWidget: r.any,
chartApiInstance: r.any,
chartWidgetCollection: r.any,
resizerDetacher: r.any,
availableTimeFrames: r.any
};
class He extends i.PureComponent {
constructor(e) {
super(e), this._setActiveChart = e => {
this._defineRegistry(e), this.setState({
chartWidget: e
})
};
const t = this.props.chartWidgetCollection.activeChartWidget.value();
this.state = {
chartWidget: t
}, this._defineRegistry(t)
}
componentDidMount() {
this.props.chartWidgetCollection.activeChartWidget.subscribe(this
._setActiveChart)
}
componentWillUnmount() {
this.props.chartWidgetCollection.activeChartWidget.unsubscribe(this
._setActiveChart)
}
render() {
const {
chartWidget: e
} = this.state;
if (!e) return null;
const {
options: t
} = this.props, n = {
timeFramesWidgetEnabled: t.timeFramesWidgetEnabled,
goToDateEnabled: t.timeFramesWidget.goToDateEnabled,
timeWidgetEnabled: t.timeWidgetEnabled,
timezoneMenuEnabled: t.timeWidget && t.timeWidget.timezoneMenuEnabled,
sessionIdButtonEnabled: t.sessionIdButtonEnabled,
adjustForDividendsButtonEnabled: t.adjustForDividendsButtonEnabled,
logScaleButtonEnabled: t.logScaleButtonEnabled,
percentageScaleButtonEnabled: t.percentageScaleButtonEnabled,
autoScaleButtonEnabled: t.autoScaleButtonEnabled,
fullscreenButtonEnabled: t.fullscreenButtonEnabled,
mobileChangeLayoutEnabled: t.mobileChangeLayoutEnabled
};
return i.createElement(_.a, {
validation: qe,
value: this._registry
}, i.createElement(Ue, {
key: e.id(),
...n
}))
}
_defineRegistry(e) {
const {
onContentBoxChanged: t,
computeContentBox: n,
chartApiInstance: i,
chartWidgetCollection: a,
options: {
timeFramesWidgetEnabled: s,
timeFramesWidget: o
}
} = this.props, r = s ? o.availableTimeFrames : void 0;
this._registry = {
onContentBoxChanged: t,
computeContentBox: n,
chartWidget: e,
availableTimeFrames: r,
chartApiInstance: i,
chartWidgetCollection: a,
resizerDetacher: e.getResizerDetacher()
}
}
}
n.d(t, "BottomToolbarRenderer", (function() {
return Ke
}));
class Ke {
constructor(e, t, n, a, o, r, l) {
this._container = e;
const c = i.createElement(He, {
onContentBoxChanged: t,
computeContentBox: n,
chartWidgetCollection: a,
chartApiInstance: o,
chartWidgetOptions: r,
options: l
});
s.render(c, e), e.setAttribute("data-initialized", "true")
}
destroy() {
s.unmountComponentAtNode(this._container), this._container.removeAttribute(
"data-initialized")
}
}
},
N5tr: function(e, t, n) {
"use strict";
n.d(t, "a", (function() {
return h
})), n.d(t, "b", (function() {
return m
}));
var i = n("q1tI"),
a = n.n(i),
s = n("TSYQ"),
o = n("tWVy"),
r = n("JWMC"),
l = n("ijHL"),
c = n("v1bN");
const h = c;
function d(e) {
const {
reference: t,
...n
} = e, i = {
...n,
ref: t
};
return a.a.createElement(e.href ? "a" : "div", i)
}
function u(e) {
e.stopPropagation()
}
function m(e) {
const {
id: t,
role: n,
"aria-selected": h,
className: m,
title: g,
labelRowClassName: p,
labelClassName: b,
shortcut: v,
forceShowShortcuts: f,
icon: _,
isActive: C,
isDisabled: S,
isHovered: y,
appearAsDisabled: E,
label: x,
link: w,
showToolboxOnHover: N,
target: R,
rel: T,
toolbox: k,
reference: M,
onMouseOut: A,
onMouseOver: W,
suppressToolboxClick: O = !0,
theme: B = c
} = e, j = Object(l.b)(e), I = Object(i.useRef)(null);
return a.a.createElement(d, {
...j,
id: t,
role: n,
"aria-selected": h,
className: s(m, B.item, _ && B.withIcon, {
[B.isActive]: C,
[B.isDisabled]: S || E,
[B.hovered]: y
}),
title: g,
href: w,
target: R,
rel: T,
reference: function(e) {
I.current = e, "function" == typeof M && M(e);
"object" == typeof M && (M.current = e)
},
onClick: function(t) {
const {
dontClosePopup: n,
onClick: i,
onClickArg: a,
trackEventObject: s
} = e;
if (S) return;
s && Object(r.trackEvent)(s.category, s.event, s.label);
i && i(a, t);
n || Object(o.b)()
},
onContextMenu: function(t) {
const {
trackEventObject: n,
trackRightClick: i
} = e;
n && i && Object(r.trackEvent)(n.category, n.event, n.label +
"_rightClick")
},
onMouseUp: function(t) {
const {
trackEventObject: n,
trackMouseWheelClick: i
} = e;
if (1 === t.button && w && n) {
let e = n.label;
i && (e += "_mouseWheelClick"), Object(r.trackEvent)(n.category, n
.event, e)
}
},
onMouseOver: W,
onMouseOut: A
}, void 0 !== _ && a.a.createElement("div", {
className: B.icon,
dangerouslySetInnerHTML: {
__html: _
}
}), a.a.createElement("div", {
className: s(B.labelRow, p)
}, a.a.createElement("div", {
className: s(B.label, b)
}, x)), (void 0 !== v || f) && a.a.createElement("div", {
className: B.shortcut
}, (D = v) && D.split("+").join(" + ")), void 0 !== k && a.a.createElement("div", {
onClick: O ? u : void 0,
className: s(B.toolbox, {
[B.showOnHover]: N
})
}, k));
var D
}
},
NOPy: function(e, t, n) {
e.exports = {
separator: "separator-eqcGT_ow",
small: "small-eqcGT_ow",
normal: "normal-eqcGT_ow",
large: "large-eqcGT_ow"
}
},
O7m7: function(e, t, n) {},
"PP+v": function(e, t, n) {
e.exports = {
toolbar: "toolbar-2yU8ifXU",
dateRangeWrapper: "dateRangeWrapper-2yU8ifXU",
seriesControlWrapper: "seriesControlWrapper-2yU8ifXU",
dateRangeExpanded: "dateRangeExpanded-2yU8ifXU",
dateRangeCollapsed: "dateRangeCollapsed-2yU8ifXU",
item: "item-2yU8ifXU",
first: "first-2yU8ifXU",
last: "last-2yU8ifXU",
inline: "inline-2yU8ifXU",
timezone: "timezone-2yU8ifXU",
session: "session-2yU8ifXU",
icon: "icon-2yU8ifXU",
hidden: "hidden-2yU8ifXU",
collapsed: "collapsed-2yU8ifXU"
}
},
RZ2Z: function(e, t, n) {
e.exports = {
slider: "slider-3GYrNsPp",
inner: "inner-3GYrNsPp"
}
},
"T4/F": function(e, t) {
e.exports =
'<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14"><g fill="none" stroke="currentColor"><circle cx="3.5" cy="3.5" r="2"/><circle cx="10.5" cy="10.5" r="2"/><path stroke-linecap="square" d="M9.5 1.5l-5 11"/></g></svg>'
},
URQ3: function(e, t, n) {
e.exports = {
button: "button-2pZNJ24z",
hover: "hover-2pZNJ24z",
inner: "inner-2pZNJ24z"
}
},
"W9Y+": function(e, t, n) {
e.exports = {
item: "item-3SbREAgE",
hover: "hover-3SbREAgE",
isActive: "isActive-3SbREAgE",
isFirst: "isFirst-3SbREAgE",
isLast: "isLast-3SbREAgE"
}
},
XXQ5: function(e, t, n) {
e.exports = {
item: "item-1-SF84yU",
emptyIcons: "emptyIcons-1-SF84yU",
loading: "loading-1-SF84yU",
disabled: "disabled-1-SF84yU",
interactive: "interactive-1-SF84yU",
hovered: "hovered-1-SF84yU",
icon: "icon-1-SF84yU",
label: "label-1-SF84yU",
fullWidth: "fullWidth-1-SF84yU",
title: "title-1-SF84yU",
nested: "nested-1-SF84yU",
shortcut: "shortcut-1-SF84yU",
remove: "remove-1-SF84yU"
}
},
XiJV: function(e, t, n) {
e.exports = {
separator: "separator-3No0pWrk"
}
},
Xy1d: function(e, t) {
e.exports =
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-width="1.5" d="M7 15l5 5L23 9"/></svg>'
},
Xzy5: function(e, t) {
e.exports =
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18" fill="none"><path stroke="currentColor" d="M8 5l3.5 3.5L8 12"/></svg>'
},
YZ9j: function(e) {
e.exports = JSON.parse(
'{"loader":"loader-8x1ZxRwP","item":"item-2-89r_cd","tv-button-loader":"tv-button-loader-23vqS1uY","black":"black-20Ytsf0V","white":"white-1ucCcc2I","gray":"gray-XDhHSS-T","loader-initial":"loader-initial-1deQDeio","loader-appear":"loader-appear-2krFtMrd"}'
)
},
c7H2: function(e, t, n) {
e.exports = {
button: "button-yLOygoSG",
hover: "hover-yLOygoSG",
icon: "icon-yLOygoSG"
}
},
l4ku: function(e, t, n) {
"use strict";
n.d(t, "a", (function() {
return g
}));
var i = n("q1tI"),
a = n.n(i),
s = n("TSYQ"),
o = n("Iivm"),
r = n("6KyJ"),
l = n("J+f8"),
c = n("w+Rv"),
h = n("Xy1d"),
d = n("Xzy5"),
u = n("20PO"),
m = n("XXQ5");
function g(e) {
const {
isTitle: t,
isLoading: n,
isHovered: g,
active: p,
checkable: b,
disabled: v,
checked: f,
icon: _,
iconChecked: C,
hint: S,
subItems: y,
label: E,
onClick: x,
children: w,
toolbox: N,
fullWidthLabel: R
} = e, T = Object(i.useContext)(l.a), k = !!y.length;
return n ? a.a.createElement("li", {
className: s(m.item, m.loading)
}, a.a.createElement(r.a, {
color: "gray"
})) : a.a.createElement("li", {
className: s(m.item, m.interactive, t && m.title, v && m.disabled, g && m
.hovered, p && m.active, T && m.emptyIcons),
onClick: x
}, a.a.createElement(o.a, {
className: s(m.icon),
icon: function() {
if (b && f) return C || _ || h;
return _
}()
}), a.a.createElement("span", {
className: s(m.label, R && m.fullWidth)
}, E), !!N && a.a.createElement(o.a, {
onClick: function() {
N && N.action()
},
className: m.remove,
icon: u
}), !k && S && a.a.createElement(c.a, {
className: m.shortcut,
text: S
}), k && a.a.createElement(o.a, {
className: m.nested,
icon: d
}), w)
}
},
nPPD: function(e, t, n) {
"use strict";
function i(e, t, n = {}) {
const i = Object.assign({}, t);
for (const a of Object.keys(t)) {
const s = n[a] || a;
s in e && (i[a] = [e[s], t[a]].join(" "))
}
return i
}
function a(e, t, n = {}) {
return Object.assign({}, e, i(e, t, n))
}
n.d(t, "b", (function() {
return i
})), n.d(t, "a", (function() {
return a
}))
},
qSb5: function(e, t, n) {
e.exports = {
sliderRow: "sliderRow-1emAA4_D"
}
},
ul7r: function(e, t) {
e.exports =
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18" fill="none"><path stroke="currentColor" d="M1.5 8V6.5m7.5 9h5.5a2 2 0 0 0 2-2v-7m-15 0v-2c0-1.1.9-2 2-2h11a2 2 0 0 1 2 2v2m-15 0h15"/><path fill="currentColor" d="M5 1h1v3H5V1zM12 1h1v3h-1V1z"/><path stroke="currentColor" d="M0 12.5h7.5m0 0L4 16m3.5-3.5L4 9"/></svg>'
},
v1bN: function(e, t, n) {
e.exports = {
"tablet-small-breakpoint": "screen and (max-width: 428px)",
item: "item-2IihgTnv",
hovered: "hovered-2IihgTnv",
isDisabled: "isDisabled-2IihgTnv",
isActive: "isActive-2IihgTnv",
shortcut: "shortcut-2IihgTnv",
toolbox: "toolbox-2IihgTnv",
withIcon: "withIcon-2IihgTnv",
icon: "icon-2IihgTnv",
labelRow: "labelRow-2IihgTnv",
label: "label-2IihgTnv",
showOnHover: "showOnHover-2IihgTnv"
}
},
"w+Rv": function(e, t, n) {
"use strict";
n.d(t, "a", (function() {
return r
}));
var i = n("q1tI"),
a = n("TSYQ"),
s = n.n(a),
o = n("ycgn");
function r(e) {
const {
text: t = "",
className: n
} = e;
return i.createElement("span", {
className: s()(o.shortcut, n)
}, t)
}
},
"x0D+": function(e, t, n) {
var i, a, s;
a = [t], void 0 === (s = "function" == typeof(i = function(e) {
"use strict";
function t(e) {
if (Array.isArray(e)) {
for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t];
return n
}
return Array.from(e)
}
Object.defineProperty(e, "__esModule", {
value: !0
});
var n = !1;
if ("undefined" != typeof window) {
var i = {
get passive() {
n = !0
}
};
window.addEventListener("testPassive", null, i), window.removeEventListener(
"testPassive", null, i)
}
var a = "undefined" != typeof window && window.navigator && window.navigator
.platform && /iP(ad|hone|od)/.test(window.navigator.platform),
s = [],
o = !1,
r = -1,
l = void 0,
c = void 0,
h = function(e) {
return s.some((function(t) {
return !(!t.options.allowTouchMove || !t.options
.allowTouchMove(e))
}))
},
d = function(e) {
var t = e || window.event;
return !!h(t.target) || 1 < t.touches.length || (t.preventDefault && t
.preventDefault(), !1)
},
u = function() {
setTimeout((function() {
void 0 !== c && (document.body.style.paddingRight = c,
c = void 0), void 0 !== l && (document.body
.style.overflow = l, l = void 0)
}))
};
e.disableBodyScroll = function(e, i) {
if (a) {
if (!e) return void console.error(
"disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices."
);
if (e && !s.some((function(t) {
return t.targetElement === e
}))) {
var u = {
targetElement: e,
options: i || {}
};
s = [].concat(t(s), [u]), e.ontouchstart = function(e) {
1 === e.targetTouches.length && (r = e.targetTouches[0]
.clientY)
}, e.ontouchmove = function(t) {
var n, i, a, s;
1 === t.targetTouches.length && (i = e, s = (n = t)
.targetTouches[0].clientY - r, !h(n.target) && (
i && 0 === i.scrollTop && 0 < s || (a =
i) && a.scrollHeight - a.scrollTop <= a
.clientHeight && s < 0 ? d(n) : n
.stopPropagation()))
}, o || (document.addEventListener("touchmove", d, n ? {
passive: !1
} : void 0), o = !0)
}
} else {
g = i, setTimeout((function() {
if (void 0 === c) {
var e = !!g && !0 === g.reserveScrollBarGap,
t = window.innerWidth - document
.documentElement.clientWidth;
e && 0 < t && (c = document.body.style
.paddingRight,
document.body.style.paddingRight = t +
"px")
}
void 0 === l && (l = document.body.style.overflow,
document.body.style.overflow = "hidden")
}));
var m = {
targetElement: e,
options: i || {}
};
s = [].concat(t(s), [m])
}
var g
}, e.clearAllBodyScrollLocks = function() {
a ? (s.forEach((function(e) {
e.targetElement.ontouchstart = null, e.targetElement
.ontouchmove = null
})), o && (document.removeEventListener("touchmove", d, n ? {
passive: !1
} : void 0), o = !1), s = [], r = -1) : (u(), s = [])
}, e.enableBodyScroll = function(e) {
if (a) {
if (!e) return void console.error(
"enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices."
);
e.ontouchstart = null, e.ontouchmove = null, s = s.filter((function(
t) {
return t.targetElement !== e
})), o && 0 === s.length && (document.removeEventListener(
"touchmove", d, n ? {
passive: !1
} : void 0), o = !1)
} else 1 === s.length && s[0].targetElement === e ? (u(), s = []) : s =
s.filter((function(t) {
return t.targetElement !== e
}))
}
}) ? i.apply(t, a) : i) || (e.exports = s)
},
ycgn: function(e, t, n) {
e.exports = {
item: "item-f5BaKrKq",
interactive: "interactive-f5BaKrKq",
hovered: "hovered-f5BaKrKq",
disabled: "disabled-f5BaKrKq",
active: "active-f5BaKrKq",
shortcut: "shortcut-f5BaKrKq",
iconCell: "iconCell-f5BaKrKq",
icon: "icon-f5BaKrKq",
checkmark: "checkmark-f5BaKrKq",
content: "content-f5BaKrKq",
label: "label-f5BaKrKq",
checked: "checked-f5BaKrKq",
toolbox: "toolbox-f5BaKrKq",
showToolboxOnHover: "showToolboxOnHover-f5BaKrKq",
arrowIcon: "arrowIcon-f5BaKrKq",
subMenu: "subMenu-f5BaKrKq",
invisibleHotkey: "invisibleHotkey-f5BaKrKq"
}
},
z6ID: function(e, t, n) {
e.exports = {
separator: "separator-13-1nlsQ"
}
}
}
]);