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.
Files changed (315) hide show
  1. package/adapters/react/camera-annotate.d.ts +27 -0
  2. package/adapters/react/camera-annotate.d.ts.map +1 -0
  3. package/adapters/react/camera-annotate.js +24 -0
  4. package/adapters/react/camera-annotate.js.map +1 -0
  5. package/adapters/react/camera-annotate.tsx +35 -0
  6. package/adapters/react/candlestick.d.ts +34 -0
  7. package/adapters/react/candlestick.d.ts.map +1 -0
  8. package/adapters/react/candlestick.js +24 -0
  9. package/adapters/react/candlestick.js.map +1 -0
  10. package/adapters/react/candlestick.tsx +42 -0
  11. package/adapters/react/components.d.ts +14 -0
  12. package/adapters/react/components.d.ts.map +1 -1
  13. package/adapters/react/components.js +7 -0
  14. package/adapters/react/components.js.map +1 -1
  15. package/adapters/react/components.ts +14 -0
  16. package/adapters/react/funnel.d.ts +31 -0
  17. package/adapters/react/funnel.d.ts.map +1 -0
  18. package/adapters/react/funnel.js +24 -0
  19. package/adapters/react/funnel.js.map +1 -0
  20. package/adapters/react/funnel.tsx +39 -0
  21. package/adapters/react/network-graph.d.ts +32 -0
  22. package/adapters/react/network-graph.d.ts.map +1 -0
  23. package/adapters/react/network-graph.js +24 -0
  24. package/adapters/react/network-graph.js.map +1 -0
  25. package/adapters/react/network-graph.tsx +40 -0
  26. package/adapters/react/sankey.d.ts +31 -0
  27. package/adapters/react/sankey.d.ts.map +1 -0
  28. package/adapters/react/sankey.js +24 -0
  29. package/adapters/react/sankey.js.map +1 -0
  30. package/adapters/react/sankey.tsx +39 -0
  31. package/adapters/react/time-range-picker.d.ts +33 -0
  32. package/adapters/react/time-range-picker.d.ts.map +1 -0
  33. package/adapters/react/time-range-picker.js +24 -0
  34. package/adapters/react/time-range-picker.js.map +1 -0
  35. package/adapters/react/time-range-picker.tsx +41 -0
  36. package/adapters/react/treemap.d.ts +30 -0
  37. package/adapters/react/treemap.d.ts.map +1 -0
  38. package/adapters/react/treemap.js +24 -0
  39. package/adapters/react/treemap.js.map +1 -0
  40. package/adapters/react/treemap.tsx +38 -0
  41. package/adapters/react/virtual-scroller.d.ts +1 -0
  42. package/adapters/react/virtual-scroller.d.ts.map +1 -1
  43. package/adapters/react/virtual-scroller.js +1 -1
  44. package/adapters/react/virtual-scroller.js.map +1 -1
  45. package/adapters/react/virtual-scroller.tsx +2 -1
  46. package/dist/cdn/accordion/snice-accordion.js +1 -1
  47. package/dist/cdn/accordion/snice-accordion.min.js +1 -1
  48. package/dist/cdn/alert/snice-alert.js +1 -1
  49. package/dist/cdn/alert/snice-alert.min.js +1 -1
  50. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  51. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
  52. package/dist/cdn/avatar/snice-avatar.js +1 -1
  53. package/dist/cdn/avatar/snice-avatar.min.js +1 -1
  54. package/dist/cdn/badge/snice-badge.js +1 -1
  55. package/dist/cdn/badge/snice-badge.min.js +1 -1
  56. package/dist/cdn/banner/snice-banner.js +1 -1
  57. package/dist/cdn/banner/snice-banner.min.js +1 -1
  58. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +2 -2
  59. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  60. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +13 -13
  61. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js.map +1 -1
  62. package/dist/cdn/button/snice-button.js +1 -1
  63. package/dist/cdn/button/snice-button.min.js +1 -1
  64. package/dist/cdn/calendar/snice-calendar.js +1 -1
  65. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  66. package/dist/cdn/camera/snice-camera.js +1 -1
  67. package/dist/cdn/camera/snice-camera.min.js +1 -1
  68. package/dist/cdn/camera-annotate/README.md +27 -0
  69. package/dist/cdn/camera-annotate/snice-camera-annotate.js +730 -0
  70. package/dist/cdn/camera-annotate/snice-camera-annotate.js.map +1 -0
  71. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +144 -0
  72. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js.map +1 -0
  73. package/dist/cdn/candlestick/README.md +27 -0
  74. package/dist/cdn/candlestick/snice-candlestick.js +717 -0
  75. package/dist/cdn/candlestick/snice-candlestick.js.map +1 -0
  76. package/dist/cdn/candlestick/snice-candlestick.min.js +22 -0
  77. package/dist/cdn/candlestick/snice-candlestick.min.js.map +1 -0
  78. package/dist/cdn/card/snice-card.js +1 -1
  79. package/dist/cdn/card/snice-card.min.js +1 -1
  80. package/dist/cdn/carousel/snice-carousel.js +1 -1
  81. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  82. package/dist/cdn/chart/snice-chart.js +1 -1
  83. package/dist/cdn/chart/snice-chart.min.js +1 -1
  84. package/dist/cdn/chat/snice-chat.js +1 -1
  85. package/dist/cdn/chat/snice-chat.min.js +1 -1
  86. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  87. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  88. package/dist/cdn/chip/snice-chip.js +1 -1
  89. package/dist/cdn/chip/snice-chip.min.js +1 -1
  90. package/dist/cdn/code-block/snice-code-block.js +1 -1
  91. package/dist/cdn/code-block/snice-code-block.min.js +1 -1
  92. package/dist/cdn/color-display/snice-color-display.js +1 -1
  93. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  94. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  95. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  96. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  97. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  98. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  99. package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
  100. package/dist/cdn/divider/snice-divider.js +1 -1
  101. package/dist/cdn/divider/snice-divider.min.js +1 -1
  102. package/dist/cdn/doc/snice-doc.js +1 -1
  103. package/dist/cdn/doc/snice-doc.min.js +1 -1
  104. package/dist/cdn/draw/snice-draw.js +1 -1
  105. package/dist/cdn/draw/snice-draw.min.js +1 -1
  106. package/dist/cdn/drawer/snice-drawer.js +1 -1
  107. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  108. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  109. package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
  110. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  111. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  112. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  113. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  114. package/dist/cdn/funnel/README.md +27 -0
  115. package/dist/cdn/funnel/snice-funnel.js +424 -0
  116. package/dist/cdn/funnel/snice-funnel.js.map +1 -0
  117. package/dist/cdn/funnel/snice-funnel.min.js +20 -0
  118. package/dist/cdn/funnel/snice-funnel.min.js.map +1 -0
  119. package/dist/cdn/gauge/snice-gauge.js +1 -1
  120. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  121. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  122. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  123. package/dist/cdn/image/snice-image.js +1 -1
  124. package/dist/cdn/image/snice-image.min.js +1 -1
  125. package/dist/cdn/input/snice-input.js +1 -1
  126. package/dist/cdn/input/snice-input.min.js +1 -1
  127. package/dist/cdn/kanban/snice-kanban.js +1 -1
  128. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  129. package/dist/cdn/kpi/snice-kpi.js +1 -1
  130. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  131. package/dist/cdn/layout/README.md +2 -2
  132. package/dist/cdn/layout/snice-layout.js +23 -6
  133. package/dist/cdn/layout/snice-layout.js.map +1 -1
  134. package/dist/cdn/layout/snice-layout.min.js +2 -2
  135. package/dist/cdn/layout/snice-layout.min.js.map +1 -1
  136. package/dist/cdn/link/snice-link.js +1 -1
  137. package/dist/cdn/link/snice-link.min.js +1 -1
  138. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  139. package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
  140. package/dist/cdn/list/README.md +6 -2
  141. package/dist/cdn/list/snice-list.js +87 -10
  142. package/dist/cdn/list/snice-list.js.map +1 -1
  143. package/dist/cdn/list/snice-list.min.js +20 -6
  144. package/dist/cdn/list/snice-list.min.js.map +1 -1
  145. package/dist/cdn/location/snice-location.js +1 -1
  146. package/dist/cdn/location/snice-location.min.js +1 -1
  147. package/dist/cdn/login/snice-login.js +1 -1
  148. package/dist/cdn/login/snice-login.min.js +1 -1
  149. package/dist/cdn/masonry/snice-masonry.js +1 -1
  150. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  151. package/dist/cdn/menu/snice-menu.js +1 -1
  152. package/dist/cdn/menu/snice-menu.min.js +1 -1
  153. package/dist/cdn/modal/snice-modal.js +1 -1
  154. package/dist/cdn/modal/snice-modal.min.js +1 -1
  155. package/dist/cdn/music-player/snice-music-player.js +1 -1
  156. package/dist/cdn/music-player/snice-music-player.min.js +1 -1
  157. package/dist/cdn/nav/README.md +2 -2
  158. package/dist/cdn/nav/snice-nav.js +23 -6
  159. package/dist/cdn/nav/snice-nav.js.map +1 -1
  160. package/dist/cdn/nav/snice-nav.min.js +2 -2
  161. package/dist/cdn/nav/snice-nav.min.js.map +1 -1
  162. package/dist/cdn/network-graph/README.md +27 -0
  163. package/dist/cdn/network-graph/snice-network-graph.js +788 -0
  164. package/dist/cdn/network-graph/snice-network-graph.js.map +1 -0
  165. package/dist/cdn/network-graph/snice-network-graph.min.js +13 -0
  166. package/dist/cdn/network-graph/snice-network-graph.min.js.map +1 -0
  167. package/dist/cdn/pagination/README.md +2 -2
  168. package/dist/cdn/pagination/snice-pagination.js +13 -13
  169. package/dist/cdn/pagination/snice-pagination.js.map +1 -1
  170. package/dist/cdn/pagination/snice-pagination.min.js +14 -14
  171. package/dist/cdn/pagination/snice-pagination.min.js.map +1 -1
  172. package/dist/cdn/paint/snice-paint.js +1 -1
  173. package/dist/cdn/paint/snice-paint.min.js +1 -1
  174. package/dist/cdn/progress/snice-progress.js +1 -1
  175. package/dist/cdn/progress/snice-progress.min.js +1 -1
  176. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  177. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  178. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  179. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  180. package/dist/cdn/radio/snice-radio.js +1 -1
  181. package/dist/cdn/radio/snice-radio.min.js +1 -1
  182. package/dist/cdn/runtime/snice-runtime.esm.js +3 -3
  183. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  184. package/dist/cdn/runtime/snice-runtime.esm.min.js +3 -3
  185. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  186. package/dist/cdn/runtime/snice-runtime.js +3 -3
  187. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  188. package/dist/cdn/runtime/snice-runtime.min.js +3 -3
  189. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  190. package/dist/cdn/sankey/README.md +27 -0
  191. package/dist/cdn/sankey/snice-sankey.js +679 -0
  192. package/dist/cdn/sankey/snice-sankey.js.map +1 -0
  193. package/dist/cdn/sankey/snice-sankey.min.js +21 -0
  194. package/dist/cdn/sankey/snice-sankey.min.js.map +1 -0
  195. package/dist/cdn/select/snice-select.js +1 -1
  196. package/dist/cdn/select/snice-select.min.js +1 -1
  197. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  198. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  199. package/dist/cdn/slider/snice-slider.js +1 -1
  200. package/dist/cdn/slider/snice-slider.min.js +1 -1
  201. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  202. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  203. package/dist/cdn/spinner/snice-spinner.js +1 -1
  204. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  205. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  206. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  207. package/dist/cdn/stepper/README.md +6 -2
  208. package/dist/cdn/stepper/snice-stepper.js +77 -10
  209. package/dist/cdn/stepper/snice-stepper.js.map +1 -1
  210. package/dist/cdn/stepper/snice-stepper.min.js +13 -9
  211. package/dist/cdn/stepper/snice-stepper.min.js.map +1 -1
  212. package/dist/cdn/switch/snice-switch.js +1 -1
  213. package/dist/cdn/switch/snice-switch.min.js +1 -1
  214. package/dist/cdn/table/snice-table.js +1 -1
  215. package/dist/cdn/table/snice-table.min.js +1 -1
  216. package/dist/cdn/tabs/snice-tabs.js +1 -1
  217. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  218. package/dist/cdn/terminal/snice-terminal.js +1 -1
  219. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  220. package/dist/cdn/textarea/snice-textarea.js +1 -1
  221. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  222. package/dist/cdn/time-range-picker/README.md +27 -0
  223. package/dist/cdn/time-range-picker/snice-time-range-picker.js +635 -0
  224. package/dist/cdn/time-range-picker/snice-time-range-picker.js.map +1 -0
  225. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +34 -0
  226. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js.map +1 -0
  227. package/dist/cdn/timeline/snice-timeline.js +1 -1
  228. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  229. package/dist/cdn/timer/snice-timer.js +1 -1
  230. package/dist/cdn/timer/snice-timer.min.js +1 -1
  231. package/dist/cdn/toast/snice-toast.js +1 -1
  232. package/dist/cdn/toast/snice-toast.min.js +1 -1
  233. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  234. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  235. package/dist/cdn/tree/README.md +5 -1
  236. package/dist/cdn/tree/snice-tree.js +4 -8
  237. package/dist/cdn/tree/snice-tree.js.map +1 -1
  238. package/dist/cdn/tree/snice-tree.min.js +5 -5
  239. package/dist/cdn/tree/snice-tree.min.js.map +1 -1
  240. package/dist/cdn/treemap/README.md +27 -0
  241. package/dist/cdn/treemap/snice-treemap.js +522 -0
  242. package/dist/cdn/treemap/snice-treemap.js.map +1 -0
  243. package/dist/cdn/treemap/snice-treemap.min.js +14 -0
  244. package/dist/cdn/treemap/snice-treemap.min.js.map +1 -0
  245. package/dist/cdn/virtual-scroller/README.md +2 -2
  246. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +47 -16
  247. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js.map +1 -1
  248. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +9 -9
  249. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js.map +1 -1
  250. package/dist/components/breadcrumbs/snice-breadcrumbs.js +1 -1
  251. package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  252. package/dist/components/camera-annotate/snice-camera-annotate.d.ts +68 -0
  253. package/dist/components/camera-annotate/snice-camera-annotate.js +663 -0
  254. package/dist/components/camera-annotate/snice-camera-annotate.js.map +1 -0
  255. package/dist/components/camera-annotate/snice-camera-annotate.types.d.ts +50 -0
  256. package/dist/components/candlestick/snice-candlestick.d.ts +78 -0
  257. package/dist/components/candlestick/snice-candlestick.js +650 -0
  258. package/dist/components/candlestick/snice-candlestick.js.map +1 -0
  259. package/dist/components/candlestick/snice-candlestick.types.d.ts +40 -0
  260. package/dist/components/funnel/snice-funnel.d.ts +37 -0
  261. package/dist/components/funnel/snice-funnel.js +357 -0
  262. package/dist/components/funnel/snice-funnel.js.map +1 -0
  263. package/dist/components/funnel/snice-funnel.types.d.ts +28 -0
  264. package/dist/components/list/snice-list-item.d.ts +2 -0
  265. package/dist/components/list/snice-list-item.js +20 -2
  266. package/dist/components/list/snice-list-item.js.map +1 -1
  267. package/dist/components/nav/snice-nav.js +22 -5
  268. package/dist/components/nav/snice-nav.js.map +1 -1
  269. package/dist/components/network-graph/snice-network-graph.d.ts +80 -0
  270. package/dist/components/network-graph/snice-network-graph.js +721 -0
  271. package/dist/components/network-graph/snice-network-graph.js.map +1 -0
  272. package/dist/components/network-graph/snice-network-graph.types.d.ts +49 -0
  273. package/dist/components/pagination/snice-pagination.js +12 -12
  274. package/dist/components/sankey/snice-sankey.d.ts +46 -0
  275. package/dist/components/sankey/snice-sankey.js +612 -0
  276. package/dist/components/sankey/snice-sankey.js.map +1 -0
  277. package/dist/components/sankey/snice-sankey.types.d.ts +59 -0
  278. package/dist/components/stepper/snice-stepper.js +9 -3
  279. package/dist/components/stepper/snice-stepper.js.map +1 -1
  280. package/dist/components/time-range-picker/snice-time-range-picker.d.ts +67 -0
  281. package/dist/components/time-range-picker/snice-time-range-picker.js +568 -0
  282. package/dist/components/time-range-picker/snice-time-range-picker.js.map +1 -0
  283. package/dist/components/time-range-picker/snice-time-range-picker.types.d.ts +39 -0
  284. package/dist/components/treemap/snice-treemap.d.ts +49 -0
  285. package/dist/components/treemap/snice-treemap.js +455 -0
  286. package/dist/components/treemap/snice-treemap.js.map +1 -0
  287. package/dist/components/treemap/snice-treemap.types.d.ts +42 -0
  288. package/dist/components/virtual-scroller/snice-virtual-scroller.d.ts +5 -0
  289. package/dist/components/virtual-scroller/snice-virtual-scroller.js +47 -16
  290. package/dist/components/virtual-scroller/snice-virtual-scroller.js.map +1 -1
  291. package/dist/index.cjs +1 -1
  292. package/dist/index.cjs.map +1 -1
  293. package/dist/index.esm.js +1 -1
  294. package/dist/index.esm.js.map +1 -1
  295. package/dist/index.iife.js +1 -1
  296. package/dist/index.iife.js.map +1 -1
  297. package/dist/symbols.cjs +1 -1
  298. package/dist/symbols.esm.js +1 -1
  299. package/dist/transitions.cjs +1 -1
  300. package/dist/transitions.esm.js +1 -1
  301. package/docs/ai/components/camera-annotate.md +82 -0
  302. package/docs/ai/components/candlestick.md +79 -0
  303. package/docs/ai/components/funnel.md +86 -0
  304. package/docs/ai/components/network-graph.md +87 -0
  305. package/docs/ai/components/sankey.md +63 -0
  306. package/docs/ai/components/time-range-picker.md +78 -0
  307. package/docs/ai/components/treemap.md +78 -0
  308. package/docs/components/camera-annotate.md +186 -0
  309. package/docs/components/candlestick.md +196 -0
  310. package/docs/components/funnel.md +191 -0
  311. package/docs/components/network-graph.md +215 -0
  312. package/docs/components/sankey.md +201 -0
  313. package/docs/components/time-range-picker.md +213 -0
  314. package/docs/components/treemap.md +198 -0
  315. 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]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.7.0
2
+ * snice v4.8.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.7.0
2
+ * snice v4.8.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.7.0
2
+ * snice v4.8.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.7.0
2
+ * snice v4.8.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.7.0
2
+ * snice v4.8.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.7.0
2
+ * snice v4.8.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.