snice 4.8.0 → 4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/react/camera-annotate.d.ts +27 -0
- package/adapters/react/camera-annotate.d.ts.map +1 -0
- package/adapters/react/camera-annotate.js +24 -0
- package/adapters/react/camera-annotate.js.map +1 -0
- package/adapters/react/camera-annotate.tsx +35 -0
- package/adapters/react/candlestick.d.ts +34 -0
- package/adapters/react/candlestick.d.ts.map +1 -0
- package/adapters/react/candlestick.js +24 -0
- package/adapters/react/candlestick.js.map +1 -0
- package/adapters/react/candlestick.tsx +42 -0
- package/adapters/react/components.d.ts +14 -0
- package/adapters/react/components.d.ts.map +1 -1
- package/adapters/react/components.js +7 -0
- package/adapters/react/components.js.map +1 -1
- package/adapters/react/components.ts +14 -0
- package/adapters/react/funnel.d.ts +31 -0
- package/adapters/react/funnel.d.ts.map +1 -0
- package/adapters/react/funnel.js +24 -0
- package/adapters/react/funnel.js.map +1 -0
- package/adapters/react/funnel.tsx +39 -0
- package/adapters/react/network-graph.d.ts +32 -0
- package/adapters/react/network-graph.d.ts.map +1 -0
- package/adapters/react/network-graph.js +24 -0
- package/adapters/react/network-graph.js.map +1 -0
- package/adapters/react/network-graph.tsx +40 -0
- package/adapters/react/sankey.d.ts +31 -0
- package/adapters/react/sankey.d.ts.map +1 -0
- package/adapters/react/sankey.js +24 -0
- package/adapters/react/sankey.js.map +1 -0
- package/adapters/react/sankey.tsx +39 -0
- package/adapters/react/time-range-picker.d.ts +33 -0
- package/adapters/react/time-range-picker.d.ts.map +1 -0
- package/adapters/react/time-range-picker.js +24 -0
- package/adapters/react/time-range-picker.js.map +1 -0
- package/adapters/react/time-range-picker.tsx +41 -0
- package/adapters/react/treemap.d.ts +30 -0
- package/adapters/react/treemap.d.ts.map +1 -0
- package/adapters/react/treemap.js +24 -0
- package/adapters/react/treemap.js.map +1 -0
- package/adapters/react/treemap.tsx +38 -0
- package/adapters/react/virtual-scroller.d.ts +1 -0
- package/adapters/react/virtual-scroller.d.ts.map +1 -1
- package/adapters/react/virtual-scroller.js +1 -1
- package/adapters/react/virtual-scroller.js.map +1 -1
- package/adapters/react/virtual-scroller.tsx +2 -1
- package/dist/cdn/accordion/snice-accordion.js +1 -1
- package/dist/cdn/accordion/snice-accordion.min.js +1 -1
- package/dist/cdn/alert/snice-alert.js +1 -1
- package/dist/cdn/alert/snice-alert.min.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
- package/dist/cdn/avatar/snice-avatar.js +1 -1
- package/dist/cdn/avatar/snice-avatar.min.js +1 -1
- package/dist/cdn/badge/snice-badge.js +1 -1
- package/dist/cdn/badge/snice-badge.min.js +1 -1
- package/dist/cdn/banner/snice-banner.js +1 -1
- package/dist/cdn/banner/snice-banner.min.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +2 -2
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js.map +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +13 -13
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js.map +1 -1
- package/dist/cdn/button/snice-button.js +1 -1
- package/dist/cdn/button/snice-button.min.js +1 -1
- package/dist/cdn/calendar/snice-calendar.js +1 -1
- package/dist/cdn/calendar/snice-calendar.min.js +1 -1
- package/dist/cdn/camera/snice-camera.js +1 -1
- package/dist/cdn/camera/snice-camera.min.js +1 -1
- package/dist/cdn/camera-annotate/README.md +27 -0
- package/dist/cdn/camera-annotate/snice-camera-annotate.js +730 -0
- package/dist/cdn/camera-annotate/snice-camera-annotate.js.map +1 -0
- package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +144 -0
- package/dist/cdn/camera-annotate/snice-camera-annotate.min.js.map +1 -0
- package/dist/cdn/candlestick/README.md +27 -0
- package/dist/cdn/candlestick/snice-candlestick.js +717 -0
- package/dist/cdn/candlestick/snice-candlestick.js.map +1 -0
- package/dist/cdn/candlestick/snice-candlestick.min.js +22 -0
- package/dist/cdn/candlestick/snice-candlestick.min.js.map +1 -0
- package/dist/cdn/card/snice-card.js +1 -1
- package/dist/cdn/card/snice-card.min.js +1 -1
- package/dist/cdn/carousel/snice-carousel.js +1 -1
- package/dist/cdn/carousel/snice-carousel.min.js +1 -1
- package/dist/cdn/chart/snice-chart.js +1 -1
- package/dist/cdn/chart/snice-chart.min.js +1 -1
- package/dist/cdn/chat/snice-chat.js +1 -1
- package/dist/cdn/chat/snice-chat.min.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
- package/dist/cdn/chip/snice-chip.js +1 -1
- package/dist/cdn/chip/snice-chip.min.js +1 -1
- package/dist/cdn/code-block/snice-code-block.js +1 -1
- package/dist/cdn/code-block/snice-code-block.min.js +1 -1
- package/dist/cdn/color-display/snice-color-display.js +1 -1
- package/dist/cdn/color-display/snice-color-display.min.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
- package/dist/cdn/divider/snice-divider.js +1 -1
- package/dist/cdn/divider/snice-divider.min.js +1 -1
- package/dist/cdn/doc/snice-doc.js +1 -1
- package/dist/cdn/doc/snice-doc.min.js +1 -1
- package/dist/cdn/draw/snice-draw.js +1 -1
- package/dist/cdn/draw/snice-draw.min.js +1 -1
- package/dist/cdn/drawer/snice-drawer.js +1 -1
- package/dist/cdn/drawer/snice-drawer.min.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
- package/dist/cdn/funnel/README.md +27 -0
- package/dist/cdn/funnel/snice-funnel.js +424 -0
- package/dist/cdn/funnel/snice-funnel.js.map +1 -0
- package/dist/cdn/funnel/snice-funnel.min.js +20 -0
- package/dist/cdn/funnel/snice-funnel.min.js.map +1 -0
- package/dist/cdn/gauge/snice-gauge.js +1 -1
- package/dist/cdn/gauge/snice-gauge.min.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
- package/dist/cdn/image/snice-image.js +1 -1
- package/dist/cdn/image/snice-image.min.js +1 -1
- package/dist/cdn/input/snice-input.js +1 -1
- package/dist/cdn/input/snice-input.min.js +1 -1
- package/dist/cdn/kanban/snice-kanban.js +1 -1
- package/dist/cdn/kanban/snice-kanban.min.js +1 -1
- package/dist/cdn/kpi/snice-kpi.js +1 -1
- package/dist/cdn/kpi/snice-kpi.min.js +1 -1
- package/dist/cdn/layout/README.md +2 -2
- package/dist/cdn/layout/snice-layout.js +23 -6
- package/dist/cdn/layout/snice-layout.js.map +1 -1
- package/dist/cdn/layout/snice-layout.min.js +2 -2
- package/dist/cdn/layout/snice-layout.min.js.map +1 -1
- package/dist/cdn/link/snice-link.js +1 -1
- package/dist/cdn/link/snice-link.min.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
- package/dist/cdn/list/README.md +6 -2
- package/dist/cdn/list/snice-list.js +87 -10
- package/dist/cdn/list/snice-list.js.map +1 -1
- package/dist/cdn/list/snice-list.min.js +20 -6
- package/dist/cdn/list/snice-list.min.js.map +1 -1
- package/dist/cdn/location/snice-location.js +1 -1
- package/dist/cdn/location/snice-location.min.js +1 -1
- package/dist/cdn/login/snice-login.js +1 -1
- package/dist/cdn/login/snice-login.min.js +1 -1
- package/dist/cdn/masonry/snice-masonry.js +1 -1
- package/dist/cdn/masonry/snice-masonry.min.js +1 -1
- package/dist/cdn/menu/snice-menu.js +1 -1
- package/dist/cdn/menu/snice-menu.min.js +1 -1
- package/dist/cdn/modal/snice-modal.js +1 -1
- package/dist/cdn/modal/snice-modal.min.js +1 -1
- package/dist/cdn/music-player/snice-music-player.js +1 -1
- package/dist/cdn/music-player/snice-music-player.min.js +1 -1
- package/dist/cdn/nav/README.md +2 -2
- package/dist/cdn/nav/snice-nav.js +23 -6
- package/dist/cdn/nav/snice-nav.js.map +1 -1
- package/dist/cdn/nav/snice-nav.min.js +2 -2
- package/dist/cdn/nav/snice-nav.min.js.map +1 -1
- package/dist/cdn/network-graph/README.md +27 -0
- package/dist/cdn/network-graph/snice-network-graph.js +788 -0
- package/dist/cdn/network-graph/snice-network-graph.js.map +1 -0
- package/dist/cdn/network-graph/snice-network-graph.min.js +13 -0
- package/dist/cdn/network-graph/snice-network-graph.min.js.map +1 -0
- package/dist/cdn/pagination/README.md +2 -2
- package/dist/cdn/pagination/snice-pagination.js +13 -13
- package/dist/cdn/pagination/snice-pagination.js.map +1 -1
- package/dist/cdn/pagination/snice-pagination.min.js +14 -14
- package/dist/cdn/pagination/snice-pagination.min.js.map +1 -1
- package/dist/cdn/paint/snice-paint.js +1 -1
- package/dist/cdn/paint/snice-paint.min.js +1 -1
- package/dist/cdn/progress/snice-progress.js +1 -1
- package/dist/cdn/progress/snice-progress.min.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
- package/dist/cdn/radio/snice-radio.js +1 -1
- package/dist/cdn/radio/snice-radio.min.js +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.js +3 -3
- package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.min.js +3 -3
- package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.js +3 -3
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js +3 -3
- package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
- package/dist/cdn/sankey/README.md +27 -0
- package/dist/cdn/sankey/snice-sankey.js +679 -0
- package/dist/cdn/sankey/snice-sankey.js.map +1 -0
- package/dist/cdn/sankey/snice-sankey.min.js +21 -0
- package/dist/cdn/sankey/snice-sankey.min.js.map +1 -0
- package/dist/cdn/select/snice-select.js +1 -1
- package/dist/cdn/select/snice-select.min.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
- package/dist/cdn/slider/snice-slider.js +1 -1
- package/dist/cdn/slider/snice-slider.min.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
- package/dist/cdn/spinner/snice-spinner.js +1 -1
- package/dist/cdn/spinner/snice-spinner.min.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
- package/dist/cdn/stepper/README.md +6 -2
- package/dist/cdn/stepper/snice-stepper.js +77 -10
- package/dist/cdn/stepper/snice-stepper.js.map +1 -1
- package/dist/cdn/stepper/snice-stepper.min.js +13 -9
- package/dist/cdn/stepper/snice-stepper.min.js.map +1 -1
- package/dist/cdn/switch/snice-switch.js +1 -1
- package/dist/cdn/switch/snice-switch.min.js +1 -1
- package/dist/cdn/table/snice-table.js +1 -1
- package/dist/cdn/table/snice-table.min.js +1 -1
- package/dist/cdn/tabs/snice-tabs.js +1 -1
- package/dist/cdn/tabs/snice-tabs.min.js +1 -1
- package/dist/cdn/terminal/snice-terminal.js +1 -1
- package/dist/cdn/terminal/snice-terminal.min.js +1 -1
- package/dist/cdn/textarea/snice-textarea.js +1 -1
- package/dist/cdn/textarea/snice-textarea.min.js +1 -1
- package/dist/cdn/time-range-picker/README.md +27 -0
- package/dist/cdn/time-range-picker/snice-time-range-picker.js +635 -0
- package/dist/cdn/time-range-picker/snice-time-range-picker.js.map +1 -0
- package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +34 -0
- package/dist/cdn/time-range-picker/snice-time-range-picker.min.js.map +1 -0
- package/dist/cdn/timeline/snice-timeline.js +1 -1
- package/dist/cdn/timeline/snice-timeline.min.js +1 -1
- package/dist/cdn/timer/snice-timer.js +1 -1
- package/dist/cdn/timer/snice-timer.min.js +1 -1
- package/dist/cdn/toast/snice-toast.js +1 -1
- package/dist/cdn/toast/snice-toast.min.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
- package/dist/cdn/tree/README.md +5 -1
- package/dist/cdn/tree/snice-tree.js +4 -8
- package/dist/cdn/tree/snice-tree.js.map +1 -1
- package/dist/cdn/tree/snice-tree.min.js +5 -5
- package/dist/cdn/tree/snice-tree.min.js.map +1 -1
- package/dist/cdn/treemap/README.md +27 -0
- package/dist/cdn/treemap/snice-treemap.js +522 -0
- package/dist/cdn/treemap/snice-treemap.js.map +1 -0
- package/dist/cdn/treemap/snice-treemap.min.js +14 -0
- package/dist/cdn/treemap/snice-treemap.min.js.map +1 -0
- package/dist/cdn/virtual-scroller/README.md +2 -2
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +47 -16
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.js.map +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +9 -9
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js.map +1 -1
- package/dist/components/breadcrumbs/snice-breadcrumbs.js +1 -1
- package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
- package/dist/components/camera-annotate/snice-camera-annotate.d.ts +68 -0
- package/dist/components/camera-annotate/snice-camera-annotate.js +663 -0
- package/dist/components/camera-annotate/snice-camera-annotate.js.map +1 -0
- package/dist/components/camera-annotate/snice-camera-annotate.types.d.ts +50 -0
- package/dist/components/candlestick/snice-candlestick.d.ts +78 -0
- package/dist/components/candlestick/snice-candlestick.js +650 -0
- package/dist/components/candlestick/snice-candlestick.js.map +1 -0
- package/dist/components/candlestick/snice-candlestick.types.d.ts +40 -0
- package/dist/components/funnel/snice-funnel.d.ts +37 -0
- package/dist/components/funnel/snice-funnel.js +357 -0
- package/dist/components/funnel/snice-funnel.js.map +1 -0
- package/dist/components/funnel/snice-funnel.types.d.ts +28 -0
- package/dist/components/list/snice-list-item.d.ts +2 -0
- package/dist/components/list/snice-list-item.js +20 -2
- package/dist/components/list/snice-list-item.js.map +1 -1
- package/dist/components/nav/snice-nav.js +22 -5
- package/dist/components/nav/snice-nav.js.map +1 -1
- package/dist/components/network-graph/snice-network-graph.d.ts +80 -0
- package/dist/components/network-graph/snice-network-graph.js +721 -0
- package/dist/components/network-graph/snice-network-graph.js.map +1 -0
- package/dist/components/network-graph/snice-network-graph.types.d.ts +49 -0
- package/dist/components/pagination/snice-pagination.js +12 -12
- package/dist/components/sankey/snice-sankey.d.ts +46 -0
- package/dist/components/sankey/snice-sankey.js +612 -0
- package/dist/components/sankey/snice-sankey.js.map +1 -0
- package/dist/components/sankey/snice-sankey.types.d.ts +59 -0
- package/dist/components/stepper/snice-stepper.js +9 -3
- package/dist/components/stepper/snice-stepper.js.map +1 -1
- package/dist/components/time-range-picker/snice-time-range-picker.d.ts +67 -0
- package/dist/components/time-range-picker/snice-time-range-picker.js +568 -0
- package/dist/components/time-range-picker/snice-time-range-picker.js.map +1 -0
- package/dist/components/time-range-picker/snice-time-range-picker.types.d.ts +39 -0
- package/dist/components/treemap/snice-treemap.d.ts +49 -0
- package/dist/components/treemap/snice-treemap.js +455 -0
- package/dist/components/treemap/snice-treemap.js.map +1 -0
- package/dist/components/treemap/snice-treemap.types.d.ts +42 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.d.ts +5 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.js +47 -16
- package/dist/components/virtual-scroller/snice-virtual-scroller.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +1 -1
- package/dist/index.iife.js.map +1 -1
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/components/camera-annotate.md +82 -0
- package/docs/ai/components/candlestick.md +79 -0
- package/docs/ai/components/funnel.md +86 -0
- package/docs/ai/components/network-graph.md +87 -0
- package/docs/ai/components/sankey.md +63 -0
- package/docs/ai/components/time-range-picker.md +78 -0
- package/docs/ai/components/treemap.md +78 -0
- package/docs/components/camera-annotate.md +186 -0
- package/docs/components/candlestick.md +196 -0
- package/docs/components/funnel.md +191 -0
- package/docs/components/network-graph.md +215 -0
- package/docs/components/sankey.md +201 -0
- package/docs/components/time-range-picker.md +213 -0
- package/docs/components/treemap.md +198 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snice-candlestick.js","sources":["../../../node_modules/tslib/tslib.es6.mjs","../../components/candlestick/snice-candlestick.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { __runInitializers, __esDecorate } from 'tslib';\nimport { element, property, query, dispatch, ready, dispose, watch, render, styles, html, css } from 'snice';\n\nvar cssContent = \":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint;width:100%;--candlestick-bg:var(--snice-color-background, rgb(255 255 255));--candlestick-text:var(--snice-color-text, rgb(23 23 23));--candlestick-text-secondary:var(--snice-color-text-secondary, rgb(82 82 82));--candlestick-border:var(--snice-color-border, rgb(226 226 226));--candlestick-grid:var(--snice-color-border, rgb(226 226 226));--candlestick-bullish:var(--snice-candlestick-bullish, rgb(22 163 74));--candlestick-bearish:var(--snice-candlestick-bearish, rgb(220 38 38))}.candlestick{position:relative;background:var(--candlestick-bg);overflow:hidden;user-select:none}.candlestick__svg{display:block;width:100%;height:100%}.candlestick__grid-line{stroke:var(--candlestick-grid);stroke-width:1px;stroke-dasharray:2 4;opacity:.5}.candlestick__axis-label{fill:var(--candlestick-text-secondary);font-size:.6875rem;font-family:inherit}.candlestick__axis-label--x{text-anchor:middle;dominant-baseline:hanging}.candlestick__axis-label--y{text-anchor:end;dominant-baseline:central}.candlestick__body{cursor:pointer;transition:opacity var(--snice-transition-fast, 150ms) ease}.candlestick__body:hover{opacity:.8}.candlestick__wick{stroke-width:1px;pointer-events:none}.candlestick__volume{opacity:.3}.candlestick__crosshair-h,.candlestick__crosshair-v{stroke:var(--candlestick-text-secondary);stroke-width:1px;stroke-dasharray:4 3;pointer-events:none;opacity:.6}.candlestick__crosshair-label{fill:var(--candlestick-text);font-size:.625rem;font-family:inherit;pointer-events:none}.candlestick__crosshair-label-bg{fill:var(--candlestick-bg);stroke:var(--candlestick-border);stroke-width:1px;pointer-events:none}.candlestick__tooltip{position:absolute;background:var(--candlestick-bg);border:1px solid var(--candlestick-border);border-radius:4px;padding:var(--snice-spacing-xs,.5rem);font-size:.75rem;color:var(--candlestick-text);pointer-events:none;z-index:10;box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1));white-space:nowrap;opacity:0;transition:opacity var(--snice-transition-fast, 150ms) ease}.candlestick__tooltip--visible{opacity:1}.candlestick__tooltip-row{display:flex;justify-content:space-between;gap:var(--snice-spacing-sm,.75rem);line-height:var(--snice-line-height-normal, 1.5)}.candlestick__tooltip-label{color:var(--candlestick-text-secondary)}.candlestick__tooltip-value{font-weight:var(--snice-font-weight-semibold,600)}.candlestick__tooltip-value--bullish{color:var(--candlestick-bullish)}.candlestick__tooltip-value--bearish{color:var(--candlestick-bearish)}.candlestick__body--animated,.candlestick__wick--animated{animation:.4s ease-out both candlestick-appear}.candlestick__volume--animated{animation:.4s ease-out both volume-appear}@keyframes candlestick-appear{from{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes volume-appear{from{opacity:0}to{opacity:.3}}\";\n\nconst PADDING = { top: 16, right: 64, bottom: 32, left: 8 };\nconst VOLUME_HEIGHT_RATIO = 0.2;\nconst MIN_CANDLE_WIDTH = 3;\nconst MAX_CANDLE_WIDTH = 24;\nlet SniceCandlestick = (() => {\n let _classDecorators = [element('snice-candlestick')];\n let _classDescriptor;\n let _classExtraInitializers = [];\n let _classThis;\n let _classSuper = HTMLElement;\n let _instanceExtraInitializers = [];\n let _data_decorators;\n let _data_initializers = [];\n let _data_extraInitializers = [];\n let _showVolume_decorators;\n let _showVolume_initializers = [];\n let _showVolume_extraInitializers = [];\n let _showGrid_decorators;\n let _showGrid_initializers = [];\n let _showGrid_extraInitializers = [];\n let _showCrosshair_decorators;\n let _showCrosshair_initializers = [];\n let _showCrosshair_extraInitializers = [];\n let _bullishColor_decorators;\n let _bullishColor_initializers = [];\n let _bullishColor_extraInitializers = [];\n let _bearishColor_decorators;\n let _bearishColor_initializers = [];\n let _bearishColor_extraInitializers = [];\n let _timeFormat_decorators;\n let _timeFormat_initializers = [];\n let _timeFormat_extraInitializers = [];\n let _yAxisFormat_decorators;\n let _yAxisFormat_initializers = [];\n let _yAxisFormat_extraInitializers = [];\n let _zoomEnabled_decorators;\n let _zoomEnabled_initializers = [];\n let _zoomEnabled_extraInitializers = [];\n let _animation_decorators;\n let _animation_initializers = [];\n let _animation_extraInitializers = [];\n let _containerEl_decorators;\n let _containerEl_initializers = [];\n let _containerEl_extraInitializers = [];\n let _svgEl_decorators;\n let _svgEl_initializers = [];\n let _svgEl_extraInitializers = [];\n let _chartContentEl_decorators;\n let _chartContentEl_initializers = [];\n let _chartContentEl_extraInitializers = [];\n let _crosshairGroupEl_decorators;\n let _crosshairGroupEl_initializers = [];\n let _crosshairGroupEl_extraInitializers = [];\n let _tooltipEl_decorators;\n let _tooltipEl_initializers = [];\n let _tooltipEl_extraInitializers = [];\n let _emitCandleClick_decorators;\n let _emitCandleHover_decorators;\n let _emitCrosshairMove_decorators;\n let _init_decorators;\n let _cleanup_decorators;\n let _onDataChange_decorators;\n let _onDisplayChange_decorators;\n let _renderContent_decorators;\n let _componentStyles_decorators;\n (class extends _classSuper {\n static { _classThis = this; }\n constructor() {\n super(...arguments);\n this.data = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _data_initializers, []));\n this.showVolume = (__runInitializers(this, _data_extraInitializers), __runInitializers(this, _showVolume_initializers, false));\n this.showGrid = (__runInitializers(this, _showVolume_extraInitializers), __runInitializers(this, _showGrid_initializers, true));\n this.showCrosshair = (__runInitializers(this, _showGrid_extraInitializers), __runInitializers(this, _showCrosshair_initializers, true));\n this.bullishColor = (__runInitializers(this, _showCrosshair_extraInitializers), __runInitializers(this, _bullishColor_initializers, ''));\n this.bearishColor = (__runInitializers(this, _bullishColor_extraInitializers), __runInitializers(this, _bearishColor_initializers, ''));\n this.timeFormat = (__runInitializers(this, _bearishColor_extraInitializers), __runInitializers(this, _timeFormat_initializers, 'auto'));\n this.yAxisFormat = (__runInitializers(this, _timeFormat_extraInitializers), __runInitializers(this, _yAxisFormat_initializers, 'number'));\n this.zoomEnabled = (__runInitializers(this, _yAxisFormat_extraInitializers), __runInitializers(this, _zoomEnabled_initializers, true));\n this.animation = (__runInitializers(this, _zoomEnabled_extraInitializers), __runInitializers(this, _animation_initializers, true));\n this.containerEl = (__runInitializers(this, _animation_extraInitializers), __runInitializers(this, _containerEl_initializers, void 0));\n this.svgEl = (__runInitializers(this, _containerEl_extraInitializers), __runInitializers(this, _svgEl_initializers, void 0));\n this.chartContentEl = (__runInitializers(this, _svgEl_extraInitializers), __runInitializers(this, _chartContentEl_initializers, void 0));\n this.crosshairGroupEl = (__runInitializers(this, _chartContentEl_extraInitializers), __runInitializers(this, _crosshairGroupEl_initializers, void 0));\n this.tooltipEl = (__runInitializers(this, _crosshairGroupEl_extraInitializers), __runInitializers(this, _tooltipEl_initializers, void 0));\n // Internal state — plain fields, no @property\n this.viewStart = (__runInitializers(this, _tooltipEl_extraInitializers), 0);\n this.viewEnd = 0;\n this.mouseX = -1;\n this.mouseY = -1;\n this.isDragging = false;\n this.dragStartX = 0;\n this.dragStartViewStart = 0;\n this.dragStartViewEnd = 0;\n this.resizeObserver = null;\n this.svgWidth = 600;\n this.svgHeight = 400;\n this.lastDataLength = 0;\n this.cachedData = [];\n this.rafId = 0;\n this.animateNext = true;\n this.handleMouseMove = (e) => {\n const svg = this.svgEl;\n if (!svg)\n return;\n const ctm = svg.getScreenCTM();\n if (ctm) {\n const pt = new DOMPoint(e.clientX, e.clientY).matrixTransform(ctm.inverse());\n this.mouseX = pt.x;\n this.mouseY = pt.y;\n }\n if (this.isDragging && this.zoomEnabled) {\n const dx = e.clientX - this.dragStartX;\n const area = this.chartArea;\n const viewSize = this.dragStartViewEnd - this.dragStartViewStart;\n const candlesPerPx = viewSize / area.width;\n const shift = Math.round(-dx * candlesPerPx);\n let newStart = this.dragStartViewStart + shift;\n let newEnd = this.dragStartViewEnd + shift;\n if (newStart < 0) {\n newStart = 0;\n newEnd = viewSize;\n }\n if (newEnd > this.cachedData.length) {\n newEnd = this.cachedData.length;\n newStart = this.cachedData.length - viewSize;\n }\n const vs = Math.max(0, newStart);\n const ve = Math.min(this.cachedData.length, newEnd);\n if (vs !== this.viewStart || ve !== this.viewEnd) {\n this.viewStart = vs;\n this.viewEnd = ve;\n this.rebuildChart();\n return;\n }\n }\n if (this.showCrosshair) {\n const idx = this.xToIndex(this.mouseX);\n const candle = this.visibleData[idx];\n if (candle) {\n const price = this.yToPrice(this.mouseY);\n this.emitCrosshairMove(price, this.formatDate(candle.date), this.mouseX, this.mouseY);\n }\n }\n // Only update crosshair + tooltip via direct DOM manipulation — no re-render\n if (this.rafId)\n cancelAnimationFrame(this.rafId);\n this.rafId = requestAnimationFrame(() => {\n this.updateCrosshairDOM();\n this.updateTooltipDOM();\n });\n };\n this.handleMouseLeave = () => {\n this.mouseX = -1;\n this.mouseY = -1;\n this.isDragging = false;\n this.updateCrosshairDOM();\n this.updateTooltipDOM();\n };\n this.handleMouseDown = (e) => {\n if (!this.zoomEnabled)\n return;\n this.isDragging = true;\n this.dragStartX = e.clientX;\n this.dragStartViewStart = this.viewStart;\n this.dragStartViewEnd = this.viewEnd;\n };\n this.handleMouseUp = () => {\n this.isDragging = false;\n };\n this.handleWheel = (e) => {\n if (!this.zoomEnabled)\n return;\n e.preventDefault();\n const viewSize = this.viewEnd - this.viewStart;\n const zoomFactor = e.deltaY > 0 ? 1.1 : 0.9;\n let newSize = Math.round(viewSize * zoomFactor);\n newSize = Math.max(10, Math.min(this.cachedData.length, newSize));\n const area = this.chartArea;\n const mouseRatio = (this.mouseX - area.x) / area.width;\n const center = this.viewStart + viewSize * mouseRatio;\n let newStart = Math.round(center - newSize * mouseRatio);\n let newEnd = newStart + newSize;\n if (newStart < 0) {\n newStart = 0;\n newEnd = newSize;\n }\n if (newEnd > this.cachedData.length) {\n newEnd = this.cachedData.length;\n newStart = this.cachedData.length - newSize;\n }\n this.viewStart = Math.max(0, newStart);\n this.viewEnd = Math.min(this.cachedData.length, newEnd);\n this.rebuildChart();\n };\n }\n static {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;\n _data_decorators = [property({ type: Array, attribute: false })];\n _showVolume_decorators = [property({ type: Boolean })];\n _showGrid_decorators = [property({ type: Boolean })];\n _showCrosshair_decorators = [property({ type: Boolean })];\n _bullishColor_decorators = [property()];\n _bearishColor_decorators = [property()];\n _timeFormat_decorators = [property()];\n _yAxisFormat_decorators = [property()];\n _zoomEnabled_decorators = [property({ type: Boolean })];\n _animation_decorators = [property({ type: Boolean })];\n _containerEl_decorators = [query('.candlestick')];\n _svgEl_decorators = [query('.candlestick__svg')];\n _chartContentEl_decorators = [query('.candlestick__chart-content')];\n _crosshairGroupEl_decorators = [query('.candlestick__crosshair-group')];\n _tooltipEl_decorators = [query('.candlestick__tooltip')];\n _emitCandleClick_decorators = [dispatch('candle-click', { bubbles: true, composed: true })];\n _emitCandleHover_decorators = [dispatch('candle-hover', { bubbles: true, composed: true })];\n _emitCrosshairMove_decorators = [dispatch('crosshair-move', { bubbles: true, composed: true })];\n _init_decorators = [ready()];\n _cleanup_decorators = [dispose()];\n _onDataChange_decorators = [watch('data')];\n _onDisplayChange_decorators = [watch('showVolume', 'showGrid', 'bullishColor', 'bearishColor', 'timeFormat', 'yAxisFormat', 'animation')];\n _renderContent_decorators = [render({ once: true })];\n _componentStyles_decorators = [styles()];\n __esDecorate(this, null, _emitCandleClick_decorators, { kind: \"method\", name: \"emitCandleClick\", static: false, private: false, access: { has: obj => \"emitCandleClick\" in obj, get: obj => obj.emitCandleClick }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitCandleHover_decorators, { kind: \"method\", name: \"emitCandleHover\", static: false, private: false, access: { has: obj => \"emitCandleHover\" in obj, get: obj => obj.emitCandleHover }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitCrosshairMove_decorators, { kind: \"method\", name: \"emitCrosshairMove\", static: false, private: false, access: { has: obj => \"emitCrosshairMove\" in obj, get: obj => obj.emitCrosshairMove }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _init_decorators, { kind: \"method\", name: \"init\", static: false, private: false, access: { has: obj => \"init\" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _cleanup_decorators, { kind: \"method\", name: \"cleanup\", static: false, private: false, access: { has: obj => \"cleanup\" in obj, get: obj => obj.cleanup }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _onDataChange_decorators, { kind: \"method\", name: \"onDataChange\", static: false, private: false, access: { has: obj => \"onDataChange\" in obj, get: obj => obj.onDataChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _onDisplayChange_decorators, { kind: \"method\", name: \"onDisplayChange\", static: false, private: false, access: { has: obj => \"onDisplayChange\" in obj, get: obj => obj.onDisplayChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _renderContent_decorators, { kind: \"method\", name: \"renderContent\", static: false, private: false, access: { has: obj => \"renderContent\" in obj, get: obj => obj.renderContent }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _componentStyles_decorators, { kind: \"method\", name: \"componentStyles\", static: false, private: false, access: { has: obj => \"componentStyles\" in obj, get: obj => obj.componentStyles }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(null, null, _data_decorators, { kind: \"field\", name: \"data\", static: false, private: false, access: { has: obj => \"data\" in obj, get: obj => obj.data, set: (obj, value) => { obj.data = value; } }, metadata: _metadata }, _data_initializers, _data_extraInitializers);\n __esDecorate(null, null, _showVolume_decorators, { kind: \"field\", name: \"showVolume\", static: false, private: false, access: { has: obj => \"showVolume\" in obj, get: obj => obj.showVolume, set: (obj, value) => { obj.showVolume = value; } }, metadata: _metadata }, _showVolume_initializers, _showVolume_extraInitializers);\n __esDecorate(null, null, _showGrid_decorators, { kind: \"field\", name: \"showGrid\", static: false, private: false, access: { has: obj => \"showGrid\" in obj, get: obj => obj.showGrid, set: (obj, value) => { obj.showGrid = value; } }, metadata: _metadata }, _showGrid_initializers, _showGrid_extraInitializers);\n __esDecorate(null, null, _showCrosshair_decorators, { kind: \"field\", name: \"showCrosshair\", static: false, private: false, access: { has: obj => \"showCrosshair\" in obj, get: obj => obj.showCrosshair, set: (obj, value) => { obj.showCrosshair = value; } }, metadata: _metadata }, _showCrosshair_initializers, _showCrosshair_extraInitializers);\n __esDecorate(null, null, _bullishColor_decorators, { kind: \"field\", name: \"bullishColor\", static: false, private: false, access: { has: obj => \"bullishColor\" in obj, get: obj => obj.bullishColor, set: (obj, value) => { obj.bullishColor = value; } }, metadata: _metadata }, _bullishColor_initializers, _bullishColor_extraInitializers);\n __esDecorate(null, null, _bearishColor_decorators, { kind: \"field\", name: \"bearishColor\", static: false, private: false, access: { has: obj => \"bearishColor\" in obj, get: obj => obj.bearishColor, set: (obj, value) => { obj.bearishColor = value; } }, metadata: _metadata }, _bearishColor_initializers, _bearishColor_extraInitializers);\n __esDecorate(null, null, _timeFormat_decorators, { kind: \"field\", name: \"timeFormat\", static: false, private: false, access: { has: obj => \"timeFormat\" in obj, get: obj => obj.timeFormat, set: (obj, value) => { obj.timeFormat = value; } }, metadata: _metadata }, _timeFormat_initializers, _timeFormat_extraInitializers);\n __esDecorate(null, null, _yAxisFormat_decorators, { kind: \"field\", name: \"yAxisFormat\", static: false, private: false, access: { has: obj => \"yAxisFormat\" in obj, get: obj => obj.yAxisFormat, set: (obj, value) => { obj.yAxisFormat = value; } }, metadata: _metadata }, _yAxisFormat_initializers, _yAxisFormat_extraInitializers);\n __esDecorate(null, null, _zoomEnabled_decorators, { kind: \"field\", name: \"zoomEnabled\", static: false, private: false, access: { has: obj => \"zoomEnabled\" in obj, get: obj => obj.zoomEnabled, set: (obj, value) => { obj.zoomEnabled = value; } }, metadata: _metadata }, _zoomEnabled_initializers, _zoomEnabled_extraInitializers);\n __esDecorate(null, null, _animation_decorators, { kind: \"field\", name: \"animation\", static: false, private: false, access: { has: obj => \"animation\" in obj, get: obj => obj.animation, set: (obj, value) => { obj.animation = value; } }, metadata: _metadata }, _animation_initializers, _animation_extraInitializers);\n __esDecorate(null, null, _containerEl_decorators, { kind: \"field\", name: \"containerEl\", static: false, private: false, access: { has: obj => \"containerEl\" in obj, get: obj => obj.containerEl, set: (obj, value) => { obj.containerEl = value; } }, metadata: _metadata }, _containerEl_initializers, _containerEl_extraInitializers);\n __esDecorate(null, null, _svgEl_decorators, { kind: \"field\", name: \"svgEl\", static: false, private: false, access: { has: obj => \"svgEl\" in obj, get: obj => obj.svgEl, set: (obj, value) => { obj.svgEl = value; } }, metadata: _metadata }, _svgEl_initializers, _svgEl_extraInitializers);\n __esDecorate(null, null, _chartContentEl_decorators, { kind: \"field\", name: \"chartContentEl\", static: false, private: false, access: { has: obj => \"chartContentEl\" in obj, get: obj => obj.chartContentEl, set: (obj, value) => { obj.chartContentEl = value; } }, metadata: _metadata }, _chartContentEl_initializers, _chartContentEl_extraInitializers);\n __esDecorate(null, null, _crosshairGroupEl_decorators, { kind: \"field\", name: \"crosshairGroupEl\", static: false, private: false, access: { has: obj => \"crosshairGroupEl\" in obj, get: obj => obj.crosshairGroupEl, set: (obj, value) => { obj.crosshairGroupEl = value; } }, metadata: _metadata }, _crosshairGroupEl_initializers, _crosshairGroupEl_extraInitializers);\n __esDecorate(null, null, _tooltipEl_decorators, { kind: \"field\", name: \"tooltipEl\", static: false, private: false, access: { has: obj => \"tooltipEl\" in obj, get: obj => obj.tooltipEl, set: (obj, value) => { obj.tooltipEl = value; } }, metadata: _metadata }, _tooltipEl_initializers, _tooltipEl_extraInitializers);\n __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: \"class\", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);\n _classThis = _classDescriptor.value;\n if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n __runInitializers(_classThis, _classExtraInitializers);\n }\n emitCandleClick(candle, index) {\n return { candle, index };\n }\n emitCandleHover(candle, index) {\n return { candle, index };\n }\n emitCrosshairMove(price, date, x, y) {\n return { price, date, x, y };\n }\n init() {\n this.cachedData = this.data;\n this.viewEnd = this.data.length;\n this.viewStart = Math.max(0, this.viewEnd - 80);\n this.resizeObserver = new ResizeObserver(() => {\n this.measureSize();\n this.rebuildChart();\n });\n if (this.containerEl) {\n this.resizeObserver.observe(this.containerEl);\n }\n this.measureSize();\n this.rebuildChart();\n }\n cleanup() {\n this.resizeObserver?.disconnect();\n if (this.rafId)\n cancelAnimationFrame(this.rafId);\n }\n onDataChange() {\n this.cachedData = this.data;\n const dataLen = this.cachedData.length;\n if (dataLen > 0 && dataLen !== this.lastDataLength) {\n this.lastDataLength = dataLen;\n this.viewEnd = dataLen;\n this.viewStart = Math.max(0, dataLen - 80);\n }\n this.animateNext = true;\n this.rebuildChart();\n }\n onDisplayChange() {\n this.rebuildChart();\n }\n measureSize() {\n if (!this.containerEl)\n return;\n const rect = this.containerEl.getBoundingClientRect();\n if (rect.width > 0)\n this.svgWidth = rect.width;\n if (rect.height > 0)\n this.svgHeight = rect.height;\n }\n get visibleData() {\n return this.cachedData.slice(this.viewStart, this.viewEnd);\n }\n get chartArea() {\n const volumeSpace = this.showVolume ? this.svgHeight * VOLUME_HEIGHT_RATIO : 0;\n return {\n x: PADDING.left,\n y: PADDING.top,\n width: this.svgWidth - PADDING.left - PADDING.right,\n height: this.svgHeight - PADDING.top - PADDING.bottom - volumeSpace,\n volumeY: this.svgHeight - PADDING.bottom - volumeSpace,\n volumeHeight: volumeSpace\n };\n }\n get priceRange() {\n const visible = this.visibleData;\n if (visible.length === 0)\n return { min: 0, max: 100 };\n let min = Infinity;\n let max = -Infinity;\n for (const d of visible) {\n if (d.low < min)\n min = d.low;\n if (d.high > max)\n max = d.high;\n }\n const padding = (max - min) * 0.05 || 1;\n return { min: min - padding, max: max + padding };\n }\n get volumeMax() {\n const visible = this.visibleData;\n if (visible.length === 0)\n return 1;\n return Math.max(...visible.map(d => d.volume || 0)) || 1;\n }\n get candleWidth() {\n const area = this.chartArea;\n const count = this.visibleData.length || 1;\n const totalWidth = area.width / count;\n const bodyWidth = totalWidth * 0.7;\n return Math.max(MIN_CANDLE_WIDTH, Math.min(MAX_CANDLE_WIDTH, bodyWidth));\n }\n priceToY(price) {\n const { min, max } = this.priceRange;\n const area = this.chartArea;\n const ratio = (price - min) / (max - min);\n return area.y + area.height * (1 - ratio);\n }\n yToPrice(y) {\n const { min, max } = this.priceRange;\n const area = this.chartArea;\n const ratio = 1 - (y - area.y) / area.height;\n return min + ratio * (max - min);\n }\n indexToX(index) {\n const area = this.chartArea;\n const count = this.visibleData.length || 1;\n const step = area.width / count;\n return area.x + step * index + step / 2;\n }\n xToIndex(x) {\n const area = this.chartArea;\n const count = this.visibleData.length || 1;\n const step = area.width / count;\n const idx = Math.floor((x - area.x) / step);\n return Math.max(0, Math.min(count - 1, idx));\n }\n formatPrice(price) {\n switch (this.yAxisFormat) {\n case 'currency':\n return price.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n case 'percent':\n return price.toFixed(2) + '%';\n default:\n return price >= 1000 ? price.toLocaleString(undefined, { maximumFractionDigits: 2 }) : price.toFixed(2);\n }\n }\n formatDate(dateVal) {\n const d = dateVal instanceof Date ? dateVal : new Date(dateVal);\n if (isNaN(d.getTime()))\n return String(dateVal);\n const fmt = this.timeFormat;\n if (fmt === 'date')\n return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });\n if (fmt === 'time')\n return d.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });\n if (fmt === 'datetime')\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' });\n if (fmt === 'month')\n return d.toLocaleDateString(undefined, { month: 'short', year: '2-digit' });\n if (fmt === 'year')\n return d.getFullYear().toString();\n // auto\n return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });\n }\n /** Rebuild the static chart SVG (candles, grid, axes, volume). Does NOT include crosshair. */\n rebuildChart() {\n if (!this.chartContentEl || !this.svgEl) {\n requestAnimationFrame(() => this.rebuildChart());\n return;\n }\n const visible = this.visibleData;\n let svg = '';\n if (visible.length > 0) {\n svg += this.buildGridLines();\n svg += this.buildYAxis();\n svg += this.buildXAxis();\n svg += this.buildVolumeBars();\n svg += this.buildCandles();\n }\n this.chartContentEl.innerHTML = svg;\n // Update SVG viewBox\n this.svgEl.setAttribute('viewBox', `0 0 ${this.svgWidth} ${this.svgHeight}`);\n this.svgEl.setAttribute('aria-label', `Candlestick chart with ${this.cachedData.length} data points`);\n // Update container height\n if (this.containerEl) {\n this.containerEl.style.height = `${this.svgHeight}px`;\n }\n // Consume animation flag after building candles\n this.animateNext = false;\n // Update crosshair after chart rebuild\n this.updateCrosshairDOM();\n this.updateTooltipDOM();\n }\n resetZoom() {\n this.viewStart = 0;\n this.viewEnd = this.cachedData.length;\n this.rebuildChart();\n }\n zoomTo(startIndex, endIndex) {\n this.viewStart = Math.max(0, startIndex);\n this.viewEnd = Math.min(this.cachedData.length, endIndex);\n this.rebuildChart();\n }\n /** Update crosshair overlay via direct DOM manipulation — no re-render needed */\n updateCrosshairDOM() {\n const group = this.crosshairGroupEl;\n if (!group)\n return;\n if (!this.showCrosshair || this.mouseX < 0 || this.mouseY < 0) {\n group.innerHTML = '';\n return;\n }\n const area = this.chartArea;\n const totalChartBottom = area.y + area.height + area.volumeHeight;\n const isInChart = this.mouseX >= area.x && this.mouseX <= area.x + area.width\n && this.mouseY >= area.y && this.mouseY <= totalChartBottom;\n if (!isInChart) {\n group.innerHTML = '';\n return;\n }\n const price = this.yToPrice(this.mouseY);\n const idx = this.xToIndex(this.mouseX);\n const candle = this.visibleData[idx];\n const snapX = this.indexToX(idx);\n let parts = '';\n // Horizontal line\n parts += `<line class=\"candlestick__crosshair-h\" x1=\"${area.x}\" y1=\"${this.mouseY}\" x2=\"${area.x + area.width}\" y2=\"${this.mouseY}\" />`;\n // Vertical line\n parts += `<line class=\"candlestick__crosshair-v\" x1=\"${snapX}\" y1=\"${area.y}\" x2=\"${snapX}\" y2=\"${totalChartBottom}\" />`;\n // Price label\n const priceLabel = this.formatPrice(price);\n const labelX = this.svgWidth - PADDING.right + 4;\n parts += `<rect class=\"candlestick__crosshair-label-bg\" x=\"${labelX}\" y=\"${this.mouseY - 9}\" width=\"${PADDING.right - 8}\" height=\"18\" rx=\"2\" />`;\n parts += `<text class=\"candlestick__crosshair-label\" x=\"${labelX + 4}\" y=\"${this.mouseY + 4}\">${priceLabel}</text>`;\n // Date label\n if (candle) {\n const dateLabel = this.formatDate(candle.date);\n const dateLabelY = totalChartBottom + 4;\n parts += `<rect class=\"candlestick__crosshair-label-bg\" x=\"${snapX - 36}\" y=\"${dateLabelY}\" width=\"72\" height=\"18\" rx=\"2\" />`;\n parts += `<text class=\"candlestick__crosshair-label\" x=\"${snapX}\" y=\"${dateLabelY + 13}\" text-anchor=\"middle\">${dateLabel}</text>`;\n }\n group.innerHTML = parts;\n }\n /** Update tooltip via direct DOM manipulation — no re-render needed */\n updateTooltipDOM() {\n const tooltip = this.tooltipEl;\n if (!tooltip)\n return;\n const tooltipCandle = this.getTooltipCandle();\n const hasTooltip = tooltipCandle !== null;\n if (!hasTooltip) {\n tooltip.classList.remove('candlestick__tooltip--visible');\n return;\n }\n const isBullish = tooltipCandle.close >= tooltipCandle.open;\n const showVolumeInTooltip = this.showVolume && tooltipCandle.volume !== undefined;\n const tooltipIdx = this.xToIndex(this.mouseX);\n const tooltipX = this.indexToX(tooltipIdx);\n const tooltipLeft = tooltipX + this.candleWidth + 12;\n const tooltipFlip = tooltipLeft + 160 > this.svgWidth;\n const tooltipFinalLeft = tooltipFlip ? tooltipX - this.candleWidth - 170 : tooltipLeft;\n tooltip.style.left = `${Math.max(0, tooltipFinalLeft)}px`;\n tooltip.style.top = `${PADDING.top}px`;\n tooltip.classList.add('candlestick__tooltip--visible');\n let rows = '';\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Date</span><span class=\"candlestick__tooltip-value\">${this.formatDate(tooltipCandle.date)}</span></div>`;\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Open</span><span class=\"candlestick__tooltip-value\">${this.formatPrice(tooltipCandle.open)}</span></div>`;\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">High</span><span class=\"candlestick__tooltip-value\">${this.formatPrice(tooltipCandle.high)}</span></div>`;\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Low</span><span class=\"candlestick__tooltip-value\">${this.formatPrice(tooltipCandle.low)}</span></div>`;\n const closeClass = isBullish ? 'candlestick__tooltip-value--bullish' : 'candlestick__tooltip-value--bearish';\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Close</span><span class=\"candlestick__tooltip-value ${closeClass}\">${this.formatPrice(tooltipCandle.close)}</span></div>`;\n if (showVolumeInTooltip) {\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Volume</span><span class=\"candlestick__tooltip-value\">${tooltipCandle.volume?.toLocaleString() || '0'}</span></div>`;\n }\n tooltip.innerHTML = rows;\n }\n buildGridLines() {\n if (!this.showGrid)\n return '';\n const area = this.chartArea;\n const { min, max } = this.priceRange;\n const ticks = 6;\n const step = (max - min) / ticks;\n let lines = '';\n for (let i = 0; i <= ticks; i++) {\n const price = min + step * i;\n const y = this.priceToY(price);\n lines += `<line class=\"candlestick__grid-line\" x1=\"${area.x}\" y1=\"${y}\" x2=\"${area.x + area.width}\" y2=\"${y}\" />`;\n }\n return lines;\n }\n buildYAxis() {\n const { min, max } = this.priceRange;\n const ticks = 6;\n const step = (max - min) / ticks;\n let labels = '';\n const labelX = this.svgWidth - PADDING.right + 8;\n for (let i = 0; i <= ticks; i++) {\n const price = min + step * i;\n const y = this.priceToY(price);\n labels += `<text class=\"candlestick__axis-label candlestick__axis-label--y\" x=\"${labelX}\" y=\"${y}\">${this.formatPrice(price)}</text>`;\n }\n return labels;\n }\n buildXAxis() {\n const visible = this.visibleData;\n if (visible.length === 0)\n return '';\n const area = this.chartArea;\n const labelY = area.y + area.height + area.volumeHeight + 16;\n const maxLabels = Math.floor(area.width / 80);\n const step = Math.max(1, Math.ceil(visible.length / maxLabels));\n let labels = '';\n for (let i = 0; i < visible.length; i += step) {\n const x = this.indexToX(i);\n labels += `<text class=\"candlestick__axis-label candlestick__axis-label--x\" x=\"${x}\" y=\"${labelY}\">${this.formatDate(visible[i].date)}</text>`;\n }\n return labels;\n }\n buildCandles() {\n const visible = this.visibleData;\n if (visible.length === 0)\n return '';\n const cw = this.candleWidth;\n const halfCw = cw / 2;\n let parts = '';\n for (let i = 0; i < visible.length; i++) {\n const candle = visible[i];\n const isBullish = candle.close >= candle.open;\n const color = isBullish\n ? (this.bullishColor || 'var(--candlestick-bullish)')\n : (this.bearishColor || 'var(--candlestick-bearish)');\n const x = this.indexToX(i);\n const highY = this.priceToY(candle.high);\n const lowY = this.priceToY(candle.low);\n const openY = this.priceToY(candle.open);\n const closeY = this.priceToY(candle.close);\n const bodyTop = Math.min(openY, closeY);\n const bodyHeight = Math.max(1, Math.abs(closeY - openY));\n const shouldAnimate = this.animation && this.animateNext;\n const animDelay = shouldAnimate ? `animation-delay: ${i * 8}ms;` : '';\n const wickAnimClass = shouldAnimate ? ' candlestick__wick--animated' : '';\n const bodyAnimClass = shouldAnimate ? ' candlestick__body--animated' : '';\n // Wick (high to low)\n parts += `<line class=\"candlestick__wick${wickAnimClass}\" x1=\"${x}\" y1=\"${highY}\" x2=\"${x}\" y2=\"${lowY}\" stroke=\"${color}\" style=\"${animDelay}\" />`;\n // Body (open to close)\n parts += `<rect class=\"candlestick__body${bodyAnimClass}\" x=\"${x - halfCw}\" y=\"${bodyTop}\" width=\"${cw}\" height=\"${bodyHeight}\" fill=\"${color}\" stroke=\"${color}\" stroke-width=\"1\" rx=\"1\" style=\"${animDelay}\" data-candle-index=\"${i}\" />`;\n }\n return parts;\n }\n buildVolumeBars() {\n if (!this.showVolume)\n return '';\n const visible = this.visibleData;\n if (visible.length === 0)\n return '';\n const area = this.chartArea;\n const volMax = this.volumeMax;\n const cw = this.candleWidth;\n const halfCw = cw / 2;\n let parts = '';\n for (let i = 0; i < visible.length; i++) {\n const candle = visible[i];\n const vol = candle.volume || 0;\n const isBullish = candle.close >= candle.open;\n const color = isBullish\n ? (this.bullishColor || 'var(--candlestick-bullish)')\n : (this.bearishColor || 'var(--candlestick-bearish)');\n const x = this.indexToX(i);\n const barHeight = (vol / volMax) * area.volumeHeight;\n const barY = area.volumeY + area.volumeHeight - barHeight;\n const shouldAnimate = this.animation && this.animateNext;\n const animDelay = shouldAnimate ? `animation-delay: ${i * 8}ms;` : '';\n const animClass = shouldAnimate ? ' candlestick__volume--animated' : '';\n parts += `<rect class=\"candlestick__volume${animClass}\" x=\"${x - halfCw}\" y=\"${barY}\" width=\"${cw}\" height=\"${barHeight}\" fill=\"${color}\" style=\"${animDelay}\" />`;\n }\n return parts;\n }\n getTooltipCandle() {\n if (this.mouseX < 0)\n return null;\n const area = this.chartArea;\n if (this.mouseX < area.x || this.mouseX > area.x + area.width)\n return null;\n const idx = this.xToIndex(this.mouseX);\n return this.visibleData[idx] || null;\n }\n renderContent() {\n return html /*html*/ `\n <div class=\"candlestick\"\n style=\"height: ${this.svgHeight}px;\"\n @mousemove=${this.handleMouseMove}\n @mouseleave=${this.handleMouseLeave}\n @mousedown=${this.handleMouseDown}\n @mouseup=${this.handleMouseUp}\n @wheel=${this.handleWheel}>\n <svg class=\"candlestick__svg\" viewBox=\"0 0 ${this.svgWidth} ${this.svgHeight}\" preserveAspectRatio=\"none\" role=\"img\" aria-label=\"Candlestick chart with ${this.data.length} data points\">\n <g class=\"candlestick__chart-content\"></g>\n <g class=\"candlestick__crosshair-group\"></g>\n </svg>\n <div class=\"candlestick__tooltip\"></div>\n </div>\n `;\n }\n componentStyles() {\n return css /*css*/ `${cssContent}`;\n }\n });\n return _classThis;\n})();\n\nexport { SniceCandlestick };\n//# sourceMappingURL=snice-candlestick.js.map\n"],"names":["element","property","query","dispatch","ready","dispose","watch","render","styles","html","css"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* snice v4.8.0
|
|
3
|
+
* Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
|
|
4
|
+
* (c) 2024
|
|
5
|
+
* Released under the MIT License.
|
|
6
|
+
*/
|
|
7
|
+
void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-candlestick.min.js");var SniceCandlestick=function(t,e){"use strict";function i(t,e,i,s,a,n){function l(t){if(void 0!==t&&"function"!=typeof t)throw new TypeError("Function expected");return t}for(var o,r=s.kind,h="getter"===r?"get":"setter"===r?"set":"value",c=!e&&t?s.static?t:t.prototype:null,d=e||(c?Object.getOwnPropertyDescriptor(c,s.name):{}),m=!1,u=i.length-1;u>=0;u--){var p={};for(var v in s)p[v]="access"===v?{}:s[v];for(var v in s.access)p.access[v]=s.access[v];p.addInitializer=function(t){if(m)throw new TypeError("Cannot add initializers after decoration has completed");n.push(l(t||null))};var g=(0,i[u])("accessor"===r?{get:d.get,set:d.set}:d[h],p);if("accessor"===r){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(o=l(g.get))&&(d.get=o),(o=l(g.set))&&(d.set=o),(o=l(g.init))&&a.unshift(o)}else(o=l(g))&&("field"===r?a.unshift(o):d[h]=o)}c&&Object.defineProperty(c,s.name,d),m=!0}function s(t,e,i){for(var s=arguments.length>2,a=0;a<e.length;a++)i=s?e[a].call(t,i):e[a].call(t);return s?i:void 0}"function"==typeof SuppressedError&&SuppressedError;const a=16,n=64,l=32,o=8;let r=(()=>{let t,r,h,c,d,m,u,p,v,g,b,k,x,_,y,f,w,C,$,D,E,M,S,T,A,X,Y=[e.element("snice-candlestick")],F=[],H=HTMLElement,L=[],z=[],O=[],V=[],G=[],W=[],P=[],I=[],B=[],j=[],R=[],q=[],N=[],U=[],Z=[],J=[],K=[],Q=[],tt=[],et=[],it=[],st=[],at=[],nt=[],lt=[],ot=[],rt=[],ht=[],ct=[],dt=[],mt=[];return class extends H{static{r=this}constructor(){super(...arguments),this.data=(s(this,L),s(this,z,[])),this.showVolume=(s(this,O),s(this,V,!1)),this.showGrid=(s(this,G),s(this,W,!0)),this.showCrosshair=(s(this,P),s(this,I,!0)),this.bullishColor=(s(this,B),s(this,j,"")),this.bearishColor=(s(this,R),s(this,q,"")),this.timeFormat=(s(this,N),s(this,U,"auto")),this.yAxisFormat=(s(this,Z),s(this,J,"number")),this.zoomEnabled=(s(this,K),s(this,Q,!0)),this.animation=(s(this,tt),s(this,et,!0)),this.containerEl=(s(this,it),s(this,st,void 0)),this.svgEl=(s(this,at),s(this,nt,void 0)),this.chartContentEl=(s(this,lt),s(this,ot,void 0)),this.crosshairGroupEl=(s(this,rt),s(this,ht,void 0)),this.tooltipEl=(s(this,ct),s(this,dt,void 0)),this.viewStart=(s(this,mt),0),this.viewEnd=0,this.mouseX=-1,this.mouseY=-1,this.isDragging=!1,this.dragStartX=0,this.dragStartViewStart=0,this.dragStartViewEnd=0,this.resizeObserver=null,this.svgWidth=600,this.svgHeight=400,this.lastDataLength=0,this.cachedData=[],this.rafId=0,this.animateNext=!0,this.handleMouseMove=t=>{const e=this.svgEl;if(!e)return;const i=e.getScreenCTM();if(i){const e=new DOMPoint(t.clientX,t.clientY).matrixTransform(i.inverse());this.mouseX=e.x,this.mouseY=e.y}if(this.isDragging&&this.zoomEnabled){const e=t.clientX-this.dragStartX,i=this.chartArea,s=this.dragStartViewEnd-this.dragStartViewStart,a=s/i.width,n=Math.round(-e*a);let l=this.dragStartViewStart+n,o=this.dragStartViewEnd+n;l<0&&(l=0,o=s),o>this.cachedData.length&&(o=this.cachedData.length,l=this.cachedData.length-s);const r=Math.max(0,l),h=Math.min(this.cachedData.length,o);if(r!==this.viewStart||h!==this.viewEnd)return this.viewStart=r,this.viewEnd=h,void this.rebuildChart()}if(this.showCrosshair){const t=this.xToIndex(this.mouseX),e=this.visibleData[t];if(e){const t=this.yToPrice(this.mouseY);this.emitCrosshairMove(t,this.formatDate(e.date),this.mouseX,this.mouseY)}}this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=requestAnimationFrame(()=>{this.updateCrosshairDOM(),this.updateTooltipDOM()})},this.handleMouseLeave=()=>{this.mouseX=-1,this.mouseY=-1,this.isDragging=!1,this.updateCrosshairDOM(),this.updateTooltipDOM()},this.handleMouseDown=t=>{this.zoomEnabled&&(this.isDragging=!0,this.dragStartX=t.clientX,this.dragStartViewStart=this.viewStart,this.dragStartViewEnd=this.viewEnd)},this.handleMouseUp=()=>{this.isDragging=!1},this.handleWheel=t=>{if(!this.zoomEnabled)return;t.preventDefault();const e=this.viewEnd-this.viewStart,i=t.deltaY>0?1.1:.9;let s=Math.round(e*i);s=Math.max(10,Math.min(this.cachedData.length,s));const a=this.chartArea,n=(this.mouseX-a.x)/a.width,l=this.viewStart+e*n;let o=Math.round(l-s*n),r=o+s;o<0&&(o=0,r=s),r>this.cachedData.length&&(r=this.cachedData.length,o=this.cachedData.length-s),this.viewStart=Math.max(0,o),this.viewEnd=Math.min(this.cachedData.length,r),this.rebuildChart()}}static{const a="function"==typeof Symbol&&Symbol.metadata?Object.create(H[Symbol.metadata]??null):void 0;h=[e.property({type:Array,attribute:!1})],c=[e.property({type:Boolean})],d=[e.property({type:Boolean})],m=[e.property({type:Boolean})],u=[e.property()],p=[e.property()],v=[e.property()],g=[e.property()],b=[e.property({type:Boolean})],k=[e.property({type:Boolean})],x=[e.query(".candlestick")],_=[e.query(".candlestick__svg")],y=[e.query(".candlestick__chart-content")],f=[e.query(".candlestick__crosshair-group")],w=[e.query(".candlestick__tooltip")],C=[e.dispatch("candle-click",{bubbles:!0,composed:!0})],$=[e.dispatch("candle-hover",{bubbles:!0,composed:!0})],D=[e.dispatch("crosshair-move",{bubbles:!0,composed:!0})],E=[e.ready()],M=[e.dispose()],S=[e.watch("data")],T=[e.watch("showVolume","showGrid","bullishColor","bearishColor","timeFormat","yAxisFormat","animation")],A=[e.render({once:!0})],X=[e.styles()],i(this,null,C,{kind:"method",name:"emitCandleClick",static:!1,private:!1,access:{has:t=>"emitCandleClick"in t,get:t=>t.emitCandleClick},metadata:a},null,L),i(this,null,$,{kind:"method",name:"emitCandleHover",static:!1,private:!1,access:{has:t=>"emitCandleHover"in t,get:t=>t.emitCandleHover},metadata:a},null,L),i(this,null,D,{kind:"method",name:"emitCrosshairMove",static:!1,private:!1,access:{has:t=>"emitCrosshairMove"in t,get:t=>t.emitCrosshairMove},metadata:a},null,L),i(this,null,E,{kind:"method",name:"init",static:!1,private:!1,access:{has:t=>"init"in t,get:t=>t.init},metadata:a},null,L),i(this,null,M,{kind:"method",name:"cleanup",static:!1,private:!1,access:{has:t=>"cleanup"in t,get:t=>t.cleanup},metadata:a},null,L),i(this,null,S,{kind:"method",name:"onDataChange",static:!1,private:!1,access:{has:t=>"onDataChange"in t,get:t=>t.onDataChange},metadata:a},null,L),i(this,null,T,{kind:"method",name:"onDisplayChange",static:!1,private:!1,access:{has:t=>"onDisplayChange"in t,get:t=>t.onDisplayChange},metadata:a},null,L),i(this,null,A,{kind:"method",name:"renderContent",static:!1,private:!1,access:{has:t=>"renderContent"in t,get:t=>t.renderContent},metadata:a},null,L),i(this,null,X,{kind:"method",name:"componentStyles",static:!1,private:!1,access:{has:t=>"componentStyles"in t,get:t=>t.componentStyles},metadata:a},null,L),i(null,null,h,{kind:"field",name:"data",static:!1,private:!1,access:{has:t=>"data"in t,get:t=>t.data,set:(t,e)=>{t.data=e}},metadata:a},z,O),i(null,null,c,{kind:"field",name:"showVolume",static:!1,private:!1,access:{has:t=>"showVolume"in t,get:t=>t.showVolume,set:(t,e)=>{t.showVolume=e}},metadata:a},V,G),i(null,null,d,{kind:"field",name:"showGrid",static:!1,private:!1,access:{has:t=>"showGrid"in t,get:t=>t.showGrid,set:(t,e)=>{t.showGrid=e}},metadata:a},W,P),i(null,null,m,{kind:"field",name:"showCrosshair",static:!1,private:!1,access:{has:t=>"showCrosshair"in t,get:t=>t.showCrosshair,set:(t,e)=>{t.showCrosshair=e}},metadata:a},I,B),i(null,null,u,{kind:"field",name:"bullishColor",static:!1,private:!1,access:{has:t=>"bullishColor"in t,get:t=>t.bullishColor,set:(t,e)=>{t.bullishColor=e}},metadata:a},j,R),i(null,null,p,{kind:"field",name:"bearishColor",static:!1,private:!1,access:{has:t=>"bearishColor"in t,get:t=>t.bearishColor,set:(t,e)=>{t.bearishColor=e}},metadata:a},q,N),i(null,null,v,{kind:"field",name:"timeFormat",static:!1,private:!1,access:{has:t=>"timeFormat"in t,get:t=>t.timeFormat,set:(t,e)=>{t.timeFormat=e}},metadata:a},U,Z),i(null,null,g,{kind:"field",name:"yAxisFormat",static:!1,private:!1,access:{has:t=>"yAxisFormat"in t,get:t=>t.yAxisFormat,set:(t,e)=>{t.yAxisFormat=e}},metadata:a},J,K),i(null,null,b,{kind:"field",name:"zoomEnabled",static:!1,private:!1,access:{has:t=>"zoomEnabled"in t,get:t=>t.zoomEnabled,set:(t,e)=>{t.zoomEnabled=e}},metadata:a},Q,tt),i(null,null,k,{kind:"field",name:"animation",static:!1,private:!1,access:{has:t=>"animation"in t,get:t=>t.animation,set:(t,e)=>{t.animation=e}},metadata:a},et,it),i(null,null,x,{kind:"field",name:"containerEl",static:!1,private:!1,access:{has:t=>"containerEl"in t,get:t=>t.containerEl,set:(t,e)=>{t.containerEl=e}},metadata:a},st,at),i(null,null,_,{kind:"field",name:"svgEl",static:!1,private:!1,access:{has:t=>"svgEl"in t,get:t=>t.svgEl,set:(t,e)=>{t.svgEl=e}},metadata:a},nt,lt),i(null,null,y,{kind:"field",name:"chartContentEl",static:!1,private:!1,access:{has:t=>"chartContentEl"in t,get:t=>t.chartContentEl,set:(t,e)=>{t.chartContentEl=e}},metadata:a},ot,rt),i(null,null,f,{kind:"field",name:"crosshairGroupEl",static:!1,private:!1,access:{has:t=>"crosshairGroupEl"in t,get:t=>t.crosshairGroupEl,set:(t,e)=>{t.crosshairGroupEl=e}},metadata:a},ht,ct),i(null,null,w,{kind:"field",name:"tooltipEl",static:!1,private:!1,access:{has:t=>"tooltipEl"in t,get:t=>t.tooltipEl,set:(t,e)=>{t.tooltipEl=e}},metadata:a},dt,mt),i(null,t={value:r},Y,{kind:"class",name:r.name,metadata:a},null,F),r=t.value,a&&Object.defineProperty(r,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a}),s(r,F)}emitCandleClick(t,e){return{candle:t,index:e}}emitCandleHover(t,e){return{candle:t,index:e}}emitCrosshairMove(t,e,i,s){return{price:t,date:e,x:i,y:s}}init(){this.cachedData=this.data,this.viewEnd=this.data.length,this.viewStart=Math.max(0,this.viewEnd-80),this.resizeObserver=new ResizeObserver(()=>{this.measureSize(),this.rebuildChart()}),this.containerEl&&this.resizeObserver.observe(this.containerEl),this.measureSize(),this.rebuildChart()}cleanup(){this.resizeObserver?.disconnect(),this.rafId&&cancelAnimationFrame(this.rafId)}onDataChange(){this.cachedData=this.data;const t=this.cachedData.length;t>0&&t!==this.lastDataLength&&(this.lastDataLength=t,this.viewEnd=t,this.viewStart=Math.max(0,t-80)),this.animateNext=!0,this.rebuildChart()}onDisplayChange(){this.rebuildChart()}measureSize(){if(!this.containerEl)return;const t=this.containerEl.getBoundingClientRect();t.width>0&&(this.svgWidth=t.width),t.height>0&&(this.svgHeight=t.height)}get visibleData(){return this.cachedData.slice(this.viewStart,this.viewEnd)}get chartArea(){const t=this.showVolume?.2*this.svgHeight:0;return{x:o,y:a,width:this.svgWidth-o-n,height:this.svgHeight-a-l-t,volumeY:this.svgHeight-l-t,volumeHeight:t}}get priceRange(){const t=this.visibleData;if(0===t.length)return{min:0,max:100};let e=1/0,i=-1/0;for(const s of t)s.low<e&&(e=s.low),s.high>i&&(i=s.high);const s=.05*(i-e)||1;return{min:e-s,max:i+s}}get volumeMax(){const t=this.visibleData;return 0===t.length?1:Math.max(...t.map(t=>t.volume||0))||1}get candleWidth(){const t=this.chartArea,e=this.visibleData.length||1,i=.7*(t.width/e);return Math.max(3,Math.min(24,i))}priceToY(t){const{min:e,max:i}=this.priceRange,s=this.chartArea,a=(t-e)/(i-e);return s.y+s.height*(1-a)}yToPrice(t){const{min:e,max:i}=this.priceRange,s=this.chartArea;return e+(1-(t-s.y)/s.height)*(i-e)}indexToX(t){const e=this.chartArea,i=this.visibleData.length||1,s=e.width/i;return e.x+s*t+s/2}xToIndex(t){const e=this.chartArea,i=this.visibleData.length||1,s=e.width/i,a=Math.floor((t-e.x)/s);return Math.max(0,Math.min(i-1,a))}formatPrice(t){switch(this.yAxisFormat){case"currency":return t.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2});case"percent":return t.toFixed(2)+"%";default:return t>=1e3?t.toLocaleString(void 0,{maximumFractionDigits:2}):t.toFixed(2)}}formatDate(t){const e=t instanceof Date?t:new Date(t);if(isNaN(e.getTime()))return String(t);const i=this.timeFormat;return"date"===i?e.toLocaleDateString(void 0,{month:"short",day:"numeric"}):"time"===i?e.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):"datetime"===i?e.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"month"===i?e.toLocaleDateString(void 0,{month:"short",year:"2-digit"}):"year"===i?e.getFullYear().toString():e.toLocaleDateString(void 0,{month:"short",day:"numeric"})}rebuildChart(){if(!this.chartContentEl||!this.svgEl)return void requestAnimationFrame(()=>this.rebuildChart());let t="";this.visibleData.length>0&&(t+=this.buildGridLines(),t+=this.buildYAxis(),t+=this.buildXAxis(),t+=this.buildVolumeBars(),t+=this.buildCandles()),this.chartContentEl.innerHTML=t,this.svgEl.setAttribute("viewBox",`0 0 ${this.svgWidth} ${this.svgHeight}`),this.svgEl.setAttribute("aria-label",`Candlestick chart with ${this.cachedData.length} data points`),this.containerEl&&(this.containerEl.style.height=`${this.svgHeight}px`),this.animateNext=!1,this.updateCrosshairDOM(),this.updateTooltipDOM()}resetZoom(){this.viewStart=0,this.viewEnd=this.cachedData.length,this.rebuildChart()}zoomTo(t,e){this.viewStart=Math.max(0,t),this.viewEnd=Math.min(this.cachedData.length,e),this.rebuildChart()}updateCrosshairDOM(){const t=this.crosshairGroupEl;if(!t)return;if(!this.showCrosshair||this.mouseX<0||this.mouseY<0)return void(t.innerHTML="");const e=this.chartArea,i=e.y+e.height+e.volumeHeight;if(!(this.mouseX>=e.x&&this.mouseX<=e.x+e.width&&this.mouseY>=e.y&&this.mouseY<=i))return void(t.innerHTML="");const s=this.yToPrice(this.mouseY),a=this.xToIndex(this.mouseX),l=this.visibleData[a],o=this.indexToX(a);let r="";r+=`<line class="candlestick__crosshair-h" x1="${e.x}" y1="${this.mouseY}" x2="${e.x+e.width}" y2="${this.mouseY}" />`,r+=`<line class="candlestick__crosshair-v" x1="${o}" y1="${e.y}" x2="${o}" y2="${i}" />`;const h=this.formatPrice(s),c=this.svgWidth-n+4;if(r+=`<rect class="candlestick__crosshair-label-bg" x="${c}" y="${this.mouseY-9}" width="${n-8}" height="18" rx="2" />`,r+=`<text class="candlestick__crosshair-label" x="${c+4}" y="${this.mouseY+4}">${h}</text>`,l){const t=i+4;r+=`<rect class="candlestick__crosshair-label-bg" x="${o-36}" y="${t}" width="72" height="18" rx="2" />`,r+=`<text class="candlestick__crosshair-label" x="${o}" y="${t+13}" text-anchor="middle">${this.formatDate(l.date)}</text>`}t.innerHTML=r}updateTooltipDOM(){const t=this.tooltipEl;if(!t)return;const e=this.getTooltipCandle();if(!(null!==e))return void t.classList.remove("candlestick__tooltip--visible");const i=e.close>=e.open,s=this.showVolume&&void 0!==e.volume,n=this.xToIndex(this.mouseX),l=this.indexToX(n),o=l+this.candleWidth+12,r=o+160>this.svgWidth?l-this.candleWidth-170:o;t.style.left=`${Math.max(0,r)}px`,t.style.top=`${a}px`,t.classList.add("candlestick__tooltip--visible");let h="";h+=`<div class="candlestick__tooltip-row"><span class="candlestick__tooltip-label">Date</span><span class="candlestick__tooltip-value">${this.formatDate(e.date)}</span></div>`,h+=`<div class="candlestick__tooltip-row"><span class="candlestick__tooltip-label">Open</span><span class="candlestick__tooltip-value">${this.formatPrice(e.open)}</span></div>`,h+=`<div class="candlestick__tooltip-row"><span class="candlestick__tooltip-label">High</span><span class="candlestick__tooltip-value">${this.formatPrice(e.high)}</span></div>`,h+=`<div class="candlestick__tooltip-row"><span class="candlestick__tooltip-label">Low</span><span class="candlestick__tooltip-value">${this.formatPrice(e.low)}</span></div>`;h+=`<div class="candlestick__tooltip-row"><span class="candlestick__tooltip-label">Close</span><span class="candlestick__tooltip-value ${i?"candlestick__tooltip-value--bullish":"candlestick__tooltip-value--bearish"}">${this.formatPrice(e.close)}</span></div>`,s&&(h+=`<div class="candlestick__tooltip-row"><span class="candlestick__tooltip-label">Volume</span><span class="candlestick__tooltip-value">${e.volume?.toLocaleString()||"0"}</span></div>`),t.innerHTML=h}buildGridLines(){if(!this.showGrid)return"";const t=this.chartArea,{min:e,max:i}=this.priceRange,s=(i-e)/6;let a="";for(let i=0;i<=6;i++){const n=e+s*i,l=this.priceToY(n);a+=`<line class="candlestick__grid-line" x1="${t.x}" y1="${l}" x2="${t.x+t.width}" y2="${l}" />`}return a}buildYAxis(){const{min:t,max:e}=this.priceRange,i=(e-t)/6;let s="";const a=this.svgWidth-n+8;for(let e=0;e<=6;e++){const n=t+i*e;s+=`<text class="candlestick__axis-label candlestick__axis-label--y" x="${a}" y="${this.priceToY(n)}">${this.formatPrice(n)}</text>`}return s}buildXAxis(){const t=this.visibleData;if(0===t.length)return"";const e=this.chartArea,i=e.y+e.height+e.volumeHeight+16,s=Math.floor(e.width/80),a=Math.max(1,Math.ceil(t.length/s));let n="";for(let e=0;e<t.length;e+=a){n+=`<text class="candlestick__axis-label candlestick__axis-label--x" x="${this.indexToX(e)}" y="${i}">${this.formatDate(t[e].date)}</text>`}return n}buildCandles(){const t=this.visibleData;if(0===t.length)return"";const e=this.candleWidth,i=e/2;let s="";for(let a=0;a<t.length;a++){const n=t[a],l=n.close>=n.open?this.bullishColor||"var(--candlestick-bullish)":this.bearishColor||"var(--candlestick-bearish)",o=this.indexToX(a),r=this.priceToY(n.high),h=this.priceToY(n.low),c=this.priceToY(n.open),d=this.priceToY(n.close),m=Math.min(c,d),u=Math.max(1,Math.abs(d-c)),p=this.animation&&this.animateNext,v=p?`animation-delay: ${8*a}ms;`:"";s+=`<line class="candlestick__wick${p?" candlestick__wick--animated":""}" x1="${o}" y1="${r}" x2="${o}" y2="${h}" stroke="${l}" style="${v}" />`,s+=`<rect class="candlestick__body${p?" candlestick__body--animated":""}" x="${o-i}" y="${m}" width="${e}" height="${u}" fill="${l}" stroke="${l}" stroke-width="1" rx="1" style="${v}" data-candle-index="${a}" />`}return s}buildVolumeBars(){if(!this.showVolume)return"";const t=this.visibleData;if(0===t.length)return"";const e=this.chartArea,i=this.volumeMax,s=this.candleWidth,a=s/2;let n="";for(let l=0;l<t.length;l++){const o=t[l],r=o.volume||0,h=o.close>=o.open?this.bullishColor||"var(--candlestick-bullish)":this.bearishColor||"var(--candlestick-bearish)",c=this.indexToX(l),d=r/i*e.volumeHeight,m=e.volumeY+e.volumeHeight-d,u=this.animation&&this.animateNext;n+=`<rect class="candlestick__volume${u?" candlestick__volume--animated":""}" x="${c-a}" y="${m}" width="${s}" height="${d}" fill="${h}" style="${u?`animation-delay: ${8*l}ms;`:""}" />`}return n}getTooltipCandle(){if(this.mouseX<0)return null;const t=this.chartArea;if(this.mouseX<t.x||this.mouseX>t.x+t.width)return null;const e=this.xToIndex(this.mouseX);return this.visibleData[e]||null}renderContent(){return e.html`
|
|
8
|
+
<div class="candlestick"
|
|
9
|
+
style="height: ${this.svgHeight}px;"
|
|
10
|
+
@mousemove=${this.handleMouseMove}
|
|
11
|
+
@mouseleave=${this.handleMouseLeave}
|
|
12
|
+
@mousedown=${this.handleMouseDown}
|
|
13
|
+
@mouseup=${this.handleMouseUp}
|
|
14
|
+
@wheel=${this.handleWheel}>
|
|
15
|
+
<svg class="candlestick__svg" viewBox="0 0 ${this.svgWidth} ${this.svgHeight}" preserveAspectRatio="none" role="img" aria-label="Candlestick chart with ${this.data.length} data points">
|
|
16
|
+
<g class="candlestick__chart-content"></g>
|
|
17
|
+
<g class="candlestick__crosshair-group"></g>
|
|
18
|
+
</svg>
|
|
19
|
+
<div class="candlestick__tooltip"></div>
|
|
20
|
+
</div>
|
|
21
|
+
`}componentStyles(){return e.css`${":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint;width:100%;--candlestick-bg:var(--snice-color-background, rgb(255 255 255));--candlestick-text:var(--snice-color-text, rgb(23 23 23));--candlestick-text-secondary:var(--snice-color-text-secondary, rgb(82 82 82));--candlestick-border:var(--snice-color-border, rgb(226 226 226));--candlestick-grid:var(--snice-color-border, rgb(226 226 226));--candlestick-bullish:var(--snice-candlestick-bullish, rgb(22 163 74));--candlestick-bearish:var(--snice-candlestick-bearish, rgb(220 38 38))}.candlestick{position:relative;background:var(--candlestick-bg);overflow:hidden;user-select:none}.candlestick__svg{display:block;width:100%;height:100%}.candlestick__grid-line{stroke:var(--candlestick-grid);stroke-width:1px;stroke-dasharray:2 4;opacity:.5}.candlestick__axis-label{fill:var(--candlestick-text-secondary);font-size:.6875rem;font-family:inherit}.candlestick__axis-label--x{text-anchor:middle;dominant-baseline:hanging}.candlestick__axis-label--y{text-anchor:end;dominant-baseline:central}.candlestick__body{cursor:pointer;transition:opacity var(--snice-transition-fast, 150ms) ease}.candlestick__body:hover{opacity:.8}.candlestick__wick{stroke-width:1px;pointer-events:none}.candlestick__volume{opacity:.3}.candlestick__crosshair-h,.candlestick__crosshair-v{stroke:var(--candlestick-text-secondary);stroke-width:1px;stroke-dasharray:4 3;pointer-events:none;opacity:.6}.candlestick__crosshair-label{fill:var(--candlestick-text);font-size:.625rem;font-family:inherit;pointer-events:none}.candlestick__crosshair-label-bg{fill:var(--candlestick-bg);stroke:var(--candlestick-border);stroke-width:1px;pointer-events:none}.candlestick__tooltip{position:absolute;background:var(--candlestick-bg);border:1px solid var(--candlestick-border);border-radius:4px;padding:var(--snice-spacing-xs,.5rem);font-size:.75rem;color:var(--candlestick-text);pointer-events:none;z-index:10;box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1));white-space:nowrap;opacity:0;transition:opacity var(--snice-transition-fast, 150ms) ease}.candlestick__tooltip--visible{opacity:1}.candlestick__tooltip-row{display:flex;justify-content:space-between;gap:var(--snice-spacing-sm,.75rem);line-height:var(--snice-line-height-normal, 1.5)}.candlestick__tooltip-label{color:var(--candlestick-text-secondary)}.candlestick__tooltip-value{font-weight:var(--snice-font-weight-semibold,600)}.candlestick__tooltip-value--bullish{color:var(--candlestick-bullish)}.candlestick__tooltip-value--bearish{color:var(--candlestick-bearish)}.candlestick__body--animated,.candlestick__wick--animated{animation:.4s ease-out both candlestick-appear}.candlestick__volume--animated{animation:.4s ease-out both volume-appear}@keyframes candlestick-appear{from{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes volume-appear{from{opacity:0}to{opacity:.3}}"}`}},r})();return t.SniceCandlestick=r,t}({},Snice);
|
|
22
|
+
//# sourceMappingURL=snice-candlestick.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snice-candlestick.min.js","sources":["../../../node_modules/tslib/tslib.es6.mjs","../../components/candlestick/snice-candlestick.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { __runInitializers, __esDecorate } from 'tslib';\nimport { element, property, query, dispatch, ready, dispose, watch, render, styles, html, css } from 'snice';\n\nvar cssContent = \":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint;width:100%;--candlestick-bg:var(--snice-color-background, rgb(255 255 255));--candlestick-text:var(--snice-color-text, rgb(23 23 23));--candlestick-text-secondary:var(--snice-color-text-secondary, rgb(82 82 82));--candlestick-border:var(--snice-color-border, rgb(226 226 226));--candlestick-grid:var(--snice-color-border, rgb(226 226 226));--candlestick-bullish:var(--snice-candlestick-bullish, rgb(22 163 74));--candlestick-bearish:var(--snice-candlestick-bearish, rgb(220 38 38))}.candlestick{position:relative;background:var(--candlestick-bg);overflow:hidden;user-select:none}.candlestick__svg{display:block;width:100%;height:100%}.candlestick__grid-line{stroke:var(--candlestick-grid);stroke-width:1px;stroke-dasharray:2 4;opacity:.5}.candlestick__axis-label{fill:var(--candlestick-text-secondary);font-size:.6875rem;font-family:inherit}.candlestick__axis-label--x{text-anchor:middle;dominant-baseline:hanging}.candlestick__axis-label--y{text-anchor:end;dominant-baseline:central}.candlestick__body{cursor:pointer;transition:opacity var(--snice-transition-fast, 150ms) ease}.candlestick__body:hover{opacity:.8}.candlestick__wick{stroke-width:1px;pointer-events:none}.candlestick__volume{opacity:.3}.candlestick__crosshair-h,.candlestick__crosshair-v{stroke:var(--candlestick-text-secondary);stroke-width:1px;stroke-dasharray:4 3;pointer-events:none;opacity:.6}.candlestick__crosshair-label{fill:var(--candlestick-text);font-size:.625rem;font-family:inherit;pointer-events:none}.candlestick__crosshair-label-bg{fill:var(--candlestick-bg);stroke:var(--candlestick-border);stroke-width:1px;pointer-events:none}.candlestick__tooltip{position:absolute;background:var(--candlestick-bg);border:1px solid var(--candlestick-border);border-radius:4px;padding:var(--snice-spacing-xs,.5rem);font-size:.75rem;color:var(--candlestick-text);pointer-events:none;z-index:10;box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1));white-space:nowrap;opacity:0;transition:opacity var(--snice-transition-fast, 150ms) ease}.candlestick__tooltip--visible{opacity:1}.candlestick__tooltip-row{display:flex;justify-content:space-between;gap:var(--snice-spacing-sm,.75rem);line-height:var(--snice-line-height-normal, 1.5)}.candlestick__tooltip-label{color:var(--candlestick-text-secondary)}.candlestick__tooltip-value{font-weight:var(--snice-font-weight-semibold,600)}.candlestick__tooltip-value--bullish{color:var(--candlestick-bullish)}.candlestick__tooltip-value--bearish{color:var(--candlestick-bearish)}.candlestick__body--animated,.candlestick__wick--animated{animation:.4s ease-out both candlestick-appear}.candlestick__volume--animated{animation:.4s ease-out both volume-appear}@keyframes candlestick-appear{from{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes volume-appear{from{opacity:0}to{opacity:.3}}\";\n\nconst PADDING = { top: 16, right: 64, bottom: 32, left: 8 };\nconst VOLUME_HEIGHT_RATIO = 0.2;\nconst MIN_CANDLE_WIDTH = 3;\nconst MAX_CANDLE_WIDTH = 24;\nlet SniceCandlestick = (() => {\n let _classDecorators = [element('snice-candlestick')];\n let _classDescriptor;\n let _classExtraInitializers = [];\n let _classThis;\n let _classSuper = HTMLElement;\n let _instanceExtraInitializers = [];\n let _data_decorators;\n let _data_initializers = [];\n let _data_extraInitializers = [];\n let _showVolume_decorators;\n let _showVolume_initializers = [];\n let _showVolume_extraInitializers = [];\n let _showGrid_decorators;\n let _showGrid_initializers = [];\n let _showGrid_extraInitializers = [];\n let _showCrosshair_decorators;\n let _showCrosshair_initializers = [];\n let _showCrosshair_extraInitializers = [];\n let _bullishColor_decorators;\n let _bullishColor_initializers = [];\n let _bullishColor_extraInitializers = [];\n let _bearishColor_decorators;\n let _bearishColor_initializers = [];\n let _bearishColor_extraInitializers = [];\n let _timeFormat_decorators;\n let _timeFormat_initializers = [];\n let _timeFormat_extraInitializers = [];\n let _yAxisFormat_decorators;\n let _yAxisFormat_initializers = [];\n let _yAxisFormat_extraInitializers = [];\n let _zoomEnabled_decorators;\n let _zoomEnabled_initializers = [];\n let _zoomEnabled_extraInitializers = [];\n let _animation_decorators;\n let _animation_initializers = [];\n let _animation_extraInitializers = [];\n let _containerEl_decorators;\n let _containerEl_initializers = [];\n let _containerEl_extraInitializers = [];\n let _svgEl_decorators;\n let _svgEl_initializers = [];\n let _svgEl_extraInitializers = [];\n let _chartContentEl_decorators;\n let _chartContentEl_initializers = [];\n let _chartContentEl_extraInitializers = [];\n let _crosshairGroupEl_decorators;\n let _crosshairGroupEl_initializers = [];\n let _crosshairGroupEl_extraInitializers = [];\n let _tooltipEl_decorators;\n let _tooltipEl_initializers = [];\n let _tooltipEl_extraInitializers = [];\n let _emitCandleClick_decorators;\n let _emitCandleHover_decorators;\n let _emitCrosshairMove_decorators;\n let _init_decorators;\n let _cleanup_decorators;\n let _onDataChange_decorators;\n let _onDisplayChange_decorators;\n let _renderContent_decorators;\n let _componentStyles_decorators;\n (class extends _classSuper {\n static { _classThis = this; }\n constructor() {\n super(...arguments);\n this.data = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _data_initializers, []));\n this.showVolume = (__runInitializers(this, _data_extraInitializers), __runInitializers(this, _showVolume_initializers, false));\n this.showGrid = (__runInitializers(this, _showVolume_extraInitializers), __runInitializers(this, _showGrid_initializers, true));\n this.showCrosshair = (__runInitializers(this, _showGrid_extraInitializers), __runInitializers(this, _showCrosshair_initializers, true));\n this.bullishColor = (__runInitializers(this, _showCrosshair_extraInitializers), __runInitializers(this, _bullishColor_initializers, ''));\n this.bearishColor = (__runInitializers(this, _bullishColor_extraInitializers), __runInitializers(this, _bearishColor_initializers, ''));\n this.timeFormat = (__runInitializers(this, _bearishColor_extraInitializers), __runInitializers(this, _timeFormat_initializers, 'auto'));\n this.yAxisFormat = (__runInitializers(this, _timeFormat_extraInitializers), __runInitializers(this, _yAxisFormat_initializers, 'number'));\n this.zoomEnabled = (__runInitializers(this, _yAxisFormat_extraInitializers), __runInitializers(this, _zoomEnabled_initializers, true));\n this.animation = (__runInitializers(this, _zoomEnabled_extraInitializers), __runInitializers(this, _animation_initializers, true));\n this.containerEl = (__runInitializers(this, _animation_extraInitializers), __runInitializers(this, _containerEl_initializers, void 0));\n this.svgEl = (__runInitializers(this, _containerEl_extraInitializers), __runInitializers(this, _svgEl_initializers, void 0));\n this.chartContentEl = (__runInitializers(this, _svgEl_extraInitializers), __runInitializers(this, _chartContentEl_initializers, void 0));\n this.crosshairGroupEl = (__runInitializers(this, _chartContentEl_extraInitializers), __runInitializers(this, _crosshairGroupEl_initializers, void 0));\n this.tooltipEl = (__runInitializers(this, _crosshairGroupEl_extraInitializers), __runInitializers(this, _tooltipEl_initializers, void 0));\n // Internal state — plain fields, no @property\n this.viewStart = (__runInitializers(this, _tooltipEl_extraInitializers), 0);\n this.viewEnd = 0;\n this.mouseX = -1;\n this.mouseY = -1;\n this.isDragging = false;\n this.dragStartX = 0;\n this.dragStartViewStart = 0;\n this.dragStartViewEnd = 0;\n this.resizeObserver = null;\n this.svgWidth = 600;\n this.svgHeight = 400;\n this.lastDataLength = 0;\n this.cachedData = [];\n this.rafId = 0;\n this.animateNext = true;\n this.handleMouseMove = (e) => {\n const svg = this.svgEl;\n if (!svg)\n return;\n const ctm = svg.getScreenCTM();\n if (ctm) {\n const pt = new DOMPoint(e.clientX, e.clientY).matrixTransform(ctm.inverse());\n this.mouseX = pt.x;\n this.mouseY = pt.y;\n }\n if (this.isDragging && this.zoomEnabled) {\n const dx = e.clientX - this.dragStartX;\n const area = this.chartArea;\n const viewSize = this.dragStartViewEnd - this.dragStartViewStart;\n const candlesPerPx = viewSize / area.width;\n const shift = Math.round(-dx * candlesPerPx);\n let newStart = this.dragStartViewStart + shift;\n let newEnd = this.dragStartViewEnd + shift;\n if (newStart < 0) {\n newStart = 0;\n newEnd = viewSize;\n }\n if (newEnd > this.cachedData.length) {\n newEnd = this.cachedData.length;\n newStart = this.cachedData.length - viewSize;\n }\n const vs = Math.max(0, newStart);\n const ve = Math.min(this.cachedData.length, newEnd);\n if (vs !== this.viewStart || ve !== this.viewEnd) {\n this.viewStart = vs;\n this.viewEnd = ve;\n this.rebuildChart();\n return;\n }\n }\n if (this.showCrosshair) {\n const idx = this.xToIndex(this.mouseX);\n const candle = this.visibleData[idx];\n if (candle) {\n const price = this.yToPrice(this.mouseY);\n this.emitCrosshairMove(price, this.formatDate(candle.date), this.mouseX, this.mouseY);\n }\n }\n // Only update crosshair + tooltip via direct DOM manipulation — no re-render\n if (this.rafId)\n cancelAnimationFrame(this.rafId);\n this.rafId = requestAnimationFrame(() => {\n this.updateCrosshairDOM();\n this.updateTooltipDOM();\n });\n };\n this.handleMouseLeave = () => {\n this.mouseX = -1;\n this.mouseY = -1;\n this.isDragging = false;\n this.updateCrosshairDOM();\n this.updateTooltipDOM();\n };\n this.handleMouseDown = (e) => {\n if (!this.zoomEnabled)\n return;\n this.isDragging = true;\n this.dragStartX = e.clientX;\n this.dragStartViewStart = this.viewStart;\n this.dragStartViewEnd = this.viewEnd;\n };\n this.handleMouseUp = () => {\n this.isDragging = false;\n };\n this.handleWheel = (e) => {\n if (!this.zoomEnabled)\n return;\n e.preventDefault();\n const viewSize = this.viewEnd - this.viewStart;\n const zoomFactor = e.deltaY > 0 ? 1.1 : 0.9;\n let newSize = Math.round(viewSize * zoomFactor);\n newSize = Math.max(10, Math.min(this.cachedData.length, newSize));\n const area = this.chartArea;\n const mouseRatio = (this.mouseX - area.x) / area.width;\n const center = this.viewStart + viewSize * mouseRatio;\n let newStart = Math.round(center - newSize * mouseRatio);\n let newEnd = newStart + newSize;\n if (newStart < 0) {\n newStart = 0;\n newEnd = newSize;\n }\n if (newEnd > this.cachedData.length) {\n newEnd = this.cachedData.length;\n newStart = this.cachedData.length - newSize;\n }\n this.viewStart = Math.max(0, newStart);\n this.viewEnd = Math.min(this.cachedData.length, newEnd);\n this.rebuildChart();\n };\n }\n static {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;\n _data_decorators = [property({ type: Array, attribute: false })];\n _showVolume_decorators = [property({ type: Boolean })];\n _showGrid_decorators = [property({ type: Boolean })];\n _showCrosshair_decorators = [property({ type: Boolean })];\n _bullishColor_decorators = [property()];\n _bearishColor_decorators = [property()];\n _timeFormat_decorators = [property()];\n _yAxisFormat_decorators = [property()];\n _zoomEnabled_decorators = [property({ type: Boolean })];\n _animation_decorators = [property({ type: Boolean })];\n _containerEl_decorators = [query('.candlestick')];\n _svgEl_decorators = [query('.candlestick__svg')];\n _chartContentEl_decorators = [query('.candlestick__chart-content')];\n _crosshairGroupEl_decorators = [query('.candlestick__crosshair-group')];\n _tooltipEl_decorators = [query('.candlestick__tooltip')];\n _emitCandleClick_decorators = [dispatch('candle-click', { bubbles: true, composed: true })];\n _emitCandleHover_decorators = [dispatch('candle-hover', { bubbles: true, composed: true })];\n _emitCrosshairMove_decorators = [dispatch('crosshair-move', { bubbles: true, composed: true })];\n _init_decorators = [ready()];\n _cleanup_decorators = [dispose()];\n _onDataChange_decorators = [watch('data')];\n _onDisplayChange_decorators = [watch('showVolume', 'showGrid', 'bullishColor', 'bearishColor', 'timeFormat', 'yAxisFormat', 'animation')];\n _renderContent_decorators = [render({ once: true })];\n _componentStyles_decorators = [styles()];\n __esDecorate(this, null, _emitCandleClick_decorators, { kind: \"method\", name: \"emitCandleClick\", static: false, private: false, access: { has: obj => \"emitCandleClick\" in obj, get: obj => obj.emitCandleClick }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitCandleHover_decorators, { kind: \"method\", name: \"emitCandleHover\", static: false, private: false, access: { has: obj => \"emitCandleHover\" in obj, get: obj => obj.emitCandleHover }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitCrosshairMove_decorators, { kind: \"method\", name: \"emitCrosshairMove\", static: false, private: false, access: { has: obj => \"emitCrosshairMove\" in obj, get: obj => obj.emitCrosshairMove }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _init_decorators, { kind: \"method\", name: \"init\", static: false, private: false, access: { has: obj => \"init\" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _cleanup_decorators, { kind: \"method\", name: \"cleanup\", static: false, private: false, access: { has: obj => \"cleanup\" in obj, get: obj => obj.cleanup }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _onDataChange_decorators, { kind: \"method\", name: \"onDataChange\", static: false, private: false, access: { has: obj => \"onDataChange\" in obj, get: obj => obj.onDataChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _onDisplayChange_decorators, { kind: \"method\", name: \"onDisplayChange\", static: false, private: false, access: { has: obj => \"onDisplayChange\" in obj, get: obj => obj.onDisplayChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _renderContent_decorators, { kind: \"method\", name: \"renderContent\", static: false, private: false, access: { has: obj => \"renderContent\" in obj, get: obj => obj.renderContent }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _componentStyles_decorators, { kind: \"method\", name: \"componentStyles\", static: false, private: false, access: { has: obj => \"componentStyles\" in obj, get: obj => obj.componentStyles }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(null, null, _data_decorators, { kind: \"field\", name: \"data\", static: false, private: false, access: { has: obj => \"data\" in obj, get: obj => obj.data, set: (obj, value) => { obj.data = value; } }, metadata: _metadata }, _data_initializers, _data_extraInitializers);\n __esDecorate(null, null, _showVolume_decorators, { kind: \"field\", name: \"showVolume\", static: false, private: false, access: { has: obj => \"showVolume\" in obj, get: obj => obj.showVolume, set: (obj, value) => { obj.showVolume = value; } }, metadata: _metadata }, _showVolume_initializers, _showVolume_extraInitializers);\n __esDecorate(null, null, _showGrid_decorators, { kind: \"field\", name: \"showGrid\", static: false, private: false, access: { has: obj => \"showGrid\" in obj, get: obj => obj.showGrid, set: (obj, value) => { obj.showGrid = value; } }, metadata: _metadata }, _showGrid_initializers, _showGrid_extraInitializers);\n __esDecorate(null, null, _showCrosshair_decorators, { kind: \"field\", name: \"showCrosshair\", static: false, private: false, access: { has: obj => \"showCrosshair\" in obj, get: obj => obj.showCrosshair, set: (obj, value) => { obj.showCrosshair = value; } }, metadata: _metadata }, _showCrosshair_initializers, _showCrosshair_extraInitializers);\n __esDecorate(null, null, _bullishColor_decorators, { kind: \"field\", name: \"bullishColor\", static: false, private: false, access: { has: obj => \"bullishColor\" in obj, get: obj => obj.bullishColor, set: (obj, value) => { obj.bullishColor = value; } }, metadata: _metadata }, _bullishColor_initializers, _bullishColor_extraInitializers);\n __esDecorate(null, null, _bearishColor_decorators, { kind: \"field\", name: \"bearishColor\", static: false, private: false, access: { has: obj => \"bearishColor\" in obj, get: obj => obj.bearishColor, set: (obj, value) => { obj.bearishColor = value; } }, metadata: _metadata }, _bearishColor_initializers, _bearishColor_extraInitializers);\n __esDecorate(null, null, _timeFormat_decorators, { kind: \"field\", name: \"timeFormat\", static: false, private: false, access: { has: obj => \"timeFormat\" in obj, get: obj => obj.timeFormat, set: (obj, value) => { obj.timeFormat = value; } }, metadata: _metadata }, _timeFormat_initializers, _timeFormat_extraInitializers);\n __esDecorate(null, null, _yAxisFormat_decorators, { kind: \"field\", name: \"yAxisFormat\", static: false, private: false, access: { has: obj => \"yAxisFormat\" in obj, get: obj => obj.yAxisFormat, set: (obj, value) => { obj.yAxisFormat = value; } }, metadata: _metadata }, _yAxisFormat_initializers, _yAxisFormat_extraInitializers);\n __esDecorate(null, null, _zoomEnabled_decorators, { kind: \"field\", name: \"zoomEnabled\", static: false, private: false, access: { has: obj => \"zoomEnabled\" in obj, get: obj => obj.zoomEnabled, set: (obj, value) => { obj.zoomEnabled = value; } }, metadata: _metadata }, _zoomEnabled_initializers, _zoomEnabled_extraInitializers);\n __esDecorate(null, null, _animation_decorators, { kind: \"field\", name: \"animation\", static: false, private: false, access: { has: obj => \"animation\" in obj, get: obj => obj.animation, set: (obj, value) => { obj.animation = value; } }, metadata: _metadata }, _animation_initializers, _animation_extraInitializers);\n __esDecorate(null, null, _containerEl_decorators, { kind: \"field\", name: \"containerEl\", static: false, private: false, access: { has: obj => \"containerEl\" in obj, get: obj => obj.containerEl, set: (obj, value) => { obj.containerEl = value; } }, metadata: _metadata }, _containerEl_initializers, _containerEl_extraInitializers);\n __esDecorate(null, null, _svgEl_decorators, { kind: \"field\", name: \"svgEl\", static: false, private: false, access: { has: obj => \"svgEl\" in obj, get: obj => obj.svgEl, set: (obj, value) => { obj.svgEl = value; } }, metadata: _metadata }, _svgEl_initializers, _svgEl_extraInitializers);\n __esDecorate(null, null, _chartContentEl_decorators, { kind: \"field\", name: \"chartContentEl\", static: false, private: false, access: { has: obj => \"chartContentEl\" in obj, get: obj => obj.chartContentEl, set: (obj, value) => { obj.chartContentEl = value; } }, metadata: _metadata }, _chartContentEl_initializers, _chartContentEl_extraInitializers);\n __esDecorate(null, null, _crosshairGroupEl_decorators, { kind: \"field\", name: \"crosshairGroupEl\", static: false, private: false, access: { has: obj => \"crosshairGroupEl\" in obj, get: obj => obj.crosshairGroupEl, set: (obj, value) => { obj.crosshairGroupEl = value; } }, metadata: _metadata }, _crosshairGroupEl_initializers, _crosshairGroupEl_extraInitializers);\n __esDecorate(null, null, _tooltipEl_decorators, { kind: \"field\", name: \"tooltipEl\", static: false, private: false, access: { has: obj => \"tooltipEl\" in obj, get: obj => obj.tooltipEl, set: (obj, value) => { obj.tooltipEl = value; } }, metadata: _metadata }, _tooltipEl_initializers, _tooltipEl_extraInitializers);\n __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: \"class\", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);\n _classThis = _classDescriptor.value;\n if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n __runInitializers(_classThis, _classExtraInitializers);\n }\n emitCandleClick(candle, index) {\n return { candle, index };\n }\n emitCandleHover(candle, index) {\n return { candle, index };\n }\n emitCrosshairMove(price, date, x, y) {\n return { price, date, x, y };\n }\n init() {\n this.cachedData = this.data;\n this.viewEnd = this.data.length;\n this.viewStart = Math.max(0, this.viewEnd - 80);\n this.resizeObserver = new ResizeObserver(() => {\n this.measureSize();\n this.rebuildChart();\n });\n if (this.containerEl) {\n this.resizeObserver.observe(this.containerEl);\n }\n this.measureSize();\n this.rebuildChart();\n }\n cleanup() {\n this.resizeObserver?.disconnect();\n if (this.rafId)\n cancelAnimationFrame(this.rafId);\n }\n onDataChange() {\n this.cachedData = this.data;\n const dataLen = this.cachedData.length;\n if (dataLen > 0 && dataLen !== this.lastDataLength) {\n this.lastDataLength = dataLen;\n this.viewEnd = dataLen;\n this.viewStart = Math.max(0, dataLen - 80);\n }\n this.animateNext = true;\n this.rebuildChart();\n }\n onDisplayChange() {\n this.rebuildChart();\n }\n measureSize() {\n if (!this.containerEl)\n return;\n const rect = this.containerEl.getBoundingClientRect();\n if (rect.width > 0)\n this.svgWidth = rect.width;\n if (rect.height > 0)\n this.svgHeight = rect.height;\n }\n get visibleData() {\n return this.cachedData.slice(this.viewStart, this.viewEnd);\n }\n get chartArea() {\n const volumeSpace = this.showVolume ? this.svgHeight * VOLUME_HEIGHT_RATIO : 0;\n return {\n x: PADDING.left,\n y: PADDING.top,\n width: this.svgWidth - PADDING.left - PADDING.right,\n height: this.svgHeight - PADDING.top - PADDING.bottom - volumeSpace,\n volumeY: this.svgHeight - PADDING.bottom - volumeSpace,\n volumeHeight: volumeSpace\n };\n }\n get priceRange() {\n const visible = this.visibleData;\n if (visible.length === 0)\n return { min: 0, max: 100 };\n let min = Infinity;\n let max = -Infinity;\n for (const d of visible) {\n if (d.low < min)\n min = d.low;\n if (d.high > max)\n max = d.high;\n }\n const padding = (max - min) * 0.05 || 1;\n return { min: min - padding, max: max + padding };\n }\n get volumeMax() {\n const visible = this.visibleData;\n if (visible.length === 0)\n return 1;\n return Math.max(...visible.map(d => d.volume || 0)) || 1;\n }\n get candleWidth() {\n const area = this.chartArea;\n const count = this.visibleData.length || 1;\n const totalWidth = area.width / count;\n const bodyWidth = totalWidth * 0.7;\n return Math.max(MIN_CANDLE_WIDTH, Math.min(MAX_CANDLE_WIDTH, bodyWidth));\n }\n priceToY(price) {\n const { min, max } = this.priceRange;\n const area = this.chartArea;\n const ratio = (price - min) / (max - min);\n return area.y + area.height * (1 - ratio);\n }\n yToPrice(y) {\n const { min, max } = this.priceRange;\n const area = this.chartArea;\n const ratio = 1 - (y - area.y) / area.height;\n return min + ratio * (max - min);\n }\n indexToX(index) {\n const area = this.chartArea;\n const count = this.visibleData.length || 1;\n const step = area.width / count;\n return area.x + step * index + step / 2;\n }\n xToIndex(x) {\n const area = this.chartArea;\n const count = this.visibleData.length || 1;\n const step = area.width / count;\n const idx = Math.floor((x - area.x) / step);\n return Math.max(0, Math.min(count - 1, idx));\n }\n formatPrice(price) {\n switch (this.yAxisFormat) {\n case 'currency':\n return price.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n case 'percent':\n return price.toFixed(2) + '%';\n default:\n return price >= 1000 ? price.toLocaleString(undefined, { maximumFractionDigits: 2 }) : price.toFixed(2);\n }\n }\n formatDate(dateVal) {\n const d = dateVal instanceof Date ? dateVal : new Date(dateVal);\n if (isNaN(d.getTime()))\n return String(dateVal);\n const fmt = this.timeFormat;\n if (fmt === 'date')\n return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });\n if (fmt === 'time')\n return d.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });\n if (fmt === 'datetime')\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' });\n if (fmt === 'month')\n return d.toLocaleDateString(undefined, { month: 'short', year: '2-digit' });\n if (fmt === 'year')\n return d.getFullYear().toString();\n // auto\n return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });\n }\n /** Rebuild the static chart SVG (candles, grid, axes, volume). Does NOT include crosshair. */\n rebuildChart() {\n if (!this.chartContentEl || !this.svgEl) {\n requestAnimationFrame(() => this.rebuildChart());\n return;\n }\n const visible = this.visibleData;\n let svg = '';\n if (visible.length > 0) {\n svg += this.buildGridLines();\n svg += this.buildYAxis();\n svg += this.buildXAxis();\n svg += this.buildVolumeBars();\n svg += this.buildCandles();\n }\n this.chartContentEl.innerHTML = svg;\n // Update SVG viewBox\n this.svgEl.setAttribute('viewBox', `0 0 ${this.svgWidth} ${this.svgHeight}`);\n this.svgEl.setAttribute('aria-label', `Candlestick chart with ${this.cachedData.length} data points`);\n // Update container height\n if (this.containerEl) {\n this.containerEl.style.height = `${this.svgHeight}px`;\n }\n // Consume animation flag after building candles\n this.animateNext = false;\n // Update crosshair after chart rebuild\n this.updateCrosshairDOM();\n this.updateTooltipDOM();\n }\n resetZoom() {\n this.viewStart = 0;\n this.viewEnd = this.cachedData.length;\n this.rebuildChart();\n }\n zoomTo(startIndex, endIndex) {\n this.viewStart = Math.max(0, startIndex);\n this.viewEnd = Math.min(this.cachedData.length, endIndex);\n this.rebuildChart();\n }\n /** Update crosshair overlay via direct DOM manipulation — no re-render needed */\n updateCrosshairDOM() {\n const group = this.crosshairGroupEl;\n if (!group)\n return;\n if (!this.showCrosshair || this.mouseX < 0 || this.mouseY < 0) {\n group.innerHTML = '';\n return;\n }\n const area = this.chartArea;\n const totalChartBottom = area.y + area.height + area.volumeHeight;\n const isInChart = this.mouseX >= area.x && this.mouseX <= area.x + area.width\n && this.mouseY >= area.y && this.mouseY <= totalChartBottom;\n if (!isInChart) {\n group.innerHTML = '';\n return;\n }\n const price = this.yToPrice(this.mouseY);\n const idx = this.xToIndex(this.mouseX);\n const candle = this.visibleData[idx];\n const snapX = this.indexToX(idx);\n let parts = '';\n // Horizontal line\n parts += `<line class=\"candlestick__crosshair-h\" x1=\"${area.x}\" y1=\"${this.mouseY}\" x2=\"${area.x + area.width}\" y2=\"${this.mouseY}\" />`;\n // Vertical line\n parts += `<line class=\"candlestick__crosshair-v\" x1=\"${snapX}\" y1=\"${area.y}\" x2=\"${snapX}\" y2=\"${totalChartBottom}\" />`;\n // Price label\n const priceLabel = this.formatPrice(price);\n const labelX = this.svgWidth - PADDING.right + 4;\n parts += `<rect class=\"candlestick__crosshair-label-bg\" x=\"${labelX}\" y=\"${this.mouseY - 9}\" width=\"${PADDING.right - 8}\" height=\"18\" rx=\"2\" />`;\n parts += `<text class=\"candlestick__crosshair-label\" x=\"${labelX + 4}\" y=\"${this.mouseY + 4}\">${priceLabel}</text>`;\n // Date label\n if (candle) {\n const dateLabel = this.formatDate(candle.date);\n const dateLabelY = totalChartBottom + 4;\n parts += `<rect class=\"candlestick__crosshair-label-bg\" x=\"${snapX - 36}\" y=\"${dateLabelY}\" width=\"72\" height=\"18\" rx=\"2\" />`;\n parts += `<text class=\"candlestick__crosshair-label\" x=\"${snapX}\" y=\"${dateLabelY + 13}\" text-anchor=\"middle\">${dateLabel}</text>`;\n }\n group.innerHTML = parts;\n }\n /** Update tooltip via direct DOM manipulation — no re-render needed */\n updateTooltipDOM() {\n const tooltip = this.tooltipEl;\n if (!tooltip)\n return;\n const tooltipCandle = this.getTooltipCandle();\n const hasTooltip = tooltipCandle !== null;\n if (!hasTooltip) {\n tooltip.classList.remove('candlestick__tooltip--visible');\n return;\n }\n const isBullish = tooltipCandle.close >= tooltipCandle.open;\n const showVolumeInTooltip = this.showVolume && tooltipCandle.volume !== undefined;\n const tooltipIdx = this.xToIndex(this.mouseX);\n const tooltipX = this.indexToX(tooltipIdx);\n const tooltipLeft = tooltipX + this.candleWidth + 12;\n const tooltipFlip = tooltipLeft + 160 > this.svgWidth;\n const tooltipFinalLeft = tooltipFlip ? tooltipX - this.candleWidth - 170 : tooltipLeft;\n tooltip.style.left = `${Math.max(0, tooltipFinalLeft)}px`;\n tooltip.style.top = `${PADDING.top}px`;\n tooltip.classList.add('candlestick__tooltip--visible');\n let rows = '';\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Date</span><span class=\"candlestick__tooltip-value\">${this.formatDate(tooltipCandle.date)}</span></div>`;\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Open</span><span class=\"candlestick__tooltip-value\">${this.formatPrice(tooltipCandle.open)}</span></div>`;\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">High</span><span class=\"candlestick__tooltip-value\">${this.formatPrice(tooltipCandle.high)}</span></div>`;\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Low</span><span class=\"candlestick__tooltip-value\">${this.formatPrice(tooltipCandle.low)}</span></div>`;\n const closeClass = isBullish ? 'candlestick__tooltip-value--bullish' : 'candlestick__tooltip-value--bearish';\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Close</span><span class=\"candlestick__tooltip-value ${closeClass}\">${this.formatPrice(tooltipCandle.close)}</span></div>`;\n if (showVolumeInTooltip) {\n rows += `<div class=\"candlestick__tooltip-row\"><span class=\"candlestick__tooltip-label\">Volume</span><span class=\"candlestick__tooltip-value\">${tooltipCandle.volume?.toLocaleString() || '0'}</span></div>`;\n }\n tooltip.innerHTML = rows;\n }\n buildGridLines() {\n if (!this.showGrid)\n return '';\n const area = this.chartArea;\n const { min, max } = this.priceRange;\n const ticks = 6;\n const step = (max - min) / ticks;\n let lines = '';\n for (let i = 0; i <= ticks; i++) {\n const price = min + step * i;\n const y = this.priceToY(price);\n lines += `<line class=\"candlestick__grid-line\" x1=\"${area.x}\" y1=\"${y}\" x2=\"${area.x + area.width}\" y2=\"${y}\" />`;\n }\n return lines;\n }\n buildYAxis() {\n const { min, max } = this.priceRange;\n const ticks = 6;\n const step = (max - min) / ticks;\n let labels = '';\n const labelX = this.svgWidth - PADDING.right + 8;\n for (let i = 0; i <= ticks; i++) {\n const price = min + step * i;\n const y = this.priceToY(price);\n labels += `<text class=\"candlestick__axis-label candlestick__axis-label--y\" x=\"${labelX}\" y=\"${y}\">${this.formatPrice(price)}</text>`;\n }\n return labels;\n }\n buildXAxis() {\n const visible = this.visibleData;\n if (visible.length === 0)\n return '';\n const area = this.chartArea;\n const labelY = area.y + area.height + area.volumeHeight + 16;\n const maxLabels = Math.floor(area.width / 80);\n const step = Math.max(1, Math.ceil(visible.length / maxLabels));\n let labels = '';\n for (let i = 0; i < visible.length; i += step) {\n const x = this.indexToX(i);\n labels += `<text class=\"candlestick__axis-label candlestick__axis-label--x\" x=\"${x}\" y=\"${labelY}\">${this.formatDate(visible[i].date)}</text>`;\n }\n return labels;\n }\n buildCandles() {\n const visible = this.visibleData;\n if (visible.length === 0)\n return '';\n const cw = this.candleWidth;\n const halfCw = cw / 2;\n let parts = '';\n for (let i = 0; i < visible.length; i++) {\n const candle = visible[i];\n const isBullish = candle.close >= candle.open;\n const color = isBullish\n ? (this.bullishColor || 'var(--candlestick-bullish)')\n : (this.bearishColor || 'var(--candlestick-bearish)');\n const x = this.indexToX(i);\n const highY = this.priceToY(candle.high);\n const lowY = this.priceToY(candle.low);\n const openY = this.priceToY(candle.open);\n const closeY = this.priceToY(candle.close);\n const bodyTop = Math.min(openY, closeY);\n const bodyHeight = Math.max(1, Math.abs(closeY - openY));\n const shouldAnimate = this.animation && this.animateNext;\n const animDelay = shouldAnimate ? `animation-delay: ${i * 8}ms;` : '';\n const wickAnimClass = shouldAnimate ? ' candlestick__wick--animated' : '';\n const bodyAnimClass = shouldAnimate ? ' candlestick__body--animated' : '';\n // Wick (high to low)\n parts += `<line class=\"candlestick__wick${wickAnimClass}\" x1=\"${x}\" y1=\"${highY}\" x2=\"${x}\" y2=\"${lowY}\" stroke=\"${color}\" style=\"${animDelay}\" />`;\n // Body (open to close)\n parts += `<rect class=\"candlestick__body${bodyAnimClass}\" x=\"${x - halfCw}\" y=\"${bodyTop}\" width=\"${cw}\" height=\"${bodyHeight}\" fill=\"${color}\" stroke=\"${color}\" stroke-width=\"1\" rx=\"1\" style=\"${animDelay}\" data-candle-index=\"${i}\" />`;\n }\n return parts;\n }\n buildVolumeBars() {\n if (!this.showVolume)\n return '';\n const visible = this.visibleData;\n if (visible.length === 0)\n return '';\n const area = this.chartArea;\n const volMax = this.volumeMax;\n const cw = this.candleWidth;\n const halfCw = cw / 2;\n let parts = '';\n for (let i = 0; i < visible.length; i++) {\n const candle = visible[i];\n const vol = candle.volume || 0;\n const isBullish = candle.close >= candle.open;\n const color = isBullish\n ? (this.bullishColor || 'var(--candlestick-bullish)')\n : (this.bearishColor || 'var(--candlestick-bearish)');\n const x = this.indexToX(i);\n const barHeight = (vol / volMax) * area.volumeHeight;\n const barY = area.volumeY + area.volumeHeight - barHeight;\n const shouldAnimate = this.animation && this.animateNext;\n const animDelay = shouldAnimate ? `animation-delay: ${i * 8}ms;` : '';\n const animClass = shouldAnimate ? ' candlestick__volume--animated' : '';\n parts += `<rect class=\"candlestick__volume${animClass}\" x=\"${x - halfCw}\" y=\"${barY}\" width=\"${cw}\" height=\"${barHeight}\" fill=\"${color}\" style=\"${animDelay}\" />`;\n }\n return parts;\n }\n getTooltipCandle() {\n if (this.mouseX < 0)\n return null;\n const area = this.chartArea;\n if (this.mouseX < area.x || this.mouseX > area.x + area.width)\n return null;\n const idx = this.xToIndex(this.mouseX);\n return this.visibleData[idx] || null;\n }\n renderContent() {\n return html /*html*/ `\n <div class=\"candlestick\"\n style=\"height: ${this.svgHeight}px;\"\n @mousemove=${this.handleMouseMove}\n @mouseleave=${this.handleMouseLeave}\n @mousedown=${this.handleMouseDown}\n @mouseup=${this.handleMouseUp}\n @wheel=${this.handleWheel}>\n <svg class=\"candlestick__svg\" viewBox=\"0 0 ${this.svgWidth} ${this.svgHeight}\" preserveAspectRatio=\"none\" role=\"img\" aria-label=\"Candlestick chart with ${this.data.length} data points\">\n <g class=\"candlestick__chart-content\"></g>\n <g class=\"candlestick__crosshair-group\"></g>\n </svg>\n <div class=\"candlestick__tooltip\"></div>\n </div>\n `;\n }\n componentStyles() {\n return css /*css*/ `${cssContent}`;\n }\n });\n return _classThis;\n})();\n\nexport { SniceCandlestick };\n//# sourceMappingURL=snice-candlestick.js.map\n"],"names":["__esDecorate","ctor","descriptorIn","decorators","contextIn","initializers","extraInitializers","accept","f","TypeError","_","kind","key","target","prototype","descriptor","Object","getOwnPropertyDescriptor","name","done","i","length","context","p","access","addInitializer","push","result","get","set","init","unshift","defineProperty","__runInitializers","thisArg","value","useValue","arguments","call","SuppressedError","PADDING","SniceCandlestick","_classDescriptor","_classThis","_data_decorators","_showVolume_decorators","_showGrid_decorators","_showCrosshair_decorators","_bullishColor_decorators","_bearishColor_decorators","_timeFormat_decorators","_yAxisFormat_decorators","_zoomEnabled_decorators","_animation_decorators","_containerEl_decorators","_svgEl_decorators","_chartContentEl_decorators","_crosshairGroupEl_decorators","_tooltipEl_decorators","_emitCandleClick_decorators","_emitCandleHover_decorators","_emitCrosshairMove_decorators","_init_decorators","_cleanup_decorators","_onDataChange_decorators","_onDisplayChange_decorators","_renderContent_decorators","_componentStyles_decorators","_classDecorators","element","_classExtraInitializers","_classSuper","HTMLElement","_instanceExtraInitializers","_data_initializers","_data_extraInitializers","_showVolume_initializers","_showVolume_extraInitializers","_showGrid_initializers","_showGrid_extraInitializers","_showCrosshair_initializers","_showCrosshair_extraInitializers","_bullishColor_initializers","_bullishColor_extraInitializers","_bearishColor_initializers","_bearishColor_extraInitializers","_timeFormat_initializers","_timeFormat_extraInitializers","_yAxisFormat_initializers","_yAxisFormat_extraInitializers","_zoomEnabled_initializers","_zoomEnabled_extraInitializers","_animation_initializers","_animation_extraInitializers","_containerEl_initializers","_containerEl_extraInitializers","_svgEl_initializers","_svgEl_extraInitializers","_chartContentEl_initializers","_chartContentEl_extraInitializers","_crosshairGroupEl_initializers","_crosshairGroupEl_extraInitializers","_tooltipEl_initializers","_tooltipEl_extraInitializers","this","constructor","super","data","showVolume","showGrid","showCrosshair","bullishColor","bearishColor","timeFormat","yAxisFormat","zoomEnabled","animation","containerEl","svgEl","chartContentEl","crosshairGroupEl","tooltipEl","viewStart","viewEnd","mouseX","mouseY","isDragging","dragStartX","dragStartViewStart","dragStartViewEnd","resizeObserver","svgWidth","svgHeight","lastDataLength","cachedData","rafId","animateNext","handleMouseMove","e","svg","ctm","getScreenCTM","pt","DOMPoint","clientX","clientY","matrixTransform","inverse","x","y","dx","area","chartArea","viewSize","candlesPerPx","width","shift","Math","round","newStart","newEnd","vs","max","ve","min","rebuildChart","idx","xToIndex","candle","visibleData","price","yToPrice","emitCrosshairMove","formatDate","date","cancelAnimationFrame","requestAnimationFrame","updateCrosshairDOM","updateTooltipDOM","handleMouseLeave","handleMouseDown","handleMouseUp","handleWheel","preventDefault","zoomFactor","deltaY","newSize","mouseRatio","center","_metadata","Symbol","metadata","create","property","type","Array","attribute","Boolean","query","dispatch","bubbles","composed","ready","dispose","watch","render","once","styles","static","private","has","obj","emitCandleClick","emitCandleHover","cleanup","onDataChange","onDisplayChange","renderContent","componentStyles","enumerable","configurable","writable","index","ResizeObserver","measureSize","observe","disconnect","dataLen","rect","getBoundingClientRect","height","slice","volumeSpace","volumeY","volumeHeight","priceRange","visible","Infinity","d","low","high","padding","volumeMax","map","volume","candleWidth","count","bodyWidth","priceToY","ratio","indexToX","step","floor","formatPrice","toLocaleString","undefined","minimumFractionDigits","maximumFractionDigits","toFixed","dateVal","Date","isNaN","getTime","String","fmt","toLocaleDateString","month","day","toLocaleTimeString","hour","minute","year","getFullYear","toString","buildGridLines","buildYAxis","buildXAxis","buildVolumeBars","buildCandles","innerHTML","setAttribute","style","resetZoom","zoomTo","startIndex","endIndex","group","totalChartBottom","snapX","parts","priceLabel","labelX","dateLabelY","tooltip","tooltipCandle","getTooltipCandle","classList","remove","isBullish","close","open","showVolumeInTooltip","tooltipIdx","tooltipX","tooltipLeft","tooltipFinalLeft","left","top","add","rows","lines","labels","labelY","maxLabels","ceil","cw","halfCw","color","highY","lowY","openY","closeY","bodyTop","bodyHeight","abs","shouldAnimate","animDelay","volMax","vol","barHeight","barY","html","css"],"mappings":"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","x_google_ignoreList":[0]}
|