
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
{"version":3,"file":"StockControl.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/toolbar/StockControl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkD,MAAM,2BAA2B,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,kDAAkD;AAClD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAqEnD;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,MAAM;IAQvC,iDAAiD;IAEvC,SAAS;QAClB,KAAK,CAAC,SAAS,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,oCAAoC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC;QAC5D,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAE7B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAES,aAAa;QACtB,gBAAgB;QAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElC,cAAc;QACd,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAC5B;QACD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE9B,eAAe;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,IAAI,EAAE,EAAE;YACf,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAC7B;QACD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEhC,kBAAkB;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;YACpE,gCAAgC;YAChC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE;gBACnC,IAAI,CAAC,YAAY,EAAE,CAAC;aACpB;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;oBAC7B,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,IAAI;oBACZ,aAAa,EAAiB,EAAE;iBAChC,CAAC,CAAA;aACF;QACF,CAAC,CAAC,CAAC,CAAC;IACL,CAAC;IAES,gBAAgB;QACzB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAE,CAAC,SAAS,GAAG,mDAAmD,CAAC;QAC3F,IAAI,CAAC,UAAU,CAAC,OAAO,CAAE,CAAC,SAAS,GAAG,wBAAwB,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAE,CAAC,SAAS,GAAG,uBAAuB,CAAC;IAC9D,CAAC;IAES,QAAQ;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE;YACnC,OAAO,QAAQ,CAAC;SAChB;QACD,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAES,eAAe;QACxB,OAAO,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAEM,cAAc;QACpB,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACpD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAClD;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;SACrC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACvB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;aAC1D;iBACI;gBACJ,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;aAC7D;SACD;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE;gBACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAE,EAAE,sBAAsB,CAAC,CAAC;aACpE;iBACI;gBACJ,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAE,EAAE,sBAAsB,CAAC,CAAC;aACvE;SACD;QAED,YAAY;IACb,CAAC;IAES,QAAQ;QACjB,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAE,CAAC,CAAC;IAClD,CAAC;IAES,SAAS,CAAC,IAAY;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAE,CAAC;QACxC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,IAAI,EAAE,EAAE;YACf,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAC7B;aACI;YACJ,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;SACzB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAE,CAAC;QAC1C,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACnD,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAE,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IAC/C,CAAC;IAES,YAAY;QACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,CAAC;;AAlJD;;;;WAAkC,cAAc;GAAC;AACjD;;;;WAA0C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;GAAC","sourcesContent":["import { Entity, IEntitySettings, IEntityPrivate, IEntityEvents } from \"../../../core/util/Entity\"\r\nimport { StockIcons } from \"./StockIcons\";\r\n\r\nimport type { IPointerEvent } from \"../../../core/render/backend/Renderer\";\r\nimport type { StockToolbar } from \"./StockToolbar\";\r\nimport type { StockChart } from \"../StockChart\";\r\n\r\n//import * as $array from \"../../core/util/Array\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n\r\nexport interface IStockControlSettings extends IEntitySettings {\r\n\r\n\t/**\r\n\t * A [[StockChart]] the toolbar is for.\r\n\t */\r\n\tstockChart: StockChart;\r\n\r\n\t/**\r\n\t * Is control visible?\r\n\t * \r\n\t * @default true\r\n\t */\r\n\tvisible?: boolean;\r\n\r\n\t/**\r\n\t * Name of the control. Used for the label.\r\n\t */\r\n\tname?: string;\r\n\r\n\t/**\r\n\t * Description of what the button does.\r\n\t */\r\n\tdescription?: string;\r\n\r\n\t/**\r\n\t * An element with control icon. If not set, each control will aytomatically\r\n\t * create an icon.\r\n\t */\r\n\ticon?: HTMLElement | SVGElement | \"none\";\r\n\r\n\t/**\r\n\t * Indicates if control is active.\r\n\t * \r\n\t * @default false\r\n\t */\r\n\tactive?: boolean;\r\n\r\n\t/**\r\n\t * If set to `true`, control can be toggle on and off by clicking on it.\r\n\t * \r\n\t * @default true\r\n\t */\r\n\ttogglable?: boolean;\r\n\r\n\t/**\r\n\t * Alignment of the control in a toolbar.\r\n\t *\r\n\t * @default \"left\"\r\n\t */\r\n\talign?: \"left\" | \"right\";\r\n\r\n}\r\n\r\n\r\nexport interface IStockControlPrivate extends IEntityPrivate {\r\n\ttoolbar: StockToolbar;\r\n\tbutton?: HTMLDivElement;\r\n\ticon?: HTMLElement;\r\n\tlabel?: HTMLDivElement;\r\n}\r\n\r\nexport interface IStockControlEvents extends IEntityEvents {\r\n\tclick: {\r\n\t\toriginalEvent: IPointerEvent\r\n\t}\r\n}\r\n\r\n/**\r\n * A base class for controls on [[StockToolbar]].\r\n */\r\nexport class StockControl extends Entity {\r\n\tpublic static className: string = \"StockControl\";\r\n\tpublic static classNames: Array<string> = Entity.classNames.concat([StockControl.className]);\r\n\r\n\tdeclare public _settings: IStockControlSettings;\r\n\tdeclare public _privateSettings: IStockControlPrivate;\r\n\tdeclare public _events: IStockControlEvents;\r\n\r\n\t// private _itemDisposers: Array<IDisposer> = [];\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\r\n\t\tthis.get(\"stockChart\").controls.push(this);\r\n\r\n\t\t// Inherit default themes from chart\r\n\t\tthis._defaultThemes = this.get(\"stockChart\")._defaultThemes;\r\n\t\tsuper._afterNewApplyThemes();\r\n\r\n\t\tthis._initElements();\r\n\t\tthis._applyClassNames();\r\n\r\n\t\tthis._root.addDisposer(this);\r\n\t}\r\n\r\n\tprotected _initElements(): void {\r\n\t\t// Create button\r\n\t\tconst button = document.createElement(\"div\");\r\n\t\tbutton.setAttribute(\"title\", this.get(\"description\", this.get(\"name\", \"\")));\r\n\t\tthis.setPrivate(\"button\", button);\r\n\r\n\t\t// Create icon\r\n\t\tconst icon = document.createElement(\"div\");\r\n\t\ticon.appendChild(this._getIcon());\r\n\t\tif (this.get(\"icon\") == \"none\") {\r\n\t\t\ticon.style.display = \"none\";\r\n\t\t}\r\n\t\tbutton.appendChild(icon);\r\n\t\tthis.setPrivate(\"icon\", icon);\r\n\r\n\t\t// Create label\r\n\t\tconst name = this.get(\"name\", \"\");\r\n\t\tconst label = document.createElement(\"div\");\r\n\t\tlabel.innerHTML = name;\r\n\t\tif (name == \"\") {\r\n\t\t\tlabel.style.display = \"none\";\r\n\t\t}\r\n\t\tbutton.appendChild(label);\r\n\t\tthis.setPrivate(\"label\", label);\r\n\r\n\t\t// Add click event\r\n\t\tthis._disposers.push($utils.addEventListener(button, \"click\", (ev) => {\r\n\t\t\t//ev.stopImmediatePropagation();\r\n\t\t\tif (this.get(\"togglable\") != false) {\r\n\t\t\t\tthis._handleClick();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.events.isEnabled(\"click\")) {\r\n\t\t\t\tthis.events.dispatch(\"click\", {\r\n\t\t\t\t\ttype: \"click\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\toriginalEvent: <IPointerEvent>ev\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}));\r\n\t}\r\n\r\n\tprotected _applyClassNames(): void {\r\n\t\tthis.getPrivate(\"button\")!.className = \"am5stock am5stock-control am5stock-control-button\";\r\n\t\tthis.getPrivate(\"label\")!.className = \"am5stock-control-label\";\r\n\t\tthis.getPrivate(\"icon\")!.className = \"am5stock-control-icon\";\r\n\t}\r\n\r\n\tprotected _getIcon(): HTMLElement | SVGElement {\r\n\t\tconst userIcon = this.get(\"icon\");\r\n\t\tif (userIcon && userIcon != \"none\") {\r\n\t\t\treturn userIcon;\r\n\t\t}\r\n\t\treturn this._getDefaultIcon();\r\n\t}\r\n\r\n\tprotected _getDefaultIcon(): SVGElement {\r\n\t\treturn StockIcons.getIcon(\"Default\");\r\n\t}\r\n\r\n\tpublic _beforeChanged() {\r\n\t\tsuper._beforeChanged();\r\n\r\n\t\tif (this.isDirty(\"visible\") && !this.get(\"visible\")) {\r\n\t\t\tthis.getPrivate(\"button\")!.style.display = \"none\";\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"name\")) {\r\n\t\t\tthis._setLabel(this.get(\"name\", \"\"));\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"active\")) {\r\n\t\t\tconst button = this.getPrivate(\"button\")!;\r\n\t\t\tif (this.get(\"active\")) {\r\n\t\t\t\t$utils.addClass(button, \"am5stock-control-button-active\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$utils.removeClass(button, \"am5stock-control-button-active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"align\")) {\r\n\t\t\tif (this.get(\"align\") == \"right\") {\r\n\t\t\t\t$utils.addClass(this.getPrivate(\"button\")!, \"am5stock-align-right\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$utils.removeClass(this.getPrivate(\"button\")!, \"am5stock-align-right\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// todo icon\r\n\t}\r\n\r\n\tprotected _dispose(): void {\r\n\t\tsuper._dispose();\r\n\t\t$utils.removeElement(this.getPrivate(\"button\")!);\r\n\t}\r\n\r\n\tprotected _setLabel(name: string): void {\r\n\t\tconst label = this.getPrivate(\"label\")!;\r\n\t\tlabel.innerHTML = name;\r\n\t\tif (name == \"\") {\r\n\t\t\tlabel.style.display = \"none\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlabel.style.display = \"\";\r\n\t\t}\r\n\r\n\t\tconst button = this.getPrivate(\"button\")!;\r\n\t\tbutton.setAttribute(\"title\", this.get(\"description\", this.get(\"name\", \"\")));\r\n\t}\r\n\r\n\tpublic hide(): void {\r\n\t\tthis.getPrivate(\"button\")!.style.display = \"none\";\r\n\t}\r\n\r\n\tpublic show(): void {\r\n\t\tthis.getPrivate(\"button\")!.style.display = \"\";\r\n\t}\r\n\r\n\tprotected _handleClick(): void {\r\n\t\tthis.set(\"active\", !this.get(\"active\"));\r\n\t}\r\n\r\n}"]}