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.
4655 lines
197 KiB
4655 lines
197 KiB
(window.webpackJsonp = window.webpackJsonp || []).push([
|
|
["chart-widget-gui"], {
|
|
"+xKI": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" width="7" height="7"><path fill="currentColor" d="M3.5 7L7 4H4V0H3V4H0L3.5 7Z"/></svg>'
|
|
},
|
|
"/NcV": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" width="14" height="14"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M5.5 1.5l5 5.5-5 5.5"/></svg>'
|
|
},
|
|
"0jws": function(e, t, s) {
|
|
e.exports = {
|
|
blockHidden: "blockHidden-xPfK7aM7",
|
|
"pane-button": "pane-button-xPfK7aM7"
|
|
}
|
|
},
|
|
"1INk": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" width="7" height="7"><path fill="currentColor" d="M3.5 0L0 3h3v4h1V3h3L3.5 0z"/></svg>'
|
|
},
|
|
"1Wf8": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M3.5 2.8a.7.7 0 0 0-.7.7V6H1.2V3.5a2.3 2.3 0 0 1 2.3-2.3h11a2.3 2.3 0 0 1 2.3 2.3V6h-1.6V3.5a.7.7 0 0 0-.7-.7h-11z" class="bracket-up"/><path fill="currentColor" d="M3.5 15.2a.7.7 0 0 1-.7-.7V12H1.2v2.5a2.3 2.3 0 0 0 2.3 2.3h11a2.3 2.3 0 0 0 2.3-2.3V12h-1.6v2.5a.7.7 0 0 1-.7.7h-11z" class="bracket-down"/></svg>'
|
|
},
|
|
"2CEX": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 22" width="24" height="22" fill="none"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M6 6.5A2.5 2.5 0 0 1 8.5 4H10v1H8.5C7.67 5 7 5.67 7 6.5v1.15a3.5 3.5 0 0 1-1.93 3.13l-.45.22.45.22A3.5 3.5 0 0 1 7 14.35v1.15c0 .83.67 1.5 1.5 1.5H10v1H8.5A2.5 2.5 0 0 1 6 15.5v-1.15a2.5 2.5 0 0 0-1.38-2.23l-1.34-.67a.5.5 0 0 1 0-.9l1.34-.67A2.5 2.5 0 0 0 6 7.65V6.5zM15.5 5H14V4h1.5A2.5 2.5 0 0 1 18 6.5v1.15c0 .94.54 1.8 1.38 2.23l1.34.67a.5.5 0 0 1 0 .9l-1.34.67A2.5 2.5 0 0 0 18 14.35v1.15a2.5 2.5 0 0 1-2.5 2.5H14v-1h1.5c.83 0 1.5-.67 1.5-1.5v-1.15a3.5 3.5 0 0 1 1.93-3.13l.45-.22-.45-.22A3.5 3.5 0 0 1 17 7.65V6.5c0-.83-.67-1.5-1.5-1.5z"/></svg>'
|
|
},
|
|
"4nwx": function(e, t, s) {
|
|
"use strict";
|
|
s.r(t), s.d(t, "monthsFullNames", (function() {
|
|
return l
|
|
})), s.d(t, "monthsShortNames", (function() {
|
|
return n
|
|
})), s.d(t, "weekDaysFullNames", (function() {
|
|
return a
|
|
})), s.d(t, "weekDaysShortNames", (function() {
|
|
return r
|
|
})), s.d(t, "weekDaysMiniNames", (function() {
|
|
return d
|
|
}));
|
|
var i = s("YFKU"),
|
|
o = s("99ZO");
|
|
const l = {
|
|
[o.Months.JANUARY]: Object(i.t)("January"),
|
|
[o.Months.FEBRUARY]: Object(i.t)("February"),
|
|
[o.Months.MARCH]: Object(i.t)("March"),
|
|
[o.Months.APRIL]: Object(i.t)("April"),
|
|
[o.Months.MAY]: Object(i.t)("May"),
|
|
[o.Months.JUNE]: Object(i.t)("June"),
|
|
[o.Months.JULY]: Object(i.t)("July"),
|
|
[o.Months.AUGUST]: Object(i.t)("August"),
|
|
[o.Months.SEPTEMBER]: Object(i.t)("September"),
|
|
[o.Months.OCTOBER]: Object(i.t)("October"),
|
|
[o.Months.NOVEMBER]: Object(i.t)("November"),
|
|
[o.Months.DECEMBER]: Object(i.t)("December")
|
|
},
|
|
n = {
|
|
[o.Months.JANUARY]: Object(i.t)("Jan"),
|
|
[o.Months.FEBRUARY]: Object(i.t)("Feb"),
|
|
[o.Months.MARCH]: Object(i.t)("Mar"),
|
|
[o.Months.APRIL]: Object(i.t)("Apr"),
|
|
[o.Months.MAY]: Object(i.t)("May", {
|
|
context: "short"
|
|
}),
|
|
[o.Months.JUNE]: Object(i.t)("Jun"),
|
|
[o.Months.JULY]: Object(i.t)("Jul"),
|
|
[o.Months.AUGUST]: Object(i.t)("Aug"),
|
|
[o.Months.SEPTEMBER]: Object(i.t)("Sep"),
|
|
[o.Months.OCTOBER]: Object(i.t)("Oct"),
|
|
[o.Months.NOVEMBER]: Object(i.t)("Nov"),
|
|
[o.Months.DECEMBER]: Object(i.t)("Dec")
|
|
},
|
|
a = {
|
|
[o.WeekDays.SUNDAY]: Object(i.t)("Sunday"),
|
|
[o.WeekDays.MONDAY]: Object(i.t)("Monday"),
|
|
[o.WeekDays.TUESDAY]: Object(i.t)("Tuesday"),
|
|
[o.WeekDays.WEDNESDAY]: Object(i.t)("Wednesday"),
|
|
[o.WeekDays.THURSDAY]: Object(i.t)("Thursday"),
|
|
[o.WeekDays.FRIDAY]: Object(i.t)("Friday"),
|
|
[o.WeekDays.SATURDAY]: Object(i.t)("Saturday")
|
|
},
|
|
r = {
|
|
[o.WeekDays.SUNDAY]: Object(i.t)("Sun"),
|
|
[o.WeekDays.MONDAY]: Object(i.t)("Mon"),
|
|
[o.WeekDays.TUESDAY]: Object(i.t)("Tue"),
|
|
[o.WeekDays.WEDNESDAY]: Object(i.t)("Wed"),
|
|
[o.WeekDays.THURSDAY]: Object(i.t)("Thu"),
|
|
[o.WeekDays.FRIDAY]: Object(i.t)("Fri"),
|
|
[o.WeekDays.SATURDAY]: Object(i.t)("Sat")
|
|
},
|
|
d = {
|
|
[o.WeekDays.SUNDAY]: Object(i.t)("Su", {
|
|
context: "day_of_week"
|
|
}),
|
|
[o.WeekDays.MONDAY]: Object(i.t)("Mo", {
|
|
context: "day_of_week"
|
|
}),
|
|
[o.WeekDays.TUESDAY]: Object(i.t)("Tu", {
|
|
context: "day_of_week"
|
|
}),
|
|
[o.WeekDays.WEDNESDAY]: Object(i.t)("We", {
|
|
context: "day_of_week"
|
|
}),
|
|
[o.WeekDays.THURSDAY]: Object(i.t)("Th", {
|
|
context: "day_of_week"
|
|
}),
|
|
[o.WeekDays.FRIDAY]: Object(i.t)("Fr", {
|
|
context: "day_of_week"
|
|
}),
|
|
[o.WeekDays.SATURDAY]: Object(i.t)("Sa", {
|
|
context: "day_of_week"
|
|
})
|
|
}
|
|
},
|
|
"5Alx": function(e, t, s) {
|
|
e.exports = {
|
|
marginlegendhoriz: "4px",
|
|
legend: "legend-2KhwsEwE",
|
|
item: "item-2KhwsEwE",
|
|
withAction: "withAction-2KhwsEwE",
|
|
selected: "selected-2KhwsEwE",
|
|
last: "last-2KhwsEwE",
|
|
text: "text-2KhwsEwE",
|
|
noWrapWrapper: "noWrapWrapper-2KhwsEwE",
|
|
noWrap: "noWrap-2KhwsEwE",
|
|
series: "series-2KhwsEwE",
|
|
valuesAdditionalWrapper: "valuesAdditionalWrapper-2KhwsEwE",
|
|
valueItem: "valueItem-2KhwsEwE",
|
|
valueTitle: "valueTitle-2KhwsEwE",
|
|
valueValue: "valueValue-2KhwsEwE",
|
|
valuesWrapper: "valuesWrapper-2KhwsEwE",
|
|
directionColumn: "directionColumn-2KhwsEwE",
|
|
titleWrapper: "titleWrapper-2KhwsEwE",
|
|
button: "button-2KhwsEwE",
|
|
statusesWrapper: "statusesWrapper-2KhwsEwE",
|
|
buttonsWrapper: "buttonsWrapper-2KhwsEwE",
|
|
buttons: "buttons-2KhwsEwE",
|
|
noActions: "noActions-2KhwsEwE",
|
|
title: "title-2KhwsEwE",
|
|
title2nd: "title2nd-2KhwsEwE",
|
|
disabled: "disabled-2KhwsEwE",
|
|
disabledOnInterval: "disabledOnInterval-2KhwsEwE",
|
|
withCustomTextColor: "withCustomTextColor-2KhwsEwE",
|
|
study: "study-2KhwsEwE",
|
|
title1st: "title1st-2KhwsEwE",
|
|
hideValues: "hideValues-2KhwsEwE",
|
|
has5Buttons: "has5Buttons-2KhwsEwE",
|
|
stayInHoveredMode: "stayInHoveredMode-2KhwsEwE",
|
|
withTail: "withTail-2KhwsEwE",
|
|
loading: "loading-2KhwsEwE",
|
|
loader: "loader-2KhwsEwE",
|
|
withDot: "withDot-2KhwsEwE",
|
|
title3rd: "title3rd-2KhwsEwE",
|
|
title4th: "title4th-2KhwsEwE",
|
|
miniHidden2Title: "miniHidden2Title-2KhwsEwE",
|
|
microHidden2Title: "microHidden2Title-2KhwsEwE",
|
|
hidden3Title: "hidden3Title-2KhwsEwE",
|
|
flagged: "flagged-2KhwsEwE",
|
|
medium: "medium-2KhwsEwE",
|
|
minimized: "minimized-2KhwsEwE",
|
|
micro: "micro-2KhwsEwE",
|
|
onlyOneButtonCanBeStick: "onlyOneButtonCanBeStick-2KhwsEwE",
|
|
touchMode: "touchMode-2KhwsEwE",
|
|
buttonIcon: "buttonIcon-2KhwsEwE",
|
|
flag: "flag-2KhwsEwE",
|
|
invisibleHover: "invisibleHover-2KhwsEwE",
|
|
eye: "eye-2KhwsEwE",
|
|
hiddenLoading: "hiddenLoading-2KhwsEwE",
|
|
"eye-animation": "eye-animation-2KhwsEwE",
|
|
markerContainer: "markerContainer-2KhwsEwE",
|
|
flagWrapper: "flagWrapper-2KhwsEwE",
|
|
sourcesWrapper: "sourcesWrapper-2KhwsEwE",
|
|
newCollapser: "newCollapser-2KhwsEwE",
|
|
sources: "sources-2KhwsEwE",
|
|
toggler: "toggler-2KhwsEwE pane-button-xPfK7aM7",
|
|
counter: "counter-2KhwsEwE",
|
|
iconArrow: "iconArrow-2KhwsEwE",
|
|
objectTree: "objectTree-2KhwsEwE",
|
|
onlyOneSourceShown: "onlyOneSourceShown-2KhwsEwE",
|
|
closed: "closed-2KhwsEwE",
|
|
objectsTreeCanBeShown: "objectsTreeCanBeShown-2KhwsEwE"
|
|
}
|
|
},
|
|
"61S9": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 22" width="30" height="24" fill="none"><g fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" class="normal-eye"><path d="M18 7.91C16.7 6.5 14.7 5 12 5S7.3 6.49 6 7.91C6 7.91 4 10 4 11s2 3.09 2 3.09C7.3 15.5 9.3 17 12 17s4.7-1.49 6-2.91c0 0 2-2.09 2-3.09s-2-3.09-2-3.09zm-11.26 5.5C7.94 14.74 9.7 16 12 16s4.05-1.26 5.25-2.59c0 0 1.75-1.91 1.75-2.41 0-.5-1.75-2.41-1.75-2.41C16.05 7.26 14.3 6 12 6S7.95 7.26 6.74 8.59C6.74 8.59 5 10.5 5 11c0 .5 1.74 2.41 1.74 2.41z"/><path d="M12 13a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/></g><g fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" class="crossed-eye"><path d="M8.85 16.27c.92.44 1.97.73 3.15.73 2.7 0 4.7-1.49 6-2.91 0 0 2-2.09 2-3.09s-2-3.09-2-3.09l-.39-.4-.7.7.34.38S19 10.5 19 11c0 .5-1.75 2.41-1.75 2.41C16.05 14.74 14.3 16 12 16c-.88 0-1.68-.18-2.4-.48l-.75.75zM7.1 13.78l-.36-.37S5 11.5 5 11c0-.5 1.74-2.41 1.74-2.41C7.94 7.26 9.7 6 12 6c.88 0 1.68.18 2.4.48l.75-.75A7.17 7.17 0 0 0 12 5C9.3 5 7.3 6.49 6 7.91 6 7.91 4 10 4 11s2 3.09 2 3.09l.39.4.7-.7z"/><path d="M11.22 13.9a3 3 0 0 0 3.68-3.68l-.9.9A2 2 0 0 1 12.13 13l-.9.9zm.66-4.9A2 2 0 0 0 10 10.88l-.9.9a3 3 0 0 1 3.68-3.68l-.9.9zM5.65 16.65l12-12 .7.7-12 12-.7-.7z"/></g><g class="loading-eye"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M18 7.91C16.7 6.5 14.7 5 12 5S7.3 6.49 6 7.91C6 7.91 4 10 4 11s2 3.09 2 3.09C7.3 15.5 9.3 17 12 17s4.7-1.49 6-2.91c0 0 2-2.09 2-3.09s-2-3.09-2-3.09zm-11.26 5.5C7.94 14.74 9.7 16 12 16s4.05-1.26 5.25-2.59c0 0 1.75-1.91 1.75-2.41 0-.5-1.75-2.41-1.75-2.41C16.05 7.26 14.3 6 12 6S7.95 7.26 6.74 8.59C6.74 8.59 5 10.5 5 11c0 .5 1.74 2.41 1.74 2.41z"/></g><g class="animated-loading-eye"><path stroke="currentColor" stroke-linecap="round" d="M14.5 11a2.5 2.5 0 1 0-2.5 2.5"/></g></svg>'
|
|
},
|
|
"6dGu": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" width="15" height="15"><path fill="currentColor" d="M3.5 5.58c.24-.28.65-.3.92-.07L7.5 8.14l3.08-2.63a.65.65 0 1 1 .84.98L7.5 9.86 3.58 6.49a.65.65 0 0 1-.07-.91z"/></svg>'
|
|
},
|
|
"94TV": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" width="14" height="14"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6.5 1.5l5 5.5-5 5.5M3 4l2.5 3L3 10"/></svg>'
|
|
},
|
|
"956S": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><circle fill="currentColor" cx="15" cy="9" r="1.5"/><circle fill="currentColor" cx="9" cy="9" r="1.5"/><circle fill="currentColor" cx="3" cy="9" r="1.5"/></svg>'
|
|
},
|
|
"9Crk": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M13.4 5.9c-.41 1.62-1.16 2.43-2.25 2.43-.52 0-1.25-.15-2.2-.45-.93-.3-1.58-.45-1.96-.45-.55 0-.98.3-1.27.9H4.66c.1-.67.36-1.24.76-1.71.4-.48.86-.72 1.4-.72.56 0 1.31.16 2.27.46.95.3 1.62.45 2.01.45.64 0 1.06-.3 1.27-.9h1.03zm0 3.87c-.41 1.62-1.16 2.43-2.25 2.43-.52 0-1.25-.15-2.2-.45-.93-.3-1.58-.46-1.96-.46-.55 0-.98.3-1.27.9H4.66c.1-.67.36-1.24.76-1.7.4-.48.86-.72 1.4-.72.56 0 1.31.15 2.27.46.95.3 1.62.44 2.01.44.64 0 1.06-.3 1.27-.9h1.03z"/></svg>'
|
|
},
|
|
"9lPX": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><rect width="10" height="4" fill="currentColor" rx="2" x="4" y="7"/></svg>'
|
|
},
|
|
AH3n: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M13 12.78V5.22a.3.3 0 0 0-.51-.2L8.7 8.78a.3.3 0 0 0 0 .42L12.5 13a.3.3 0 0 0 .51-.21zM8 12.78V5.22a.3.3 0 0 0-.51-.2L3.7 8.78a.3.3 0 0 0 0 .42L7.5 13a.3.3 0 0 0 .51-.21z"/></svg>'
|
|
},
|
|
AvGy: function(e, t, s) {
|
|
"use strict";
|
|
s.d(t, "a", (function() {
|
|
return o
|
|
}));
|
|
var i = s("qFKp");
|
|
const o = i.CheckMobile.any()
|
|
},
|
|
D8x7: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 22" width="24" height="22" fill="none"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M17.35 6.35l-10 10-.7-.7 10-10 .7.7z"/><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M6.65 6.35l10 10 .7-.7-10-10-.7.7z"/></svg>'
|
|
},
|
|
EV8o: function(e, t, s) {
|
|
"use strict";
|
|
s.d(t, "a", (function() {
|
|
return o
|
|
}));
|
|
var i = s("ogJP");
|
|
|
|
function o(e, t, s, o, l) {
|
|
const n = document.createElement("div");
|
|
n.className = t, n.classList.toggle(o, !e.visible.value()), Object.assign(n.dataset, e
|
|
.dataset), void 0 !== e.className && n.classList.add(e.className), void 0 !== e
|
|
.title && (n.classList.add("apply-common-tooltip"), n.setAttribute("title", e.title
|
|
.value()), void 0 !== e.hotKeyTitle && (n.dataset.tooltipHotkey = e
|
|
.hotKeyTitle)), n.addEventListener("touchend", e.action), n.addEventListener(
|
|
"mousedown", t => {
|
|
0 === t.button && e.action(t)
|
|
});
|
|
const a = document.createElement("div");
|
|
a.classList.add(s);
|
|
const r = e.iconMap.get(l) || "";
|
|
return Object(i.isString)(r) ? a.innerHTML = r : a.appendChild(r), n.appendChild(a), n
|
|
}
|
|
},
|
|
G2LI: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M12.57 5.5h-.07a3.5 3.5 0 1 0 .07 7A4.98 4.98 0 0 1 4 9a5 5 0 0 1 8.57-3.5z"/></svg>'
|
|
},
|
|
GOhO: function(e, t, s) {
|
|
"use strict";
|
|
var i = s("+DwS");
|
|
s("tc+8");
|
|
var o = s("m/cY");
|
|
|
|
function l(e, ...t) {
|
|
const s = () => e(...t.map(e => e.value())),
|
|
i = Object(o.a)(s()),
|
|
l = () => i.setValue(s()),
|
|
n = {};
|
|
for (const e of t) e.subscribe(n, l);
|
|
return i.destroy = () => {
|
|
t.forEach(e => e.unsubscribeAll(n))
|
|
}, i
|
|
}
|
|
s.d(t, "b", (function() {
|
|
return i.a
|
|
})), s.d(t, "a", (function() {
|
|
return l
|
|
}))
|
|
},
|
|
"Gp/h": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M12.22 11.78A3.47 3.47 0 0 0 9 6.98a3.48 3.48 0 0 0-3.22 4.8 6.97 6.97 0 0 1 6.44 0zM4.18 9.83L2.1 9.28l.33-1.24 2.07.55-.33 1.24zM6.38 6.36l-.9-1.94 1.16-.54.9 1.94-1.16.54zM10.46 5.82l.9-1.94 1.16.54-.9 1.94-1.16-.54zM13.49 8.6l2.07-.56.33 1.24-2.07.55-.33-1.24z"/></svg>'
|
|
},
|
|
Jjb7: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M13.5 4.5l-9 9M4.5 4.5l9 9"/></svg>'
|
|
},
|
|
JmzL: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M9 4c-.79 0-1.38.7-1.25 1.48l.67 4.03a.59.59 0 0 0 1.16 0l.67-4.03A1.27 1.27 0 0 0 9 4zm0 8a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>'
|
|
},
|
|
LIcf: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M7.9 5.87v2.17h3.07v1.4H7.9v2.8h4.22v1.46H6.25V4.4h5.94v1.47H7.9z"/></svg>'
|
|
},
|
|
LVLx: function(e, t, s) {
|
|
"use strict";
|
|
(e => {
|
|
function t(e) {
|
|
return e instanceof Node ? e : document.createTextNode(String(e))
|
|
}
|
|
for (const s of e) {
|
|
if (s.hasOwnProperty("append")) return;
|
|
Object.defineProperty(s, "append", {
|
|
configurable: !0,
|
|
enumerable: !0,
|
|
writable: !0,
|
|
value: function(...e) {
|
|
if (1 === e.length) return void this.appendChild(t(e[0]));
|
|
const s = document.createDocumentFragment();
|
|
for (const i of e) s.appendChild(t(i));
|
|
this.appendChild(s)
|
|
}
|
|
})
|
|
}
|
|
})([Element.prototype, Document.prototype, DocumentFragment.prototype])
|
|
},
|
|
M3mX: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M9 2.5c-1.06 0-1.88.93-1.75 1.98l.63 5.03a1.13 1.13 0 0 0 2.25 0l.62-5.03A1.77 1.77 0 0 0 9 2.5zm0 10a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z"/></svg>'
|
|
},
|
|
MQEA: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9 7" width="9" height="7"><path fill="currentColor" d="M8.5 3.5L5 0v3H0v1h5v3z"/></svg>'
|
|
},
|
|
MjtL: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" width="14" height="14"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M8.5 1.5L3.5 7l5 5.5"/></svg>'
|
|
},
|
|
"MyT/": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18" fill="none"><circle fill="currentColor" cx="9" cy="9" r="4"/></svg>'
|
|
},
|
|
OJSF: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" width="15" height="15"><path fill="currentColor" d="M11.65 12.35l-9-9 .7-.7 9 9-.7.7z"/><path fill="currentColor" d="M2.65 11.65l9-9 .7.7-9 9-.7-.7z"/></svg>'
|
|
},
|
|
OcaN: function(e, t, s) {
|
|
e.exports = {
|
|
loader: "loader-1pOK1lo2",
|
|
loaderItem: "loaderItem-1pOK1lo2",
|
|
"loader-animation": "loader-animation-1pOK1lo2",
|
|
touchMode: "touchMode-1pOK1lo2"
|
|
}
|
|
},
|
|
PXSR: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" width="15" height="15"><path fill="currentColor" d="M11.83 6.12l-.66.76L8 4.1V12H7V4.1L3.83 6.88l-.66-.76L7.5 2.34l4.33 3.78z"/></svg>'
|
|
},
|
|
QEZv: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" width="15" height="15"><path fill="currentColor" d="M11.83 8.88l-.66-.76L8 10.9V3H7v7.9L3.83 8.12l-.66.76 4.33 3.78 4.33-3.78z"/></svg>'
|
|
},
|
|
QkND: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M13.29 4.8h-.09a4.2 4.2 0 1 0 .09 8.4 6 6 0 1 1 0-8.4z"/></svg>'
|
|
},
|
|
R5JZ: function(e, t, s) {
|
|
"use strict";
|
|
|
|
function i(e, t, s, i, o) {
|
|
function l(o) {
|
|
if (e > o.timeStamp) return;
|
|
const l = o.target;
|
|
void 0 !== s && null !== t && null !== l && l.ownerDocument === i && (t.contains(l) ||
|
|
s(o))
|
|
}
|
|
return o.click && i.addEventListener("click", l, !1), o.mouseDown && i.addEventListener(
|
|
"mousedown", l, !1), o.touchEnd && i.addEventListener("touchend", l, !1), o
|
|
.touchStart && i.addEventListener("touchstart", l, !1), () => {
|
|
i.removeEventListener("click", l, !1), i.removeEventListener("mousedown", l, !1), i
|
|
.removeEventListener("touchend", l, !1), i.removeEventListener("touchstart", l,
|
|
!1)
|
|
}
|
|
}
|
|
s.d(t, "a", (function() {
|
|
return i
|
|
}))
|
|
},
|
|
RgOa: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" width="14" height="14" fill="none"><path fill="currentColor" fill-rule="evenodd" d="M8.63 1.08a2.04 2.04 0 0 1-3.26 0c-.51.14-1 .35-1.45.6l.01.2A2.05 2.05 0 0 1 1.7 3.93a6.1 6.1 0 0 0-.6 1.45 2.04 2.04 0 0 1 0 3.26c.13.51.34 1 .6 1.45l.2-.01a2.05 2.05 0 0 1 2.03 2.24c.45.26.94.47 1.45.6a2.04 2.04 0 0 1 3.26 0c.51-.13 1-.34 1.45-.6l-.01-.2a2.05 2.05 0 0 1 2.24-2.03c.26-.45.47-.94.6-1.45a2.04 2.04 0 0 1 0-3.26 6.1 6.1 0 0 0-.6-1.45 2.05 2.05 0 0 1-2.23-2.23 6.1 6.1 0 0 0-1.45-.6zM7.84.42c.17-.24.43-.47.72-.4.84.18 1.62.5 2.32.96.23.15.26.48.22.76a1.03 1.03 0 0 0 1.16 1.16c.28-.04.6-.01.76.22.45.7.78 1.48.97 2.32.06.29-.17.55-.41.72a1.02 1.02 0 0 0 0 1.68c.24.17.47.43.4.72a7.12 7.12 0 0 1-.96 2.32c-.15.23-.48.26-.76.22a1.03 1.03 0 0 0-1.17 1.01l.01.15c.04.28.01.6-.22.76-.7.45-1.48.78-2.32.97-.29.06-.55-.17-.72-.41a1.02 1.02 0 0 0-1.68 0c-.17.24-.43.47-.72.4a7.12 7.12 0 0 1-2.32-.96c-.23-.15-.26-.48-.22-.76v-.15a1.02 1.02 0 0 0-1.16-1c-.28.03-.6 0-.76-.23A7.12 7.12 0 0 1 0 8.56c-.06-.29.17-.55.41-.72a1.02 1.02 0 0 0 0-1.68c-.24-.17-.47-.43-.4-.72.18-.84.5-1.62.96-2.32.15-.23.48-.26.76-.22h.15a1.02 1.02 0 0 0 1-1.16c-.03-.28 0-.6.23-.76C3.82.53 4.6.2 5.44 0c.29-.06.55.17.72.41a1.02 1.02 0 0 0 1.68 0zM9 7a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm1 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/></svg>'
|
|
},
|
|
S48P: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M12.58 12.1A3.86 3.86 0 0 0 9 6.75a3.87 3.87 0 0 0-3.58 5.33 7.74 7.74 0 0 1 7.16 0zM3.64 9.93l-2.3-.62.37-1.38 2.3.62-.37 1.38zM6.1 6.07L5.07 3.92l1.3-.6 1 2.15-1.29.6zM10.62 5.47l1-2.16 1.3.6-1.01 2.16-1.3-.6zM13.99 8.55l2.3-.62.36 1.38-2.3.62L14 8.55z"/></svg>'
|
|
},
|
|
TGRH: function(e, t, s) {
|
|
"use strict";
|
|
s.r(t), s.d(t, "ControlBarNavigation", (function() {
|
|
return A
|
|
}));
|
|
var i = s("Eyy1"),
|
|
o = (s("YFKU"), s("8+VR")),
|
|
l = s("Kxc7"),
|
|
n = s("1ANp"),
|
|
a = s("Ialn"),
|
|
r = s("gWrr"),
|
|
d = s("/DW5"),
|
|
h = s("qFKp"),
|
|
u = (s("JWMC"), s("MjtL")),
|
|
c = s("e8Rm"),
|
|
_ = s("e2QN"),
|
|
p = s("vg09"),
|
|
m = s("/NcV"),
|
|
b = s("94TV"),
|
|
g = s("qfuz"),
|
|
w = s("MQEA"),
|
|
v = s("1INk"),
|
|
y = s("+xKI"),
|
|
S = s("eYcT"),
|
|
M = s("nFx7");
|
|
s("jrhZ");
|
|
const f = Object(d.b)({
|
|
keys: ["Alt", "R"],
|
|
text: "{0} + {1}"
|
|
}),
|
|
E = Object(d.b)({
|
|
keys: ["Alt", "Click", "Alt", "Enter"],
|
|
text: "{0} + {1}, {2} + {3}"
|
|
}),
|
|
C = Object(d.b)({
|
|
keys: [g],
|
|
text: "{0}"
|
|
}),
|
|
k = Object(d.b)({
|
|
keys: [w],
|
|
text: "{0}"
|
|
}),
|
|
V = Object(d.b)({
|
|
keys: ["Ctrl", v],
|
|
text: "{0} + {1}"
|
|
}),
|
|
x = Object(d.b)({
|
|
keys: ["Ctrl", y],
|
|
text: "{0} + {1}"
|
|
}),
|
|
W =
|
|
`<div class="control-bar-wrapper">\n\t<div class="control-bar control-bar--hidden">\n\t\t<div class="control-bar__group js-btn-group js-btn-group-zoom">\n\t\t\t<div class="control-bar__btn control-bar__btn--zoom-out apply-common-tooltip" title="${window.t("Zoom Out")}" data-tooltip-hotkey="${x}">\n\t\t\t\t${c}\n\t\t\t</div>\n\t\t\t<div class="control-bar__btn control-bar__btn--zoom-in apply-common-tooltip" title="${window.t("Zoom In")}" data-tooltip-hotkey="${V}">\n\t\t\t\t${p}\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="control-bar__group js-btn-group js-btn-group-maximize">\n\t\t\t<div class="control-bar__btn control-bar__btn--maximize apply-common-tooltip" title="${window.t("Maximize chart")}" data-tooltip-hotkey="${E}">\n\t\t\t\t${S}\n\t\t\t</div>\n\t\t\t<div class="control-bar__btn control-bar__btn--minimize js-hidden apply-common-tooltip" title="${window.t("Restore chart")}" data-tooltip-hotkey="${E}">\n\t\t\t\t${M}\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="control-bar__group js-btn-group js-btn-group-scroll">\n\t\t\t<div class="control-bar__btn control-bar__btn--move-left apply-common-tooltip" title="${window.t("Scroll to the Left")}" data-tooltip-hotkey="${C}">\n\t\t\t\t${u}\n\t\t\t</div>\n\t\t\t<div class="control-bar__btn control-bar__btn--move-right apply-common-tooltip" title="${window.t("Scroll to the Right")}" data-tooltip-hotkey="${k}">\n\t\t\t\t${m}\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="control-bar__group js-btn-group js-btn-group-reset-scale">\n\t\t\t<div class="control-bar__btn control-bar__btn--turn-button control-bar__btn--btn-hidden apply-common-tooltip js-btn-reset" title="${window.t("Reset Chart")}" data-tooltip-hotkey="${f}">\n\t\t\t\t${_}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>`,
|
|
T =
|
|
`<div class="control-bar control-bar__btn control-bar__btn--back-present control-bar__btn--btn-hidden apply-common-tooltip" title="${window.t("Scroll to the Most Recent Bar")}">\n\t${b}\n</div>`,
|
|
L = h.CheckMobile.any(),
|
|
O = {
|
|
zoomInOut: !0,
|
|
maximize: !0,
|
|
scrollLeftRight: !0,
|
|
resetScale: !0,
|
|
goToRealtime: !0
|
|
};
|
|
class A {
|
|
constructor(e, t, s) {
|
|
this._widget = Object(i.ensureNotNull)(Object(r.a)(W).querySelector(
|
|
".control-bar-wrapper")), this._controlBar = Object(i.ensureNotNull)(this
|
|
._widget.querySelector(".control-bar")), this._back = Object(i
|
|
.ensureNotNull)(Object(r.a)(T).querySelector(
|
|
".control-bar__btn--back-present")), this._btnGroups = Array.from(this
|
|
._controlBar.querySelectorAll(".js-btn-group")), this._backButtonVisible = !
|
|
1, this._boundMouseHandler = null, this._chartModel = null, this
|
|
._checkIntervalId = 0, this._controlBarVisible = !1, this._priceAxisChanged =
|
|
null, this._resetAvailabilityChanged = null, this._priceAxisName = "right", this
|
|
._rafId = 0, this._visibilityTypeProperty = null, this
|
|
._boundUpdateMaximizeButtonsVisibility = this._updateMaximizeButtonsVisibility
|
|
.bind(this), this._boundToggleFullscreenButtons = this._toggleFullscreenButtons
|
|
.bind(this), this._paneWidth = 0, this._leftPriceScaleWidth = 0, this
|
|
._rightPriceScaleWidth = 0, this._chart = e, this._parent = t, this._options =
|
|
Object.assign({}, O, s), this._visibilityPrioritizedGroups = this
|
|
._initGroupDescriptions(), this._init(), this._initHandlers(), this
|
|
.updatePosition()
|
|
}
|
|
destroy() {
|
|
if (null !== this._visibilityTypeProperty && (this._visibilityTypeProperty
|
|
.unsubscribe(this, this._onVisibilityTypeChange), this
|
|
._visibilityTypeProperty = null), null !== this._boundMouseHandler && (this
|
|
._parent.removeEventListener("mousemove", this._boundMouseHandler, !1), this
|
|
._parent.removeEventListener("mouseleave", this._boundMouseHandler, !1),
|
|
this._boundMouseHandler = null), null !== this._priceAxisChanged && (this
|
|
._priceAxisChanged.unsubscribe(this, this._updateBackBtnPosition), this
|
|
._priceAxisChanged = null), clearInterval(this._checkIntervalId), null !==
|
|
this._resetAvailabilityChanged) {
|
|
this._resetAvailabilityChanged.unsubscribe(this, this
|
|
._updateResetScalesButtonVisibility);
|
|
const e = this._chart.getResizerDetacher();
|
|
e.fullscreenable.unsubscribe(this._boundUpdateMaximizeButtonsVisibility), e
|
|
.fullscreen.unsubscribe(this._boundToggleFullscreenButtons), this
|
|
._resetAvailabilityChanged = null
|
|
}
|
|
this._chart = null
|
|
}
|
|
updatePosition() {
|
|
const e = this._chart.paneWidgets();
|
|
if (0 === e.length) return;
|
|
this._paneWidth = e[0].width(), this._leftPriceScaleWidth = this._chart
|
|
.getPriceAxisMaxWidthByName("left"), this._rightPriceScaleWidth = this._chart
|
|
.getPriceAxisMaxWidthByName("right");
|
|
const t = this._chart.timeAxisHeight() + this._bottomMargin();
|
|
this._widget.style.bottom = t + "px", this._back.style.bottom = t + "px", this
|
|
._updateBtnGroupVisibility()
|
|
}
|
|
_bottomMargin() {
|
|
var e;
|
|
const t = this._chart.paneWidgets();
|
|
return (null !== (e = this._chart.maximizedPaneWidget()) && void 0 !== e ? e : t[t
|
|
.length - 1]).containsMainSeries() ? 32 : 5
|
|
}
|
|
_init() {
|
|
if (h.CheckMobile.any())
|
|
for (const e of this._btnGroups) e.classList.add("js-hidden");
|
|
this._buttons = {
|
|
zoomIn: this._widget.querySelector(".control-bar__btn--zoom-in"),
|
|
zoomOut: this._widget.querySelector(".control-bar__btn--zoom-out"),
|
|
moveLeft: this._widget.querySelector(".control-bar__btn--move-left"),
|
|
moveRight: this._widget.querySelector(".control-bar__btn--move-right"),
|
|
turn: this._widget.querySelector(".control-bar__btn--turn-button"),
|
|
maximize: this._widget.querySelector(".control-bar__btn--maximize"),
|
|
minimize: this._widget.querySelector(".control-bar__btn--minimize")
|
|
}, this._initVisibility(), this._parent.appendChild(this._widget), this._parent
|
|
.appendChild(this._back), this._backButtonVisible = !1, this._priceAxisName =
|
|
Object(a.isRtl)() ? "left" : "right", this._chart.withModel(this, () => {
|
|
this._chartModel = this._chart.model(), this._priceAxisChanged = this
|
|
._chart.getPriceAxisWidthChangedByName(this._priceAxisName), this
|
|
._resetAvailabilityChanged = this._chartModel.model()
|
|
.isScalesResetAvailableChanged(), this._priceAxisChanged.subscribe(
|
|
this, this._updateBackBtnPosition), this
|
|
._resetAvailabilityChanged.subscribe(this, this
|
|
._updateResetScalesButtonVisibility);
|
|
const e = this._chart.getResizerDetacher();
|
|
e.fullscreenable.subscribe(this._boundUpdateMaximizeButtonsVisibility),
|
|
e.fullscreen.subscribe(this._boundToggleFullscreenButtons), this
|
|
._updateMaximizeButtonsVisibility(), this._updateBackBtnPosition(),
|
|
this._back.addEventListener("click", () => {
|
|
null !== this._chartModel && this._chartModel.timeScale()
|
|
.scrollToRealtime(!0)
|
|
}), this._checkIntervalId = setInterval(() => this._check(), 1e3)
|
|
})
|
|
}
|
|
_initHandlers() {
|
|
const e = o.mobiletouch ? "touchstart" : "mousedown",
|
|
t = o.mobiletouch ? ["touchend"] : ["mouseup", "mouseout"];
|
|
this._buttons.moveLeft.addEventListener(e, e => {
|
|
e.preventDefault(), this._chart.scrollHelper().moveByBar(1), this
|
|
._trackEvent("Move Left")
|
|
}), this._buttons.moveRight.addEventListener(e, e => {
|
|
e.preventDefault(), this._chart.scrollHelper().moveByBar(-1), this
|
|
._trackEvent("Move Right")
|
|
});
|
|
for (const e of t) this._buttons.moveLeft.addEventListener(e, () => this._chart
|
|
.scrollHelper().stopMoveByBar()), this._buttons.moveRight.addEventListener(
|
|
e, () => this._chart.scrollHelper().stopMoveByBar());
|
|
this._buttons.turn.addEventListener("click", e => {
|
|
e.preventDefault(), this._chart.GUIResetScales(), this._trackEvent(
|
|
"Reset to Default Settings")
|
|
}), this._buttons.zoomOut.addEventListener("click", e => {
|
|
e.preventDefault(), null !== this._chartModel && this._chartModel
|
|
.zoomOut(), this._trackEvent("Zoom Out")
|
|
}), this._buttons.zoomIn.addEventListener("click", e => {
|
|
e.preventDefault(), null !== this._chartModel && this._chartModel
|
|
.zoomIn(), this._trackEvent("Zoom In")
|
|
}), this._buttons.maximize.addEventListener("click", e => {
|
|
e.preventDefault(), this._chart.setActive(!0), this._chart
|
|
.getResizerDetacher().requestFullscreen(), this._trackEvent(
|
|
" Maximize Chart")
|
|
}), this._buttons.minimize.addEventListener("click", e => {
|
|
e.preventDefault(), this._chart.getResizerDetacher().exitFullscreen(),
|
|
this._trackEvent(" Restore Chart")
|
|
});
|
|
const s = e => e.addEventListener("contextmenu", e => e.preventDefault());
|
|
s(this._buttons.moveLeft), s(this._buttons.moveRight), s(this._buttons.turn), s(this
|
|
._buttons.zoomOut), s(this._buttons.zoomIn), s(this._buttons.minimize), s(
|
|
this._buttons.maximize)
|
|
}
|
|
_initGroupDescriptions() {
|
|
return [{
|
|
shouldBeHiddenOnMobile: !1,
|
|
available: this._isMaximizeButtonAvailable.bind(this),
|
|
className: "js-btn-group-maximize",
|
|
element: this._getBtnGroup("js-btn-group-maximize"),
|
|
totalWidth: 50
|
|
}, {
|
|
shouldBeHiddenOnMobile: !1,
|
|
available: () => this._options.resetScale,
|
|
className: "js-btn-group-reset-scale",
|
|
element: this._getBtnGroup("js-btn-group-reset-scale"),
|
|
totalWidth: 50
|
|
}, {
|
|
shouldBeHiddenOnMobile: !l.enabled(
|
|
"show_zoom_and_move_buttons_on_touch"),
|
|
available: () => this._options.zoomInOut,
|
|
className: "js-btn-group-zoom",
|
|
element: this._getBtnGroup("js-btn-group-zoom"),
|
|
totalWidth: 86
|
|
}, {
|
|
shouldBeHiddenOnMobile: !l.enabled(
|
|
"show_zoom_and_move_buttons_on_touch"),
|
|
available: () => this._options.scrollLeftRight,
|
|
className: "js-btn-group-scroll",
|
|
element: this._getBtnGroup("js-btn-group-scroll"),
|
|
totalWidth: 86
|
|
}]
|
|
}
|
|
_check() {
|
|
if (null === this._chartModel || !this._options.goToRealtime) return;
|
|
const e = this._chartModel.timeScale().rightOffset() < 0;
|
|
e !== this._backButtonVisible && (this._backButtonVisible = e, this._back.classList
|
|
.toggle("control-bar__btn--btn-hidden", !this._backButtonVisible))
|
|
}
|
|
_initVisibility() {
|
|
this._visibilityTypeProperty = Object(n.actualBehavior)(), this
|
|
._visibilityTypeProperty.subscribe(this, this._onVisibilityTypeChange), this
|
|
._onVisibilityTypeChange()
|
|
}
|
|
_onVisibilityTypeChange() {
|
|
if (null === this._visibilityTypeProperty) return;
|
|
const e = this._visibilityTypeProperty.value();
|
|
"alwaysOn" === e || "alwaysOff" === e ? (this._controlBarVisible = "alwaysOn" === e,
|
|
null !== this._boundMouseHandler && (this._parent.removeEventListener(
|
|
"mousemove", this._boundMouseHandler, !1), this._parent
|
|
.removeEventListener("mouseleave", this._boundMouseHandler, !1), this
|
|
._boundMouseHandler = null)) : (this._controlBarVisible = !1, this
|
|
._boundMouseHandler || (this._boundMouseHandler = this
|
|
._visibilityMouseHandler.bind(this), this._parent.addEventListener(
|
|
"mousemove", this._boundMouseHandler), this._parent
|
|
.addEventListener("mouseleave", this._boundMouseHandler))), this
|
|
._updateControlBarVisibility()
|
|
}
|
|
_visibilityMouseHandler(e) {
|
|
if (e.buttons) return;
|
|
if (null !== this._chartModel && this._chartModel.lineBeingCreated()) return;
|
|
let t = "mouseleave" !== e.type;
|
|
if ("mousemove" === e.type) {
|
|
const s = this._widget.getBoundingClientRect(),
|
|
i = 100 - this._bottomMargin();
|
|
t = e.clientX >= s.left - 100 && e.clientX <= s.right + 100 && e.clientY >= s
|
|
.top - i && e.clientY <= s.bottom + 100
|
|
}
|
|
this._controlBarVisible !== t && (this._controlBarVisible = t, null === this
|
|
._rafId && (this._rafId = this._controlBar.ownerDocument.defaultView
|
|
.requestAnimationFrame(this._updateControlBarVisibility.bind(this))))
|
|
}
|
|
_updateControlBarVisibility() {
|
|
this._rafId = null, this._controlBar.classList.toggle("control-bar--hidden", !this
|
|
._controlBarVisible)
|
|
}
|
|
_updateBackBtnPosition() {
|
|
if ("left" === this._priceAxisName || "right" === this._priceAxisName) {
|
|
const e = this._chart.getPriceAxisMaxWidthByName(this._priceAxisName) + 14;
|
|
e && (this._back.style.marginRight = e + "px")
|
|
}
|
|
}
|
|
_updateBtnGroupVisibility() {
|
|
const e = this._leftPriceScaleWidth + this._paneWidth,
|
|
t = (e + this._rightPriceScaleWidth) / 2;
|
|
let s = 2 * Math.min(e - t, t - this._leftPriceScaleWidth) - 50 - 50,
|
|
i = !1;
|
|
for (const e of this._visibilityPrioritizedGroups) {
|
|
e.enoughSpaceForGroup = !1;
|
|
e.available() && (!L || !e.shouldBeHiddenOnMobile) && (s -= e.totalWidth, e
|
|
.enoughSpaceForGroup = s >= 0 && !i, i = i || !e.enoughSpaceForGroup), !
|
|
e.enoughSpaceForGroup !== e.element.classList.contains("js-hidden") && e
|
|
.element.classList.toggle("js-hidden", !e.enoughSpaceForGroup)
|
|
}
|
|
this._updateControlBarPosition()
|
|
}
|
|
_getBtnGroup(e) {
|
|
return Object(i.ensureDefined)(this._btnGroups.find(t => t.classList.contains(e)))
|
|
}
|
|
_updateControlBarPosition() {
|
|
const e = this._visibilityPrioritizedGroups.reduce((e, t) => e + (t
|
|
.enoughSpaceForGroup ? t.totalWidth : 0), 0),
|
|
t = (this._paneWidth + this._leftPriceScaleWidth + this._rightPriceScaleWidth) /
|
|
2 - Math.ceil(e / 2);
|
|
this._widget.style.left = t + "px"
|
|
}
|
|
_updateResetScalesButtonVisibility() {
|
|
if (null === this._chartModel) return;
|
|
const e = this._chartModel.model().isScalesResetAvailable();
|
|
this._buttons.turn.classList.toggle("control-bar__btn--btn-hidden", !e)
|
|
}
|
|
_updateMaximizeButtonsVisibility() {
|
|
this._updateBtnGroupVisibility()
|
|
}
|
|
_toggleFullscreenButtons() {
|
|
const e = this._chart.getResizerDetacher().fullscreen.value();
|
|
this._buttons.maximize.classList.toggle("js-hidden", e), this._buttons.minimize
|
|
.classList.toggle("js-hidden", !e)
|
|
}
|
|
_isMaximizeButtonAvailable() {
|
|
return this._options.maximize, !1
|
|
}
|
|
_trackEvent(e) {
|
|
0
|
|
}
|
|
}
|
|
},
|
|
Tq3g: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M14.48 5.1c-.52 2.03-1.46 3.04-2.82 3.04-.64 0-1.55-.19-2.74-.56-1.17-.38-1.99-.57-2.46-.57-.69 0-1.22.37-1.58 1.13H3.55A4.3 4.3 0 0 1 4.5 6c.5-.6 1.08-.9 1.74-.9.7 0 1.65.2 2.84.58 1.2.37 2.04.55 2.52.55.8 0 1.32-.37 1.59-1.13h1.29zm0 4.84c-.52 2.02-1.46 3.03-2.82 3.03-.64 0-1.55-.19-2.74-.56-1.17-.38-1.99-.57-2.46-.57-.69 0-1.22.38-1.58 1.13H3.55a4.3 4.3 0 0 1 .95-2.14c.5-.6 1.08-.9 1.74-.9.7 0 1.65.2 2.84.58 1.2.37 2.04.56 2.52.56.8 0 1.32-.38 1.59-1.13h1.29z"/></svg>'
|
|
},
|
|
Uua9: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M7.65 5.16v2.68h3.78v1.73H7.65V13h5.19v1.8H5.62V3.35h7.3v1.8H7.65z"/></svg>'
|
|
},
|
|
VrXG: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M7.57 14.8H5.03V3.36c1.62-.05 2.64-.08 3.06-.08 1.66 0 2.98.49 3.96 1.47a5.23 5.23 0 0 1 1.47 3.88c0 4.11-1.99 6.17-5.95 6.17zm-.5-9.66v7.8c.32.04.67.06 1.05.06 1.03 0 1.83-.38 2.41-1.12.58-.75.88-1.79.88-3.13 0-2.44-1.14-3.67-3.42-3.67-.22 0-.53.02-.93.06z"/></svg>'
|
|
},
|
|
VrrN: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M7.84 13.7H5.78V4.4l2.48-.06c1.35 0 2.42.4 3.22 1.2.8.78 1.19 1.83 1.19 3.15 0 3.34-1.61 5.01-4.83 5.01zm-.41-7.85v6.35c.26.02.55.03.86.03.83 0 1.48-.3 1.95-.9.48-.6.72-1.46.72-2.54 0-2-.93-2.99-2.78-2.99-.18 0-.43.02-.75.05z"/></svg>'
|
|
},
|
|
WYzw: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M19.32 6H8.68A2.68 2.68 0 0 0 6 8.68V11h1V8.68C7 7.75 7.75 7 8.68 7h10.64c.93 0 1.68.75 1.68 1.68V11h1V8.68C22 7.2 20.8 6 19.32 6zM7 19.32c0 .93.75 1.68 1.68 1.68h10.64c.93 0 1.68-.75 1.68-1.68V17h1v2.32C22 20.8 20.8 22 19.32 22H8.68A2.68 2.68 0 0 1 6 19.32V17h1v2.32z"/></svg>'
|
|
},
|
|
"Y+EN": function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" width="15" height="15"><path fill="currentColor" d="M7.23 2.58a.5.5 0 0 1 .54 0l5.5 3.5a.5.5 0 0 1 0 .84l-5.5 3.5a.5.5 0 0 1-.54 0l-5.5-3.5a.5.5 0 0 1 0-.84l5.5-3.5zM2.93 6.5L7.5 9.4l4.57-2.9L7.5 3.6 2.93 6.5z"/><path fill="currentColor" d="M1.58 9.23a.5.5 0 0 1 .69-.15L7.5 12.4l5.23-3.33a.5.5 0 0 1 .54.84l-5.5 3.5a.5.5 0 0 1-.54 0l-5.5-3.5a.5.5 0 0 1-.15-.69z"/></svg>'
|
|
},
|
|
YGQl: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path stroke="currentColor" stroke-linecap="round" stroke-width="1.7" d="M12.5 5.5l-7 7m0-7l7 7"/></svg>'
|
|
},
|
|
ZKFq: function(e, t, s) {
|
|
e.exports = {
|
|
"css-value-pane-controls-padding-left": "1px",
|
|
"css-value-pane-controls-padding-right": "5px",
|
|
paneControls: "paneControls-2fnY2ZKI",
|
|
hasTopMargin: "hasTopMargin-2fnY2ZKI",
|
|
hidden: "hidden-2fnY2ZKI",
|
|
forceHidden: "forceHidden-2fnY2ZKI",
|
|
button: "button-2fnY2ZKI pane-button-xPfK7aM7",
|
|
buttonIcon: "buttonIcon-2fnY2ZKI",
|
|
minimize: "minimize-2fnY2ZKI",
|
|
newButton: "newButton-2fnY2ZKI",
|
|
touchMode: "touchMode-2fnY2ZKI",
|
|
maximize: "maximize-2fnY2ZKI",
|
|
"maximize-animation-up-bracket": "maximize-animation-up-bracket-2fnY2ZKI",
|
|
"maximize-animation-down-bracket": "maximize-animation-down-bracket-2fnY2ZKI",
|
|
"minimize-animation-up-bracket": "minimize-animation-up-bracket-2fnY2ZKI",
|
|
"minimize-animation-down-bracket": "minimize-animation-down-bracket-2fnY2ZKI",
|
|
up: "up-2fnY2ZKI",
|
|
"up-animation": "up-animation-2fnY2ZKI",
|
|
down: "down-2fnY2ZKI",
|
|
"down-animation": "down-animation-2fnY2ZKI",
|
|
buttonsWrapper: "buttonsWrapper-2fnY2ZKI"
|
|
}
|
|
},
|
|
bNWL: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 2 30 24" width="30" height="24" fill="none"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M15.82 14l5.36-5.36-.82-.82L15 13.18 9.64 7.82l-.82.82L14.18 14l-5.36 5.36.82.82L15 14.82l5.36 5.36.82-.82L15.82 14z"/></svg>'
|
|
},
|
|
cbig: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M9.3 9l.9-4.53a1.23 1.23 0 1 0-2.4 0L8.7 9l-.9 4.53a1.23 1.23 0 1 0 2.4 0L9.3 9z"/><path fill="currentColor" d="M9.15 9.26l4.38-1.48a1.23 1.23 0 1 0-1.21-2.09L8.85 8.74l-4.38 1.48a1.23 1.23 0 1 0 1.21 2.09l3.47-3.05z"/><path fill="currentColor" d="M9.15 8.74L5.68 5.69a1.23 1.23 0 1 0-1.2 2.09l4.37 1.48 3.47 3.05a1.23 1.23 0 1 0 1.2-2.09L9.16 8.74z"/></svg>'
|
|
},
|
|
e2QN: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 18" width="14" height="18"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M1 10a6 6 0 1 0 6-6H3"/><path d="M5 1L2.5 4 5 7"/></g></svg>'
|
|
},
|
|
e8Rm: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" width="14" height="14"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M2 7h10"/></svg>'
|
|
},
|
|
eYcT: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><g class="corner-left-top"><path fill="currentColor" d="M6 9C6 7.89543 6.89543 7 8 7H10C10.5523 7 11 7.44772 11 8C11 8.55228 10.5523 9 10 9H8V11C8 11.5523 7.55228 12 7 12C6.44772 12 6 11.5523 6 11V9Z"/></g><g class="corner-right-top"><path fill="currentColor" d="M17 8C17 7.44772 17.4477 7 18 7H20C21.1046 7 22 7.89543 22 9V11C22 11.5523 21.5523 12 21 12C20.4477 12 20 11.5523 20 11V9H18C17.4477 9 17 8.55228 17 8Z"/></g><g class="corner-right-bottom"><path fill="currentColor" d="M21 16C21.5523 16 22 16.4477 22 17V19C22 20.1046 21.1046 21 20 21H18C17.4477 21 17 20.5523 17 20C17 19.4477 17.4477 19 18 19H20V17C20 16.4477 20.4477 16 21 16Z"/></g><g class="corner-left-bottom"><path fill="currentColor" d="M7 16C7.55228 16 8 16.4477 8 17V19H10C10.5523 19 11 19.4477 11 20C11 20.5523 10.5523 21 10 21H8C6.89543 21 6 20.1046 6 19V17C6 16.4477 6.44772 16 7 16Z"/></g></svg>'
|
|
},
|
|
fk9O: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M13.5 6.35l6.32 5.27-.64.76L14 8.07V21h-1V8.07l-5.18 4.31-.64-.76 6.32-5.27z"/></svg>'
|
|
},
|
|
gKdq: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M14 7v12.93l5.18-4.31.64.76-6.32 5.27-6.32-5.27.64-.76L13 19.93V7h1z"/></svg>'
|
|
},
|
|
i9xP: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" width="15" height="15"><circle fill="currentColor" cx="12.75" cy="7.5" r="1.25"/><circle fill="currentColor" cx="7.5" cy="7.5" r="1.25"/><circle fill="currentColor" cx="2.25" cy="7.5" r="1.25"/></svg>'
|
|
},
|
|
jXu8: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><circle fill="currentColor" cx="9" cy="9" r="5"/></svg>'
|
|
},
|
|
jrhZ: function(e, t, s) {
|
|
e.exports = {
|
|
"animation-minimize-corner-left-top": "animation-minimize-corner-left-top-1yUqeyiZ",
|
|
"animation-minimize-corner-right-top": "animation-minimize-corner-right-top-1yUqeyiZ",
|
|
"animation-minimize-corner-right-bottom": "animation-minimize-corner-right-bottom-1yUqeyiZ",
|
|
"animation-minimize-corner-left-bottom": "animation-minimize-corner-left-bottom-1yUqeyiZ",
|
|
"animation-maximize-corner-left-top": "animation-maximize-corner-left-top-1yUqeyiZ",
|
|
"animation-maximize-corner-right-top": "animation-maximize-corner-right-top-1yUqeyiZ",
|
|
"animation-maximize-corner-right-bottom": "animation-maximize-corner-right-bottom-1yUqeyiZ",
|
|
"animation-maximize-corner-left-bottom": "animation-maximize-corner-left-bottom-1yUqeyiZ"
|
|
}
|
|
},
|
|
ku84: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" width="15" height="15" fill="none"><path fill="currentColor" d="M4.5 12A1.5 1.5 0 0 1 3 10.5V9H2v1.5A2.5 2.5 0 0 0 4.5 13h6a2.5 2.5 0 0 0 2.5-2.5V9h-1v1.5c0 .83-.67 1.5-1.5 1.5h-6z" class="bracket-up"/><path fill="currentColor" d="M4.5 3C3.67 3 3 3.67 3 4.5V6H2V4.5A2.5 2.5 0 0 1 4.5 2h6A2.5 2.5 0 0 1 13 4.5V6h-1V4.5c0-.83-.67-1.5-1.5-1.5h-6z" class="bracket-down"/></svg>'
|
|
},
|
|
lvAK: function(e, t, s) {
|
|
"use strict";
|
|
s.r(t);
|
|
var i = s("8+VR"),
|
|
o = s("RspR"),
|
|
l = s("3ClC"),
|
|
n = (s("LVLx"), s("Eyy1")),
|
|
a = s("eJTA"),
|
|
r = s("AvGy"),
|
|
d = s("EV8o"),
|
|
h = s("ZKFq"),
|
|
u = s("0jws");
|
|
class c {
|
|
constructor(e, t, s) {
|
|
this._parentEl = document.createElement("div"), this._listActionsWrapperEl = null,
|
|
this._listActionsElements = {}, this._actionsSpawns = {}, this
|
|
._onMouseEnterLeaveEventHandler = null, this._mouseOverWidget = !1, this
|
|
._wrapEl = e, this._onMouseEnterLeaveEventHandler = this._onMouseEnterLeaveEvent
|
|
.bind(this), this._wrapEl.addEventListener("mouseenter", this
|
|
._onMouseEnterLeaveEventHandler), this._wrapEl.addEventListener(
|
|
"mouseleave", this._onMouseEnterLeaveEventHandler), this._actions = t, this
|
|
._globalVisibility = s.globalVisibility.spawn(), this._globalVisibility
|
|
.subscribe(this._updatePaneControlsWidgetVisibility.bind(this)), this
|
|
._visibilityType = s.visibilityType.spawn(), this._visibilityType.subscribe(this
|
|
._updatePaneControlsWidgetVisibility.bind(this)), this
|
|
._doNotSwitchToContextMenuMode = s.doNotSwitchToContextMenuMode, this
|
|
._themedColor = s.themedColor.spawn(), this._themedColor.subscribe(this
|
|
._updateThemedColor.bind(this));
|
|
for (const [e, t] of Object.entries(this._actions)) {
|
|
const s = e;
|
|
this._actionsSpawns[s] = {
|
|
visible: t.visible.spawn(),
|
|
title: void 0 === t.title ? null : t.title.spawn()
|
|
}, this._actionsSpawns[s].visible.subscribe(this._updateActionVisibilities
|
|
.bind(this, s));
|
|
const i = this._actionsSpawns[s].title;
|
|
null !== i && i.subscribe(this._updateActionTitle.bind(this, s))
|
|
}
|
|
this._render(), this._updatePaneControlsWidgetVisibility(), this._updateThemedColor(
|
|
this._themedColor.value()), this._parentEl.classList.toggle(h.touchMode, r
|
|
.a), this._parentEl.addEventListener("contextmenu", e => e.preventDefault())
|
|
}
|
|
destroy() {
|
|
this._visibilityType.destroy(), this._themedColor.destroy();
|
|
for (const e of Object.keys(this._actionsSpawns)) {
|
|
const t = e;
|
|
this._actionsSpawns[t].visible.destroy();
|
|
const s = this._actionsSpawns[t].title;
|
|
null !== s && s.destroy()
|
|
}
|
|
null !== this._onMouseEnterLeaveEventHandler && (this._wrapEl.removeEventListener(
|
|
"mouseenter", this._onMouseEnterLeaveEventHandler), this._wrapEl
|
|
.removeEventListener("mouseleave", this._onMouseEnterLeaveEventHandler),
|
|
this._onMouseEnterLeaveEventHandler = null), this._parentEl.innerHTML = "",
|
|
delete this._parentEl
|
|
}
|
|
getElement() {
|
|
return this._parentEl
|
|
}
|
|
updateWidgetModeByWidth(e) {
|
|
const t = !this._doNotSwitchToContextMenuMode.value() && e < 356,
|
|
s = !this._doNotSwitchToContextMenuMode.value() && e < 666.65,
|
|
i = Object(n.ensureNotNull)(this._listActionsWrapperEl),
|
|
o = Object(n.ensureNotNull)(this._listActionsElements.more);
|
|
i.classList.toggle(u.blockHidden, t || s), o.classList.toggle(u.blockHidden, t || !
|
|
s || !this._actions.more.visible.value())
|
|
}
|
|
_render() {
|
|
this._renderActions(),
|
|
this._parentEl.classList.add(h.paneControls), this._wrapEl.append(this
|
|
._parentEl)
|
|
}
|
|
_renderActions() {
|
|
null === this._listActionsWrapperEl && (this._listActionsWrapperEl = document
|
|
.createElement("div"), this._listActionsWrapperEl.classList.add(h
|
|
.buttonsWrapper), this._parentEl.append(this._listActionsWrapperEl));
|
|
const e = r.a ? "large" : "small";
|
|
this._listActionsElements.up = Object(d.a)(this._actions.up, h.button, h.buttonIcon,
|
|
u.blockHidden, e), this._listActionsElements.down = Object(d.a)(this
|
|
._actions.down, h.button, h.buttonIcon, u.blockHidden, e), this
|
|
._listActionsElements.close = Object(d.a)(this._actions.close, h.button, h
|
|
.buttonIcon, u.blockHidden, e), this._listActionsElements.maximize = Object(
|
|
d.a)(this._actions.maximize, h.button, h.buttonIcon, u.blockHidden, e), this
|
|
._listActionsElements.minimize = Object(d.a)(this._actions.minimize, h.button, h
|
|
.buttonIcon, u.blockHidden, e), this._listActionsWrapperEl.append(this
|
|
._listActionsElements.up, this._listActionsElements.down, this
|
|
._listActionsElements.close, this._listActionsElements.maximize, this
|
|
._listActionsElements.minimize), this._listActionsElements.more = Object(d
|
|
.a)(this._actions.more, h.button, h.buttonIcon, u.blockHidden, e);
|
|
for (const e of Object.keys(this._listActionsElements)) Object(n.ensureNotNull)(this
|
|
._listActionsElements[e]).classList.add(h.newButton);
|
|
this._parentEl.append(this._listActionsElements.more)
|
|
}
|
|
_updateActionVisibilities(e, t) {
|
|
Object(n.ensureNotNull)(this._listActionsElements[e]).classList.toggle(u
|
|
.blockHidden, !t)
|
|
}
|
|
_updateActionTitle(e, t) {
|
|
Object(n.ensureNotNull)(this._listActionsElements[e]).setAttribute("title", t)
|
|
}
|
|
_onMouseEnterLeaveEvent(e) {
|
|
this._mouseOverWidget = "mouseenter" === e.type, "visibleOnMouseOver" === this
|
|
._visibilityType.value() && this._updatePaneControlsWidgetVisibility()
|
|
}
|
|
_updatePaneControlsWidgetVisibility() {
|
|
let e, t = !1;
|
|
switch (this._visibilityType.value()) {
|
|
case "alwaysOff":
|
|
e = !1, t = !0;
|
|
break;
|
|
case "alwaysOn":
|
|
e = this._globalVisibility.value();
|
|
break;
|
|
case "visibleOnMouseOver":
|
|
e = this._globalVisibility.value() && this._mouseOverWidget
|
|
}
|
|
this._parentEl.classList.toggle(h.hidden, !e), this._parentEl.classList.toggle(h
|
|
.forceHidden, !this._globalVisibility.value() || t)
|
|
}
|
|
_updateThemedColor(e) {
|
|
if (e.length > 0) {
|
|
const [t, s, i] = Object(a.parseRgb)(e);
|
|
this._parentEl.style.color = Object(a.rgbaToString)([t, s, i, Object(a
|
|
.normalizeAlphaComponent)(.8)])
|
|
} else this._parentEl.style.removeProperty("color")
|
|
}
|
|
}
|
|
var _ = s("7KDR"),
|
|
p = s("5VQP"),
|
|
m = s("obM5"),
|
|
b = s("fk9O"),
|
|
g = s("gKdq"),
|
|
w = s("WYzw");
|
|
|
|
function v(e, t) {
|
|
const s = Object(n.ensureNotNull)(t.target);
|
|
return function(e) {
|
|
const t = [];
|
|
if (e.maximize.visible.value()) {
|
|
const s = Object(n.ensure)(e.maximize.title),
|
|
i = Object(n.ensureNotNull)(e.maximize.action);
|
|
t.push(new _.Action({
|
|
icon: w,
|
|
label: s.value(),
|
|
statName: "Maximize Pane",
|
|
shortcutHint: y,
|
|
onExecute: () => i()
|
|
}))
|
|
} else if (e.minimize.visible.value()) {
|
|
const s = Object(n.ensure)(e.minimize.title),
|
|
i = Object(n.ensureNotNull)(e.minimize.action);
|
|
t.push(new _.Action({
|
|
icon: w,
|
|
label: s.value(),
|
|
statName: "Minimize Pane",
|
|
shortcutHint: y,
|
|
onExecute: () => i()
|
|
}))
|
|
}
|
|
if (e.up.visible.value()) {
|
|
const s = Object(n.ensure)(e.up.title),
|
|
i = Object(n.ensureNotNull)(e.up.action);
|
|
t.push(new _.Action({
|
|
icon: b,
|
|
label: s.value(),
|
|
statName: "Move pane up",
|
|
onExecute: () => i()
|
|
}))
|
|
}
|
|
if (e.down.visible.value()) {
|
|
const s = Object(n.ensure)(e.down.title),
|
|
i = Object(n.ensureNotNull)(e.down.action);
|
|
t.push(new _.Action({
|
|
icon: g,
|
|
label: s.value(),
|
|
statName: "Move pane down",
|
|
onExecute: () => i()
|
|
}))
|
|
}
|
|
if (e.close.visible.value()) {
|
|
const s = Object(n.ensure)(e.close.title),
|
|
i = Object(n.ensureNotNull)(e.close.action);
|
|
t.push(new _.Action({
|
|
icon: m,
|
|
label: s.value(),
|
|
statName: "Delete pane",
|
|
onExecute: () => i()
|
|
}))
|
|
}
|
|
return p.ContextMenuManager.createMenu(t)
|
|
}(e).then(e => (e.show(e => {
|
|
const t = s.getBoundingClientRect();
|
|
return {
|
|
clientX: t.right - e,
|
|
clientY: t.top + t.height + 3
|
|
}
|
|
}), e))
|
|
}
|
|
const y = window.t("Double click");
|
|
var S = s("hY0g"),
|
|
M = s.n(S),
|
|
f = s("EsvI"),
|
|
E = s("/DW5"),
|
|
C = s("OJSF"),
|
|
k = s("PXSR"),
|
|
V = s("QEZv"),
|
|
x = s("ku84"),
|
|
W = s("i9xP"),
|
|
T = s("1Wf8"),
|
|
L = s("956S");
|
|
s.d(t, "PaneControlsWidget", (function() {
|
|
return I
|
|
}));
|
|
const O = i.mobiletouch,
|
|
A = window.t("Delete pane"),
|
|
D = window.t("Move pane up"),
|
|
H = window.t("Move pane down"),
|
|
B = window.t("Maximize pane"),
|
|
P = window.t("Restore pane"),
|
|
z = window.t("Manage panes"),
|
|
j = window.t("Double click"),
|
|
N = Object(E.b)({
|
|
keys: [""],
|
|
text: j
|
|
});
|
|
class I {
|
|
constructor(e, t, s, i, l) {
|
|
this._actions = {}, this._moreActionCM = null, this._themedColor = new M.a(""), this
|
|
._model = e, this._paneWidget = t, this._callbacks = i, this
|
|
._closeButtonVisibility = new M.a(this._getCloseButtonVisibility()), this
|
|
._upButtonVisibility = new M.a(this._getUpButtonVisibility()), this
|
|
._downButtonVisibility = new M.a(this._getDownButtonVisibility()), this
|
|
._maximizeButtonVisibility = new M.a(this._getMaximizeButtonVisibility()), this
|
|
._minimizeButtonVisibility = new M.a(this._getMinimizeButtonVisibility()), this
|
|
._createActions(), this._visibilityTypeProperty = Object(o.actualBehavior)(),
|
|
this._visibilityTypeProperty.subscribe(this, e => {
|
|
this._visibilityType.setValue(e.value())
|
|
}), this._visibilityType = new M.a(this._visibilityTypeProperty.value()), this
|
|
._isPaneMaximize = new M.a(this._getIsPaneMaximizeValue()), this._isWidgetShow =
|
|
new M.a(this._getIsWidgetShow()), this._backgroundThemeName = s
|
|
.backgroundThemeName, this._renderer = new c(l, this._actions, {
|
|
visibilityType: this._visibilityType.readonly(),
|
|
globalVisibility: this._isWidgetShow.readonly(),
|
|
doNotSwitchToContextMenuMode: this._isPaneMaximize.readonly(),
|
|
themedColor: this._themedColor.readonly()
|
|
})
|
|
}
|
|
destroy() {
|
|
this._visibilityTypeProperty.unsubscribeAll(this), this._renderer.destroy()
|
|
}
|
|
getElement() {
|
|
return this._renderer.getElement()
|
|
}
|
|
action() {
|
|
return this._actions
|
|
}
|
|
update() {
|
|
this._updateButtonsVisibility(), this._isPaneMaximize.setValue(this
|
|
._getIsPaneMaximizeValue()), this._isWidgetShow.setValue(this
|
|
._getIsWidgetShow())
|
|
}
|
|
updateWidgetModeByWidth(e) {
|
|
this._renderer.updateWidgetModeByWidth(e)
|
|
}
|
|
updateThemedColors(e) {
|
|
null === e && (e = Object(f.getStdThemedValue)(
|
|
"chartProperties.paneProperties.background", this._backgroundThemeName
|
|
.value())), this._themedColor.setValue(e || "")
|
|
}
|
|
_updateButtonsVisibility() {
|
|
this._closeButtonVisibility.setValue(this._getCloseButtonVisibility()), this
|
|
._upButtonVisibility.setValue(this._getUpButtonVisibility()), this
|
|
._downButtonVisibility.setValue(this._getDownButtonVisibility()),
|
|
this._maximizeButtonVisibility.setValue(this._getMaximizeButtonVisibility()),
|
|
this._minimizeButtonVisibility.setValue(this._getMinimizeButtonVisibility())
|
|
}
|
|
_createActions() {
|
|
this._actions.up = {
|
|
iconMap: new Map([
|
|
["large", k],
|
|
["small", k]
|
|
]),
|
|
action: this._onUpDownButton.bind(this, "up"),
|
|
visible: this._upButtonVisibility,
|
|
title: new M.a(D),
|
|
className: h.up,
|
|
dataset: {
|
|
name: "pane-button-up"
|
|
}
|
|
}, this._actions.down = {
|
|
iconMap: new Map([
|
|
["large", V],
|
|
["small", V]
|
|
]),
|
|
action: this._onUpDownButton.bind(this, "down"),
|
|
visible: this._downButtonVisibility,
|
|
title: new M.a(H),
|
|
className: h.down,
|
|
dataset: {
|
|
name: "pane-button-down"
|
|
}
|
|
}, this._actions.close = {
|
|
iconMap: new Map([
|
|
["large", C],
|
|
["small", C]
|
|
]),
|
|
action: this._onCloseButton.bind(this),
|
|
visible: this._closeButtonVisibility,
|
|
title: new M.a(A),
|
|
dataset: {
|
|
name: "pane-button-close"
|
|
}
|
|
}, this._actions.maximize = {
|
|
iconMap: new Map([
|
|
["large", T],
|
|
["small", x]
|
|
]),
|
|
action: this._onToggleMaximizeButton.bind(this),
|
|
visible: this._maximizeButtonVisibility,
|
|
title: new M.a(B),
|
|
hotKeyTitle: N,
|
|
className: h.maximize,
|
|
dataset: {
|
|
name: "pane-button-maximize"
|
|
}
|
|
}, this._actions.minimize = {
|
|
iconMap: new Map([
|
|
["large", T],
|
|
["small", x]
|
|
]),
|
|
action: this._onToggleMaximizeButton.bind(this),
|
|
visible: this._minimizeButtonVisibility,
|
|
title: new M.a(P),
|
|
hotKeyTitle: N,
|
|
className: h.minimize,
|
|
dataset: {
|
|
name: "pane-button-minimize"
|
|
}
|
|
}, this._actions.more = {
|
|
iconMap: new Map([
|
|
["large", L],
|
|
["small", W]
|
|
]),
|
|
action: this._showButtonsInContextMenu.bind(this),
|
|
visible: new M.a(!O),
|
|
title: new M.a(z),
|
|
dataset: {
|
|
name: "pane-button-more"
|
|
}
|
|
}
|
|
}
|
|
_getCloseButtonVisibility() {
|
|
const e = this._paneWidget.state();
|
|
let t = !1;
|
|
return e.containsMainSeries() || e.isMaximized() || O || (t = e.dataSources().some(
|
|
e => Object(l.isStudy)(e))), t
|
|
}
|
|
_onCloseButton() {
|
|
const e = this._model.model().panes().indexOf(this._paneWidget.state());
|
|
this._model.removePane(e)
|
|
}
|
|
_getUpButtonVisibility() {
|
|
const e = this._paneWidget.state();
|
|
return this._model.model().panes().indexOf(e) > 0 && !e.isMaximized() && !O
|
|
}
|
|
_getDownButtonVisibility() {
|
|
const e = this._paneWidget.state(),
|
|
t = this._model.model().panes();
|
|
return t.indexOf(e) < t.length - 1 && !e.isMaximized() && !O
|
|
}
|
|
_onUpDownButton(e) {
|
|
const t = this._model.model().panes().indexOf(this._paneWidget.state());
|
|
this._model.rearrangePanes(t, e)
|
|
}
|
|
_getMaximizeButtonVisibility() {
|
|
const e = this._paneWidget.state();
|
|
return this._model.model().panes().length > 1 && !e.isMaximized() && !O
|
|
}
|
|
_getMinimizeButtonVisibility() {
|
|
const e = this._paneWidget.state();
|
|
return this._model.model().panes().length > 1 && e.isMaximized()
|
|
}
|
|
_onToggleMaximizeButton() {
|
|
this._callbacks.toggleMaximizePane(this._paneWidget)
|
|
}
|
|
_showButtonsInContextMenu(e) {
|
|
e.preventDefault(), null !== this._moreActionCM && this._moreActionCM.isShown() ?
|
|
this._moreActionCM = null : v(this._actions, e).then(e => {
|
|
this._moreActionCM = e
|
|
})
|
|
}
|
|
_getIsPaneMaximizeValue() {
|
|
return this._paneWidget.state().isMaximized()
|
|
}
|
|
_getIsWidgetShow() {
|
|
return this._model.model().panes().length > 1
|
|
}
|
|
}
|
|
},
|
|
nFx7: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><g class="corner-left-top"><path fill="currentColor" d="M10 7C10.5523 7 11 7.44772 11 8V10C11 11.1046 10.1046 12 9 12H7C6.44772 12 6 11.5523 6 11C6 10.4477 6.44772 10 7 10H9V8C9 7.44772 9.44772 7 10 7Z"/></g><g class="corner-right-top"><path fill="currentColor" d="M18 7C18.5523 7 19 7.44772 19 8V10H21C21.5523 10 22 10.4477 22 11C22 11.5523 21.5523 12 21 12H19C17.8954 12 17 11.1046 17 10V8C17 7.44772 17.4477 7 18 7Z"/></g><g class="corner-right-bottom"><path fill="currentColor" d="M17 18C17 16.8954 17.8954 16 19 16H21C21.5523 16 22 16.4477 22 17C22 17.5523 21.5523 18 21 18H19V20C19 20.5523 18.5523 21 18 21C17.4477 21 17 20.5523 17 20V18Z"/></g><g class="corner-left-bottom"><path fill="currentColor" d="M6 17C6 16.4477 6.44772 16 7 16H9C10.1046 16 11 16.8954 11 18V20C11 20.5523 10.5523 21 10 21C9.44772 21 9 20.5523 9 20V18H7C6.44772 18 6 17.5523 6 17Z"/></g></svg>'
|
|
},
|
|
obM5: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M7.65 8.35l.7-.7 6.15 6.14 6.15-6.14.7.7-6.14 6.15 6.14 6.15-.7.7-6.15-6.14-6.15 6.14-.7-.7 6.14-6.15-6.14-6.15z"/></svg>'
|
|
},
|
|
qfuz: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9 7" width="9" height="7"><path fill="currentColor" d="M.5 3.5L4 0v3h5v1H4v3z"/></svg>'
|
|
},
|
|
rGGD: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M2.4 5.46a.8.8 0 0 1 1.14-.05L8 9.42l4.46-4.01a.8.8 0 0 1 1.08 1.18L8 11.58 2.47 6.59a.8.8 0 0 1-.06-1.13z"/></svg>'
|
|
},
|
|
rh3U: function(e, t, s) {
|
|
e.exports = {
|
|
"css-value-small-size": "18px",
|
|
"css-value-border-radius-small-size": "9px",
|
|
"css-value-large-size": "22px",
|
|
"css-value-border-radius-large-size": "11px",
|
|
statuses: "statuses-1Ho_ylkC",
|
|
statusItem: "statusItem-1Ho_ylkC",
|
|
small: "small-1Ho_ylkC",
|
|
large: "large-1Ho_ylkC",
|
|
blinking: "blinking-1Ho_ylkC",
|
|
oneWidgetsVisible: "oneWidgetsVisible-1Ho_ylkC",
|
|
twoWidgetsVisible: "twoWidgetsVisible-1Ho_ylkC",
|
|
threeWidgetsVisible: "threeWidgetsVisible-1Ho_ylkC",
|
|
"blinking-animation": "blinking-animation-1Ho_ylkC",
|
|
marketStatusOpen: "marketStatusOpen-1Ho_ylkC",
|
|
marketStatusClose: "marketStatusClose-1Ho_ylkC",
|
|
marketStatusPre: "marketStatusPre-1Ho_ylkC",
|
|
marketStatusPost: "marketStatusPost-1Ho_ylkC",
|
|
marketStatusHoliday: "marketStatusHoliday-1Ho_ylkC",
|
|
invalidSymbol: "invalidSymbol-1Ho_ylkC",
|
|
replayMode: "replayMode-1Ho_ylkC",
|
|
notAccurate: "notAccurate-1Ho_ylkC",
|
|
delay: "delay-1Ho_ylkC",
|
|
eod: "eod-1Ho_ylkC",
|
|
dataProblemHigh: "dataProblemHigh-1Ho_ylkC",
|
|
dataProblemLow: "dataProblemLow-1Ho_ylkC"
|
|
}
|
|
},
|
|
sAH5: function(e, t, s) {
|
|
"use strict";
|
|
s.r(t);
|
|
var i = s("Eyy1"),
|
|
o = s("hY0g"),
|
|
l = s.n(o),
|
|
n = s("ogJP"),
|
|
a = s("ikwP"),
|
|
r = s("eJTA"),
|
|
d = s("Kxc7"),
|
|
h = s("AvGy"),
|
|
u = (s("LVLx"), s("MjAr")),
|
|
c = s("EV8o"),
|
|
_ = s("S8xo"),
|
|
p = s("GUQs"),
|
|
m = s("0jws");
|
|
var b = s("OcaN");
|
|
class g extends class {
|
|
constructor(e, t = {}) {
|
|
this._loadingEl = document.createElement("span"), this._renderLoading(t), this
|
|
.toggleVisibility(!1), e.appendChild(this._loadingEl)
|
|
}
|
|
toggleVisibility(e) {
|
|
this._loadingEl.classList.toggle(m.blockHidden, !e)
|
|
}
|
|
_renderLoading(e) {
|
|
const {
|
|
className: t
|
|
} = e;
|
|
t && this._loadingEl.classList.add(t)
|
|
}
|
|
} {
|
|
_renderLoading(e) {
|
|
super._renderLoading(e), this._loadingEl.innerHTML =
|
|
`\n\t\t\t<span class="${b.loaderItem}"></span>\n\t\t\t<span class="${b.loaderItem}"></span>\n\t\t\t<span class="${b.loaderItem}"></span>\n\t\t`,
|
|
this._loadingEl.classList.add(b.loader)
|
|
}
|
|
}
|
|
var w = s("qFKp");
|
|
|
|
function v(e, t) {
|
|
null === e.firstChild ? e.textContent = t : e.firstChild.nodeValue = t
|
|
}
|
|
var y = s("5Alx");
|
|
const S = w.CheckMobile.any(),
|
|
M = [y.title1st, y.title2nd, y.title3rd, y.title4th];
|
|
class f {
|
|
constructor(e, t, s) {
|
|
this._el = null, this._firstBlockWrapper = null, this._titleParentEl = null, this
|
|
._titleElements = [], this._valuesParentEl = null, this
|
|
._valuesAdditionalWrapperEl = null, this._valuesElements = [], this
|
|
._actionsParentEl = null, this._actionAdditionalWrapperEl = null, this
|
|
._stayInHoveredMode = !1, this._mode = 4, this._statusesWrapper = null, this
|
|
._resizeObserver = null, this._hideInvisibleHover = null, this._hideValues =
|
|
null, this._allButtonsWidth = null, this._lastStatusesWrapperWidth = null, this
|
|
._lastActionsWrapperWidth = null, this._showActionsHandler = null, this
|
|
._hideActionsHandler = null, this._selectedSourceHandler = null, this
|
|
._mouseEventHandlers = [], this._disableTimeout = null, this._loader = null,
|
|
this._model = e, this._parentEl = t, this._disabled = this._model.disabled()
|
|
.spawn(), this._disabled.subscribe(this._updateDisabledState.bind(this)), this
|
|
._disabledOnInterval = this._model.disabledOnInterval().spawn(), this
|
|
._disabledOnInterval.subscribe(this._updateDisabledOnIntervalState.bind(this)),
|
|
this._selected = this._model.selected().spawn(), this._selected.subscribe(this
|
|
._updateSelectedState.bind(this)), this._loading = this._model.loading()
|
|
.spawn(), this._loading.subscribe(function(e, t) {
|
|
let s = 0;
|
|
return i => {
|
|
clearTimeout(s), Boolean(i) ? e() : s = setTimeout(e, t, !1)
|
|
}
|
|
}(this._updateLoadingState.bind(this), 700)), this._isTitleHidden = this._model
|
|
.isTitleHidden().spawn(), this._isValuesHidden = this._model.isValuesHidden()
|
|
.spawn(), this._isRowHidden = this._model.isRowHidden().spawn(), this
|
|
._isTitleHidden.subscribe(this._updateShowTitles.bind(this)), this
|
|
._isValuesHidden.subscribe(this._updateShowValues.bind(this)), this._isRowHidden
|
|
.subscribe(this._updateShowLine.bind(this)), this._titlesSpawns = this._model
|
|
.titles().map(e => e.spawn());
|
|
for (let e = 0; e < this._titlesSpawns.length; e++) this._titlesSpawns[e].subscribe(
|
|
this._updateTitlesHandler.bind(this, e));
|
|
this._values = this._model.values().spawn(), this._values.subscribe(this
|
|
._updateValues.bind(this)), this._createValuesSpawns(), this
|
|
._addValuesSpawnsSubscriptions(), this._actionsSpawnArray = this._model
|
|
.actions().map(e => ({
|
|
visible: e.visible.spawn(),
|
|
title: void 0 === e.title ? null : e.title.spawn()
|
|
}));
|
|
for (let e = 0; e < this._actionsSpawnArray.length; e++) {
|
|
this._actionsSpawnArray[e].visible.subscribe(this._updateActionVisibilities
|
|
.bind(this, e));
|
|
const t = this._actionsSpawnArray[e].title;
|
|
null !== t && t.subscribe(this._updateActionTitle.bind(this, e))
|
|
}
|
|
this._withActions = s.withActions, this._render(), this._updateStates(), this
|
|
._updateShowTitles(), this._updateShowValues(), this._updateShowLine(),
|
|
null !== this._valuesParentEl && (this._loader = new g(this._valuesParentEl, {
|
|
className: y.loader
|
|
})), this._customTextColor = s.customTextColor.spawn(), this._customTextColor
|
|
.subscribe(this._updateCustomTextColor.bind(this)), this
|
|
._updateCustomTextColor(), this._withActions && (this._showActionsHandler =
|
|
Object(p.c)(this._showActions.bind(this)), this._hideActionsHandler =
|
|
Object(p.c)(this._hideActions.bind(this)), this._selectedSourceHandler =
|
|
Object(p.c)(this._model.setSourceSelected.bind(this._model)), null !== this
|
|
._titleParentEl && (this._titleParentEl.addEventListener("touchend", this
|
|
._selectedSourceHandler), this._titleParentEl.addEventListener(
|
|
"mousedown", this._selectedSourceHandler), S || (this._titleParentEl
|
|
.addEventListener("mouseenter", this._showActionsHandler), this
|
|
._titleParentEl.addEventListener("mouseleave", this
|
|
._hideActionsHandler)), this._mouseEventHandlers.push(new _
|
|
.MouseEventHandler(this._titleParentEl, {
|
|
mouseDoubleClickEvent: this._model.onShowSettings.bind(this
|
|
._model),
|
|
doubleTapEvent: this._model.onShowSettings.bind(this._model)
|
|
}))), null === this._actionAdditionalWrapperEl || null === this
|
|
._actionsParentEl || S || (this._actionAdditionalWrapperEl.addEventListener(
|
|
"mouseenter", this._showActionsHandler), this
|
|
._actionAdditionalWrapperEl.addEventListener("mouseleave", this
|
|
._hideActionsHandler), this._actionsParentEl.addEventListener(
|
|
"contextmenu", e => {
|
|
e.preventDefault(), e.stopPropagation()
|
|
})))
|
|
}
|
|
destroy() {
|
|
var e, t;
|
|
this._disabled.destroy(), this._disabledOnInterval.destroy(), this._selected
|
|
.destroy(), this._loading.destroy(), this._isTitleHidden.destroy(), this
|
|
._isValuesHidden.destroy(), this._isRowHidden.destroy(), this._customTextColor
|
|
.destroy(), null !== this._disableTimeout && clearTimeout(this._disableTimeout);
|
|
for (const e of this._titlesSpawns) e.destroy();
|
|
if (null !== this._titleParentEl) {
|
|
for (const e of this._mouseEventHandlers) e.destroy();
|
|
this._titleElements = [], this._withActions && null !== this
|
|
._selectedSourceHandler && null !== this._showActionsHandler && null !==
|
|
this._hideActionsHandler && (this._titleParentEl.removeEventListener(
|
|
"touchend", this._selectedSourceHandler), this._titleParentEl
|
|
.removeEventListener("mousedown", this._selectedSourceHandler), S || (
|
|
this._titleParentEl.removeEventListener("mouseenter", this
|
|
._showActionsHandler), this._titleParentEl.removeEventListener(
|
|
"mouseleave", this._hideActionsHandler))), this._titleParentEl =
|
|
null
|
|
}
|
|
for (const e of this._actionsSpawnArray) {
|
|
e.visible.destroy();
|
|
const t = e.title;
|
|
null !== t && t.destroy()
|
|
}
|
|
if (null !== this._actionAdditionalWrapperEl && (this._withActions && null !== this
|
|
._showActionsHandler && null !== this._hideActionsHandler && !S && (this
|
|
._actionAdditionalWrapperEl.removeEventListener("mouseenter", this
|
|
._showActionsHandler), this._actionAdditionalWrapperEl
|
|
.removeEventListener("mouseleave", this._hideActionsHandler)), this
|
|
._actionAdditionalWrapperEl = null), this._actionsParentEl = null, this
|
|
._removeValuesSpawnsSubscriptions(), this._values.destroy(), null !== this
|
|
._valuesParentEl && (this._valuesElements = [], this._valuesParentEl = null),
|
|
null === (e = this._hideInvisibleHover) || void 0 === e || e.destroy(), null ===
|
|
(t = this._hideValues) || void 0 === t || t.destroy(),
|
|
null !== this._resizeObserver && (this._resizeObserver.disconnect(), this
|
|
._resizeObserver = null), null !== this._el) {
|
|
Object(i.ensureNotNull)(this._el.parentNode).removeChild(this._el), this._el =
|
|
null
|
|
}
|
|
}
|
|
getHeight() {
|
|
return null === this._el ? null : 24
|
|
}
|
|
updateMode(e) {
|
|
this._mode === e && null !== this._allButtonsWidth || (this._mode = e, this
|
|
._updateAllButtonsWidth())
|
|
}
|
|
_render() {
|
|
this._renderTitle(), this._renderActions(), this._renderValues(), this._el =
|
|
document.createElement("div"), this._firstBlockWrapper = document.createElement(
|
|
"div"), this._firstBlockWrapper.classList.add(y.noWrapWrapper), this
|
|
._firstBlockWrapper.appendChild(Object(i.ensureNotNull)(this._titleParentEl)),
|
|
null !== this._actionsParentEl && this._firstBlockWrapper.appendChild(this
|
|
._actionsParentEl), this._el.appendChild(this._firstBlockWrapper), this._el
|
|
.appendChild(Object(i.ensureNotNull)(this._valuesParentEl)), this._parentEl
|
|
.append(this._el)
|
|
}
|
|
_renderTitle() {
|
|
null === this._titleParentEl && (this._titleParentEl = document.createElement(
|
|
"div"), this._titleParentEl.classList.add(y.titleWrapper));
|
|
const e = this._titleParentEl;
|
|
for (let t = 0; t < this._titlesSpawns.length; t++) {
|
|
const s = document.createElement("div");
|
|
s.classList.add(y.title, M[t], "apply-overflow-tooltip"), s.dataset.name =
|
|
"legend-source-title";
|
|
const i = this._titlesSpawns[t].value();
|
|
i.length > 0 ? (s.appendChild(document.createTextNode(i)), s.classList.add(y
|
|
.withDot)) : s.classList.add(m.blockHidden), e.appendChild(s), this
|
|
._titleElements.push(s)
|
|
}
|
|
}
|
|
_renderActions() {
|
|
if (!this._withActions) return;
|
|
null === this._actionsParentEl && (this._actionsParentEl = document.createElement(
|
|
"div"), this._actionsParentEl.classList.add(y.buttonsWrapper), this
|
|
._parentEl.append(this._actionsParentEl), this._actionAdditionalWrapperEl =
|
|
document.createElement("div"), this._actionAdditionalWrapperEl.classList
|
|
.add(y.buttons), this._actionsParentEl.appendChild(this
|
|
._actionAdditionalWrapperEl));
|
|
const e = Object(i.ensureNotNull)(this._actionAdditionalWrapperEl),
|
|
t = h.a ? "large" : "small";
|
|
for (const s of this._model.actions()) {
|
|
const i = Object(c.a)(s, y.button, y.buttonIcon, m.blockHidden, t);
|
|
e.appendChild(i)
|
|
}
|
|
}
|
|
_isWidthButtonsMode() {
|
|
return null !== this._el && (this._el.classList.contains(y.withAction) || this
|
|
._disabled.value() || this._selected.value() || this._stayInHoveredMode)
|
|
}
|
|
_updateTitlesHandler(e, t) {
|
|
const s = Object(i.ensureNotNull)(this._titleElements[e]),
|
|
o = 0 === t.length;
|
|
s.classList.toggle(m.blockHidden, o), s.classList.toggle(y.withDot, !o), v(s, t)
|
|
}
|
|
_updateStates(e) {
|
|
this._updateDisabledState(), this._updateDisabledOnIntervalState(), this
|
|
._updateSelectedState(), this._updateLoadingState(), e && this
|
|
._clearDisableState()
|
|
}
|
|
_updateValuesHTMLElHandler(e, t) {
|
|
v(Object(i.ensure)(this._valuesElements[e].value), t), this._updateShowValues()
|
|
}
|
|
_updateValueColorHandler(e, t = "") {
|
|
Object(i.ensure)(this._valuesElements[e].value).style.color = t
|
|
}
|
|
_updateValueVisibleHandler(e, t) {
|
|
const s = Object(i.ensure)(this._valuesElements[e].value).closest("." + y
|
|
.valueItem);
|
|
null !== s && s.classList.toggle(m.blockHidden, !t)
|
|
}
|
|
_updateShowLine() {
|
|
null !== this._el && this._el.classList.toggle(m.blockHidden, this._isRowHidden
|
|
.value())
|
|
}
|
|
_createValuesSpawns() {
|
|
this._valuesSpawnArray = this._values.value().map(e => ({
|
|
value: e.value.spawn(),
|
|
color: e.color.spawn(),
|
|
visible: e.visible.spawn()
|
|
}))
|
|
}
|
|
_removeValuesSpawnsSubscriptions() {
|
|
for (const e of this._valuesSpawnArray) e.value.destroy(), e.color.destroy(), e
|
|
.visible.destroy();
|
|
this._valuesSpawnArray = []
|
|
}
|
|
_addValuesSpawnsSubscriptions() {
|
|
for (let e = 0; e < this._valuesSpawnArray.length; e++) {
|
|
const t = this._valuesSpawnArray[e];
|
|
t.value.subscribe(this._updateValuesHTMLElHandler.bind(this, e)), t.color
|
|
.subscribe(this._updateValueColorHandler.bind(this, e)), t.visible
|
|
.subscribe(this._updateValueVisibleHandler.bind(this, e))
|
|
}
|
|
}
|
|
_updateShowValues() {
|
|
null !== this._valuesAdditionalWrapperEl && this._valuesAdditionalWrapperEl
|
|
.classList.toggle(m.blockHidden, this._isValuesShouldBeHidden())
|
|
}
|
|
_isValuesShouldBeHidden() {
|
|
return !this._valuesSpawnArray.some(e => e.value.value().length > 0)
|
|
}
|
|
_addStatusesWidget(e, t, s) {
|
|
this._statusesWrapper = document.createElement("div"), this._statusesWrapper
|
|
.classList.add(y.statusesWrapper), this._statusesWrapper.appendChild(e), Object(
|
|
i.ensureNotNull)(this._firstBlockWrapper).appendChild(this
|
|
._statusesWrapper), this._hideInvisibleHover = t.spawn(), this
|
|
._hideInvisibleHover.subscribe(this._updateInvisibleHoverMode.bind(this), {
|
|
callWithLast: !0
|
|
}), this._hideValues = s.spawn(), this._hideValues.subscribe(this
|
|
._updateHideValuesMode.bind(this), {
|
|
callWithLast: !0
|
|
}), this._updateStatusWidgetVisibility(this._disabled.value()), this
|
|
._resizeObserver = new u.default(this._handlerRestrictTitleWidth.bind(this)),
|
|
null !== this._actionsParentEl && this._resizeObserver.observe(this
|
|
._actionsParentEl), this._resizeObserver.observe(this._statusesWrapper)
|
|
}
|
|
_updateTitleMaxWidth() {
|
|
if (null === this._firstBlockWrapper) return;
|
|
const e = this._allButtonsWidth || 0,
|
|
t = (this._lastActionsWrapperWidth || 0) + (this._lastStatusesWrapperWidth ||
|
|
0);
|
|
this._isWidthButtonsMode() ? this._firstBlockWrapper.style.maxWidth =
|
|
`calc(100% - ${Math.max(e,t)}px)` : this._firstBlockWrapper.style.maxWidth = t >
|
|
0 ? `calc(100% - ${t}px)` : ""
|
|
}
|
|
_updateAllButtonsWidth() {
|
|
this._allButtonsWidth = this._getButtonsCount() * N + 1, this._updateTitleMaxWidth()
|
|
}
|
|
_updateInvisibleHoverMode(e) {
|
|
null !== this._el && this._el.classList.toggle(y.invisibleHover, !e)
|
|
}
|
|
_updateHideValuesMode(e) {
|
|
null !== this._el && this._el.classList.toggle(y.hideValues, e)
|
|
}
|
|
_showActions() {
|
|
if (null === this._el || !this._withActions) return;
|
|
this._el.classList.add(y.withAction);
|
|
const e = null !== this._valuesParentEl && null !== this._titleParentEl && this
|
|
._valuesParentEl.offsetTop === this._titleParentEl.offsetTop;
|
|
this._el.classList.toggle(y.withTail, e), this._updateTitleMaxWidth()
|
|
}
|
|
_hideActions() {
|
|
null !== this._el && this._withActions && !this._stayInHoveredMode && (this._el
|
|
.classList.remove(y.withAction), null !== this._valuesParentEl && this
|
|
._valuesParentEl.classList.remove(y.withTail), this._updateTitleMaxWidth())
|
|
}
|
|
_handlerRestrictTitleWidth(e) {
|
|
if (null === this._actionsParentEl || null === this._firstBlockWrapper) return;
|
|
let t = null,
|
|
s = null;
|
|
for (const i of e) i.target === this._statusesWrapper && (t = i.contentRect.width),
|
|
i.target === this._actionsParentEl && (s = i.contentRect.width);
|
|
t === this._lastStatusesWrapperWidth && s === this._lastActionsWrapperWidth || (
|
|
null !== t && (this._lastStatusesWrapperWidth = t), null !== s && (this
|
|
._lastActionsWrapperWidth = s), this._updateTitleMaxWidth())
|
|
}
|
|
_clearDesabledTimeout() {
|
|
null !== this._disableTimeout && (clearTimeout(this._disableTimeout), this
|
|
._disableTimeout = null)
|
|
}
|
|
_updateDisabledState() {
|
|
null !== this._el && (this._el.classList.remove("tempDisabled"), this._el.classList
|
|
.remove(y.hiddenLoading), this._clearDesabledTimeout(), this._disabled
|
|
.value() ? (this._el.classList.add(y.disabled), this
|
|
._updateStatusWidgetVisibility(!0)) : (this._el.classList.add(
|
|
"tempDisabled"), this._el.classList.add(y.hiddenLoading), this
|
|
._disableTimeout = setTimeout(() => {
|
|
null !== this._el && (!this._loading.value() && this._el
|
|
.classList.contains("tempDisabled") && (this._el
|
|
.classList.remove("tempDisabled"), this._el
|
|
.classList.remove(y.hiddenLoading), this._el
|
|
.classList.toggle(y.disabled, this._disabled
|
|
.value()), this._updateStatusWidgetVisibility(!1)),
|
|
this._clearDesabledTimeout())
|
|
}, 1e3)), this._updateTitleMaxWidth())
|
|
}
|
|
_clearDisableState() {
|
|
null !== this._el && (this._el.classList.remove(y.hiddenLoading), this._el.classList
|
|
.remove(y.disabled), this._el.classList.remove("tempDisabled"), this
|
|
._updateStatusWidgetVisibility(this._disabled.value()), this
|
|
._updateTitleMaxWidth())
|
|
}
|
|
_updateDisabledOnIntervalState() {
|
|
var e;
|
|
null === (e = this._el) || void 0 === e || e.classList.toggle(y.disabledOnInterval,
|
|
this._disabledOnInterval.value())
|
|
}
|
|
_updateSelectedState() {
|
|
null !== this._el && this._withActions && this._el.classList.toggle(y.selected, this
|
|
._selected.value())
|
|
}
|
|
_updateLoadingState() {
|
|
if (null === this._el) return;
|
|
this._el.classList.contains("tempDisabled") && (this._loading.value() ? this._el
|
|
.classList.add(y.hiddenLoading) : this._clearDisableState());
|
|
const e = this._loading.value();
|
|
this._el.classList.toggle(y.loading, e), null !== this._loader && this._loader
|
|
.toggleVisibility(e)
|
|
}
|
|
_updateShowTitles() {
|
|
null !== this._titleParentEl && (this._titleParentEl.classList.toggle(m.blockHidden,
|
|
this._isTitleHidden.value()), null !== this._actionsParentEl && this
|
|
._actionsParentEl.classList.toggle(m.blockHidden, this._isTitleHidden
|
|
.value()))
|
|
}
|
|
_updateValues() {
|
|
this._removeValuesSpawnsSubscriptions(), this._createValuesSpawns(), null !== this
|
|
._valuesParentEl && null !== this._valuesAdditionalWrapperEl && (this
|
|
._valuesElements = [], this._valuesAdditionalWrapperEl.innerHTML = ""), this
|
|
._renderValues(), this._addValuesSpawnsSubscriptions(), this._updateShowValues()
|
|
}
|
|
_updateActionVisibilities(e) {
|
|
null !== this._actionsParentEl && this._actionsParentEl.querySelectorAll("." + y
|
|
.button)[e].classList.toggle(m.blockHidden, !this._actionsSpawnArray[e]
|
|
.visible.value())
|
|
}
|
|
_updateActionTitle(e) {
|
|
const t = this._actionsSpawnArray[e].title;
|
|
null !== this._actionsParentEl && null !== t && this._actionsParentEl
|
|
.querySelectorAll("." + y.button)[e].setAttribute("title", t.value())
|
|
}
|
|
_updateCustomTextColor() {
|
|
const e = this._customTextColor.value() || "";
|
|
for (const t of this._titleElements) null !== t && (t.style.color = e);
|
|
const t = Object(i.ensureNotNull)(this._valuesParentEl).querySelectorAll("." + y
|
|
.valueTitle);
|
|
for (let s = 0; s < t.length; s++) t[s].style.color = e;
|
|
Object(i.ensureNotNull)(this._el).classList.toggle(y.withCustomTextColor, Boolean(
|
|
e))
|
|
}
|
|
_updateStatusWidgetVisibility(e) {
|
|
null !== this._statusesWrapper && this._statusesWrapper.classList.toggle(m
|
|
.blockHidden, e)
|
|
}
|
|
}
|
|
class E extends f {
|
|
constructor(e, t, s) {
|
|
super(e, t, s), this._clientHeight = null, this._flagged = this._model.flagged()
|
|
.spawn(), this._flagged.subscribe(this._updateFlaggedState.bind(this)), this
|
|
._updateStates(), s.statusWidgetEl && this._addStatusesWidget(s.statusWidgetEl,
|
|
s.hideInvisibleHover, s.hideValues), this._selected.subscribe(this
|
|
._updateTitleMaxWidth.bind(this))
|
|
}
|
|
destroy() {
|
|
super.destroy(), void 0 !== this._flagged && this._flagged.destroy()
|
|
}
|
|
getHeight() {
|
|
return null === this._el ? null : (null === this._clientHeight && (this
|
|
._clientHeight = this._el.clientHeight, 0 === this._clientHeight && (
|
|
this._clientHeight = null)), this._clientHeight)
|
|
}
|
|
_getButtonsCount() {
|
|
return 1 === this._mode ? 1 : 3
|
|
}
|
|
_render() {
|
|
super._render();
|
|
const e = Object(i.ensureNotNull)(this._el);
|
|
e.classList.add(y.item, y.series), e.classList.toggle(y.onlyOneButtonCanBeStick,
|
|
this._model.isOneButtonCanBeStick()), e.dataset.name = "legend-series-item"
|
|
}
|
|
_updateStates() {
|
|
super._updateStates(), this._updateFlaggedState()
|
|
}
|
|
_renderValues() {
|
|
null === this._valuesParentEl && (this._valuesParentEl = document.createElement(
|
|
"div"), this._valuesParentEl.classList.add(y.valuesWrapper), this
|
|
._valuesAdditionalWrapperEl = document.createElement("div"), this
|
|
._valuesAdditionalWrapperEl.classList.add(y.valuesAdditionalWrapper), this
|
|
._valuesParentEl.appendChild(this._valuesAdditionalWrapperEl));
|
|
const e = Object(i.ensureNotNull)(this._valuesAdditionalWrapperEl),
|
|
t = this._values.value();
|
|
for (const s of t) {
|
|
const t = document.createElement("div");
|
|
t.classList.add(y.valueItem), t.classList.toggle(m.blockHidden, !s.visible
|
|
.value());
|
|
const i = document.createElement("div"),
|
|
o = s.title.value() || "";
|
|
i.classList.add(y.valueTitle), i.classList.toggle(m.blockHidden, 0 === o
|
|
.length), i.appendChild(document.createTextNode(o)), t.appendChild(i);
|
|
const l = document.createElement("div");
|
|
l.classList.add(y.valueValue), l.style.color = s.color.value() || "", l
|
|
.appendChild(document.createTextNode(s.value.value())), t.appendChild(l),
|
|
this._valuesElements.push({
|
|
title: i,
|
|
value: l
|
|
}), e.appendChild(t)
|
|
}
|
|
}
|
|
_createValuesSpawns() {
|
|
super._createValuesSpawns(), this._values.value().forEach((e, t) => {
|
|
this._valuesSpawnArray[t].title = e.title.spawn()
|
|
})
|
|
}
|
|
_removeValuesSpawnsSubscriptions() {
|
|
for (const e of this._valuesSpawnArray) e.title.destroy();
|
|
super._removeValuesSpawnsSubscriptions()
|
|
}
|
|
_addValuesSpawnsSubscriptions() {
|
|
super._addValuesSpawnsSubscriptions();
|
|
for (let e = 0; e < this._valuesSpawnArray.length; e++) this._valuesSpawnArray[e]
|
|
.title.subscribe(this._updateValuesTitleHTMLElHandler.bind(this, e))
|
|
}
|
|
_isValuesShouldBeHidden() {
|
|
return !this._valuesSpawnArray.some(e => e.value.value().length > 0 || (e.title
|
|
.value() || "").length > 0)
|
|
}
|
|
_updateValuesTitleHTMLElHandler(e, t = "") {
|
|
const s = Object(i.ensure)(this._valuesElements[e].title);
|
|
v(s, t), s.classList.toggle(m.blockHidden, 0 === t.length), this._updateShowValues()
|
|
}
|
|
_isWidthButtonsMode() {
|
|
return null !== this._el && (void 0 !== this._flagged && Boolean(this._flagged
|
|
.value()) || super._isWidthButtonsMode())
|
|
}
|
|
_updateFlaggedState() {
|
|
if (void 0 === this._flagged) return;
|
|
Object(i.ensureNotNull)(this._el).classList.toggle(y.flagged, Boolean(this._flagged
|
|
.value())), this._updateTitleMaxWidth()
|
|
}
|
|
}
|
|
const C = w.isSafari ? "click" : "auxclick";
|
|
class k extends f {
|
|
constructor(e, t, s) {
|
|
super(e, t, s), this._wheelClickHandler = null, this._canUpdateRowVisibility = !0,
|
|
this._globalRowVisibility = this._model.globalVisibility().spawn(), this
|
|
._globalRowVisibility.subscribe(this._updateShowLine.bind(this), {
|
|
callWithLast: !0
|
|
}), this._has5Buttons = this._model.isPineScriptDataSource().spawn(), this
|
|
._has5Buttons.subscribe(this._update5ButtonsStyles.bind(this)), this
|
|
._updateStates(!this._disabled.value()), s.statusWidgetEl && this
|
|
._addStatusesWidget(s.statusWidgetEl, s.hideInvisibleHover, s.hideValues), this
|
|
._selected.subscribe(this._updateTitleMaxWidth.bind(this)), s.withActions && (
|
|
this._wheelClickHandler = this._onWheelClicked.bind(this), null !== this
|
|
._titleParentEl && this._titleParentEl.addEventListener(C, this
|
|
._wheelClickHandler))
|
|
}
|
|
destroy() {
|
|
super.destroy(), this._has5Buttons.destroy(), this._globalRowVisibility && this
|
|
._globalRowVisibility.destroy(), null !== this._wheelClickHandler && null !==
|
|
this._titleParentEl && this._titleParentEl.removeEventListener(C, this
|
|
._wheelClickHandler)
|
|
}
|
|
_updateShowLine() {
|
|
if (null === this._el || !this._canUpdateRowVisibility) return;
|
|
const e = !this._globalRowVisibility.value();
|
|
e ? this._el.classList.toggle(m.blockHidden, e) : super._updateShowLine()
|
|
}
|
|
_getButtonsCount() {
|
|
switch (this._mode) {
|
|
case 4:
|
|
return this._has5Buttons.value() ? 5 : 4;
|
|
case 3:
|
|
return 3;
|
|
default:
|
|
return 2
|
|
}
|
|
}
|
|
_render() {
|
|
super._render();
|
|
const e = Object(i.ensureNotNull)(this._el);
|
|
e.classList.add(y.item, y.study), e.dataset.name = "legend-source-item"
|
|
}
|
|
_renderValues() {
|
|
null === this._valuesParentEl && (this._valuesParentEl = document.createElement(
|
|
"div"), this._valuesParentEl.classList.add(y.valuesWrapper), this
|
|
._valuesAdditionalWrapperEl = document.createElement("div"), this
|
|
._valuesAdditionalWrapperEl.classList.add(y.valuesAdditionalWrapper), this
|
|
._valuesParentEl.appendChild(this._valuesAdditionalWrapperEl));
|
|
const e = Object(i.ensureNotNull)(this._valuesAdditionalWrapperEl),
|
|
t = this._values.value();
|
|
for (const s of t) {
|
|
const t = document.createElement("div");
|
|
t.classList.add(y.valueItem), t.classList.toggle(m.blockHidden, !s.visible
|
|
.value());
|
|
const i = document.createElement("div");
|
|
i.classList.add(y.valueValue), i.style.color = s.color.value() || "", i
|
|
.appendChild(document.createTextNode(s.value.value())), t.appendChild(i),
|
|
this._valuesElements.push({
|
|
value: i
|
|
}), e.appendChild(t)
|
|
}
|
|
}
|
|
_update5ButtonsStyles(e) {
|
|
null !== this._el && (this._el.classList.toggle(y.has5Buttons, e), this
|
|
._updateAllButtonsWidth())
|
|
}
|
|
_onWheelClicked(e) {
|
|
1 === e.button && this._model.onRemoveSource()
|
|
}
|
|
}
|
|
var V = s("JWMC");
|
|
|
|
function x(e) {
|
|
Object(V.trackEvent)("GUI", "Legend action", e)
|
|
}
|
|
var W = s("6dGu"),
|
|
T = s("rGGD"),
|
|
L = s("Y+EN"),
|
|
O = s("vYP1");
|
|
const A = window.t("Hide Indicator Legend"),
|
|
D = window.t("Show Indicator Legend"),
|
|
H = window.t("Show Object Tree");
|
|
class B {
|
|
constructor(e, t, s) {
|
|
this._el = null, this._counterEl = null, this._arrowIconEL = null, this
|
|
._objectTreeEl = null, this._mode = 0, this._parentEl = e, this._themedColor = t
|
|
.spawn(),
|
|
this._themedColor.subscribe(this._updateThemedColor.bind(this)), this
|
|
._sourceCount = s.visibleDataSourceCount.spawn(), this._sourceCount.subscribe(
|
|
this._updateSourceCount.bind(this)), this._isStateOpen = s
|
|
.isDataSourcesCollapsed.spawn(), this._isStateOpen.subscribe(this._updateState
|
|
.bind(this)), this._showObjectsTree = s.showObjectsTree.spawn(), this
|
|
._showObjectsTree.subscribe(this._updateObjectTreeVisibility.bind(this)), this
|
|
._render(), this._updateState(), this._updateThemedColor(this._themedColor
|
|
.value()), this._updateObjectTreeVisibility(this._showObjectsTree.value()),
|
|
this._toggleStateHandler = Object(p.c)(s.onCollapseDataSources), this
|
|
._showObjectTreeHandler = Object(p.c)(s.onShowObjectsTreeDialog), null !== this
|
|
._el && (this._el.addEventListener("touchend", this._toggleStateHandler), this
|
|
._el.addEventListener("click", this._toggleStateHandler), this._el
|
|
.addEventListener("contextmenu", e => {
|
|
e.preventDefault(), e.stopPropagation()
|
|
})), null !== this._objectTreeEl && (this._objectTreeEl.addEventListener(
|
|
"touchend", this._showObjectTreeHandler), this._objectTreeEl
|
|
.addEventListener("click", this._showObjectTreeHandler))
|
|
}
|
|
destroy() {
|
|
this._sourceCount.destroy(), this._isStateOpen.destroy(), null !== this
|
|
._objectTreeEl && (this._objectTreeEl.removeEventListener("touchend", this
|
|
._showObjectTreeHandler), this._objectTreeEl.removeEventListener(
|
|
"click", this._showObjectTreeHandler), this._objectTreeEl = null), this
|
|
._arrowIconEL = null, this._counterEl = null, null !== this._el && (this._el
|
|
.removeEventListener("touchend", this._toggleStateHandler), this._el
|
|
.removeEventListener("click", this._toggleStateHandler), this._el
|
|
.innerHTML = "", this._el = null)
|
|
}
|
|
setMode(e) {
|
|
this._mode = e ? 1 : 0, this._updateTooltip()
|
|
}
|
|
_render() {
|
|
this._el = document.createElement("div"), this._el.className = y.toggler +
|
|
" apply-common-tooltip", this._arrowIconEL = document.createElement("div"), this
|
|
._arrowIconEL.classList.add(y.iconArrow), this._arrowIconEL.innerHTML = h.a ?
|
|
T : W, this._el.appendChild(this._arrowIconEL), this._objectTreeEl = document
|
|
.createElement("div"), this._objectTreeEl.classList.add(y.objectTree), this
|
|
._objectTreeEl.innerHTML = h.a ? O : L, this._el.appendChild(this
|
|
._objectTreeEl), this._counterEl = document.createElement("div"), this
|
|
._counterEl.classList.add(y.counter), this._counterEl.appendChild(document
|
|
.createTextNode(String(this._sourceCount.value()))), this._el.appendChild(
|
|
this._counterEl), this._parentEl.appendChild(this._el)
|
|
}
|
|
_updateThemedColor(e) {
|
|
if (null !== this._el)
|
|
if (e.length > 0) {
|
|
const [t, s, i] = Object(r.parseRgb)(e);
|
|
this._el.style.backgroundColor = Object(r.rgbaToString)([t, s, i, Object(r
|
|
.normalizeAlphaComponent)(.8)])
|
|
} else this._el.style.removeProperty("background-color")
|
|
}
|
|
_updateSourceCount(e) {
|
|
v(Object(i.ensureNotNull)(this._counterEl), String(e)); {
|
|
const t = Object(i.ensureNotNull)(this._el),
|
|
s = e < 1;
|
|
t.classList.toggle(m.blockHidden, s);
|
|
const o = 1 === e;
|
|
t.classList.toggle(y.onlyOneSourceShown, o)
|
|
}
|
|
}
|
|
_updateCounterVisibility(e) {
|
|
if (null === this._counterEl) return;
|
|
const t = 1 === e;
|
|
this._counterEl.classList.toggle(m.blockHidden, t)
|
|
}
|
|
_updateState() {
|
|
const e = !this._isStateOpen.value();
|
|
this._parentEl.classList.toggle(y.closed, e), this._updateTooltip(),
|
|
x((e ? "Hide" : "Show") + " not main sources")
|
|
}
|
|
_tooltip() {
|
|
return 1 === this._mode ? H : this._isStateOpen.value() ? A : D
|
|
}
|
|
_updateTooltip() {
|
|
null !== this._el && this._el.setAttribute("title", this._tooltip())
|
|
}
|
|
_updateObjectTreeVisibility(e) {
|
|
Object(i.ensureNotNull)(this._el).classList.toggle(y.objectsTreeCanBeShown, e)
|
|
}
|
|
}
|
|
var P = s("+6II"),
|
|
z = s("R5JZ");
|
|
|
|
function j(e, t) {
|
|
const s = new l.a(t(e.value()));
|
|
e.subscribe(e => {
|
|
s.setValue(t(e))
|
|
});
|
|
return s.readonly().spawn(() => e.unsubscribe())
|
|
}
|
|
const N = h.a ? 44 : 28,
|
|
I = d.enabled("object_tree_legend_mode");
|
|
class R {
|
|
constructor(e, t) {
|
|
this._renderToggler = null, this._mainDataSourceRenderer = null, this
|
|
._dataSourceRenderers = [], this._wrapText = null, this._parentEl = document
|
|
.createElement("div"), this._mainDataSourceEl = null, this._dataSourcesEl =
|
|
null, this._dataSourcesAdditionalWrapperEl = null, this
|
|
._collapsedDataSourcesWrapperEl = null, this._collapsedDataSourcesEl = null,
|
|
this._outsideEventForCollapsedTooltip = null, this._options = e, this
|
|
._togglerOptions = t, this._isStudiesLegendHidden = e.isStudiesLegendHidden
|
|
.spawn(), this._isStudiesLegendHidden.subscribe(this._updateLegendVisibility
|
|
.bind(this)), this._isAllLegendHidden = e.isAllLegendHidden.spawn(), this
|
|
._isAllLegendHidden.subscribe(this._updateLegendVisibility.bind(this)), this
|
|
._updateLegendVisibility(), this._themedColor = e.themedColor.spawn(), this
|
|
._themedColor.subscribe(this._setCustomBg.bind(this)), this._showBackground = e
|
|
.showBackground.spawn(), this._showBackground.subscribe(this._setCustomBg.bind(
|
|
this)), this._backgroundTransparency = e.backgroundTransparency.spawn(),
|
|
this._backgroundTransparency.subscribe(this._setCustomBg.bind(this)), this
|
|
._collapsedDataSourcesCountSpawn = e.collapsedDataSourcesCount.spawn(), this
|
|
._collapsedDataSourcesCountSpawn.subscribe(this._updateCollapsedSourcesCount
|
|
.bind(this)), this._showCollapsedDataSourcesTooltipHandler = this
|
|
._showCollapsedDataSourcesTooltip.bind(this), h.a || (this._wrapText = e
|
|
.wrapText.spawn(), this._wrapText.subscribe(this._updateWrapText.bind(
|
|
this)), this._updateWrapText(this._wrapText.value())), this._parentEl
|
|
.classList.add(y.legend), this._parentEl.classList.toggle(y.noActions, !this
|
|
._options.withActions), this._parentEl.classList.toggle(y.touchMode, h.a),
|
|
this._parentEl.classList.toggle(y.newCollapser, !0), this._parentEl.dataset
|
|
.name = "legend", this._parentEl.style.setProperty(
|
|
"--legend-source-item-button-width", N + "px"), this._parentEl
|
|
.addEventListener("contextmenu", t => {
|
|
t.preventDefault(), e.showLegendWidgetContextMenu(t)
|
|
})
|
|
}
|
|
destroy() {
|
|
if (this._isStudiesLegendHidden.destroy(), this._isAllLegendHidden.destroy(), this
|
|
._themedColor.destroy(), this._showBackground.destroy(), this
|
|
._backgroundTransparency.destroy(), this._collapsedDataSourcesCountSpawn
|
|
.destroy(), h.a && null !== this._collapsedDataSourcesWrapperEl && this
|
|
._collapsedDataSourcesWrapperEl.removeEventListener("touchend", this
|
|
._showCollapsedDataSourcesTooltipHandler), this
|
|
._outsideEventForCollapsedTooltip && this._outsideEventForCollapsedTooltip(),
|
|
null !== this._wrapText && this._wrapText.destroy(), null !== this
|
|
._dataSourcesAdditionalWrapperEl && (this._dataSourcesAdditionalWrapperEl
|
|
.innerHTML = "", this._dataSourcesAdditionalWrapperEl = null),
|
|
null !== this._dataSourcesEl && (this._dataSourcesEl.innerHTML = "", this
|
|
._dataSourcesEl = null), null !== this._renderToggler && (this
|
|
._renderToggler.destroy(), this._renderToggler = null), null !== this
|
|
._mainDataSourceRenderer && (this._mainDataSourceRenderer.destroy(), this
|
|
._mainDataSourceRenderer = null), 0 !== this._dataSourceRenderers.length) {
|
|
for (const e of this._dataSourceRenderers) e.destroy();
|
|
this._dataSourceRenderers = []
|
|
}
|
|
this._parentEl.innerHTML = "", delete this._parentEl
|
|
}
|
|
addMainDataSource(e, t) {
|
|
this._renderMainDataSourceEl(), this._mainDataSourceRenderer = new E(e, Object(i
|
|
.ensureNotNull)(this._mainDataSourceEl), {
|
|
withActions: this._options.withActions,
|
|
customTextColor: this._options.customTextColor,
|
|
statusWidgetEl: t.getElement(),
|
|
hideInvisibleHover: j(t.visibleWidgetsCount, e => Boolean(e)),
|
|
hideValues: t.errorWidgetIsShown
|
|
}), this._updateLegendVisibility(), e.onDestroy().subscribe(this, () => {
|
|
null !== this._mainDataSourceRenderer && (this._mainDataSourceRenderer
|
|
.destroy(), this._mainDataSourceRenderer = null)
|
|
}, !0)
|
|
}
|
|
addDataSources(e, t) {
|
|
this._renderDataSourcesEl();
|
|
const s = Object(i.ensureNotNull)(this._dataSourcesAdditionalWrapperEl);
|
|
for (let i = 0; i < e.length; i++) {
|
|
const o = e[i],
|
|
l = new k(o, s, {
|
|
withActions: this._options.withActions,
|
|
customTextColor: this._options.customTextColor,
|
|
statusWidgetEl: t[i].getElement(),
|
|
hideInvisibleHover: j(t[i].visibleWidgetsCount, e => Boolean(e)),
|
|
hideValues: t[i].errorWidgetIsShown
|
|
});
|
|
this._dataSourceRenderers.push(l), this._updateLegendVisibility(), o.onDestroy()
|
|
.subscribe(this, () => {
|
|
const e = this._dataSourceRenderers.indexOf(l); - 1 !== e && (this
|
|
._dataSourceRenderers[e].destroy(), this
|
|
._dataSourceRenderers.splice(e, 1))
|
|
}, !0)
|
|
}
|
|
}
|
|
addCustomWidget(e, t) {
|
|
if (0 === t.block) {
|
|
this._renderMainDataSourceEl();
|
|
const s = Object(i.ensureNotNull)(this._mainDataSourceEl);
|
|
1 === t.position && e.renderTo(s, s.firstChild), 0 === t.position && e.renderTo(
|
|
s)
|
|
}
|
|
if (1 === t.block) {
|
|
this._renderDataSourcesEl();
|
|
const s = Object(i.ensureNotNull)(this._dataSourcesAdditionalWrapperEl);
|
|
1 === t.position && e.renderTo(s, s.firstChild), 0 === t.position && e.renderTo(
|
|
s)
|
|
}
|
|
}
|
|
firstTitle() {
|
|
return this._parentEl.firstElementChild
|
|
}
|
|
getElement() {
|
|
return this._parentEl
|
|
}
|
|
updateMode(e) {
|
|
const t = I && e < 112 ? 1 : e < 205 ? 2 : e < 222 ? 3 : 4;
|
|
null !== this._mainDataSourceRenderer && this._mainDataSourceRenderer.updateMode(t);
|
|
for (const e of this._dataSourceRenderers) e.updateMode(t);
|
|
this._parentEl.classList.toggle(y.medium, 3 === t), this._parentEl.classList.toggle(
|
|
y.minimized, 2 === t), this._parentEl.classList.toggle(y.micro, 1 === t),
|
|
null !== this._renderToggler && this._renderToggler.setMode(1 === t);
|
|
const s = h.a || e < 542;
|
|
this._parentEl.classList.toggle(y.directionColumn, s)
|
|
}
|
|
getMainSourceHeight() {
|
|
return null === this._mainDataSourceRenderer ? 0 : this._mainDataSourceRenderer
|
|
.getHeight()
|
|
}
|
|
getDataSourceHeight() {
|
|
return 0 === this._dataSourceRenderers.length ? 0 : this._dataSourceRenderers[0]
|
|
.getHeight()
|
|
}
|
|
_renderMainDataSourceEl() {
|
|
null === this._mainDataSourceEl && (this._mainDataSourceEl = document.createElement(
|
|
"div"), this._parentEl.insertBefore(this._mainDataSourceEl, this
|
|
._dataSourcesEl))
|
|
}
|
|
_renderDataSourcesEl() {
|
|
null === this._dataSourcesEl && (this._dataSourcesEl = document.createElement(
|
|
"div"),
|
|
this._dataSourcesEl.classList.add(y.sourcesWrapper), this._renderToggle(this
|
|
._dataSourcesEl), this._dataSourcesAdditionalWrapperEl = document
|
|
.createElement("div"), this._dataSourcesAdditionalWrapperEl.classList.add(y
|
|
.sources), this._dataSourcesEl.appendChild(this
|
|
._dataSourcesAdditionalWrapperEl), this._renderCollapsedCounter(this
|
|
._dataSourcesAdditionalWrapperEl), this._parentEl.appendChild(this
|
|
._dataSourcesEl))
|
|
}
|
|
_renderToggle(e) {
|
|
this._options.showToggleButton && (this._renderToggler = new B(e, this._options
|
|
.themedColor, this._togglerOptions))
|
|
}
|
|
_renderCollapsedCounter(e) {
|
|
this._collapsedDataSourcesWrapperEl = document.createElement("div"), this
|
|
._collapsedDataSourcesWrapperEl.className = `${y.item} ${y.last}`, this
|
|
._collapsedDataSourcesEl = document.createElement("span"), this
|
|
._collapsedDataSourcesEl.className = y.text + " apply-common-tooltip", this
|
|
._collapsedDataSourcesWrapperEl.append(this._collapsedDataSourcesEl), e.append(
|
|
this._collapsedDataSourcesWrapperEl), h.a && this
|
|
._collapsedDataSourcesWrapperEl.addEventListener("touchend", this
|
|
._showCollapsedDataSourcesTooltipHandler), this
|
|
._updateCollapsedSourcesCount(this._collapsedDataSourcesCountSpawn.value())
|
|
}
|
|
_showCollapsedDataSourcesTooltip() {
|
|
Object(P.c)(this._collapsedDataSourcesEl, {
|
|
text: this._options.collapsedDataSourcesTitle.value()
|
|
}), this._addOutsideEventForHideTooltip()
|
|
}
|
|
_addOutsideEventForHideTooltip() {
|
|
null !== this._outsideEventForCollapsedTooltip && this
|
|
._outsideEventForCollapsedTooltip(), this._outsideEventForCollapsedTooltip =
|
|
Object(z.a)(new CustomEvent("timestamp").timeStamp, this
|
|
._collapsedDataSourcesWrapperEl, () => {
|
|
null !== this._outsideEventForCollapsedTooltip && this
|
|
._outsideEventForCollapsedTooltip(), Object(P.a)()
|
|
}, window.document, {
|
|
touchEnd: !0
|
|
})
|
|
}
|
|
_updateCollapsedSourcesCount(e) {
|
|
if (null === this._collapsedDataSourcesWrapperEl || null === this
|
|
._collapsedDataSourcesEl) return;
|
|
const t = 0 === e;
|
|
this._collapsedDataSourcesWrapperEl.classList.toggle(m.blockHidden, t), t || (v(this
|
|
._collapsedDataSourcesEl, "+" + e), this._collapsedDataSourcesEl
|
|
.setAttribute("title", this._options.collapsedDataSourcesTitle.value()))
|
|
}
|
|
_updateLegendVisibility() {
|
|
this._parentEl.classList.toggle(m.blockHidden, this._isAllLegendHidden.value()),
|
|
null !== this._dataSourcesEl && this._dataSourcesEl.classList.toggle(m
|
|
.blockHidden, this._isStudiesLegendHidden.value())
|
|
}
|
|
_setCustomBg() {
|
|
const e = this._showBackground.value(),
|
|
t = this._themedColor.value(),
|
|
s = this._backgroundTransparency.value();
|
|
let i = "";
|
|
if (e) {
|
|
const [e, o, l] = Object(r.parseRgb)(t);
|
|
i = Object(r.rgbaToString)([e, o, l, Object(r.normalizeAlphaComponent)(1 - s /
|
|
100)])
|
|
}
|
|
this._parentEl.style.color = i
|
|
}
|
|
_updateWrapText(e) {
|
|
this._parentEl.classList.toggle(y.noWrap, !e)
|
|
}
|
|
}
|
|
var F = s("Tmoa"),
|
|
K = s("aIyQ"),
|
|
U = s.n(K),
|
|
Y = s("Ialn"),
|
|
G = s("QloM"),
|
|
Z = s("1AAW"),
|
|
X = s("CLNU");
|
|
|
|
function $(e) {
|
|
return void 0 !== e ? F.resetTransparency(e) : e
|
|
}
|
|
const q = window.t("Show"),
|
|
J = window.t("Hide");
|
|
class Q {
|
|
constructor(e, t, s, i, o) {
|
|
this._values = new l.a([]), this._actions = [], this._onDestroy = new U.a, this
|
|
._loading = new l.a(!1), this._moreActionCM = null, this._model = e, this
|
|
._source = t, this._options = s, this._callbacks = i, this._contextMenuOptions =
|
|
o, this._disabled = new l.a(this._getDisabledState()),
|
|
this._disabledOnInterval = new l.a(this._getDisabledOnIntervalState()), this
|
|
._selected = new l.a(!1), this._isTitleHidden = new l.a(this
|
|
._getTitleHiddenValue()), this._isValuesHidden = new l.a(this
|
|
._getValuesHiddenValue()), this._isRowHidden = new l.a(this
|
|
._getRowHiddenValue()), Object(Z.a)(() => ({}), this._isTitleHidden, this
|
|
._isValuesHidden, this._disabled).subscribe(this._updateRowVisibilities
|
|
.bind(this)), this._values.subscribe(() => {
|
|
this._isValuesHidden.setValue(this._getValuesHiddenValue())
|
|
})
|
|
}
|
|
destroy() {}
|
|
onDestroy() {
|
|
return this._onDestroy
|
|
}
|
|
titles() {
|
|
return this._titles.map(e => e.readonly())
|
|
}
|
|
values() {
|
|
return this._values.readonly()
|
|
}
|
|
actions() {
|
|
return this._actions
|
|
}
|
|
disabled() {
|
|
return this._disabled.readonly()
|
|
}
|
|
disabledOnInterval() {
|
|
return this._disabledOnInterval.readonly()
|
|
}
|
|
selected() {
|
|
return this._selected.readonly()
|
|
}
|
|
loading() {
|
|
return this._loading.readonly()
|
|
}
|
|
isTitleHidden() {
|
|
return this._isTitleHidden.readonly()
|
|
}
|
|
isValuesHidden() {
|
|
return this._isValuesHidden.readonly()
|
|
}
|
|
isRowHidden() {
|
|
return this._isRowHidden.readonly()
|
|
}
|
|
update() {
|
|
this._updateTitle(), this._updateValues(), this._updateStates()
|
|
}
|
|
updateSource(e) {
|
|
this._source !== e && (this._source = e, this.update(), this._isTitleHidden
|
|
.setValue(this._getTitleHiddenValue()), this._isValuesHidden.setValue(this
|
|
._getValuesHiddenValue()))
|
|
}
|
|
onToggleDisabled() {
|
|
const e = this._source.properties().childs().visible,
|
|
t = !e.value();
|
|
this._model.setProperty(e, t, `${t?"Show":"Hide"} ${this._source.title()}`), x((t ?
|
|
"Show" : "Hide") + " source")
|
|
}
|
|
onShowSettings() {
|
|
this._source.userEditEnabled() && (this.setSourceSelected(), this._callbacks
|
|
.showChartPropertiesForSource(this._source, G.TabNames.style), x(
|
|
"Settings for source"))
|
|
}
|
|
onShowMoreActions(e) {
|
|
return this._options.readOnlyMode ? Promise.resolve(null) : (this._callbacks
|
|
.updateActions(), x("Show source context menu"), this._callbacks
|
|
.showContextMenuForSources([this._source], this._calcNewPosition(e), this
|
|
._contextMenuOptions))
|
|
}
|
|
setSourceSelected() {
|
|
this._model.selectionMacro(e => {
|
|
e.clearSelection(), e.addSourceToSelection(this._source)
|
|
})
|
|
}
|
|
_moreActionHandler(e) {
|
|
e.preventDefault(), null !== this._moreActionCM && this._moreActionCM.isShown() ?
|
|
this._moreActionCM = null : (this.setSourceSelected(), this.onShowMoreActions(e)
|
|
.then(e => {
|
|
this._moreActionCM = e
|
|
}))
|
|
}
|
|
_updateTitle() {
|
|
const e = this._source.statusView();
|
|
if (null === e) return;
|
|
const t = e.getSplitTitle();
|
|
for (let e = 0; e < this._titles.length; e++) {
|
|
const s = t[e],
|
|
i = Object(X.clean)(Array.isArray(s) ? s.join(" ") : s || "", !0);
|
|
this._titles[e].setValue(i)
|
|
}
|
|
}
|
|
_updateStates() {
|
|
this._disabled.setValue(this._getDisabledState()), this._disabledOnInterval
|
|
.setValue(this._getDisabledOnIntervalState()), this._selected.setValue(this
|
|
._model.selection().isSelected(this._source)), this._loading.setValue(
|
|
Boolean(this._source.isLoading()))
|
|
}
|
|
_hasValues() {
|
|
return this._values.value().length > 0
|
|
}
|
|
_getEyeTitle() {
|
|
return this._disabled.value() ? q : J
|
|
}
|
|
_getDisabledState() {
|
|
return !this._source.properties().visible.value()
|
|
}
|
|
_updateRowVisibilities() {
|
|
this._isRowHidden.setValue(this._getRowHiddenValue())
|
|
}
|
|
_getRowHiddenValue() {
|
|
return this._options.readOnlyMode && this._disabled.value() || this._isTitleHidden
|
|
.value() && (this._isValuesHidden.value() || this._disabled.value())
|
|
}
|
|
_calcNewPosition(e) {
|
|
let t = {};
|
|
if (e.hasOwnProperty("touches") && e.touches.length > 0) t = {
|
|
clientX: e.touches[0].clientX,
|
|
clientY: e.touches[0].clientY
|
|
};
|
|
else if (null !== e.target) {
|
|
const s = e.target.getBoundingClientRect();
|
|
t = {
|
|
clientX: Object(Y.isRtl)() ? s.right : s.left,
|
|
clientY: s.top + s.height + 3
|
|
}
|
|
} else {
|
|
const s = e;
|
|
t = {
|
|
clientX: s.clientX,
|
|
clientY: s.clientY
|
|
}
|
|
}
|
|
return t
|
|
}
|
|
}
|
|
var ee = s("z4c1"),
|
|
te = s("61S9"),
|
|
se = s("vWJB"),
|
|
ie = s("wZiV");
|
|
const oe = window.t("More"),
|
|
le = window.t("Flag Symbol"),
|
|
ne = window.t("Unflag Symbol"),
|
|
ae = d.enabled("show_hide_button_in_legend");
|
|
class re extends Q {
|
|
constructor(e, t, s, i, o) {
|
|
super(e, t, s, i, o), this._titles = [new l.a(""), new l.a(""), new l.a(""), new l
|
|
.a("")
|
|
], this._symbolMarker = null, this._symbolMarkerIcon = null, this._flagged =
|
|
new l.a(null), this._symbolAction = null, this._symbol = null, this
|
|
._isOneButtonCanBeStick = !1, this._createActions(), this._updateSymbolMarker(),
|
|
this._model.model().properties().paneProperties.legendProperties.showSeriesTitle
|
|
.subscribe(this, () => {
|
|
this._isTitleHidden.setValue(this._getTitleHiddenValue())
|
|
});
|
|
const n = [this._model.model().properties().paneProperties.legendProperties
|
|
.showSeriesOHLC, this._model.model().properties().paneProperties
|
|
.legendProperties.showBarChange
|
|
];
|
|
for (const e of n) e.subscribe(this, () => {
|
|
this._isValuesHidden.setValue(this._getValuesHiddenValue())
|
|
});
|
|
this.update(), this._source.onStatusChanged().subscribe(this, () => {
|
|
this._loading.setValue(this._source.isLoading())
|
|
})
|
|
}
|
|
destroy() {
|
|
super.destroy(), this._model.model().properties().paneProperties.legendProperties
|
|
.showSeriesTitle.unsubscribeAll(this), this._model.model().properties()
|
|
.paneProperties.legendProperties.showSeriesOHLC.unsubscribeAll(this), this
|
|
._model.model().properties().paneProperties.legendProperties.showBarChange
|
|
.unsubscribeAll(this), this._source.onStatusChanged().unsubscribeAll(this), this
|
|
._onDestroy.fire()
|
|
}
|
|
flagged() {
|
|
return this._flagged.readonly()
|
|
}
|
|
onShowSettings() {
|
|
this._source.userEditEnabled() && this._callbacks.showGeneralChartProperties(G
|
|
.TabNames.symbol)
|
|
}
|
|
isOneButtonCanBeStick() {
|
|
return this._isOneButtonCanBeStick
|
|
}
|
|
_updateValues() {
|
|
const e = this._source.legendView(),
|
|
t = this._values.value(),
|
|
s = e.marketTitle(),
|
|
i = e.marketTitle().length > 0;
|
|
if (0 === t.length) {
|
|
const t = {
|
|
value: new l.a(""),
|
|
color: new l.a(""),
|
|
visible: new l.a(i),
|
|
title: new l.a(s)
|
|
},
|
|
o = e.items().map(e => ({
|
|
value: new l.a(e.value()),
|
|
color: new l.a($(e.color())),
|
|
visible: new l.a(e.visible()),
|
|
title: new l.a(e.title())
|
|
}));
|
|
this._values.setValue([t].concat(o))
|
|
} else {
|
|
t[0].title.setValue(s), t[0].visible.setValue(i);
|
|
const o = e.items();
|
|
for (let e = 0; e < o.length; e++) {
|
|
const s = o[e];
|
|
t[e + 1].value.setValue(s.value()), t[e + 1].color.setValue($(s.color())),
|
|
t[e + 1].visible.setValue(s.visible()), t[e + 1].title.setValue(s
|
|
.title())
|
|
}
|
|
}
|
|
}
|
|
_updateStates() {
|
|
super._updateStates(), this._updateSymbolMarker()
|
|
}
|
|
_getDisabledOnIntervalState() {
|
|
return !1
|
|
}
|
|
_getTitleHiddenValue() {
|
|
return !this._model.model().properties().paneProperties.legendProperties
|
|
.showSeriesTitle.value()
|
|
}
|
|
_getValuesHiddenValue() {
|
|
return !this._hasValues() || !this._model.model().properties().paneProperties
|
|
.legendProperties.showSeriesOHLC.value() && !this._model.model().properties()
|
|
.paneProperties.legendProperties.showBarChange.value()
|
|
}
|
|
_createActions() {
|
|
if (ae) {
|
|
const e = {
|
|
iconMap: new Map([
|
|
["large", te],
|
|
["small", ee]
|
|
]),
|
|
action: Object(p.c)(this.onToggleDisabled.bind(this)),
|
|
visible: new l.a(!0),
|
|
className: y.eye,
|
|
title: new l.a(this._getEyeTitle()),
|
|
dataset: {
|
|
name: "legend-show-hide-action"
|
|
}
|
|
};
|
|
this._actions.push(e), this._disabled.subscribe(() => {
|
|
e.title.setValue(this._getEyeTitle())
|
|
})
|
|
}
|
|
this._actions.push({
|
|
iconMap: new Map([
|
|
["large", ie],
|
|
["small", se]
|
|
]),
|
|
action: this._moreActionHandler.bind(this),
|
|
visible: new l.a(!0),
|
|
title: new l.a(oe),
|
|
dataset: {
|
|
name: "legend-more-action"
|
|
}
|
|
})
|
|
}
|
|
_getMarkerTitle() {
|
|
return null !== this._symbolMarker ? this._symbolMarker.isMarked() ? ne : le : ""
|
|
}
|
|
_symbolActionHandler() {
|
|
null !== this._symbolMarker && (this._updateSymbolMarker(), x("Change flag state"))
|
|
}
|
|
_updateSymbolMarker() {
|
|
this._isOneButtonCanBeStick = !0
|
|
}
|
|
}
|
|
var de = s("3ClC"),
|
|
he = s("fZEr");
|
|
var ue = s("z61+"),
|
|
ce = s("txPx"),
|
|
_e = s("RgOa"),
|
|
pe = s("2CEX"),
|
|
me = s("D8x7"),
|
|
be = s("bNWL"),
|
|
ge = s("cKqi"),
|
|
we = s("YzC7");
|
|
Object(ce.getLogger)("Chart.LegendWidget");
|
|
const ve = window.t("Settings"),
|
|
ye = window.t("Source code"),
|
|
Se = window.t("Remove"),
|
|
Me = window.t("More"),
|
|
fe = (window.t("Error"), window.t("Could not get Pine source code."), d.enabled(
|
|
"study_buttons_in_legend"), d.enabled("show_hide_button_in_legend")),
|
|
Ee = d.enabled("property_pages"),
|
|
Ce = d.enabled("format_button_in_legend"),
|
|
ke = d.enabled("delete_button_in_legend");
|
|
class Ve extends Q {
|
|
constructor(e, t, s, i, o) {
|
|
super(e, t, s, i, o), this._titles = [new l.a(""), new l.a("")], this._error = new l
|
|
.a(!1), this._isPineScriptDataSource = new l.a(!1), this._pineAction = null,
|
|
this._globalVisibility = new l.a(!0), this._createActions();
|
|
const n = [this._model.model().properties().paneProperties.legendProperties
|
|
.showSeriesTitle, this._model.model().properties().paneProperties
|
|
.legendProperties.showStudyTitles
|
|
];
|
|
for (const e of n) e.subscribe(this, () => {
|
|
this._isTitleHidden.setValue(this._getTitleHiddenValue())
|
|
});
|
|
const a = [this._model.model().properties().paneProperties.legendProperties
|
|
.showSeriesOHLC, this._model.model().properties().paneProperties
|
|
.legendProperties.showBarChange, this._model.model().properties()
|
|
.paneProperties.legendProperties.showStudyValues
|
|
];
|
|
for (const e of a) e.subscribe(this, () => {
|
|
this._isValuesHidden.setValue(this._getValuesHiddenValue())
|
|
});
|
|
this.update()
|
|
}
|
|
destroy() {
|
|
super.destroy();
|
|
const e = this._model.model().properties().paneProperties.legendProperties;
|
|
e.showSeriesTitle.unsubscribeAll(this), e.showStudyTitles.unsubscribeAll(this), e
|
|
.showSeriesOHLC.unsubscribeAll(this), e.showBarChange.unsubscribeAll(this), e
|
|
.showStudyValues.unsubscribeAll(this), this._onDestroy.fire()
|
|
}
|
|
error() {
|
|
return this._error.readonly()
|
|
}
|
|
isPineScriptDataSource() {
|
|
return this._isPineScriptDataSource.readonly()
|
|
}
|
|
updateSource(e) {
|
|
this._source !== e && (this._values.setValue([]), super.updateSource(e), this
|
|
._updateAbleShowSourceCode())
|
|
}
|
|
onRemoveSource() {
|
|
var e;
|
|
this._source.isUserDeletable() && (this._source.hasChildren() ? (e = this._model
|
|
.removeSource.bind(this._model, this._source, !1),
|
|
Object(he.showConfirm)({
|
|
title: window.t("Confirm Remove Study Tree"),
|
|
text: window.t(
|
|
"Do you really want to delete study and all of it's children?"
|
|
),
|
|
onConfirm: ({
|
|
dialogClose: t
|
|
}) => {
|
|
e(), t()
|
|
}
|
|
})) : this._model.removeSource(this._source, !1), x("Remove sources"))
|
|
}
|
|
onShowSourceCode() {
|
|
0
|
|
}
|
|
setGlobalVisibility(e) {
|
|
this._globalVisibility.setValue(e)
|
|
}
|
|
globalVisibility() {
|
|
return this._globalVisibility.readonly()
|
|
}
|
|
getFullTitle() {
|
|
return this._titles.map(e => e.value()).join(" ")
|
|
}
|
|
_updateValues() {
|
|
const e = this._source.legendView();
|
|
if (null === e) return;
|
|
if (0 === e.items().length) return;
|
|
const t = this._values.value();
|
|
if (0 === t.length) {
|
|
const t = e.items().map(e => ({
|
|
value: new l.a(e.value()),
|
|
color: new l.a($(e.color())),
|
|
visible: new l.a(e.visible())
|
|
}));
|
|
this._values.setValue(t)
|
|
} else {
|
|
const s = e.items();
|
|
for (let e = 0; e < s.length; e++) {
|
|
const i = t[e],
|
|
o = s[e];
|
|
i.value.setValue(o.value()), i.color.setValue($(o.color())), i.visible
|
|
.setValue(o.visible())
|
|
}
|
|
}
|
|
}
|
|
_updateStates() {
|
|
super._updateStates(), void 0 !== this._error && this._error.setValue(Boolean(this
|
|
._source.isFailed()))
|
|
}
|
|
_getTitleHiddenValue() {
|
|
return this._isSymbolLikeStudy() ? !this._model.model().properties().paneProperties
|
|
.legendProperties.showSeriesTitle.value() : !this._model.model().properties()
|
|
.paneProperties.legendProperties.showStudyTitles.value()
|
|
}
|
|
_getDisabledOnIntervalState() {
|
|
return !(!Object(de.isStudy)(this._source) && !Object(de.isStudyStub)(this
|
|
._source)) && !this._source.isActualInterval()
|
|
}
|
|
_getValuesHiddenValue() {
|
|
return !this._hasValues() || (this._isSymbolLikeStudy() ? !this._model.model()
|
|
.properties().paneProperties.legendProperties.showSeriesOHLC.value() && !
|
|
this._model.model().properties().paneProperties.legendProperties
|
|
.showBarChange.value() : !this._model.model().properties().paneProperties
|
|
.legendProperties.showStudyValues.value())
|
|
}
|
|
_isSymbolLikeStudy() {
|
|
return this._source instanceof ge.study_Overlay || this._source instanceof we.a
|
|
}
|
|
_updateAbleShowSourceCode() {
|
|
0
|
|
}
|
|
_updateVisibilityPineAction(e) {
|
|
null !== this._pineAction && (this._pineAction.visible.setValue(e), this
|
|
._isPineScriptDataSource.setValue(e))
|
|
}
|
|
_createActions() {
|
|
if (!this._options.readOnlyMode) {
|
|
if (this._pineAction = {
|
|
iconMap: new Map([
|
|
["large", pe],
|
|
["small", pe]
|
|
]),
|
|
action: Object(p.c)(this.onShowSourceCode.bind(this)),
|
|
visible: new l.a(!1),
|
|
title: new l.a(ye),
|
|
dataset: {
|
|
name: "legend-pine-action"
|
|
}
|
|
}, fe) {
|
|
const e = {
|
|
iconMap: new Map([
|
|
["large", te],
|
|
["small", ee]
|
|
]),
|
|
action: Object(p.c)(this.onToggleDisabled.bind(this)),
|
|
visible: new l.a(!0),
|
|
className: y.eye,
|
|
title: new l.a(this._getEyeTitle()),
|
|
dataset: {
|
|
name: "legend-show-hide-action"
|
|
}
|
|
};
|
|
this._actions.push(e), this._disabled.subscribe(() => {
|
|
e.title.setValue(this._getEyeTitle())
|
|
})
|
|
}
|
|
Ee && Ce && (!Object(de.isStudy)(this._source) || new ue.a(this._source
|
|
.metaInfo()).hasUserEditableOptions()) && this._actions.push({
|
|
iconMap: new Map([
|
|
["large", _e],
|
|
["small", _e]
|
|
]),
|
|
action: Object(p.c)(this.onShowSettings.bind(this)),
|
|
visible: new l.a(!0),
|
|
title: new l.a(ve),
|
|
dataset: {
|
|
name: "legend-settings-action"
|
|
}
|
|
}), ke && this._actions.push({
|
|
iconMap: new Map([
|
|
["large", be],
|
|
["small", me]
|
|
]),
|
|
action: Object(p.c)(this.onRemoveSource.bind(this)),
|
|
visible: new l.a(!0),
|
|
title: new l.a(Se),
|
|
dataset: {
|
|
name: "legend-delete-action"
|
|
}
|
|
}),
|
|
this._actions.push({
|
|
iconMap: new Map([
|
|
["large", ie],
|
|
["small", se]
|
|
]),
|
|
action: this._moreActionHandler.bind(this),
|
|
visible: new l.a(!0),
|
|
title: new l.a(Me),
|
|
dataset: {
|
|
name: "legend-more-action"
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
var xe = s("7KDR"),
|
|
We = s("5VQP"),
|
|
Te = s("x2L+"),
|
|
Le = s("2uTr"),
|
|
Oe = s("MXV9");
|
|
|
|
function Ae(e, t, s) {
|
|
e.setProperty(t, !t.value(), s)
|
|
}
|
|
|
|
function De(e, t, s, i, o, l) {
|
|
return function(e, t, s, i, o) {
|
|
const l = [],
|
|
n = i.get(0);
|
|
if (void 0 !== n) {
|
|
const e = n.get(1);
|
|
void 0 !== e && e.length > 0 && (l.push(...e), l.push(new xe.Separator))
|
|
}
|
|
const a = e.model().properties().paneProperties.legendProperties;
|
|
l.push(new xe.Action({
|
|
checkable: !0,
|
|
checked: a.showSeriesTitle.value(),
|
|
label: He,
|
|
statName: "Show Symbol",
|
|
onExecute: () => Ae(e, a.showSeriesTitle,
|
|
"Change Symbol Description Visibility")
|
|
})), t.showOpenMarketStatus && l.push(new xe.Action({
|
|
checkable: !0,
|
|
checked: Te.b.value(),
|
|
label: Be,
|
|
statName: "Show Open market status",
|
|
onExecute: () => Ae(e, Te.b, "Change open market status visibility")
|
|
}));
|
|
if (l.push(new xe.Action({
|
|
checkable: !0,
|
|
checked: a.showSeriesOHLC.value(),
|
|
label: Pe,
|
|
statName: "Show OHLC Values",
|
|
onExecute: () => Ae(e, a.showSeriesOHLC,
|
|
"Change OHLC Values Visibility")
|
|
})), l.push(new xe.Action({
|
|
checkable: !0,
|
|
checked: a.showBarChange.value(),
|
|
label: ze,
|
|
statName: "Show Bar Change Values",
|
|
onExecute: () => Ae(e, a.showBarChange,
|
|
"Change Bar Change Visibility")
|
|
})), l.push(new xe.Separator), void 0 !== n) {
|
|
const e = n.get(0);
|
|
void 0 !== e && e.length > 0 && (l.push(...e), l.push(new xe.Separator))
|
|
}
|
|
const r = i.get(1);
|
|
if (void 0 !== r) {
|
|
const e = r.get(1);
|
|
void 0 !== e && e.length > 0 && (l.push(...e), l.push(new xe.Separator))
|
|
}
|
|
if (l.push(new xe.Action({
|
|
checkable: !0,
|
|
checked: a.showStudyTitles.value(),
|
|
label: je,
|
|
statName: "Show Indicator Titles",
|
|
onExecute: () => Ae(e, a.showStudyTitles,
|
|
"Change Indicator Titles Visibility")
|
|
})), l.push(new xe.Action({
|
|
checkable: !0,
|
|
checked: a.showStudyArguments.value(),
|
|
label: Ne,
|
|
statName: "Show Indicator Arguments",
|
|
onExecute: () => Ae(e, a.showStudyArguments,
|
|
"Change Indicator Arguments Visibility")
|
|
})), l.push(new xe.Action({
|
|
checkable: !0,
|
|
checked: a.showStudyValues.value(),
|
|
label: Ie,
|
|
statName: "Show Indicator Values",
|
|
onExecute: () => Ae(e, a.showStudyValues,
|
|
"Change Indicator Values Visibility")
|
|
})), void 0 !== r) {
|
|
const e = r.get(0);
|
|
void 0 !== e && e.length > 0 && (l.push(...e), l.push(new xe.Separator))
|
|
}
|
|
0;
|
|
t.settings && (l.push(new xe.Separator), l.push(new xe.Action({
|
|
label: Object(Le.appendEllipsis)(window.t("Settings")),
|
|
icon: Oe,
|
|
statName: "Settings...",
|
|
onExecute: () => s(G.TabNames.legend)
|
|
})));
|
|
return We.ContextMenuManager.createMenu(l, {}, o)
|
|
}(e, t, s, i, l).then(e => (e.show(o), e))
|
|
}
|
|
const He = window.t("Show Symbol"),
|
|
Be = window.t("Show Open market status"),
|
|
Pe = window.t("Show OHLC Values"),
|
|
ze = window.t("Show Bar Change Values"),
|
|
je = window.t("Show Indicator Titles"),
|
|
Ne = window.t("Show Indicator Arguments"),
|
|
Ie = window.t("Show Indicator Values");
|
|
window.t("Wrap text"), w.CheckMobile.any();
|
|
var Re = s("+DwS"),
|
|
Fe = s("Y7w9"),
|
|
Ke = s("+6ja"),
|
|
Ue = s("kcTO"),
|
|
Ye = s("4nwx"),
|
|
Ge = s("99ZO"),
|
|
Ze = s("jCNj"),
|
|
Xe = s("GOhO"),
|
|
$e = s("5mo2");
|
|
|
|
function qe(e) {
|
|
return e === Ge.WeekDays.SUNDAY ? Ge.WeekDays.SATURDAY : e - 1
|
|
}
|
|
|
|
function Je(e) {
|
|
return e === Ge.WeekDays.SATURDAY ? Ge.WeekDays.SUNDAY : e + 1
|
|
}
|
|
|
|
function Qe(e, t) {
|
|
const s = qe(t);
|
|
return 0 === e[s].entries.length ? Qe(e, s) : {
|
|
dayIndex: s,
|
|
entries: e[s].entries
|
|
}
|
|
}
|
|
|
|
function et(e, t) {
|
|
const s = Je(t);
|
|
return 0 === e[s].entries.length ? et(e, s) : {
|
|
dayIndex: s,
|
|
entries: e[s].entries
|
|
}
|
|
}
|
|
|
|
function tt(e) {
|
|
for (; e > Ze.minutesPerDay;) e -= Ze.minutesPerDay;
|
|
const t = e % 60,
|
|
s = (e - t) / 60;
|
|
return Object(Ue.numberToStringWithLeadingZero)(s, 2) + ":" + Object(Ue
|
|
.numberToStringWithLeadingZero)(t, 2)
|
|
}
|
|
const st = {
|
|
[Ge.WeekDays.MONDAY]: {
|
|
title: Ye.weekDaysShortNames[Ge.WeekDays.MONDAY],
|
|
isActive: !1,
|
|
entries: []
|
|
},
|
|
[Ge.WeekDays.TUESDAY]: {
|
|
title: Ye.weekDaysShortNames[Ge.WeekDays.TUESDAY],
|
|
isActive: !1,
|
|
entries: []
|
|
},
|
|
[Ge.WeekDays.WEDNESDAY]: {
|
|
title: Ye.weekDaysShortNames[Ge.WeekDays.WEDNESDAY],
|
|
isActive: !1,
|
|
entries: []
|
|
},
|
|
[Ge.WeekDays.THURSDAY]: {
|
|
title: Ye.weekDaysShortNames[Ge.WeekDays.THURSDAY],
|
|
isActive: !1,
|
|
entries: []
|
|
},
|
|
[Ge.WeekDays.FRIDAY]: {
|
|
title: Ye.weekDaysShortNames[Ge.WeekDays.FRIDAY],
|
|
isActive: !1,
|
|
entries: []
|
|
},
|
|
[Ge.WeekDays.SATURDAY]: {
|
|
title: Ye.weekDaysShortNames[Ge.WeekDays.SATURDAY],
|
|
isActive: !1,
|
|
entries: []
|
|
},
|
|
[Ge.WeekDays.SUNDAY]: {
|
|
title: Ye.weekDaysShortNames[Ge.WeekDays.SUNDAY],
|
|
isActive: !1,
|
|
entries: []
|
|
}
|
|
};
|
|
|
|
function it(e, t) {
|
|
return e.start.value === t.start.value && e.end.value === t.end.value
|
|
}
|
|
|
|
function ot(e, t) {
|
|
return it(e[0], t[0])
|
|
}
|
|
|
|
function lt(e) {
|
|
const t = e.start(),
|
|
s = e.length(),
|
|
i = e.sessionStartDayOfWeek(),
|
|
o = e.sessionEndDayOfWeek(),
|
|
l = tt(t),
|
|
n = tt(t + s);
|
|
return s > Ze.minutesPerDay ?
|
|
`${Ye.weekDaysShortNames[i]} ${l} — ${Ye.weekDaysShortNames[o]} ${n}` : `${l} — ${n}`
|
|
}
|
|
|
|
function nt(e, t, s, i) {
|
|
return Math.abs(i - s) > 1 ?
|
|
`${Ye.weekDaysShortNames[s]} ${e.title} — ${Ye.weekDaysShortNames[i]} ${t.title}` :
|
|
`${e.title} — ${t.title}`
|
|
}
|
|
|
|
function at(e, t, s) {
|
|
for (const i of t) {
|
|
let t = i.sessionStartDayOfWeek();
|
|
const o = i.start(),
|
|
l = i.length(),
|
|
n = o + l,
|
|
a = [];
|
|
if (n <= Ze.minutesPerDay) a.push([o, n]);
|
|
else {
|
|
const e = Math.min(Ze.minutesPerDay - o, l);
|
|
a.push([o, o + e]), a.push([0, l - e])
|
|
}
|
|
for (let o = 0; o < a.length; o++) {
|
|
const l = a[o],
|
|
[n, r] = l,
|
|
d = n / Ze.minutesPerDay,
|
|
h = Object(Fe.lowerbound)(e[t].entries, d, (e, t) => e.start.value < t),
|
|
u = {
|
|
start: {
|
|
value: d,
|
|
title: tt(n),
|
|
isFirstOrLastPoint: n === i.start()
|
|
},
|
|
end: {
|
|
value: r / Ze.minutesPerDay,
|
|
title: tt(r),
|
|
isFirstOrLastPoint: a.length - 1 === o
|
|
},
|
|
type: s,
|
|
tooltip: lt(i),
|
|
showStartForLastEntry: !1,
|
|
showEndForFirstEntry: !1
|
|
};
|
|
e[t].entries.splice(h, 0, u), t = Je(t)
|
|
}
|
|
}
|
|
}
|
|
class rt {
|
|
constructor(e) {
|
|
this.sessionsDays = new l.a(Object(n.clone)(st)), this.todaySession = new l.a(
|
|
Object(n.clone)({
|
|
entries: []
|
|
})), this._todayInExchangeTime = null;
|
|
const t = e;
|
|
this._symbolInfo = Object(Xe.b)(t.symbolInfo.bind(t), t.dataEvents()
|
|
.symbolResolved()), this._symbolInfo.subscribe(this._updateEntriesBySubSessions
|
|
.bind(this), {
|
|
callWithLast: !0
|
|
})
|
|
}
|
|
destroy() {
|
|
this._symbolInfo.destroy()
|
|
}
|
|
currentTimeValue() {
|
|
return null === this._todayInExchangeTime ? -1 : Ze.get_minutes_from_midnight(this
|
|
._todayInExchangeTime) / Ze.minutesPerDay
|
|
}
|
|
timezone() {
|
|
const e = this._symbolInfo.value();
|
|
return null === e ? "" : Object(Ke.timezoneTitle)(e.timezone)
|
|
}
|
|
_updateEntriesBySubSessions(e) {
|
|
var t;
|
|
this._updateTodayWithOffsets(e);
|
|
const s = this._createSubSessionSpecs(e),
|
|
o = (l = (null === (t = this._todayInExchangeTime) || void 0 === t ? void 0 : t
|
|
.getUTCDay()) || (new Date).getDay()) < Ge.WeekDays.SATURDAY ? l + 1 : Ge
|
|
.WeekDays.SUNDAY;
|
|
var l;
|
|
const a = Object(n.clone)(st);
|
|
a[o].isActive = !0;
|
|
for (const e of Array.from(s.keys())) {
|
|
at(a, Object(i.ensureDefined)(s.get(e)).getEntriesForWeekByCalendar(Object(i
|
|
.ensureNotNull)(this._todayInExchangeTime)), e)
|
|
}
|
|
Object.values(a).some(e => 0 !== e.entries.length) && (function(e) {
|
|
const t = tt(0),
|
|
s = tt(Ze.minutesPerDay),
|
|
o = Object(n.clone)(e);
|
|
for (const l of Object.keys(e)) {
|
|
const n = parseInt(l),
|
|
a = e[n].entries;
|
|
if (0 === a.length) {
|
|
a.push({
|
|
start: {
|
|
value: 0,
|
|
title: t,
|
|
isFirstOrLastPoint: !0
|
|
},
|
|
end: {
|
|
value: 1,
|
|
title: s,
|
|
isFirstOrLastPoint: !0
|
|
},
|
|
type: 3,
|
|
tooltip: `${t} — ${s}`,
|
|
showStartForLastEntry: !1,
|
|
showEndForFirstEntry: !1
|
|
});
|
|
continue
|
|
}
|
|
const r = qe(n),
|
|
d = Je(n),
|
|
h = o[r].entries,
|
|
u = o[d].entries,
|
|
c = Qe(o, n),
|
|
_ = et(o, n),
|
|
p = a.length;
|
|
let m = 0;
|
|
for (let e = 0; e < p; e++) {
|
|
const s = a[e],
|
|
o = e > 0 ? a[e - 1] : null,
|
|
l = 0 === e;
|
|
if (0 === s.start.value || 0 === s.start.value && 1 === s.end
|
|
.value || null !== o && s.start.value === o.end.value) {
|
|
m++;
|
|
continue
|
|
}
|
|
const r = l ? c.entries[c.entries.length - 1] : Object(i
|
|
.ensureNotNull)(o),
|
|
d = {
|
|
start: {
|
|
value: l ? 0 : a[e - 1].end.value,
|
|
title: l ? t : a[e - 1].end.title,
|
|
isFirstOrLastPoint: !(l && h.length > 0) || 1 === h[
|
|
h.length - 1].end.value
|
|
},
|
|
end: {
|
|
value: s.start.value,
|
|
title: s.start.title,
|
|
isFirstOrLastPoint: !0
|
|
},
|
|
type: 3,
|
|
tooltip: nt(r.end, s.start, c.dayIndex, n),
|
|
showStartForLastEntry: !1,
|
|
showEndForFirstEntry: !1
|
|
};
|
|
a.splice(m, 0, d), m = e + 2
|
|
}
|
|
const b = a[a.length - 1];
|
|
1 !== b.end.value && a.push({
|
|
start: {
|
|
value: b.end.value,
|
|
title: b.end.title,
|
|
isFirstOrLastPoint: !0
|
|
},
|
|
end: {
|
|
value: 1,
|
|
title: tt(Ze.minutesPerDay),
|
|
isFirstOrLastPoint: !(u.length > 0) || 0 === u[0]
|
|
.start.value
|
|
},
|
|
type: 3,
|
|
tooltip: nt(b.end, _.entries[0].start, n, _.dayIndex),
|
|
showStartForLastEntry: !1,
|
|
showEndForFirstEntry: !1
|
|
})
|
|
}
|
|
}(a), function(e) {
|
|
for (const i of Object.keys(e)) {
|
|
const o = parseInt(i),
|
|
l = e[o].entries;
|
|
if (1 === l.length) continue;
|
|
const n = qe(o),
|
|
a = Je(o),
|
|
r = l[0],
|
|
d = l[l.length - 1];
|
|
r.start.isFirstOrLastPoint || (r.showStartForLastEntry = (t = l, s =
|
|
e[n].entries, it(t[t.length - 1], s[s.length - 1]))), d.end
|
|
.isFirstOrLastPoint || (d.showEndForFirstEntry = ot(l, e[a]
|
|
.entries))
|
|
}
|
|
var t, s
|
|
}(a)), this.sessionsDays.setValue(a), this.todaySession.setValue(a[o])
|
|
}
|
|
_createSubSessionSpecs(e) {
|
|
if (null === e) return new Map;
|
|
if (void 0 === e.subsessions) return new Map([
|
|
[0, new $e.SessionSpec(e.timezone, e.session, e.session_holidays, e
|
|
.corrections)]
|
|
]);
|
|
const t = ["regular", "premarket", "postmarket"],
|
|
s = new Map;
|
|
for (const i of t) {
|
|
let t = null;
|
|
switch (i) {
|
|
case "regular":
|
|
t = 0;
|
|
break;
|
|
case "premarket":
|
|
t = 1;
|
|
break;
|
|
case "postmarket":
|
|
t = 2
|
|
}
|
|
if (null !== t) {
|
|
const o = e.subsessions.find(e => e.id === i);
|
|
void 0 !== o && s.set(t, new $e.SessionSpec(e.timezone, o[
|
|
"session-display"] || o.session, "", o["session-correction"]))
|
|
}
|
|
}
|
|
return s
|
|
}
|
|
_updateTodayWithOffsets(e) {
|
|
if (null === e) return void(this._todayInExchangeTime = null);
|
|
const t = 1e3 * window.ChartApiInstance.serverTimeOffset();
|
|
this._todayInExchangeTime = Ze.get_cal_from_unix_timestamp_ms(Ze.get_timezone(e
|
|
.timezone), Date.now() + t)
|
|
}
|
|
}
|
|
var dt = s("q1tI"),
|
|
ht = s.n(dt),
|
|
ut = s("TSYQ"),
|
|
ct = s("YFKU"),
|
|
_t = s("vqb8"),
|
|
pt = s("e3/o"),
|
|
mt = s("tfDh");
|
|
const bt = new WeakMap;
|
|
|
|
function gt(e) {
|
|
return bt.has(e) || bt.set(e, Object(pt.randomHash)()), Object(i.ensureDefined)(bt.get(e))
|
|
}
|
|
const wt = new Map([
|
|
[0, mt.green],
|
|
[1, mt.orange],
|
|
[2, mt.blue],
|
|
[3, mt.gray]
|
|
]),
|
|
vt = new Map([
|
|
[0, Object(ct.t)("Market open")],
|
|
[1, Object(ct.t)("Pre-market")],
|
|
[2, Object(ct.t)("Post-market")],
|
|
[3, Object(ct.t)("Market closed")]
|
|
]);
|
|
|
|
function yt(e) {
|
|
const {
|
|
segment: t,
|
|
forceStart: s,
|
|
forceEnd: i
|
|
} = e, o = t.end.value - t.start.value, l = o < .03, n = {
|
|
left: 100 * t.start.value + "%",
|
|
width: `calc(${100*o}% + ${l?2:0}px)`
|
|
}, a = ut(mt.segment, wt.get(t.type), (s || t.start.isFirstOrLastPoint) && mt.start, (
|
|
i || t.end.isFirstOrLastPoint) && mt.end, l && mt.small, "common-tooltip-html",
|
|
"apply-common-tooltip"), r = function(e, t) {
|
|
return `<div class="${mt.tooltip}">\n\t\t<span class="${wt.get(t)}">${vt.get(t)}</span>\n\t\t<span class="${mt.time}">${e}</span>\n\t</div>`
|
|
}(t.tooltip, t.type);
|
|
return ht.a.createElement("div", {
|
|
className: a,
|
|
style: n,
|
|
"data-tooltip": r
|
|
})
|
|
}
|
|
|
|
function St(e) {
|
|
const {
|
|
sessionDay: t
|
|
} = e, s = t.entries.map((e, s) => ht.a.createElement(yt, {
|
|
key: gt(e) + "Segment",
|
|
segment: e,
|
|
forceStart: 0 === s && 3 === e.type,
|
|
forceEnd: s === t.entries.length - 1 && 3 === e.type
|
|
})), i = ut(mt.sessionDay, t.isActive && mt.active);
|
|
return ht.a.createElement("div", {
|
|
className: i
|
|
}, ht.a.createElement("div", {
|
|
className: mt.weekDay
|
|
}, t.title), ht.a.createElement("div", {
|
|
className: mt.sessionDaySegments
|
|
}, s))
|
|
}
|
|
|
|
function Mt(e) {
|
|
const {
|
|
sessionDays: t,
|
|
currentTimeMark: s
|
|
} = e, i = [], o = parseInt(Object.keys(t).filter(e => t[parseInt(e)].isActive)[0]), l = t[
|
|
o], n = l.entries.filter(e => e.start.value <= s && e.end.value >= s)[0];
|
|
!n.start.isFirstOrLastPoint && n.showStartForLastEntry ? i.push(l.entries[l.entries.length -
|
|
1].start) : i.push(n.start);
|
|
const a = !n.end.isFirstOrLastPoint && n.showEndForFirstEntry ? l.entries[0].end : n.end;
|
|
if (i[0].value !== a.value && i.push(a), 0 === i.length) return null;
|
|
i.sort((e, t) => e.value - t.value);
|
|
const r = i.map(e => ht.a.createElement("div", {
|
|
key: gt(e),
|
|
className: mt.timeMark
|
|
}, e.title)),
|
|
d = 100 * (2 === i.length ? i[1].value - i[0].value : 0),
|
|
h = ut(d > 12 && mt.timeMarkSegmentAlignByEnds, mt.timeMarkSegment);
|
|
return ht.a.createElement("div", {
|
|
className: mt.sessionDay
|
|
}, ht.a.createElement("div", {
|
|
className: mt.weekDay
|
|
}), ht.a.createElement("div", {
|
|
className: mt.timeMarkWrapper
|
|
}, ht.a.createElement("div", {
|
|
className: h,
|
|
style: {
|
|
left: 100 * i[0].value + "%",
|
|
width: d + "%"
|
|
}
|
|
}, r)))
|
|
}
|
|
class ft {
|
|
constructor(e) {
|
|
this._fullSessionScheduleViewModel = new rt(e)
|
|
}
|
|
destroy() {
|
|
this._fullSessionScheduleViewModel.destroy()
|
|
}
|
|
renderer(e, t) {
|
|
return function(e) {
|
|
const {
|
|
key: t,
|
|
className: s,
|
|
now: i,
|
|
timezone: o
|
|
} = e, l = Object(_t.a)({
|
|
watchedValue: e.sessionDays
|
|
}), n = Object.values(l).filter(e => e.isActive)[0], a = ut(s, mt
|
|
.wrapper);
|
|
return ht.a.createElement("div", {
|
|
key: t,
|
|
className: a
|
|
}, ht.a.createElement("div", {
|
|
className: mt.timezone
|
|
}, o), ht.a.createElement("div", {
|
|
className: mt.sessionDayWrapper
|
|
}, ht.a.createElement(St, {
|
|
sessionDay: n
|
|
}), ht.a.createElement("div", {
|
|
className: mt.nowWrapper
|
|
}, ht.a.createElement("div", {
|
|
className: mt.now,
|
|
style: {
|
|
left: 100 * i + "%"
|
|
}
|
|
}))), ht.a.createElement(Mt, {
|
|
sessionDays: l,
|
|
currentTimeMark: i
|
|
}))
|
|
}({
|
|
key: e,
|
|
className: t,
|
|
sessionDays: this._fullSessionScheduleViewModel.sessionsDays,
|
|
now: this._fullSessionScheduleViewModel.currentTimeValue(),
|
|
timezone: this._fullSessionScheduleViewModel.timezone()
|
|
})
|
|
}
|
|
updateSource(e) {}
|
|
}
|
|
var Et = s("HGP3"),
|
|
Ct = s("25b6");
|
|
|
|
function kt(e, t) {
|
|
const s = new l.a(e()),
|
|
i = {};
|
|
t.forEach(t => t.subscribe(i, () => {
|
|
s.setValue(e())
|
|
}));
|
|
return s.readonly().spawn(() => t.forEach(e => e.unsubscribeAll(i)))
|
|
}
|
|
var Vt = s("rh3U");
|
|
class xt {
|
|
constructor(e) {
|
|
this.isBlinkingMode = new l.a(!1), this._status = new l.a(null), this._fullTooltip =
|
|
new l.a(null), this._iconClassNames = new l.a(null), this._visible = new l.a(!
|
|
1), this._tooltip = new l.a(null), this._icon = new l.a(null), this._className =
|
|
new l.a(null), this._infoMaps = e, this._size = e.size || "small", this._status
|
|
.subscribe(this._updateByStatus.bind(this), {
|
|
callWithLast: !0
|
|
}), this._className.subscribe(this._updateIconClassName.bind(this))
|
|
}
|
|
turnOffBlinkingMode() {}
|
|
status() {
|
|
return this._status
|
|
}
|
|
tooltip() {
|
|
return this._tooltip
|
|
}
|
|
icon() {
|
|
return this._icon
|
|
}
|
|
className() {
|
|
return this._className
|
|
}
|
|
visible() {
|
|
return this._visible
|
|
}
|
|
size() {
|
|
return this._size
|
|
}
|
|
fullInfo() {
|
|
return this._fullTooltip
|
|
}
|
|
_getTooltip(e) {
|
|
var t, s;
|
|
return null !== (s = null === (t = this._infoMaps.tooltipMap) || void 0 === t ?
|
|
void 0 : t.get(e)) && void 0 !== s ? s : null
|
|
}
|
|
_getIcon(e) {
|
|
let t;
|
|
const s = this._infoMaps.iconMap.get(e);
|
|
return void 0 !== s && (t = s.get(this._size)), t || null
|
|
}
|
|
_getClassName(e) {
|
|
return this._infoMaps.classNameMap.get(e) || null
|
|
}
|
|
_getTitle(e) {
|
|
var t, s;
|
|
return null !== (s = null === (t = this._infoMaps.titleMap) || void 0 === t ?
|
|
void 0 : t.get(e)) && void 0 !== s ? s : null
|
|
}
|
|
_getTitleColor(e) {
|
|
var t, s;
|
|
return null !== (s = null === (t = this._infoMaps.titleColorMap) || void 0 === t ?
|
|
void 0 : t.get(e)) && void 0 !== s ? s : null
|
|
}
|
|
async _getHtml(e) {
|
|
var t, s, i;
|
|
return null !== (i = null === (s = null === (t = this._infoMaps.htmlMap) ||
|
|
void 0 === t ? void 0 : t.get(e)) || void 0 === s ? void 0 : s.map(Ct
|
|
.b)) && void 0 !== i ? i : null
|
|
}
|
|
_getAction(e) {
|
|
var t, s;
|
|
return null !== (s = null === (t = this._infoMaps.actionMap) || void 0 === t ?
|
|
void 0 : t.get(e)) && void 0 !== s ? s : null
|
|
}
|
|
async _updateFullTooltipByStatus(e) {
|
|
const t = await this._getHtml(e);
|
|
this._status.value() === e && this._fullTooltip.setValue([{
|
|
icon: this._icon.value(),
|
|
iconClassName: this._iconClassNames.value(),
|
|
title: this._getTitle(e),
|
|
titleColor: this._getTitleColor(e),
|
|
html: t,
|
|
size: this._size,
|
|
action: this._getAction(e)
|
|
}])
|
|
}
|
|
_updateByStatus(e) {
|
|
if (null === e) return this._icon.setValue(null), this._tooltip.setValue(null),
|
|
void this._visible.setValue(!1);
|
|
this._icon.setValue(this._getIcon(e)), this._className.setValue(this._getClassName(
|
|
e)), this._tooltip.setValue(this._getTooltip(e)), this._visible.setValue(!
|
|
0), this._updateFullTooltipByStatus(e)
|
|
}
|
|
_updateIconClassName(e) {
|
|
null !== e ? this._iconClassNames.setValue([Vt.statusItem, e]) : this
|
|
._iconClassNames.setValue(null)
|
|
}
|
|
}
|
|
var Wt = s("Vdly");
|
|
const Tt = [];
|
|
|
|
function Lt() {
|
|
return Wt.getJSON("tv.alreadyBlinkedStatuses", Tt)
|
|
}
|
|
const Ot = new l.a(Lt());
|
|
|
|
function At(e) {
|
|
const t = Wt.getJSON("tv.alreadyBlinkedStatuses", Tt);
|
|
t.includes(e) || (t.push(e), Wt.setJSON("tv.alreadyBlinkedStatuses", t), Ot.setValue(Lt()))
|
|
}
|
|
Wt.onSync.subscribe(null, () => Ot.setValue(Lt()));
|
|
const Dt = Ot;
|
|
var Ht = s("Cf1E"),
|
|
Bt = s("VrrN"),
|
|
Pt = s("VrXG"),
|
|
zt = s("LIcf"),
|
|
jt = s("Uua9"),
|
|
Nt = s("9Crk"),
|
|
It = s("Tq3g");
|
|
const Rt = Object(ce.getLogger)("Chart.LegendWidget"),
|
|
Ft = ["TFEXDelayForGuest", "MOEXDelayForGuest", "CHIXAuDelayForGuest", "NGMDelayForGuest",
|
|
"DEForGuest", "ICESGDelayForGuest"
|
|
],
|
|
Kt = new Map([
|
|
["DelayToRealtime", new Map([
|
|
["small", Bt],
|
|
["large", Pt]
|
|
])],
|
|
["DelayNoRealtime", new Map([
|
|
["small", Bt],
|
|
["large", Pt]
|
|
])],
|
|
["TFEXDelayForGuest", new Map([
|
|
["small", Bt],
|
|
["large", Pt]
|
|
])],
|
|
["MOEXDelayForGuest", new Map([
|
|
["small", Bt],
|
|
["large", Pt]
|
|
])],
|
|
["CHIXAuDelayForGuest", new Map([
|
|
["small", Bt],
|
|
["large", Pt]
|
|
])],
|
|
["NGMDelayForGuest", new Map([
|
|
["small", Bt],
|
|
["large", Pt]
|
|
])],
|
|
["ICESGDelayForGuest", new Map([
|
|
["small", Bt],
|
|
["large", Pt]
|
|
])],
|
|
["DEForGuest", new Map([
|
|
["small", Bt],
|
|
["large", Pt]
|
|
])],
|
|
["EOD", new Map([
|
|
["small", zt],
|
|
["large", jt]
|
|
])],
|
|
["TickByTick", new Map([
|
|
["small", Nt],
|
|
["large", It]
|
|
])],
|
|
["BATSToRealtime", new Map([
|
|
["small", Nt],
|
|
["large", It]
|
|
])],
|
|
["DelayWithoutMarketAgreement", new Map([
|
|
["small", Bt],
|
|
["large", Pt]
|
|
])]
|
|
]),
|
|
Ut = new Map([
|
|
["DelayToRealtime", Vt.delay],
|
|
["DelayNoRealtime", Vt.delay],
|
|
["TFEXDelayForGuest", Vt.delay],
|
|
["MOEXDelayForGuest", Vt.delay],
|
|
["CHIXAuDelayForGuest", Vt.delay],
|
|
["NGMDelayForGuest", Vt.delay],
|
|
["ICESGDelayForGuest", Vt.delay],
|
|
["DEForGuest", Vt.delay],
|
|
["EOD", Vt.eod],
|
|
["TickByTick", Vt.notAccurate],
|
|
["BATSToRealtime", Vt.notAccurate],
|
|
["DelayWithoutMarketAgreement", Vt.delay]
|
|
]),
|
|
Yt = new Map([
|
|
["DelayToRealtime", Et.colorsPalette["color-delay-mode"]],
|
|
["DelayNoRealtime", Et.colorsPalette["color-delay-mode"]],
|
|
["TFEXDelayForGuest", Et.colorsPalette["color-delay-mode"]],
|
|
["MOEXDelayForGuest", Et.colorsPalette["color-delay-mode"]],
|
|
["CHIXAuDelayForGuest", Et.colorsPalette["color-delay-mode"]],
|
|
["NGMDelayForGuest", Et.colorsPalette["color-delay-mode"]],
|
|
["ICESGDelayForGuest", Et.colorsPalette["color-delay-mode"]],
|
|
["DEForGuest", Et.colorsPalette["color-delay-mode"]],
|
|
["EOD", Et.colorsPalette["color-eod-mode"]],
|
|
["TickByTick", Et.colorsPalette["color-notaccurate-mode"]],
|
|
["BATSToRealtime", Et.colorsPalette["color-notaccurate-mode"]],
|
|
["DelayWithoutMarketAgreement", Et.colorsPalette["color-delay-mode"]]
|
|
]),
|
|
Gt = window.t("Data is delayed"),
|
|
Zt = window.t("End of day data"),
|
|
Xt = window.t("One update per second"),
|
|
$t = window.t("Cboe BZX"),
|
|
qt = window.t("{exchange} by {originalExchange}"),
|
|
Jt = Object(Ct.b)(window.t("{symbolName} data is delayed by {time} minutes.")),
|
|
Qt = Object(Ct.b)(window.t(
|
|
"{listedExchange} real-time data is available for free to registered users.")),
|
|
es = Object(Ct.b)(window.t(
|
|
"To get real-time data for {description}, please buy the real-time data package.")),
|
|
ts = Object(Ct.b)(window.t(
|
|
"Real-time data for {description} is not supported right now. We may support it in the future."
|
|
)),
|
|
ss = Object(Ct.b)(window.t("Data is updated once a day.")),
|
|
is = Object(Ct.b)(window.t(
|
|
"Data on our Basic plan is updated once per second, even if there are more updates on the market."
|
|
)),
|
|
os = Object(Ct.b)(window.t(
|
|
"Data is updated once per second, even if there are more updates on the market.")),
|
|
ls = Object(Ct.b)(window.t("Paid plans feature faster data updates.")),
|
|
ns = Object(Ct.b)(window.t(
|
|
"Real-time data for {symbolName} is provided by {exchange} exchange.")),
|
|
as = Object(Ct.b)(window.t(
|
|
"This data is real-time, but it’s slightly different to its official counterpart coming from primary exchanges."
|
|
)),
|
|
rs = Object(Ct.b)(window.t(
|
|
"This data is real-time, but it’s slightly different to its official counterpart coming from {exchange}."
|
|
)),
|
|
ds = Object(Ct.b)(window.t(
|
|
"If you'd like {listedExchange} real-time data you'll need to complete an Exchange Agreement. Don't worry, it only takes a few clicks"
|
|
));
|
|
window.t("Create a free account"), window.t("Learn more"), Object(Ct.b)(window.t(
|
|
"Fill out Exchange Agreements"));
|
|
class hs extends xt {
|
|
constructor(e, t, s) {
|
|
super({
|
|
iconMap: Kt,
|
|
classNameMap: Ut,
|
|
titleColorMap: Yt,
|
|
size: t
|
|
}), this._dataUpdatedMode = new l.a(null).spawn(), this._options = s, this
|
|
._model = e, this._dataModeBlinkingStatuses = Dt.spawn(), this
|
|
._dataModeBlinkingStatuses.subscribe(this._updateBlinkingMode.bind(this)), this
|
|
.turnOffBlinkingMode = this._turnOffBlinking.bind(this), this.setModel(e)
|
|
}
|
|
destroy() {
|
|
this._dataUpdatedMode.destroy(), this._dataModeBlinkingStatuses.destroy()
|
|
}
|
|
setModel(e) {
|
|
if (this._dataUpdatedMode.destroy(), null === e) return this._model = e, void(this
|
|
._dataUpdatedMode = new l.a(null).spawn());
|
|
this._dataUpdatedMode = e.status().spawn(), this._dataUpdatedMode.subscribe(this
|
|
._updateStatus.bind(this), {
|
|
callWithLast: !0
|
|
})
|
|
}
|
|
_getTooltip() {
|
|
const e = this._getShortTexts();
|
|
return null === e ? null : Object.values(e).join(" · ")
|
|
}
|
|
async _updateFullTooltipByStatus() {
|
|
const e = this._dataUpdatedMode.value();
|
|
if (null === e) return void this._fullTooltip.setValue(null);
|
|
const t = this._getShortTexts(),
|
|
s = await this._getHtmls(),
|
|
i = await this._getActions();
|
|
if (e !== this._dataUpdatedMode.value()) return;
|
|
const o = [];
|
|
for (const l of e) o.push({
|
|
icon: this._getIcon(l),
|
|
iconClassName: this._iconClassNames.value(),
|
|
title: t && t[l],
|
|
titleColor: this._getTitleColor(l),
|
|
html: s && s[l],
|
|
size: this._size,
|
|
action: i && i[l]
|
|
});
|
|
this._fullTooltip.setValue(o)
|
|
}
|
|
_updateStatus(e) {
|
|
const t = null !== e ? e[0] : null;
|
|
super._updateByStatus(t), this._updateBlinkingMode()
|
|
}
|
|
async _getHtmls() {
|
|
const e = this._dataUpdatedMode.value();
|
|
if (null === e || null === this._model) return Promise.resolve(null);
|
|
const t = {},
|
|
s = this._model.symbolName();
|
|
let i = null,
|
|
o = null;
|
|
try {
|
|
i = await this._model.description(), o = this._model.exchange()
|
|
} catch (e) {
|
|
Rt.logError("Can't get exchange description, reason: " + Object(Ht.a)(e))
|
|
}
|
|
for (const l of e)
|
|
if (t[l] = [], ["DelayToRealtime", "DelayNoRealtime",
|
|
"DelayWithoutMarketAgreement", ...Ft
|
|
].includes(l) && (t[l].push(Jt.format({
|
|
symbolName: s,
|
|
time: this._model.time().toString()
|
|
})), this._options.subscriptionFullInfo && null !== i &&
|
|
"DelayToRealtime" === l && t[l].push(es.format({
|
|
description: `<b>${i}</b>`
|
|
})), null !== i && "DelayNoRealtime" === l && t[l].push(ts.format({
|
|
description: `<b>${i}</b>`
|
|
})), "DelayWithoutMarketAgreement" === l && t[l].push(ds.format({
|
|
listedExchange: this._model.listedExchange()
|
|
})), this._options.subscriptionFullInfo && Ft.includes(l) && t[l].push(
|
|
Qt.format({
|
|
listedExchange: this._model.listedExchange()
|
|
}))), "EOD" === l && (t[l] = [ss]), "TickByTick" === l && (t[l]
|
|
.push(this._options.subscriptionFullInfo ? is : os), this._options
|
|
.subscriptionFullInfo && t[l].push(ls)), null !== o &&
|
|
"BATSToRealtime" === l) {
|
|
let e = this._model.listedExchange();
|
|
0, t[l].push(ns.format({
|
|
symbolName: s,
|
|
exchange: o
|
|
}), "" !== e ? rs.format({
|
|
exchange: e
|
|
}) : as)
|
|
} return Object.keys(t).length > 0 ? t : null
|
|
}
|
|
async _getActions() {
|
|
if (null === this._dataUpdatedMode.value() || null === this._model) return null;
|
|
const e = {};
|
|
return Object.keys(e).length > 0 ? e : null
|
|
}
|
|
_getShortTexts() {
|
|
var e;
|
|
const t = this._dataUpdatedMode.value();
|
|
if (null === t || null === this._model) return null;
|
|
const s = {};
|
|
for (const i of t)
|
|
if (["DelayToRealtime", "DelayNoRealtime", ...Ft, "DelayWithoutMarketAgreement"]
|
|
.includes(i) && (s[i] = Gt), "EOD" === i && (s[i] = Zt), "TickByTick" ===
|
|
i && (s[i] = Xt), "BATSToRealtime" === i) {
|
|
let t = null !== (e = this._model.firstReplacedByBatsExchange()) &&
|
|
void 0 !== e ? e : "";
|
|
0, s[i] = "" !== t ? qt.format({
|
|
exchange: t,
|
|
originalExchange: $t
|
|
}) : $t
|
|
} return Object.keys(s).length > 0 ? s : null
|
|
}
|
|
_updateBlinkingMode() {
|
|
const e = this._dataUpdatedMode.value();
|
|
if (null === e) return;
|
|
const t = this._dataModeBlinkingStatuses.value();
|
|
for (const s of e)
|
|
if (!t.includes(s)) return void this.isBlinkingMode.setValue(!0);
|
|
this.isBlinkingMode.setValue(!1)
|
|
}
|
|
_turnOffBlinking() {
|
|
const e = this._dataUpdatedMode.value();
|
|
if (null !== e)
|
|
for (const t of e) At(t)
|
|
}
|
|
}
|
|
var us = s("JmzL"),
|
|
cs = s("M3mX");
|
|
const _s = window.t("Study Error"),
|
|
ps = new Map([
|
|
[!0, new Map([
|
|
["small", us],
|
|
["large", cs]
|
|
])],
|
|
[!1, new Map([
|
|
["small", ""],
|
|
["large", ""]
|
|
])]
|
|
]),
|
|
ms = new Map([
|
|
[!0, Vt.dataProblemLow],
|
|
[!1, null]
|
|
]),
|
|
bs = new Map([
|
|
[!0, _s],
|
|
[!1, null]
|
|
]),
|
|
gs = new Map([
|
|
[!0, _s],
|
|
[!1, null]
|
|
]),
|
|
ws = new Map([
|
|
[!0, Et.colorsPalette["color-data-problem"]],
|
|
[!1, null]
|
|
]);
|
|
class vs extends xt {
|
|
constructor(e, t, s, i) {
|
|
super({
|
|
iconMap: ps,
|
|
classNameMap: ms,
|
|
tooltipMap: bs,
|
|
titleMap: gs,
|
|
titleColorMap: ws,
|
|
size: s
|
|
}), this._dataSourceErrorStatus = new l.a(null).spawn(), this._lastError = null,
|
|
this._options = i, this.setSource(e, t)
|
|
}
|
|
destroy() {
|
|
this._dataSourceErrorStatus.destroy()
|
|
}
|
|
setSource(e, t) {
|
|
this._dataSourceErrorStatus.destroy(), this._dataSourceErrorStatus = kt(() => e
|
|
.statusProvider({}).errorStatus(), t), this._dataSourceErrorStatus
|
|
.subscribe(this._updateStatus.bind(this), {
|
|
callWithLast: !0
|
|
})
|
|
}
|
|
_getTooltip(e) {
|
|
const t = this._dataSourceErrorStatus.value();
|
|
if (e && null !== t) {
|
|
const e = t.title;
|
|
if (void 0 !== e) return e
|
|
}
|
|
return super._getTooltip(e)
|
|
}
|
|
_getTitle(e) {
|
|
const t = this._dataSourceErrorStatus.value();
|
|
if (e && null !== t) {
|
|
const e = t.title;
|
|
if (void 0 !== e) return e
|
|
}
|
|
return super._getTitle(e)
|
|
}
|
|
async _getHtml(e) {
|
|
const t = this._dataSourceErrorStatus.value();
|
|
return null !== t ? [Object(Ct.b)(t.error)] : null
|
|
}
|
|
_getAction(e) {
|
|
this._dataSourceErrorStatus.value();
|
|
return null
|
|
}
|
|
_updateStatus(e) {
|
|
const t = this._status.value();
|
|
null !== e ? (this._status.setValue(!0), t && this._lastError !== e.error && this
|
|
._updateByStatus(!0), this._lastError = e.error) : (this._status.setValue(
|
|
null), this._lastError = null)
|
|
}
|
|
}
|
|
const ys = window.t("Data error"),
|
|
Ss = new Map([
|
|
["high", new Map([
|
|
["small", us],
|
|
["large", cs]
|
|
])],
|
|
["low", new Map([
|
|
["small", us],
|
|
["large", cs]
|
|
])]
|
|
]),
|
|
Ms = new Map([
|
|
["high", Vt.dataProblemHigh],
|
|
["low", Vt.dataProblemLow]
|
|
]),
|
|
fs = new Map([
|
|
["high", ys],
|
|
["low", ys]
|
|
]),
|
|
Es = new Map([
|
|
["high", Et.colorsPalette["color-data-problem"]],
|
|
["low", Et.colorsPalette["color-data-problem"]]
|
|
]);
|
|
class Cs extends xt {
|
|
constructor(e, t) {
|
|
super({
|
|
tooltipMap: fs,
|
|
iconMap: Ss,
|
|
classNameMap: Ms,
|
|
titleMap: fs,
|
|
titleColorMap: Es,
|
|
size: t
|
|
}), this._dataProblem = new l.a(null).spawn(), this._isDataProblemCritical =
|
|
new l.a(!1), this.setModel(e)
|
|
}
|
|
destroy() {
|
|
this._dataProblem.destroy()
|
|
}
|
|
isDataProblemCritical() {
|
|
return this._isDataProblemCritical
|
|
}
|
|
setModel(e) {
|
|
this._dataProblem.destroy(), null !== e ? (this._dataProblem = e.status().spawn(),
|
|
this._dataProblem.subscribe(this._updateStatus.bind(this), {
|
|
callWithLast: !0
|
|
})) : this._dataProblem = new l.a(null).spawn()
|
|
}
|
|
async _getHtml(e) {
|
|
const t = this._dataProblem.value();
|
|
return null === t ? null : [Object(Ct.b)(t.text)]
|
|
}
|
|
_updateStatus(e) {
|
|
var t;
|
|
const s = null !== (t = null == e ? void 0 : e.severity) && void 0 !== t ? t : null;
|
|
this._status.setValue(s), this._isDataProblemCritical.setValue(function(e) {
|
|
return "high" === e
|
|
}(s))
|
|
}
|
|
}
|
|
class ks extends xt {
|
|
constructor(e, t) {
|
|
super(t), this._booleanStatus = new l.a(!1).spawn(), this.updateStatus(e)
|
|
}
|
|
destroy() {
|
|
this._booleanStatus.destroy()
|
|
}
|
|
updateStatus(e) {
|
|
this._booleanStatus.destroy(), this._booleanStatus = e.spawn(), this._booleanStatus
|
|
.subscribe(this._updateStatus.bind(this), {
|
|
callWithLast: !0
|
|
})
|
|
}
|
|
_updateStatus(e) {
|
|
e ? this._status.setValue(!0) : this._status.setValue(null)
|
|
}
|
|
}
|
|
var Vs = s("YGQl"),
|
|
xs = s("Jjb7");
|
|
const Ws = window.t("Invalid Symbol"),
|
|
Ts = window.t("This symbol doesn't exist, please pick another one."),
|
|
Ls = new Map([
|
|
[!0, new Map([
|
|
["small", Vs],
|
|
["large", xs]
|
|
])],
|
|
[!1, new Map([
|
|
["small", ""],
|
|
["large", ""]
|
|
])]
|
|
]),
|
|
Os = new Map([
|
|
[!0, Vt.invalidSymbol],
|
|
[!1, null]
|
|
]),
|
|
As = new Map([
|
|
[!0, Ws],
|
|
[!1, null]
|
|
]),
|
|
Ds = new Map([
|
|
[!0, Ws],
|
|
[!1, null]
|
|
]),
|
|
Hs = new Map([
|
|
[!0, Et.colorsPalette["color-invalid-symbol"]],
|
|
[!1, null]
|
|
]),
|
|
Bs = new Map([
|
|
[!0, [Ts]],
|
|
[!1, null]
|
|
]),
|
|
Ps = new Map([
|
|
[!0, null],
|
|
[!1, null]
|
|
]);
|
|
class zs {
|
|
constructor(e) {
|
|
this._el = document.createElement("div"), this._prevCustomClass = null, this._icon =
|
|
e.icon.spawn(), this._icon.subscribe(this._updateIcon.bind(this), {
|
|
callWithLast: !0
|
|
}), this._className = e.className.spawn(), this._className.subscribe(this
|
|
._updateClassName.bind(this), {
|
|
callWithLast: !0
|
|
}), this._visible = e.visible.spawn(), this._visible.subscribe(this
|
|
._updateVisibility.bind(this), {
|
|
callWithLast: !0
|
|
}), this._size = e.size || "small", this._render(e.parentEl), e
|
|
.isBlinking && (this._isBlinking = e.isBlinking.spawn(), this._isBlinking
|
|
.subscribe(this._updateBlinkingMode.bind(this), {
|
|
callWithLast: !0
|
|
}), this._turnOffBlinking = e.turnOffBlinking)
|
|
}
|
|
destroy() {
|
|
this._visible.destroy(), this._icon.destroy(), this._isBlinking && this._isBlinking
|
|
.destroy(), this._el.remove()
|
|
}
|
|
onClick() {
|
|
this._turnOffBlinking && this._turnOffBlinking()
|
|
}
|
|
visible() {
|
|
return this._visible
|
|
}
|
|
_render(e) {
|
|
this._el.classList.add(Vt.statusItem, Vt[this._size]), e.appendChild(this._el)
|
|
}
|
|
_updateVisibility(e) {
|
|
this._el.classList.toggle("js-hidden", !e)
|
|
}
|
|
_updateIcon(e) {
|
|
this._el.innerHTML = e || ""
|
|
}
|
|
_updateClassName(e) {
|
|
this._prevCustomClass !== e && (null !== this._prevCustomClass && this._el.classList
|
|
.remove(this._prevCustomClass), null !== e && this._el.classList.add(e),
|
|
this._prevCustomClass = e)
|
|
}
|
|
_updateBlinkingMode(e) {
|
|
this._el.classList.toggle(Vt.blinking, e)
|
|
}
|
|
}
|
|
class js {
|
|
constructor(e, t, s, i) {
|
|
this.element = document.createElement("div"), this._blinkingSpawns = [], this
|
|
._iconsRenderers = [];
|
|
const o = [Vt.statuses, "apply-common-tooltip", "common-tooltip-wide"];
|
|
h.a && o.push(Vt.touchMode), this.element.classList.add(...o, Vt[e]), this
|
|
._visibleWidgetsCount = t.spawn(), this._visibleWidgetsCount.subscribe(this
|
|
._updateSpecialClassAndTooltip.bind(this)), this._tooltips = s.spawn(), this
|
|
._tooltips.subscribe(this._updateTooltip.bind(this)), this._onClickCallback = i
|
|
.onClick, this._onClickHandler = this._onClick.bind(this), this.element
|
|
.addEventListener("click", this._onClickHandler)
|
|
}
|
|
destroy() {
|
|
for (const e of this._iconsRenderers) e.destroy();
|
|
for (const e of this._blinkingSpawns) e.destroy();
|
|
this._visibleWidgetsCount.destroy(), this._tooltips.destroy(), this.element
|
|
.removeEventListener("click", this._onClickHandler), this.element.remove()
|
|
}
|
|
addStatusModel(e) {
|
|
this._iconsRenderers.push(new zs({
|
|
visible: e.visible,
|
|
icon: e.model.icon(),
|
|
className: e.model.className(),
|
|
size: e.model.size(),
|
|
parentEl: this.element,
|
|
isBlinking: e.model.isBlinkingMode,
|
|
turnOffBlinking: e.model.turnOffBlinkingMode
|
|
}));
|
|
const t = e.model.isBlinkingMode.spawn();
|
|
t.subscribe(this._updateBlinkingMode.bind(this)), this._blinkingSpawns.push(t), this
|
|
._updateBlinkingMode()
|
|
}
|
|
_onClick(e) {
|
|
e.preventDefault();
|
|
const t = this._iconsRenderers.filter(e => e.visible().value());
|
|
for (const e of t) e.onClick();
|
|
let s = 14;
|
|
t.length > 1 && (s -= 2);
|
|
const i = this.element.getBoundingClientRect(),
|
|
o = {
|
|
x: i.left - s,
|
|
y: i.bottom + 4
|
|
};
|
|
this._onClickCallback(o)
|
|
}
|
|
_updateTooltip() {
|
|
this.element.setAttribute("title", this._tooltips.value().join(" · "))
|
|
}
|
|
_updateSpecialClassAndTooltip() {
|
|
const e = this._visibleWidgetsCount.value();
|
|
this.element.classList.toggle(Vt.oneWidgetsVisible, 1 === e), this.element.classList
|
|
.toggle(Vt.twoWidgetsVisible, 2 === e), this.element.classList.toggle(Vt
|
|
.threeWidgetsVisible, 3 === e), this._updateTooltip()
|
|
}
|
|
_updateBlinkingMode() {
|
|
const e = this._blinkingSpawns.some(e => e.value());
|
|
this.element.classList.toggle(Vt.blinking, e)
|
|
}
|
|
}
|
|
var Ns = s("9lPX"),
|
|
Is = s("MyT/"),
|
|
Rs = s("jXu8"),
|
|
Fs = s("cbig"),
|
|
Ks = s("G2LI"),
|
|
Us = s("QkND"),
|
|
Ys = s("Gp/h"),
|
|
Gs = s("S48P");
|
|
const Zs = window.t("Market open"),
|
|
Xs = window.t("Pre-market"),
|
|
$s = window.t("Post-market"),
|
|
qs = window.t("Market closed"),
|
|
Js = window.t("Holiday"),
|
|
Qs = window.t("All's well — Market is open."),
|
|
ei = window.t("Morning. Market is open for pre-market trading."),
|
|
ti = window.t("Evening. Market is open for post-market trading."),
|
|
si = window.t("Time for a walk — this market is closed."),
|
|
ii = window.t("Market is currently on holiday. Lucky them."),
|
|
oi = new Map([
|
|
["market", new Map([
|
|
["small", Is],
|
|
["large", Rs]
|
|
])],
|
|
["pre_market", new Map([
|
|
["small", Ys],
|
|
["large", Gs]
|
|
])],
|
|
["post_market", new Map([
|
|
["small", Ks],
|
|
["large", Us]
|
|
])],
|
|
["out_of_session", new Map([
|
|
["small", Ns],
|
|
["large", Ns]
|
|
])],
|
|
["holiday", new Map([
|
|
["small", Fs],
|
|
["large", Fs]
|
|
])]
|
|
]),
|
|
li = new Map([
|
|
["market", Vt.marketStatusOpen],
|
|
["pre_market", Vt.marketStatusPre],
|
|
["post_market", Vt.marketStatusPost],
|
|
["out_of_session", Vt.marketStatusClose],
|
|
["holiday", Vt.marketStatusHoliday]
|
|
]),
|
|
ni = new Map([
|
|
["market", Zs],
|
|
["pre_market", Xs],
|
|
["post_market", $s],
|
|
["out_of_session", qs],
|
|
["holiday", Js]
|
|
]),
|
|
ai = new Map([
|
|
["market", Zs],
|
|
["pre_market", Xs],
|
|
["post_market", $s],
|
|
["out_of_session", qs],
|
|
["holiday", Js]
|
|
]),
|
|
ri = new Map([
|
|
["market", Et.colorsPalette["color-market-open"]],
|
|
["pre_market", Et.colorsPalette["color-pre-market"]],
|
|
["post_market", Et.colorsPalette["color-post-market"]],
|
|
["out_of_session", Et.colorsPalette["color-market-closed"]],
|
|
["holiday", Et.colorsPalette["color-market-holiday"]]
|
|
]),
|
|
di = new Map([
|
|
["market", [Qs]],
|
|
["pre_market", [ei]],
|
|
["post_market", [ti]],
|
|
["out_of_session", [si]],
|
|
["holiday", [ii]]
|
|
]),
|
|
hi = new Map([
|
|
["market", null],
|
|
["pre_market", null],
|
|
["post_market", null],
|
|
["out_of_session", null],
|
|
["holiday", null]
|
|
]),
|
|
ui = window.t("You can turn this data on or off.");
|
|
class ci extends xt {
|
|
constructor(e, t, s) {
|
|
super({
|
|
tooltipMap: ni,
|
|
iconMap: oi,
|
|
classNameMap: li,
|
|
titleMap: ai,
|
|
titleColorMap: ri,
|
|
htmlMap: di,
|
|
actionMap: hi,
|
|
size: t
|
|
}), this._marketStatus = new l.a(null).spawn(), this._options = s, this
|
|
.setModel(e)
|
|
}
|
|
destroy() {
|
|
this._marketStatus.destroy()
|
|
}
|
|
setModel(e) {
|
|
this._marketStatus.destroy(), null !== e ? (this._marketStatus = e.status().spawn(),
|
|
this._marketStatus.subscribe(this._updateStatus.bind(this), {
|
|
callWithLast: !0
|
|
})) : this._marketStatus = new l.a(null).spawn()
|
|
}
|
|
async _getHtml(e) {
|
|
const t = await super._getHtml(e);
|
|
return null !== t && (this._options.preMarketSolution || this._options
|
|
.postMarketSolution) && ("pre_market" === e && this._options
|
|
.preMarketSolution && t.push(ui), "post_market" === e && this._options
|
|
.postMarketSolution && t.push(ui)), t
|
|
}
|
|
_getAction(e) {
|
|
return super._getAction(e)
|
|
}
|
|
_updateStatus(e) {
|
|
this._status.setValue(e)
|
|
}
|
|
}
|
|
class _i {
|
|
constructor(e, t, s) {
|
|
this.visibleWidgetsCount = new l.a(0), this.errorWidgetIsShown = new l.a(!1), this
|
|
._size = h.a ? "large" : "small", this._tooltips = new l.a([]), this
|
|
._visibilitySpawns = [], this._tooltipSpawns = [], this._statusWidgetInfos = [],
|
|
this._renderer = new js(this._size, this.visibleWidgetsCount, this._tooltips, {
|
|
onClick: this._handleToggleDropdown.bind(this)
|
|
}), this._symbolInvalidViewModel = null, this._dataSourceErrorStatusViewModel =
|
|
null, this._marketStatusViewModel = null, this._dataUpdatedModeViewModel = null,
|
|
this._dataProblemViewModel = null, this._sessionWidget = null, this
|
|
._isSymbolInvalid = null, this._dataSourceHasErrorVisible = null, this
|
|
._dataSourceErrorCanBeShown = new l.a(!1), this._marketStatusCanBeShown = new l
|
|
.a(!1), this._dataUpdatedModeCanBeShown = new l.a(!1), this
|
|
._dataProblemCanBeShown = new l.a(!1), this._isDataProblemCritical = null, this
|
|
._container = document.createElement("div"), this._menuOpened = !1, this
|
|
._menuPosition = null, this._source = e, this._model = t, this._options = s,
|
|
this._recreateWidgets(), this._addSubscriptionForSymbolInvalid(), null !== this
|
|
._dataSourceHasErrorVisible && (this._dataSourceHasErrorVisible.subscribe(this
|
|
._updateStatusWidgetsVisibilities.bind(this)), this
|
|
._dataSourceHasErrorVisible.subscribe(this._updateErrorWidgetIsShown.bind(
|
|
this))), this._options.dataProblemEnabled && null !== this
|
|
._isDataProblemCritical && this._isDataProblemCritical.subscribe(this
|
|
._updateStatusWidgetsVisibilities.bind(this));
|
|
for (const e of this._tooltipSpawns) e.subscribe(this._updateTooltips.bind(this));
|
|
for (const e of this._visibilitySpawns) e.subscribe(this._updateVisibleWidgetsCount
|
|
.bind(this)), e.subscribe(this._updateTooltips.bind(this));
|
|
this._updateErrorWidgetIsShown(), this._updateStatusWidgetsVisibilities(), this
|
|
._updateVisibleWidgetsCount(), this._updateTooltips()
|
|
}
|
|
destroy() {
|
|
var e;
|
|
this._source.properties().hasChild("symbol") && this._source.properties().symbol
|
|
.listeners().unsubscribeAll(this), this._options.sourceStatusesEnabled &&
|
|
null !== this._isSymbolInvalid && this._isSymbolInvalid.destroy(), null === (e =
|
|
this._isDataProblemCritical) || void 0 === e || e.destroy();
|
|
for (const e of this._tooltipSpawns) e.destroy();
|
|
for (const e of this._visibilitySpawns) e.destroy();
|
|
this.visibleWidgetsCount.unsubscribe();
|
|
for (const e of this._statusWidgetInfos) e.model.destroy();
|
|
this._renderer.destroy()
|
|
}
|
|
getElement() {
|
|
return this._renderer.element
|
|
}
|
|
updateSource(e) {
|
|
this._source !== e && (this._source.properties().hasChild("symbol") && this._source
|
|
.properties().symbol.listeners().unsubscribeAll(this), this._source = e,
|
|
this._recreateWidgets(), this._updateStatusWidgetsVisibilities(), this
|
|
._updateErrorWidgetIsShown(), this._updateVisibleWidgetsCount(), this
|
|
._updateTooltips())
|
|
}
|
|
_updateStatusWidgetsVisibilities() {
|
|
const e = this._isForceStatusActive();
|
|
this._dataSourceErrorCanBeShown.setValue(!e), this._marketStatusCanBeShown.setValue(
|
|
!e), this._dataUpdatedModeCanBeShown.setValue(!e), this
|
|
._dataProblemCanBeShown.setValue(!this._isPrimaryWidgetShown())
|
|
}
|
|
_isPrimaryWidgetShown() {
|
|
var e, t;
|
|
return null !== (t = null === (e = this._isSymbolInvalid) || void 0 === e ? void 0 :
|
|
e.value()) && void 0 !== t && t
|
|
}
|
|
_isForceStatusActive() {
|
|
var e, t;
|
|
return this._isPrimaryWidgetShown() || null !== (t = null === (e = this
|
|
._isDataProblemCritical) || void 0 === e ? void 0 : e.value()) && void 0 !==
|
|
t && t
|
|
}
|
|
_updateVisibleWidgetsCount() {
|
|
const e = this._statusWidgetInfos.filter(e => e.visible.value());
|
|
this.visibleWidgetsCount.setValue(e.length)
|
|
}
|
|
_updateTooltips() {
|
|
const e = [];
|
|
for (let t = 0; t < this._tooltipSpawns.length; t++) {
|
|
if (!this._visibilitySpawns[t].value()) continue;
|
|
const s = this._tooltipSpawns[t].value();
|
|
null !== s && s.length > 0 && e.push(s)
|
|
}
|
|
this._tooltips.setValue(e)
|
|
}
|
|
_recreateWidgets() {
|
|
var e, t;
|
|
if (this._options.sourceStatusesEnabled) {
|
|
if (Object(de.isStudy)(this._source) || Object(de.isStudyStub)(this._source) ||
|
|
this._source === this._model.mainSeries()) {
|
|
null === (e = this._isSymbolInvalid) || void 0 === e || e.destroy();
|
|
const t = this._source;
|
|
if (Object(de.isStudy)(t) || Object(de.isStudyStub)(t) ? this
|
|
._isSymbolInvalid = kt(() => t.isSymbolInvalid() && t
|
|
.isActualInterval(), [t.onStatusChanged(), t.onIsActualIntervalChange()]
|
|
) : this._isSymbolInvalid = Object(Re.a)(() => t.isSymbolInvalid(),
|
|
t.onStatusChanged()), null === this._symbolInvalidViewModel) {
|
|
this._symbolInvalidViewModel = new ks(this._isSymbolInvalid, {
|
|
tooltipMap: As,
|
|
iconMap: Ls,
|
|
classNameMap: Os,
|
|
titleMap: Ds,
|
|
titleColorMap: Hs,
|
|
htmlMap: Bs,
|
|
actionMap: Ps,
|
|
size: this._size
|
|
});
|
|
const e = this._symbolInvalidViewModel.visible().spawn();
|
|
this._visibilitySpawns.push(e), this._tooltipSpawns.push(this
|
|
._symbolInvalidViewModel.tooltip().spawn());
|
|
const t = {
|
|
visible: e,
|
|
model: this._symbolInvalidViewModel
|
|
};
|
|
this._statusWidgetInfos.push(t), this._renderer.addStatusModel(t)
|
|
} else this._symbolInvalidViewModel.updateStatus(this._isSymbolInvalid),
|
|
this._addSubscriptionForSymbolInvalid()
|
|
}
|
|
if (Object(de.isStudy)(this._source) || Object(de.isStudyStub)(this._source) ||
|
|
this._source === this._model.mainSeries()) {
|
|
const e = this._source;
|
|
let t = [];
|
|
if (t = Object(de.isStudy)(e) || Object(de.isStudyStub)(e) ? [e
|
|
.onStatusChanged(), e.onIsActualIntervalChange()
|
|
] : [e.onStatusChanged()], null === this
|
|
._dataSourceErrorStatusViewModel) {
|
|
this._dataSourceErrorStatusViewModel = new vs(e, t, this._size, this
|
|
._options.sourceStatuses), this._dataSourceHasErrorVisible =
|
|
Object(Z.a)(() => this._dataSourceErrorCanBeShown.value() && Object(
|
|
i.ensureNotNull)(this._dataSourceErrorStatusViewModel)
|
|
.visible().value(), this._dataSourceErrorCanBeShown, this
|
|
._dataSourceErrorStatusViewModel.visible()),
|
|
this._visibilitySpawns.push(this._dataSourceHasErrorVisible), this
|
|
._tooltipSpawns.push(this._dataSourceErrorStatusViewModel.tooltip()
|
|
.spawn());
|
|
const s = {
|
|
visible: this._dataSourceHasErrorVisible,
|
|
model: this._dataSourceErrorStatusViewModel
|
|
};
|
|
this._statusWidgetInfos.push(s), this._renderer.addStatusModel(s)
|
|
} else this._dataSourceErrorStatusViewModel.setSource(e, t)
|
|
}
|
|
}
|
|
if (this._options.marketStatusEnabled) {
|
|
const e = this._source.marketStatusModel();
|
|
if (null === this._marketStatusViewModel) {
|
|
this._marketStatusViewModel = new ci(e, this._size, this._options
|
|
.marketStatus);
|
|
const t = Object(Z.a)(() => this._marketStatusCanBeShown.value() && Object(i
|
|
.ensureNotNull)(this._marketStatusViewModel).visible().value(),
|
|
this._marketStatusCanBeShown, this._marketStatusViewModel.visible());
|
|
this._visibilitySpawns.push(t), this._tooltipSpawns.push(this
|
|
._marketStatusViewModel.tooltip().spawn());
|
|
const s = {
|
|
visible: t,
|
|
model: this._marketStatusViewModel
|
|
};
|
|
null !== e && (this._sessionWidget = new ft(this._source), s
|
|
.additionalWidgets = [this._sessionWidget]), this._statusWidgetInfos
|
|
.push(s), this._renderer.addStatusModel(s)
|
|
} else this._marketStatusViewModel.setModel(e), null === (t = this
|
|
._sessionWidget) || void 0 === t || t.updateSource(this._source)
|
|
}
|
|
if (this._options.dataUpdateModeEnabled) {
|
|
const e = this._source.dataUpdatedModeModel();
|
|
if (null === this._dataUpdatedModeViewModel) {
|
|
this._dataUpdatedModeViewModel = new hs(e, this._size, this._options
|
|
.dataUpdateMode);
|
|
const t = Object(Z.a)(() => this._dataUpdatedModeCanBeShown.value() &&
|
|
Object(i.ensureNotNull)(this._dataUpdatedModeViewModel).visible()
|
|
.value(), this._dataUpdatedModeCanBeShown, this
|
|
._dataUpdatedModeViewModel.visible());
|
|
this._visibilitySpawns.push(t), this._tooltipSpawns.push(this
|
|
._dataUpdatedModeViewModel.tooltip().spawn());
|
|
const s = {
|
|
visible: t,
|
|
model: this._dataUpdatedModeViewModel
|
|
};
|
|
this._statusWidgetInfos.push(s), this._renderer.addStatusModel(s)
|
|
} else this._dataUpdatedModeViewModel.setModel(e)
|
|
}
|
|
if (this._options.dataProblemEnabled) {
|
|
const e = this._source.dataProblemModel();
|
|
if (null === this._dataProblemViewModel) {
|
|
this._dataProblemViewModel = new Cs(e, this._size), this
|
|
._isDataProblemCritical = this._dataProblemViewModel
|
|
.isDataProblemCritical().spawn();
|
|
const t = Object(Z.a)(() => this._dataProblemCanBeShown.value() && Object(i
|
|
.ensureNotNull)(this._dataProblemViewModel).visible().value(),
|
|
this._dataProblemCanBeShown, this._dataProblemViewModel.visible());
|
|
this._visibilitySpawns.push(t), this._tooltipSpawns.push(this
|
|
._dataProblemViewModel.tooltip().spawn());
|
|
const s = {
|
|
visible: t,
|
|
model: this._dataProblemViewModel
|
|
};
|
|
this._statusWidgetInfos.push(s), this._renderer.addStatusModel(s)
|
|
} else this._dataProblemViewModel.setModel(e)
|
|
}
|
|
}
|
|
_addSubscriptionForSymbolInvalid() {
|
|
this._options.sourceStatusesEnabled && null !== this._isSymbolInvalid && (this
|
|
._isSymbolInvalid.subscribe(this._updateStatusWidgetsVisibilities.bind(
|
|
this)), this._isSymbolInvalid.subscribe(this._updateErrorWidgetIsShown
|
|
.bind(this), {
|
|
callWithLast: !0
|
|
}))
|
|
}
|
|
_updateErrorWidgetIsShown() {
|
|
var e, t, s, i;
|
|
const o = null !== (t = null === (e = this._isSymbolInvalid) || void 0 === e ?
|
|
void 0 : e.value()) && void 0 !== t && t,
|
|
l = null !== (i = null === (s = this._dataSourceHasErrorVisible) || void 0 ===
|
|
s ? void 0 : s.value()) && void 0 !== i && i;
|
|
this.errorWidgetIsShown.setValue(o || l)
|
|
}
|
|
_handleToggleDropdown(e) {
|
|
var t;
|
|
this._menuPosition = e, this._menuOpened = !this._menuOpened, this._menuOpened && (
|
|
this._source.properties().hasChild("symbol") && this._source.properties()
|
|
.symbol.listeners().subscribe(this, this._handleDropdownMenuClose), t =
|
|
"Open full tooltip for statuses: " + this._tooltips.value().join(", "),
|
|
Object(V.trackEvent)("GUI", "Statuses widget's action", t)), this
|
|
._updateDropdownMenu()
|
|
}
|
|
_handleDropdownMenuClose() {
|
|
this._menuOpened = !1, this._source.properties().hasChild("symbol") && this._source
|
|
.properties().symbol.listeners().unsubscribeAll(this), this
|
|
._updateDropdownMenu()
|
|
}
|
|
_updateDropdownMenu() {
|
|
Promise.all([s.e("react"), s.e(6), s.e(11), s.e(92), s.e(0), s.e(5), s.e(
|
|
"full-tooltips-popup")]).then(s.bind(null, "vR7+")).then(e => {
|
|
e.render(this._menuOpened, this._container, this._renderer.element, this
|
|
._statusWidgetInfos, this._handleDropdownMenuClose.bind(this),
|
|
Object(i.ensureNotNull)(this._menuPosition))
|
|
})
|
|
}
|
|
}
|
|
var pi = s("AH3n");
|
|
const mi = window.t("Replay mode"),
|
|
bi = window.t("You're in Replay mode. You're in Replay mode. You're in Replay mode.");
|
|
new Map([
|
|
[!0, new Map([
|
|
["small", pi],
|
|
["large", pi]
|
|
])],
|
|
[!1, new Map([
|
|
["small", ""],
|
|
["large", ""]
|
|
])]
|
|
]), new Map([
|
|
[!0, Vt.replayMode],
|
|
[!1, null]
|
|
]), new Map([
|
|
[!0, mi],
|
|
[!1, null]
|
|
]), new Map([
|
|
[!0, mi],
|
|
[!1, null]
|
|
]), new Map([
|
|
[!0, Et.colorsPalette["color-replay-mode"]],
|
|
[!1, null]
|
|
]), new Map([
|
|
[!0, [bi]],
|
|
[!1, null]
|
|
]), new Map([
|
|
[!0, null],
|
|
[!1, null]
|
|
]);
|
|
class gi extends _i {
|
|
constructor(e, t, s) {
|
|
super(e, t, s), this._isInReplay = new l.a(!1).readonly().spawn(), this
|
|
._isInReplayCanBeShown = null, this._inited = !1
|
|
}
|
|
destroy() {
|
|
super.destroy()
|
|
}
|
|
_updateStatusWidgetsVisibilities() {
|
|
super._updateStatusWidgetsVisibilities()
|
|
}
|
|
_isPrimaryWidgetShown() {
|
|
var e, t;
|
|
return super._isPrimaryWidgetShown() || null !== (t = null === (e = this
|
|
._isInReplay) || void 0 === e ? void 0 : e.value()) && void 0 !== t && t
|
|
}
|
|
}
|
|
var wi = s("EsvI"),
|
|
vi = s("UXvI");
|
|
s.d(t, "LegendWidget", (function() {
|
|
return Ei
|
|
}));
|
|
const yi = {
|
|
readOnlyMode: !1,
|
|
contextMenu: {
|
|
settings: !0,
|
|
mainSeries: !0,
|
|
studies: !0,
|
|
showOpenMarketStatus: !1
|
|
},
|
|
symbolMarkerEnabled: !1,
|
|
showToggleButton: !0,
|
|
canShowSourceCode: !1,
|
|
statusesWidgets: {
|
|
sourceStatusesEnabled: !1,
|
|
sourceStatuses: {
|
|
errorSolution: !0
|
|
},
|
|
marketStatusEnabled: !1,
|
|
marketStatus: {
|
|
preMarketSolution: !0,
|
|
postMarketSolution: !0
|
|
},
|
|
dataUpdateModeEnabled: !1,
|
|
dataUpdateMode: {
|
|
subscriptionFullInfo: !0
|
|
},
|
|
dataProblemEnabled: !1
|
|
}
|
|
},
|
|
Si = (d.enabled("hide_legend_by_default"), d.enabled("fundamental_widget")),
|
|
Mi = d.enabled("legend_context_menu"),
|
|
fi = 2 * parseInt(y.marginlegendhoriz);
|
|
class Ei {
|
|
constructor(e, t, s, i, o, a, r) {
|
|
this._mainSeriesViewModel = null, this._dataSourceViewModels = [], this
|
|
._visibleDataSourceCount = new l.a(0), this._themedColor = new l.a(""), this
|
|
._mainSeriesRowHidden = null, this._dataSourceRowsHidden = [], this
|
|
._customWidgetsVisibilities = [], this._allLegendHidden = new l.a(!1), this
|
|
._studiesLegendHidden = new l.a(!1), this._customWidgetsHeights = [], this
|
|
._onLegendVisibilityToggled = null, this._availableHeight = 0,
|
|
this._collapsedDataSourcesCount = new l.a(0), this._collapsedDataSourcesTitle =
|
|
new l.a(""), this._mainSeriesStatusWidget = null, this
|
|
._dataSourcesStatusesWidgets = [], this._size = null, this
|
|
._customLegendWidgetsFactoriesMap = new Map, this._customLegendWidgetsMap =
|
|
new Map, this._margin = 0, this._model = e, this._paneWidget = t, this
|
|
._options = Object(n.merge)(Object(n.clone)(yi), a), this._callbacks = r, this
|
|
._mainSeriesViewModelsOptions = {
|
|
readOnlyMode: this._options.readOnlyMode,
|
|
symbolMarkerEnabled: this._options.symbolMarkerEnabled
|
|
}, this._dataSourceViewModelsOptions = {
|
|
...this._mainSeriesViewModelsOptions,
|
|
canShowSourceCode: this._options.canShowSourceCode
|
|
}, this._backgroundThemeName = s;
|
|
const d = this._showLegendCalculatedProperty();
|
|
this._isDataSourcesCollapsed = new l.a(d.value()), d.subscribe(this, () => {
|
|
this._isDataSourcesCollapsed.setValue(d.value())
|
|
});
|
|
const h = new l.a(this._getCustomTextColorValue());
|
|
this._model.model().properties().scalesProperties.textColor.subscribe(this, () => {
|
|
h.setValue(this._getCustomTextColorValue())
|
|
});
|
|
const u = this._model.model().properties().paneProperties.legendProperties
|
|
.showBackground,
|
|
c = new l.a(u.value());
|
|
u.subscribe(this, () => {
|
|
c.setValue(u.value())
|
|
});
|
|
const _ = this._model.model().properties().paneProperties.legendProperties
|
|
.backgroundTransparency,
|
|
p = new l.a(_.value());
|
|
_.subscribe(this, () => {
|
|
p.setValue(_.value())
|
|
}), this._wrapText = new l.a(!1), this._hideNotMainSources = i.spawn(), this
|
|
._hideNotMainSources.subscribe(this._updateLegendVisibilities.bind(this)), this
|
|
._hideWholeLegend = o.spawn(), this._hideWholeLegend.subscribe(this
|
|
._updateLegendVisibilities.bind(this)), this._isPaneMain = new l.a(this
|
|
._getIsPaneMainValue()), this._updateCollapsedSourcesModeThrottle = Object(
|
|
vi.default)(this._updateCollapsedSourcesMode.bind(this), 100), this
|
|
._renderer = new R({
|
|
withActions: !this._options.readOnlyMode,
|
|
showToggleButton: this._options.showToggleButton,
|
|
isStudiesLegendHidden: this._studiesLegendHidden.readonly(),
|
|
isAllLegendHidden: this._allLegendHidden.readonly(),
|
|
customTextColor: h.readonly(),
|
|
themedColor: this._themedColor.readonly(),
|
|
showBackground: c.readonly(),
|
|
backgroundTransparency: p.readonly(),
|
|
wrapText: this._wrapText.readonly(),
|
|
collapsedDataSourcesCount: this._collapsedDataSourcesCount.readonly(),
|
|
collapsedDataSourcesTitle: this._collapsedDataSourcesTitle.readonly(),
|
|
showLegendWidgetContextMenu: this.onShowLegendWidgetContextMenu.bind(
|
|
this)
|
|
}, {
|
|
visibleDataSourceCount: this._visibleDataSourceCount.readonly(),
|
|
isDataSourcesCollapsed: this._isDataSourcesCollapsed.readonly(),
|
|
showObjectsTree: this._isPaneMain.readonly(),
|
|
onCollapseDataSources: this.onCollapseDataSources.bind(this),
|
|
onShowObjectsTreeDialog: this._callbacks.showObjectsTreeDialog
|
|
})
|
|
}
|
|
destroy() {
|
|
this._hideNotMainSources.destroy(), this._hideWholeLegend.destroy(), null !== this
|
|
._mainSeriesViewModel && this._destroyMainDataSource();
|
|
for (const e of this._dataSourceViewModels) e.destroy();
|
|
for (const e of this._dataSourcesStatusesWidgets) e.destroy();
|
|
this._clearSubscriptions();
|
|
for (const e of Array.from(this._customLegendWidgetsMap.keys())) this
|
|
._destroyCustomWidgetFromLayerBlock(e);
|
|
this._customLegendWidgetsMap.clear(), this._renderer.destroy(),
|
|
delete this._renderer, this._showLegendCalculatedProperty().unsubscribeAll(
|
|
this), this._showLegendOriginalProperty().unsubscribeAll(this), this._model
|
|
.model().properties().scalesProperties.textColor.unsubscribeAll(this), this
|
|
._model.model().properties().paneProperties.legendProperties.showBackground
|
|
.unsubscribeAll(this), this._model.model().properties().paneProperties
|
|
.legendProperties.backgroundTransparency.unsubscribeAll(this)
|
|
}
|
|
addCustomWidgetToLegend(e, t) {
|
|
const s = this._customLegendWidgetsFactoriesMap.get(t.block) || new Map,
|
|
i = s.get(t.position) || [];
|
|
i.push(e), s.set(t.position, i), this._customLegendWidgetsFactoriesMap.set(t.block,
|
|
s), this.updateLayout(), this._updateCustomWidgetModeBySize()
|
|
}
|
|
onShowLegendWidgetContextMenu(e, t) {
|
|
if (this._options.readOnlyMode || !Mi) return Promise.resolve(null);
|
|
x("Show legend context menu");
|
|
const s = new Map;
|
|
for (const e of Array.from(this._customLegendWidgetsMap.keys())) {
|
|
const t = Object(i.ensureDefined)(this._customLegendWidgetsMap.get(e)),
|
|
o = new Map;
|
|
for (const e of Array.from(t.keys())) {
|
|
const s = Object(i.ensureDefined)(t.get(e)),
|
|
l = o.get(e) || [];
|
|
for (const e of s) l.push(...e.contextMenuActions());
|
|
o.set(e, l)
|
|
}
|
|
s.set(e, o)
|
|
}
|
|
return De(this._model, this._options.contextMenu, this._callbacks
|
|
.showGeneralChartProperties, s, e, t)
|
|
}
|
|
onCollapseDataSources() {
|
|
const e = this._showLegendOriginalProperty();
|
|
e.setValue(!e.value())
|
|
}
|
|
updateLayout() {
|
|
const e = this._paneWidget.state().sourcesByGroup().all().filter(e => null !== e
|
|
.statusView());
|
|
if (0 === e.length) return;
|
|
const t = this._model.mainSeries(),
|
|
s = e.indexOf(t);
|
|
s > -1 ? (e.splice(s, 1), Si || null !== this._mainSeriesViewModel || (this
|
|
._mainSeriesViewModel = new re(this._model, t, this
|
|
._mainSeriesViewModelsOptions, this._callbacks, this._options
|
|
.contextMenu), this._mainSeriesStatusWidget = new gi(t, this._model
|
|
.model(), this._options.statusesWidgets), this._renderer
|
|
.addMainDataSource(this._mainSeriesViewModel, this
|
|
._mainSeriesStatusWidget)), this._addCustomWidgetForLayerBlock(0)) :
|
|
null !== this._mainSeriesViewModel && (this._destroyMainDataSource(), this
|
|
._destroyCustomWidgetFromLayerBlock(0));
|
|
const o = [],
|
|
l = [],
|
|
n = this._dataSourceViewModels.length;
|
|
if (0 === n)
|
|
for (let t = e.length - 1; t >= 0; t--) o.push(new Ve(this._model, e[t], this
|
|
._dataSourceViewModelsOptions, this._callbacks, this._options
|
|
.contextMenu)), l.push(new _i(e[t], this._model.model(), this._options
|
|
.statusesWidgets));
|
|
else {
|
|
let t = 0;
|
|
for (let s = e.length - 1; s >= 0; s--) this._dataSourceViewModels[t] ? (this
|
|
._dataSourceViewModels[t].updateSource(e[s]), this
|
|
._dataSourcesStatusesWidgets[t].updateSource(e[s])) : (o.push(new Ve(
|
|
this._model, e[s], this._dataSourceViewModelsOptions, this
|
|
._callbacks, this._options.contextMenu)), l.push(new _i(e[s], this
|
|
._model.model(), this._options.statusesWidgets))), t++;
|
|
for (; this._dataSourceViewModels.length > t;) Object(i.ensureDefined)(this
|
|
._dataSourceViewModels.pop()).destroy();
|
|
for (; this._dataSourcesStatusesWidgets.length > t;) Object(i.ensureDefined)(
|
|
this._dataSourcesStatusesWidgets.pop()).destroy()
|
|
}
|
|
0 !== o.length && (this._renderer.addDataSources(o, l), this._dataSourceViewModels
|
|
.push(...o), this._dataSourcesStatusesWidgets.push(...l)),
|
|
n !== this._dataSourceViewModels.length && this._updateCollapsedSourcesMode(),
|
|
this._dataSourceViewModels.length > 0 ? this._addCustomWidgetForLayerBlock(1) :
|
|
this._destroyCustomWidgetFromLayerBlock(1), this._recreateSubscriptions(), this
|
|
._isPaneMain.setValue(this._getIsPaneMainValue()), this.update(), this
|
|
._updateWidgetModeByWidth()
|
|
}
|
|
update() {
|
|
null !== this._mainSeriesViewModel && this._mainSeriesViewModel.update();
|
|
for (const e of this._dataSourceViewModels) e.update()
|
|
}
|
|
updateThemedColors(e) {
|
|
null === e && (e = Object(wi.getStdThemedValue)(
|
|
"chartProperties.paneProperties.background", this._backgroundThemeName
|
|
.value())), this._themedColor.setValue(e || "")
|
|
}
|
|
firstTitle() {
|
|
return this._renderer.firstTitle()
|
|
}
|
|
getElement() {
|
|
return this._renderer.getElement()
|
|
}
|
|
addMargin(e) {
|
|
if (this._margin === e) return;
|
|
this._margin = e;
|
|
this._renderer.getElement().style.maxWidth = 0 === this._margin ? "" :
|
|
`calc(100% - ${this._margin+fi}px)`, this._updateWidgetModeBySize()
|
|
}
|
|
updateWidgetModeBySize(e) {
|
|
this._size = e, this._updateWidgetModeBySize()
|
|
}
|
|
_updateWidgetModeBySize() {
|
|
this._updateWidgetModeByWidth(), this._updateWidgetModeByHeight(), this
|
|
._updateCustomWidgetModeBySize()
|
|
}
|
|
_updateWidgetModeByWidth() {
|
|
null !== this._size && this._renderer.updateMode(this._availableWidth())
|
|
}
|
|
_updateWidgetModeByHeight() {
|
|
null !== this._size && (this._availableHeight = .8 * this._size.h, this
|
|
._updateCollapsedSourcesModeThrottle())
|
|
}
|
|
_updateCustomWidgetModeBySize() {
|
|
if (null === this._size) return;
|
|
const e = new a.Size(this._availableWidth(), this._size.h);
|
|
for (const t of Array.from(this._customLegendWidgetsMap.values()))
|
|
for (const s of Array.from(t.values()))
|
|
for (const t of s) t.updateWidgetModeBySize(e)
|
|
}
|
|
_destroyMainDataSource() {
|
|
Object(i.ensureNotNull)(this._mainSeriesStatusWidget).destroy(), this
|
|
._mainSeriesStatusWidget = null, Object(i.ensureNotNull)(this
|
|
._mainSeriesViewModel).destroy(), this._mainSeriesViewModel = null
|
|
}
|
|
_updateCollapsedSourcesMode() {
|
|
const e = this._dataSourceViewModels.length;
|
|
if (!this._wrapText.value() && this._availableHeight > 0 && e > 2) {
|
|
const t = this._renderer.getMainSourceHeight(),
|
|
s = this._renderer.getDataSourceHeight(),
|
|
i = this._getCustomWidgetsHeight();
|
|
if (null !== t && null !== s) {
|
|
const o = Math.floor((this._availableHeight - t - i) / s),
|
|
l = Math.max(o, 2) - 1;
|
|
if (e > l + 1) {
|
|
let t = "";
|
|
for (let s = 0; s < e; s++) {
|
|
const e = s < l;
|
|
this._dataSourceViewModels[s].setGlobalVisibility(e), e || (t +=
|
|
`${0===t.length?"":", "}${this._dataSourceViewModels[s].getFullTitle()}`
|
|
)
|
|
}
|
|
return this._collapsedDataSourcesTitle.setValue(t), void this
|
|
._collapsedDataSourcesCount.setValue(e - l)
|
|
}
|
|
}
|
|
}
|
|
for (const e of this._dataSourceViewModels) e.setGlobalVisibility(!0);
|
|
this._collapsedDataSourcesCount.setValue(0), this._collapsedDataSourcesTitle
|
|
.setValue("")
|
|
}
|
|
_getCustomWidgetsHeight() {
|
|
let e = 0;
|
|
for (const t of Array.from(this._customLegendWidgetsMap.values()))
|
|
for (const s of Array.from(t.values()))
|
|
for (const t of s) e += t.height().value();
|
|
return e
|
|
}
|
|
_getCustomTextColorValue() {
|
|
const e = this._model.model().properties().scalesProperties.textColor.value();
|
|
return Object(wi.isStdThemedDefaultValue)(
|
|
"chartProperties.scalesProperties.textColor", e, Object(wi.getCurrentTheme)
|
|
().name) ? null : e
|
|
}
|
|
_clearSubscriptions() {
|
|
null !== this._mainSeriesRowHidden && (this._mainSeriesRowHidden.destroy(), this
|
|
._mainSeriesRowHidden = null);
|
|
for (const e of this._dataSourceRowsHidden) e.destroy();
|
|
this._dataSourceRowsHidden = [];
|
|
for (const e of this._customWidgetsVisibilities) e.destroy();
|
|
this._customWidgetsVisibilities = [];
|
|
for (const e of this._customWidgetsHeights) e.destroy();
|
|
this._customWidgetsHeights = []
|
|
}
|
|
_recreateSubscriptions() {
|
|
this._clearSubscriptions(), null !== this._mainSeriesViewModel && (this
|
|
._mainSeriesRowHidden = this._mainSeriesViewModel.isRowHidden().spawn(),
|
|
this._mainSeriesRowHidden.subscribe(this._updateLegendVisibilities.bind(
|
|
this)));
|
|
for (const e of this._dataSourceViewModels) {
|
|
const t = e.isRowHidden().spawn();
|
|
this._dataSourceRowsHidden.push(t), t.subscribe(this
|
|
._updateVisibleDataSourceCount.bind(this)), t.subscribe(this
|
|
._updateLegendVisibilities.bind(this))
|
|
}
|
|
for (const e of Array.from(this._customLegendWidgetsMap.values()))
|
|
for (const t of Array.from(e.values()))
|
|
for (const e of t) {
|
|
const t = e.visibility().spawn();
|
|
this._customWidgetsVisibilities.push(t), t.subscribe(this
|
|
._updateLegendVisibilities.bind(this));
|
|
const s = e.height().spawn();
|
|
this._customWidgetsHeights.push(s), s.subscribe(this
|
|
._updateCollapsedSourcesMode.bind(this))
|
|
}
|
|
this._updateVisibleDataSourceCount(), this._updateLegendVisibilities()
|
|
}
|
|
_updateLegendVisibilities() {
|
|
if (this._hideWholeLegend.value()) return void this._allLegendHidden.setValue(!0);
|
|
const e = this._dataSourceRowsHidden.every(e => e.value()),
|
|
t = this._hideNotMainSources.value() || e;
|
|
this._studiesLegendHidden.setValue(t);
|
|
const s = null === this._mainSeriesRowHidden || this._mainSeriesRowHidden.value(),
|
|
i = this._customWidgetsVisibilities.some(e => e.value());
|
|
this._allLegendHidden.setValue(e && s && !i)
|
|
}
|
|
_updateVisibleDataSourceCount() {
|
|
const e = this._dataSourceRowsHidden.filter(e => !e.value()).length;
|
|
this._visibleDataSourceCount.setValue(e)
|
|
}
|
|
_setLegendVisibilityToggled() {
|
|
0
|
|
}
|
|
_getIsPaneMainValue() {
|
|
return this._paneWidget.containsMainSeries()
|
|
}
|
|
_showLegendCalculatedProperty() {
|
|
return this._model.model().showLegend()
|
|
}
|
|
_showLegendOriginalProperty() {
|
|
return this._model.model().properties().paneProperties.legendProperties.showLegend
|
|
}
|
|
_addCustomWidgetForLayerBlock(e) {
|
|
const t = this._customLegendWidgetsFactoriesMap.get(e);
|
|
if (void 0 === t) return;
|
|
const s = this._customLegendWidgetsMap.get(e) || new Map;
|
|
let i = !1;
|
|
for (const o of Array.from(t.keys())) {
|
|
const l = s.get(o) || [],
|
|
n = t.get(o) || [];
|
|
for (let t = l.length; t < n.length; t++) {
|
|
const s = n[t](this._model.model(), this._backgroundThemeName);
|
|
0 === e && 0 === o && s.setGlobalVisibility(this._hideNotMainSources
|
|
.opposite()), l.push(s), this._renderer.addCustomWidget(s, {
|
|
block: e,
|
|
position: o
|
|
}), i = !0
|
|
}
|
|
i && s.set(o, l)
|
|
}
|
|
i && this._customLegendWidgetsMap.set(e, s)
|
|
}
|
|
_destroyCustomWidgetFromLayerBlock(e) {
|
|
const t = this._customLegendWidgetsMap.get(e);
|
|
if (void 0 !== t) {
|
|
for (const e of Array.from(t.values()))
|
|
for (const t of e) t.destroy();
|
|
t.clear(), this._customLegendWidgetsMap.delete(e)
|
|
}
|
|
}
|
|
_availableWidth() {
|
|
return null === this._size ? 0 : this._size.w - this._margin - fi
|
|
}
|
|
}
|
|
},
|
|
tfDh: function(e, t, s) {
|
|
e.exports = {
|
|
wrapper: "wrapper-2-RXze0M",
|
|
timezone: "timezone-2-RXze0M",
|
|
sessionDayWrapper: "sessionDayWrapper-2-RXze0M",
|
|
nowWrapper: "nowWrapper-2-RXze0M",
|
|
now: "now-2-RXze0M",
|
|
sessionDay: "sessionDay-2-RXze0M",
|
|
weekDay: "weekDay-2-RXze0M",
|
|
sessionDaySegments: "sessionDaySegments-2-RXze0M",
|
|
timeMarkWrapper: "timeMarkWrapper-2-RXze0M",
|
|
timeMarkSegment: "timeMarkSegment-2-RXze0M",
|
|
timeMark: "timeMark-2-RXze0M",
|
|
timeMarkSegmentAlignByEnds: "timeMarkSegmentAlignByEnds-2-RXze0M",
|
|
segment: "segment-2-RXze0M",
|
|
small: "small-2-RXze0M",
|
|
start: "start-2-RXze0M",
|
|
end: "end-2-RXze0M",
|
|
active: "active-2-RXze0M",
|
|
green: "green-2-RXze0M",
|
|
orange: "orange-2-RXze0M",
|
|
blue: "blue-2-RXze0M",
|
|
gray: "gray-2-RXze0M",
|
|
tooltip: "tooltip-2-RXze0M",
|
|
time: "time-2-RXze0M"
|
|
}
|
|
},
|
|
vWJB: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 4" width="16" height="4" fill="none"><circle stroke="currentColor" cx="2" cy="2" r="1.5"/><circle stroke="currentColor" cx="8" cy="2" r="1.5"/><circle stroke="currentColor" cx="14" cy="2" r="1.5"/></svg>'
|
|
},
|
|
vYP1: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M8.54.84a.8.8 0 0 1 .92 0l7.5 5.25a.8.8 0 0 1 0 1.32l-7.5 5.25a.8.8 0 0 1-.92 0L1.04 7.4a.8.8 0 0 1 0-1.32L8.54.84zM2.9 6.75L9 11.02l6.1-4.27L9 2.48 2.9 6.75z"/><path fill="currentColor" d="M.84 10.8a.8.8 0 0 1 1.12-.2L9 15.51l7.04-4.93a.8.8 0 0 1 .92 1.32l-7.5 5.25a.8.8 0 0 1-.92 0l-7.5-5.25a.8.8 0 0 1-.2-1.12z"/></svg>'
|
|
},
|
|
vg09: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" width="14" height="14"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M7 2v10M2 7h10"/></svg>'
|
|
},
|
|
vqb8: function(e, t, s) {
|
|
"use strict";
|
|
s.d(t, "a", (function() {
|
|
return o
|
|
}));
|
|
var i = s("q1tI");
|
|
const o = e => {
|
|
const t = "watchedValue" in e ? e.watchedValue : void 0,
|
|
s = "defaultValue" in e ? e.defaultValue : e.watchedValue.value(),
|
|
[o, l] = Object(i.useState)(t ? t.value() : s);
|
|
return Object(i.useEffect)(() => {
|
|
if (t) {
|
|
l(t.value());
|
|
const e = e => l(e);
|
|
return t.subscribe(e), () => t.unsubscribe(e)
|
|
}
|
|
return () => {}
|
|
}, [t]), o
|
|
}
|
|
},
|
|
wZiV: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 2 30 24" width="30" height="24" fill="none"><circle stroke="currentColor" stroke-width="1.15" cx="8.08" cy="14" r="1.73"/><circle stroke="currentColor" stroke-width="1.15" cx="15" cy="14" r="1.73"/><circle stroke="currentColor" stroke-width="1.15" cx="21.92" cy="14" r="1.73"/></svg>'
|
|
},
|
|
z4c1: function(e, t) {
|
|
e.exports =
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 22" width="24" height="22" fill="none"><g class="normal-eye"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M17.9948 7.91366C16.6965 6.48549 14.6975 5 11.9999 5C9.30225 5 7.30322 6.48549 6.00488 7.91366C6.00488 7.91366 4 10 4 11C4 12 6.00488 14.0863 6.00488 14.0863C7.30322 15.5145 9.30225 17 11.9999 17C14.6975 17 16.6965 15.5145 17.9948 14.0863C17.9948 14.0863 20 12 20 11C20 10 17.9948 7.91366 17.9948 7.91366ZM6.74482 13.4137C7.94648 14.7355 9.69746 16 11.9999 16C14.3022 16 16.0532 14.7355 17.2549 13.4137C17.2549 13.4137 19 11.5 19 11C19 10.5 17.2549 8.58634 17.2549 8.58634C16.0532 7.26451 14.3022 6 11.9999 6C9.69746 6 7.94648 7.26451 6.74482 8.58634C6.74482 8.58634 5 10.5 5 11C5 11.5 6.74482 13.4137 6.74482 13.4137Z"/><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M12 13C13.1046 13 14 12.1046 14 11C14 9.89543 13.1046 9 12 9C10.8954 9 10 9.89543 10 11C10 12.1046 10.8954 13 12 13ZM12 14C13.6569 14 15 12.6569 15 11C15 9.34315 13.6569 8 12 8C10.3431 8 9 9.34315 9 11C9 12.6569 10.3431 14 12 14Z"/></g><g class="crossed-eye"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M8.8503 16.2712C9.76531 16.7135 10.8152 17 11.9999 17C14.6975 17 16.6965 15.5145 17.9948 14.0863C17.9948 14.0863 20 12 20 11C20 10 17.9948 7.91366 17.9948 7.91366C17.8729 7.77954 17.7448 7.64491 17.6105 7.51105L16.9035 8.2181C17.0254 8.33968 17.1425 8.46276 17.2549 8.58634C17.2549 8.58634 19 10.5 19 11C19 11.5 17.2549 13.4137 17.2549 13.4137C16.0532 14.7355 14.3022 16 11.9999 16C11.1218 16 10.324 15.8161 9.60627 15.5153L8.8503 16.2712ZM7.09663 13.7823C6.97455 13.6606 6.85728 13.5374 6.74482 13.4137C6.74482 13.4137 5 11.5 5 11C5 10.5 6.74482 8.58634 6.74482 8.58634C7.94648 7.26451 9.69746 6 11.9999 6C12.8781 6 13.6761 6.18398 14.394 6.48495L15.1499 5.729C14.2348 5.28657 13.1847 5 11.9999 5C9.30225 5 7.30322 6.48549 6.00488 7.91366C6.00488 7.91366 4 10 4 11C4 12 6.00488 14.0863 6.00488 14.0863C6.12693 14.2206 6.25516 14.3553 6.38959 14.4893L7.09663 13.7823Z"/><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M11.2231 13.8984C11.4709 13.9647 11.7313 14 12 14C13.6569 14 15 12.6569 15 11C15 10.7313 14.9647 10.4709 14.8984 10.2231L13.9961 11.1254C13.934 12.1301 13.1301 12.934 12.1254 12.9961L11.2231 13.8984ZM11.8751 9.00384C10.87 9.06578 10.0658 9.87001 10.0038 10.8751L9.10166 11.7772C9.03535 11.5294 9 11.2688 9 11C9 9.34315 10.3431 8 12 8C12.2688 8 12.5294 8.03535 12.7772 8.10166L11.8751 9.00384Z"/><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M5.64648 16.6465L17.6465 4.64648L18.3536 5.35359L6.35359 17.3536L5.64648 16.6465Z"/></g><g class="loading-eye"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M17.9948 7.91366C16.6965 6.48549 14.6975 5 11.9999 5C9.30225 5 7.30322 6.48549 6.00488 7.91366C6.00488 7.91366 4 10 4 11C4 12 6.00488 14.0863 6.00488 14.0863C7.30322 15.5145 9.30225 17 11.9999 17C14.6975 17 16.6965 15.5145 17.9948 14.0863C17.9948 14.0863 20 12 20 11C20 10 17.9948 7.91366 17.9948 7.91366ZM6.74482 13.4137C7.94648 14.7355 9.69746 16 11.9999 16C14.3022 16 16.0532 14.7355 17.2549 13.4137C17.2549 13.4137 19 11.5 19 11C19 10.5 17.2549 8.58634 17.2549 8.58634C16.0532 7.26451 14.3022 6 11.9999 6C9.69746 6 7.94648 7.26451 6.74482 8.58634C6.74482 8.58634 5 10.5 5 11C5 11.5 6.74482 13.4137 6.74482 13.4137Z"/></g><g class="animated-loading-eye"><path stroke="currentColor" stroke-linecap="round" d="M14.5 11C14.5 9.61929 13.3807 8.5 12 8.5C10.6193 8.5 9.5 9.61929 9.5 11C9.5 12.3807 10.6193 13.5 12 13.5"/></g></svg>'
|
|
}
|
|
}
|
|
]);
|
|
|