@vielzeug/prism 1.1.1

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 (273) hide show
  1. package/README.md +83 -0
  2. package/dist/_dev.cjs +2 -0
  3. package/dist/_dev.cjs.map +1 -0
  4. package/dist/_dev.d.ts +2 -0
  5. package/dist/_dev.d.ts.map +1 -0
  6. package/dist/_dev.js +12 -0
  7. package/dist/_dev.js.map +1 -0
  8. package/dist/animation/easing.cjs +2 -0
  9. package/dist/animation/easing.cjs.map +1 -0
  10. package/dist/animation/easing.d.ts +4 -0
  11. package/dist/animation/easing.d.ts.map +1 -0
  12. package/dist/animation/easing.js +14 -0
  13. package/dist/animation/easing.js.map +1 -0
  14. package/dist/animation/index.d.ts +6 -0
  15. package/dist/animation/index.d.ts.map +1 -0
  16. package/dist/animation/transition.cjs +2 -0
  17. package/dist/animation/transition.cjs.map +1 -0
  18. package/dist/animation/transition.d.ts +15 -0
  19. package/dist/animation/transition.d.ts.map +1 -0
  20. package/dist/animation/transition.js +28 -0
  21. package/dist/animation/transition.js.map +1 -0
  22. package/dist/animation/tween.cjs +2 -0
  23. package/dist/animation/tween.cjs.map +1 -0
  24. package/dist/animation/tween.d.ts +3 -0
  25. package/dist/animation/tween.d.ts.map +1 -0
  26. package/dist/animation/tween.js +8 -0
  27. package/dist/animation/tween.js.map +1 -0
  28. package/dist/axes/axis.cjs +2 -0
  29. package/dist/axes/axis.cjs.map +1 -0
  30. package/dist/axes/axis.d.ts +15 -0
  31. package/dist/axes/axis.d.ts.map +1 -0
  32. package/dist/axes/axis.js +60 -0
  33. package/dist/axes/axis.js.map +1 -0
  34. package/dist/axes/grid.cjs +2 -0
  35. package/dist/axes/grid.cjs.map +1 -0
  36. package/dist/axes/grid.d.ts +4 -0
  37. package/dist/axes/grid.d.ts.map +1 -0
  38. package/dist/axes/grid.js +30 -0
  39. package/dist/axes/grid.js.map +1 -0
  40. package/dist/axes/index.d.ts +3 -0
  41. package/dist/axes/index.d.ts.map +1 -0
  42. package/dist/axes/scale-utils.cjs +2 -0
  43. package/dist/axes/scale-utils.cjs.map +1 -0
  44. package/dist/axes/scale-utils.d.ts +17 -0
  45. package/dist/axes/scale-utils.d.ts.map +1 -0
  46. package/dist/axes/scale-utils.js +11 -0
  47. package/dist/axes/scale-utils.js.map +1 -0
  48. package/dist/axes/types.d.ts +2 -0
  49. package/dist/axes/types.d.ts.map +1 -0
  50. package/dist/charts/area/area-chart.cjs +2 -0
  51. package/dist/charts/area/area-chart.cjs.map +1 -0
  52. package/dist/charts/area/area-chart.d.ts +3 -0
  53. package/dist/charts/area/area-chart.d.ts.map +1 -0
  54. package/dist/charts/area/area-chart.js +58 -0
  55. package/dist/charts/area/area-chart.js.map +1 -0
  56. package/dist/charts/area/area-renderer.cjs +2 -0
  57. package/dist/charts/area/area-renderer.cjs.map +1 -0
  58. package/dist/charts/area/area-renderer.d.ts +14 -0
  59. package/dist/charts/area/area-renderer.d.ts.map +1 -0
  60. package/dist/charts/area/area-renderer.js +73 -0
  61. package/dist/charts/area/area-renderer.js.map +1 -0
  62. package/dist/charts/area/area-types.d.ts +2 -0
  63. package/dist/charts/area/area-types.d.ts.map +1 -0
  64. package/dist/charts/area/index.d.ts +2 -0
  65. package/dist/charts/area/index.d.ts.map +1 -0
  66. package/dist/charts/bar/bar-chart.cjs +2 -0
  67. package/dist/charts/bar/bar-chart.cjs.map +1 -0
  68. package/dist/charts/bar/bar-chart.d.ts +3 -0
  69. package/dist/charts/bar/bar-chart.d.ts.map +1 -0
  70. package/dist/charts/bar/bar-chart.js +151 -0
  71. package/dist/charts/bar/bar-chart.js.map +1 -0
  72. package/dist/charts/bar/bar-hit-test.cjs +2 -0
  73. package/dist/charts/bar/bar-hit-test.cjs.map +1 -0
  74. package/dist/charts/bar/bar-hit-test.d.ts +12 -0
  75. package/dist/charts/bar/bar-hit-test.d.ts.map +1 -0
  76. package/dist/charts/bar/bar-hit-test.js +29 -0
  77. package/dist/charts/bar/bar-hit-test.js.map +1 -0
  78. package/dist/charts/bar/bar-renderer.cjs +2 -0
  79. package/dist/charts/bar/bar-renderer.cjs.map +1 -0
  80. package/dist/charts/bar/bar-renderer.d.ts +19 -0
  81. package/dist/charts/bar/bar-renderer.d.ts.map +1 -0
  82. package/dist/charts/bar/bar-renderer.js +107 -0
  83. package/dist/charts/bar/bar-renderer.js.map +1 -0
  84. package/dist/charts/bar/bar-scale-context.d.ts +11 -0
  85. package/dist/charts/bar/bar-scale-context.d.ts.map +1 -0
  86. package/dist/charts/bar/bar-types.d.ts +2 -0
  87. package/dist/charts/bar/bar-types.d.ts.map +1 -0
  88. package/dist/charts/bar/index.d.ts +2 -0
  89. package/dist/charts/bar/index.d.ts.map +1 -0
  90. package/dist/charts/index.d.ts +6 -0
  91. package/dist/charts/index.d.ts.map +1 -0
  92. package/dist/charts/line/index.d.ts +2 -0
  93. package/dist/charts/line/index.d.ts.map +1 -0
  94. package/dist/charts/line/line-chart.cjs +2 -0
  95. package/dist/charts/line/line-chart.cjs.map +1 -0
  96. package/dist/charts/line/line-chart.d.ts +3 -0
  97. package/dist/charts/line/line-chart.d.ts.map +1 -0
  98. package/dist/charts/line/line-chart.js +59 -0
  99. package/dist/charts/line/line-chart.js.map +1 -0
  100. package/dist/charts/line/line-renderer.cjs +2 -0
  101. package/dist/charts/line/line-renderer.cjs.map +1 -0
  102. package/dist/charts/line/line-renderer.d.ts +15 -0
  103. package/dist/charts/line/line-renderer.d.ts.map +1 -0
  104. package/dist/charts/line/line-renderer.js +100 -0
  105. package/dist/charts/line/line-renderer.js.map +1 -0
  106. package/dist/charts/line/line-types.d.ts +2 -0
  107. package/dist/charts/line/line-types.d.ts.map +1 -0
  108. package/dist/charts/pie/index.d.ts +2 -0
  109. package/dist/charts/pie/index.d.ts.map +1 -0
  110. package/dist/charts/pie/pie-chart.cjs +2 -0
  111. package/dist/charts/pie/pie-chart.cjs.map +1 -0
  112. package/dist/charts/pie/pie-chart.d.ts +3 -0
  113. package/dist/charts/pie/pie-chart.d.ts.map +1 -0
  114. package/dist/charts/pie/pie-chart.js +156 -0
  115. package/dist/charts/pie/pie-chart.js.map +1 -0
  116. package/dist/charts/pie/pie-renderer.cjs +2 -0
  117. package/dist/charts/pie/pie-renderer.cjs.map +1 -0
  118. package/dist/charts/pie/pie-renderer.d.ts +23 -0
  119. package/dist/charts/pie/pie-renderer.d.ts.map +1 -0
  120. package/dist/charts/pie/pie-renderer.js +77 -0
  121. package/dist/charts/pie/pie-renderer.js.map +1 -0
  122. package/dist/charts/sparkline/index.d.ts +2 -0
  123. package/dist/charts/sparkline/index.d.ts.map +1 -0
  124. package/dist/charts/sparkline/sparkline.cjs +2 -0
  125. package/dist/charts/sparkline/sparkline.cjs.map +1 -0
  126. package/dist/charts/sparkline/sparkline.d.ts +3 -0
  127. package/dist/charts/sparkline/sparkline.d.ts.map +1 -0
  128. package/dist/charts/sparkline/sparkline.js +187 -0
  129. package/dist/charts/sparkline/sparkline.js.map +1 -0
  130. package/dist/core/cartesian-scales.cjs +2 -0
  131. package/dist/core/cartesian-scales.cjs.map +1 -0
  132. package/dist/core/cartesian-scales.d.ts +4 -0
  133. package/dist/core/cartesian-scales.d.ts.map +1 -0
  134. package/dist/core/cartesian-scales.js +54 -0
  135. package/dist/core/cartesian-scales.js.map +1 -0
  136. package/dist/core/chart-base.cjs +2 -0
  137. package/dist/core/chart-base.cjs.map +1 -0
  138. package/dist/core/chart-base.d.ts +14 -0
  139. package/dist/core/chart-base.d.ts.map +1 -0
  140. package/dist/core/chart-base.js +60 -0
  141. package/dist/core/chart-base.js.map +1 -0
  142. package/dist/core/chart-scaffold.cjs +2 -0
  143. package/dist/core/chart-scaffold.cjs.map +1 -0
  144. package/dist/core/chart-scaffold.d.ts +54 -0
  145. package/dist/core/chart-scaffold.d.ts.map +1 -0
  146. package/dist/core/chart-scaffold.js +104 -0
  147. package/dist/core/chart-scaffold.js.map +1 -0
  148. package/dist/core/index.d.ts +7 -0
  149. package/dist/core/index.d.ts.map +1 -0
  150. package/dist/core/layout.cjs +2 -0
  151. package/dist/core/layout.cjs.map +1 -0
  152. package/dist/core/layout.d.ts +7 -0
  153. package/dist/core/layout.d.ts.map +1 -0
  154. package/dist/core/layout.js +23 -0
  155. package/dist/core/layout.js.map +1 -0
  156. package/dist/core/responsive.cjs +2 -0
  157. package/dist/core/responsive.cjs.map +1 -0
  158. package/dist/core/responsive.d.ts +2 -0
  159. package/dist/core/responsive.d.ts.map +1 -0
  160. package/dist/core/responsive.js +20 -0
  161. package/dist/core/responsive.js.map +1 -0
  162. package/dist/devtools/index.d.ts +52 -0
  163. package/dist/devtools/index.d.ts.map +1 -0
  164. package/dist/devtools.cjs +2 -0
  165. package/dist/devtools.cjs.map +1 -0
  166. package/dist/devtools.js +19 -0
  167. package/dist/devtools.js.map +1 -0
  168. package/dist/errors.cjs +2 -0
  169. package/dist/errors.cjs.map +1 -0
  170. package/dist/errors.d.ts +16 -0
  171. package/dist/errors.d.ts.map +1 -0
  172. package/dist/errors.js +13 -0
  173. package/dist/errors.js.map +1 -0
  174. package/dist/index.cjs +1 -0
  175. package/dist/index.d.ts +19 -0
  176. package/dist/index.d.ts.map +1 -0
  177. package/dist/index.js +12 -0
  178. package/dist/interaction/crosshair.cjs +2 -0
  179. package/dist/interaction/crosshair.cjs.map +1 -0
  180. package/dist/interaction/crosshair.d.ts +13 -0
  181. package/dist/interaction/crosshair.d.ts.map +1 -0
  182. package/dist/interaction/crosshair.js +46 -0
  183. package/dist/interaction/crosshair.js.map +1 -0
  184. package/dist/interaction/events.cjs +2 -0
  185. package/dist/interaction/events.cjs.map +1 -0
  186. package/dist/interaction/events.d.ts +3 -0
  187. package/dist/interaction/events.d.ts.map +1 -0
  188. package/dist/interaction/events.js +12 -0
  189. package/dist/interaction/events.js.map +1 -0
  190. package/dist/interaction/hit-test.cjs +2 -0
  191. package/dist/interaction/hit-test.cjs.map +1 -0
  192. package/dist/interaction/hit-test.d.ts +3 -0
  193. package/dist/interaction/hit-test.d.ts.map +1 -0
  194. package/dist/interaction/hit-test.js +14 -0
  195. package/dist/interaction/hit-test.js.map +1 -0
  196. package/dist/interaction/index.d.ts +9 -0
  197. package/dist/interaction/index.d.ts.map +1 -0
  198. package/dist/interaction/legend.cjs +2 -0
  199. package/dist/interaction/legend.cjs.map +1 -0
  200. package/dist/interaction/legend.d.ts +12 -0
  201. package/dist/interaction/legend.d.ts.map +1 -0
  202. package/dist/interaction/legend.js +31 -0
  203. package/dist/interaction/legend.js.map +1 -0
  204. package/dist/interaction/series-interaction.cjs +2 -0
  205. package/dist/interaction/series-interaction.cjs.map +1 -0
  206. package/dist/interaction/series-interaction.d.ts +18 -0
  207. package/dist/interaction/series-interaction.d.ts.map +1 -0
  208. package/dist/interaction/series-interaction.js +58 -0
  209. package/dist/interaction/series-interaction.js.map +1 -0
  210. package/dist/interaction/tooltip.cjs +2 -0
  211. package/dist/interaction/tooltip.cjs.map +1 -0
  212. package/dist/interaction/tooltip.d.ts +10 -0
  213. package/dist/interaction/tooltip.d.ts.map +1 -0
  214. package/dist/interaction/tooltip.js +53 -0
  215. package/dist/interaction/tooltip.js.map +1 -0
  216. package/dist/prism.cjs +2 -0
  217. package/dist/prism.cjs.map +1 -0
  218. package/dist/prism.iife.js +2 -0
  219. package/dist/prism.iife.js.map +1 -0
  220. package/dist/prism.js +2 -0
  221. package/dist/prism.js.map +1 -0
  222. package/dist/scales/band.cjs +2 -0
  223. package/dist/scales/band.cjs.map +1 -0
  224. package/dist/scales/band.d.ts +3 -0
  225. package/dist/scales/band.d.ts.map +1 -0
  226. package/dist/scales/band.js +40 -0
  227. package/dist/scales/band.js.map +1 -0
  228. package/dist/scales/index.d.ts +4 -0
  229. package/dist/scales/index.d.ts.map +1 -0
  230. package/dist/scales/linear.cjs +2 -0
  231. package/dist/scales/linear.cjs.map +1 -0
  232. package/dist/scales/linear.d.ts +4 -0
  233. package/dist/scales/linear.d.ts.map +1 -0
  234. package/dist/scales/linear.js +44 -0
  235. package/dist/scales/linear.js.map +1 -0
  236. package/dist/scales/time.cjs +2 -0
  237. package/dist/scales/time.cjs.map +1 -0
  238. package/dist/scales/time.d.ts +4 -0
  239. package/dist/scales/time.d.ts.map +1 -0
  240. package/dist/scales/time.js +62 -0
  241. package/dist/scales/time.js.map +1 -0
  242. package/dist/scales/types.d.ts +19 -0
  243. package/dist/scales/types.d.ts.map +1 -0
  244. package/dist/svg/element.cjs +2 -0
  245. package/dist/svg/element.cjs.map +1 -0
  246. package/dist/svg/element.d.ts +4 -0
  247. package/dist/svg/element.d.ts.map +1 -0
  248. package/dist/svg/element.js +23 -0
  249. package/dist/svg/element.js.map +1 -0
  250. package/dist/svg/index.d.ts +5 -0
  251. package/dist/svg/index.d.ts.map +1 -0
  252. package/dist/svg/path.cjs +2 -0
  253. package/dist/svg/path.cjs.map +1 -0
  254. package/dist/svg/path.d.ts +9 -0
  255. package/dist/svg/path.d.ts.map +1 -0
  256. package/dist/svg/path.js +49 -0
  257. package/dist/svg/path.js.map +1 -0
  258. package/dist/svg/text.cjs +2 -0
  259. package/dist/svg/text.cjs.map +1 -0
  260. package/dist/svg/text.d.ts +7 -0
  261. package/dist/svg/text.d.ts.map +1 -0
  262. package/dist/svg/text.js +10 -0
  263. package/dist/svg/text.js.map +1 -0
  264. package/dist/theme/index.cjs +2 -0
  265. package/dist/theme/index.cjs.map +1 -0
  266. package/dist/theme/index.d.ts +6 -0
  267. package/dist/theme/index.d.ts.map +1 -0
  268. package/dist/theme/index.js +20 -0
  269. package/dist/theme/index.js.map +1 -0
  270. package/dist/theme/prism.css +342 -0
  271. package/dist/types.d.ts +204 -0
  272. package/dist/types.d.ts.map +1 -0
  273. package/package.json +79 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.cjs","names":[],"sources":["../../src/scales/linear.ts"],"sourcesContent":["import type { Scale } from '../types';\nimport type { LinearScaleConfig } from './types';\n\nfunction niceNumber(value: number, round: boolean): number {\n const exp = Math.floor(Math.log10(value));\n const frac = value / Math.pow(10, exp);\n let nice: number;\n\n if (round) {\n if (frac < 1.5) nice = 1;\n else if (frac < 3) nice = 2;\n else if (frac < 7) nice = 5;\n else nice = 10;\n } else {\n if (frac <= 1) nice = 1;\n else if (frac <= 2) nice = 2;\n else if (frac <= 5) nice = 5;\n else nice = 10;\n }\n\n return nice * Math.pow(10, exp);\n}\n\nfunction niceRange(min: number, max: number, tickCount: number): [number, number] {\n if (!Number.isFinite(min) || !Number.isFinite(max)) return [0, 1];\n\n if (min > max) [min, max] = [max, min];\n\n if (min === max) return [min - 1, max + 1];\n\n const range = niceNumber(max - min, false);\n const step = niceNumber(range / Math.max(1, tickCount - 1), true);\n\n return [Math.floor(min / step) * step, Math.ceil(max / step) * step];\n}\n\nexport function linearScale(config: LinearScaleConfig): Scale<number> {\n // Every method below closes over `config`/these helpers directly instead of reading\n // `this` — the returned object stays fully functional when destructured, e.g.\n // `const { map } = linearScale(cfg)`.\n const getDomain = (): [number, number] =>\n config.nice === false ? config.domain : niceRange(config.domain[0], config.domain[1], 10);\n const getRange = (): [number, number] => config.range;\n\n return {\n get domain(): [number, number] {\n return getDomain();\n },\n\n invert(pixel: number): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (r1 === r0) return d0;\n\n const t = (pixel - r0) / (r1 - r0);\n\n return d0 + t * (d1 - d0);\n },\n\n map(value: number): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (d1 === d0) return r0;\n\n let t = (value - d0) / (d1 - d0);\n\n if (config.clamp) {\n t = Math.max(0, Math.min(1, t));\n }\n\n return r0 + t * (r1 - r0);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count = 10): number[] {\n if (count <= 0) return [];\n\n const [d0, d1] = getDomain();\n\n if (d0 === d1 || count === 1) return [d0];\n\n // Normalize ordering so a reversed domain (e.g. an explicitly inverted axis with\n // `nice: false`) doesn't feed a negative range into niceNumber()'s Math.log10.\n const lo = Math.min(d0, d1);\n const hi = Math.max(d0, d1);\n const range = niceNumber(hi - lo, false);\n const step = niceNumber(range / (count - 1), true);\n const start = Math.ceil(lo / step) * step;\n const end = Math.floor(hi / step) * step;\n const ticks: number[] = [];\n\n for (let v = start; v <= end + step * 0.5; v += step) {\n ticks.push(Math.round(v * 1e12) / 1e12);\n }\n\n return ticks;\n },\n };\n}\n"],"mappings":"AAGA,SAAS,EAAW,EAAe,EAAwB,CACzD,IAAM,EAAM,KAAK,MAAM,KAAK,MAAM,CAAK,CAAC,EAClC,EAAO,EAAiB,IAAI,EAC9B,EAcJ,MAZA,CASO,EATH,EACE,EAAO,IAAY,EACd,EAAO,EAAU,EACjB,EAAO,EAAU,EACd,GAER,GAAQ,EAAU,EACb,GAAQ,EAAU,EAClB,GAAQ,EAAU,EACf,GAGP,EAAgB,IAAI,CAC7B,CAEA,SAAS,EAAU,EAAa,EAAa,EAAqC,CAChF,GAAI,CAAC,OAAO,SAAS,CAAG,GAAK,CAAC,OAAO,SAAS,CAAG,EAAG,MAAO,CAAC,EAAG,CAAC,EAIhE,GAFI,EAAM,IAAK,CAAC,EAAK,GAAO,CAAC,EAAK,CAAG,GAEjC,IAAQ,EAAK,MAAO,CAAC,EAAM,EAAG,EAAM,CAAC,EAGzC,IAAM,EAAO,EADC,EAAW,EAAM,EAAK,EACZ,EAAQ,KAAK,IAAI,EAAG,EAAY,CAAC,EAAG,EAAI,EAEhE,MAAO,CAAC,KAAK,MAAM,EAAM,CAAI,EAAI,EAAM,KAAK,KAAK,EAAM,CAAI,EAAI,CAAI,CACrE,CAEA,SAAgB,EAAY,EAA0C,CAIpE,IAAM,MACJ,EAAO,OAAS,GAAQ,EAAO,OAAS,EAAU,EAAO,OAAO,GAAI,EAAO,OAAO,GAAI,EAAE,EACpF,MAAmC,EAAO,MAEhD,MAAO,CACL,IAAI,QAA2B,CAC7B,OAAO,EAAU,CACnB,EAEA,OAAO,EAAuB,CAC5B,GAAM,CAAC,EAAI,GAAM,EAAU,EACrB,CAAC,EAAI,GAAM,EAAS,EAM1B,OAJI,IAAO,EAAW,EAIf,GAFI,EAAQ,IAAO,EAAK,IAEd,EAAK,EACxB,EAEA,IAAI,EAAuB,CACzB,GAAM,CAAC,EAAI,GAAM,EAAU,EACrB,CAAC,EAAI,GAAM,EAAS,EAE1B,GAAI,IAAO,EAAI,OAAO,EAEtB,IAAI,GAAK,EAAQ,IAAO,EAAK,GAM7B,OAJI,EAAO,QACT,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,CAAC,CAAC,GAGzB,EAAK,GAAK,EAAK,EACxB,EAEA,IAAI,OAA0B,CAC5B,OAAO,EAAS,CAClB,EAEA,MAAM,EAAQ,GAAc,CAC1B,GAAI,GAAS,EAAG,MAAO,CAAC,EAExB,GAAM,CAAC,EAAI,GAAM,EAAU,EAE3B,GAAI,IAAO,GAAM,IAAU,EAAG,MAAO,CAAC,CAAE,EAIxC,IAAM,EAAK,KAAK,IAAI,EAAI,CAAE,EACpB,EAAK,KAAK,IAAI,EAAI,CAAE,EAEpB,EAAO,EADC,EAAW,EAAK,EAAI,EACV,GAAS,EAAQ,GAAI,EAAI,EAC3C,EAAQ,KAAK,KAAK,EAAK,CAAI,EAAI,EAC/B,EAAM,KAAK,MAAM,EAAK,CAAI,EAAI,EAC9B,EAAkB,CAAC,EAEzB,IAAK,IAAI,EAAI,EAAO,GAAK,EAAM,EAAO,GAAK,GAAK,EAC9C,EAAM,KAAK,KAAK,MAAM,EAAI,YAAI,EAAI,YAAI,EAGxC,OAAO,CACT,CACF,CACF"}
@@ -0,0 +1,4 @@
1
+ import type { Scale } from '../types';
2
+ import type { LinearScaleConfig } from './types';
3
+ export declare function linearScale(config: LinearScaleConfig): Scale<number>;
4
+ //# sourceMappingURL=linear.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/scales/linear.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAmCjD,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,CAmEpE"}
@@ -0,0 +1,44 @@
1
+ //#region src/scales/linear.ts
2
+ function e(e, t) {
3
+ let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
4
+ return i = t ? r < 1.5 ? 1 : r < 3 ? 2 : r < 7 ? 5 : 10 : r <= 1 ? 1 : r <= 2 ? 2 : r <= 5 ? 5 : 10, i * 10 ** n;
5
+ }
6
+ function t(t, n, r) {
7
+ if (!Number.isFinite(t) || !Number.isFinite(n)) return [0, 1];
8
+ if (t > n && ([t, n] = [n, t]), t === n) return [t - 1, n + 1];
9
+ let i = e(e(n - t, !1) / Math.max(1, r - 1), !0);
10
+ return [Math.floor(t / i) * i, Math.ceil(n / i) * i];
11
+ }
12
+ function n(n) {
13
+ let r = () => n.nice === !1 ? n.domain : t(n.domain[0], n.domain[1], 10), i = () => n.range;
14
+ return {
15
+ get domain() {
16
+ return r();
17
+ },
18
+ invert(e) {
19
+ let [t, n] = r(), [a, o] = i();
20
+ return o === a ? t : t + (e - a) / (o - a) * (n - t);
21
+ },
22
+ map(e) {
23
+ let [t, a] = r(), [o, s] = i();
24
+ if (a === t) return o;
25
+ let c = (e - t) / (a - t);
26
+ return n.clamp && (c = Math.max(0, Math.min(1, c))), o + c * (s - o);
27
+ },
28
+ get range() {
29
+ return i();
30
+ },
31
+ ticks(t = 10) {
32
+ if (t <= 0) return [];
33
+ let [n, i] = r();
34
+ if (n === i || t === 1) return [n];
35
+ let a = Math.min(n, i), o = Math.max(n, i), s = e(e(o - a, !1) / (t - 1), !0), c = Math.ceil(a / s) * s, l = Math.floor(o / s) * s, u = [];
36
+ for (let e = c; e <= l + s * .5; e += s) u.push(Math.round(e * 0xe8d4a51000) / 0xe8d4a51000);
37
+ return u;
38
+ }
39
+ };
40
+ }
41
+ //#endregion
42
+ export { n as linearScale };
43
+
44
+ //# sourceMappingURL=linear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.js","names":[],"sources":["../../src/scales/linear.ts"],"sourcesContent":["import type { Scale } from '../types';\nimport type { LinearScaleConfig } from './types';\n\nfunction niceNumber(value: number, round: boolean): number {\n const exp = Math.floor(Math.log10(value));\n const frac = value / Math.pow(10, exp);\n let nice: number;\n\n if (round) {\n if (frac < 1.5) nice = 1;\n else if (frac < 3) nice = 2;\n else if (frac < 7) nice = 5;\n else nice = 10;\n } else {\n if (frac <= 1) nice = 1;\n else if (frac <= 2) nice = 2;\n else if (frac <= 5) nice = 5;\n else nice = 10;\n }\n\n return nice * Math.pow(10, exp);\n}\n\nfunction niceRange(min: number, max: number, tickCount: number): [number, number] {\n if (!Number.isFinite(min) || !Number.isFinite(max)) return [0, 1];\n\n if (min > max) [min, max] = [max, min];\n\n if (min === max) return [min - 1, max + 1];\n\n const range = niceNumber(max - min, false);\n const step = niceNumber(range / Math.max(1, tickCount - 1), true);\n\n return [Math.floor(min / step) * step, Math.ceil(max / step) * step];\n}\n\nexport function linearScale(config: LinearScaleConfig): Scale<number> {\n // Every method below closes over `config`/these helpers directly instead of reading\n // `this` — the returned object stays fully functional when destructured, e.g.\n // `const { map } = linearScale(cfg)`.\n const getDomain = (): [number, number] =>\n config.nice === false ? config.domain : niceRange(config.domain[0], config.domain[1], 10);\n const getRange = (): [number, number] => config.range;\n\n return {\n get domain(): [number, number] {\n return getDomain();\n },\n\n invert(pixel: number): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (r1 === r0) return d0;\n\n const t = (pixel - r0) / (r1 - r0);\n\n return d0 + t * (d1 - d0);\n },\n\n map(value: number): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (d1 === d0) return r0;\n\n let t = (value - d0) / (d1 - d0);\n\n if (config.clamp) {\n t = Math.max(0, Math.min(1, t));\n }\n\n return r0 + t * (r1 - r0);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count = 10): number[] {\n if (count <= 0) return [];\n\n const [d0, d1] = getDomain();\n\n if (d0 === d1 || count === 1) return [d0];\n\n // Normalize ordering so a reversed domain (e.g. an explicitly inverted axis with\n // `nice: false`) doesn't feed a negative range into niceNumber()'s Math.log10.\n const lo = Math.min(d0, d1);\n const hi = Math.max(d0, d1);\n const range = niceNumber(hi - lo, false);\n const step = niceNumber(range / (count - 1), true);\n const start = Math.ceil(lo / step) * step;\n const end = Math.floor(hi / step) * step;\n const ticks: number[] = [];\n\n for (let v = start; v <= end + step * 0.5; v += step) {\n ticks.push(Math.round(v * 1e12) / 1e12);\n }\n\n return ticks;\n },\n };\n}\n"],"mappings":";AAGA,SAAS,EAAW,GAAe,GAAwB;CACzD,IAAM,IAAM,KAAK,MAAM,KAAK,MAAM,CAAK,CAAC,GAClC,IAAO,IAAiB,MAAI,GAC9B;CAcJ,OAZA,AASO,IATH,IACE,IAAO,MAAY,IACd,IAAO,IAAU,IACjB,IAAO,IAAU,IACd,KAER,KAAQ,IAAU,IACb,KAAQ,IAAU,IAClB,KAAQ,IAAU,IACf,IAGP,IAAgB,MAAI;AAC7B;AAEA,SAAS,EAAU,GAAa,GAAa,GAAqC;CAChF,IAAI,CAAC,OAAO,SAAS,CAAG,KAAK,CAAC,OAAO,SAAS,CAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAIhE,IAFI,IAAM,MAAK,CAAC,GAAK,KAAO,CAAC,GAAK,CAAG,IAEjC,MAAQ,GAAK,OAAO,CAAC,IAAM,GAAG,IAAM,CAAC;CAGzC,IAAM,IAAO,EADC,EAAW,IAAM,GAAK,EACZ,IAAQ,KAAK,IAAI,GAAG,IAAY,CAAC,GAAG,EAAI;CAEhE,OAAO,CAAC,KAAK,MAAM,IAAM,CAAI,IAAI,GAAM,KAAK,KAAK,IAAM,CAAI,IAAI,CAAI;AACrE;AAEA,SAAgB,EAAY,GAA0C;CAIpE,IAAM,UACJ,EAAO,SAAS,KAAQ,EAAO,SAAS,EAAU,EAAO,OAAO,IAAI,EAAO,OAAO,IAAI,EAAE,GACpF,UAAmC,EAAO;CAEhD,OAAO;EACL,IAAI,SAA2B;GAC7B,OAAO,EAAU;EACnB;EAEA,OAAO,GAAuB;GAC5B,IAAM,CAAC,GAAI,KAAM,EAAU,GACrB,CAAC,GAAI,KAAM,EAAS;GAM1B,OAJI,MAAO,IAAW,IAIf,KAFI,IAAQ,MAAO,IAAK,MAEd,IAAK;EACxB;EAEA,IAAI,GAAuB;GACzB,IAAM,CAAC,GAAI,KAAM,EAAU,GACrB,CAAC,GAAI,KAAM,EAAS;GAE1B,IAAI,MAAO,GAAI,OAAO;GAEtB,IAAI,KAAK,IAAQ,MAAO,IAAK;GAM7B,OAJI,EAAO,UACT,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,IAGzB,IAAK,KAAK,IAAK;EACxB;EAEA,IAAI,QAA0B;GAC5B,OAAO,EAAS;EAClB;EAEA,MAAM,IAAQ,IAAc;GAC1B,IAAI,KAAS,GAAG,OAAO,CAAC;GAExB,IAAM,CAAC,GAAI,KAAM,EAAU;GAE3B,IAAI,MAAO,KAAM,MAAU,GAAG,OAAO,CAAC,CAAE;GAIxC,IAAM,IAAK,KAAK,IAAI,GAAI,CAAE,GACpB,IAAK,KAAK,IAAI,GAAI,CAAE,GAEpB,IAAO,EADC,EAAW,IAAK,GAAI,EACV,KAAS,IAAQ,IAAI,EAAI,GAC3C,IAAQ,KAAK,KAAK,IAAK,CAAI,IAAI,GAC/B,IAAM,KAAK,MAAM,IAAK,CAAI,IAAI,GAC9B,IAAkB,CAAC;GAEzB,KAAK,IAAI,IAAI,GAAO,KAAK,IAAM,IAAO,IAAK,KAAK,GAC9C,EAAM,KAAK,KAAK,MAAM,IAAI,YAAI,IAAI,YAAI;GAGxC,OAAO;EACT;CACF;AACF"}
@@ -0,0 +1,2 @@
1
+ var e=1e3,t=60*e,n=60*t,r=24*n,i=30*r,a=365*r,o=[e,5*e,15*e,30*e,t,5*t,15*t,30*t,n,3*n,6*n,12*n,r,7*r,i,3*i,6*i,a];function s(e,t){let n=Math.abs(e)/Math.max(1,t);for(let e of o)if(e>=n)return e;return a}function c(e,t){let[n,r]=e;n.getTime()>r.getTime()&&([n,r]=[r,n]);let i=s(r.getTime()-n.getTime(),t);return[new Date(Math.floor(n.getTime()/i)*i),new Date(Math.ceil(r.getTime()/i)*i)]}function l(e){let t=()=>e.nice===!1?e.domain:c(e.domain,10),n=()=>e.range;return{get domain(){return t()},invert(e){let[r,i]=t(),[a,o]=n();if(o===a)return r;let s=(e-a)/(o-a);return new Date(r.getTime()+s*(i.getTime()-r.getTime()))},map(e){let[r,i]=t(),[a,o]=n(),s=i.getTime()-r.getTime();return s===0?a:a+(e.getTime()-r.getTime())/s*(o-a)},get range(){return n()},ticks(e=10){let[n,r]=t(),i=s(r.getTime()-n.getTime(),e),a=Math.ceil(n.getTime()/i)*i,o=[];for(let e=a;e<=r.getTime();e+=i)o.push(new Date(e));return o}}}exports.timeScale=l;
2
+ //# sourceMappingURL=time.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.cjs","names":[],"sources":["../../src/scales/time.ts"],"sourcesContent":["import type { Scale } from '../types';\nimport type { TimeScaleConfig } from './types';\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\nconst TIME_INTERVALS = [\n SECOND,\n 5 * SECOND,\n 15 * SECOND,\n 30 * SECOND,\n MINUTE,\n 5 * MINUTE,\n 15 * MINUTE,\n 30 * MINUTE,\n HOUR,\n 3 * HOUR,\n 6 * HOUR,\n 12 * HOUR,\n DAY,\n 7 * DAY,\n MONTH,\n 3 * MONTH,\n 6 * MONTH,\n YEAR,\n];\n\nfunction chooseInterval(range: number, count: number): number {\n const target = Math.abs(range) / Math.max(1, count);\n\n for (const interval of TIME_INTERVALS) {\n if (interval >= target) return interval;\n }\n\n return YEAR;\n}\n\nfunction niceDomain(domain: [Date, Date], count: number): [Date, Date] {\n let [d0, d1] = domain;\n\n if (d0.getTime() > d1.getTime()) [d0, d1] = [d1, d0];\n\n const range = d1.getTime() - d0.getTime();\n const interval = chooseInterval(range, count);\n\n return [\n new Date(Math.floor(d0.getTime() / interval) * interval),\n new Date(Math.ceil(d1.getTime() / interval) * interval),\n ];\n}\n\nexport function timeScale(config: TimeScaleConfig): Scale<Date> {\n // Every method below closes over `config`/these helpers directly instead of reading\n // `this` — the returned object stays fully functional when destructured, e.g.\n // `const { map } = timeScale(cfg)`.\n const getDomain = (): [Date, Date] => (config.nice === false ? config.domain : niceDomain(config.domain, 10));\n const getRange = (): [number, number] => config.range;\n\n return {\n get domain(): [Date, Date] {\n return getDomain();\n },\n\n invert(pixel: number): Date {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (r1 === r0) return d0;\n\n const t = (pixel - r0) / (r1 - r0);\n\n return new Date(d0.getTime() + t * (d1.getTime() - d0.getTime()));\n },\n\n map(value: Date): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n const dRange = d1.getTime() - d0.getTime();\n\n if (dRange === 0) return r0;\n\n const t = (value.getTime() - d0.getTime()) / dRange;\n\n return r0 + t * (r1 - r0);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count = 10): Date[] {\n const [d0, d1] = getDomain();\n const range = d1.getTime() - d0.getTime();\n const interval = chooseInterval(range, count);\n const start = Math.ceil(d0.getTime() / interval) * interval;\n const ticks: Date[] = [];\n\n for (let t = start; t <= d1.getTime(); t += interval) {\n ticks.push(new Date(t));\n }\n\n return ticks;\n },\n };\n}\n"],"mappings":"AAGA,IAAM,EAAS,IACT,EAAS,GAAK,EACd,EAAO,GAAK,EACZ,EAAM,GAAK,EACX,EAAQ,GAAK,EACb,EAAO,IAAM,EAEb,EAAiB,CACrB,EACA,EAAI,EACJ,GAAK,EACL,GAAK,EACL,EACA,EAAI,EACJ,GAAK,EACL,GAAK,EACL,EACA,EAAI,EACJ,EAAI,EACJ,GAAK,EACL,EACA,EAAI,EACJ,EACA,EAAI,EACJ,EAAI,EACJ,CACF,EAEA,SAAS,EAAe,EAAe,EAAuB,CAC5D,IAAM,EAAS,KAAK,IAAI,CAAK,EAAI,KAAK,IAAI,EAAG,CAAK,EAElD,IAAK,IAAM,KAAY,EACrB,GAAI,GAAY,EAAQ,OAAO,EAGjC,OAAO,CACT,CAEA,SAAS,EAAW,EAAsB,EAA6B,CACrE,GAAI,CAAC,EAAI,GAAM,EAEX,EAAG,QAAQ,EAAI,EAAG,QAAQ,IAAG,CAAC,EAAI,GAAM,CAAC,EAAI,CAAE,GAGnD,IAAM,EAAW,EADH,EAAG,QAAQ,EAAI,EAAG,QAAQ,EACD,CAAK,EAE5C,MAAO,CACL,IAAI,KAAK,KAAK,MAAM,EAAG,QAAQ,EAAI,CAAQ,EAAI,CAAQ,EACvD,IAAI,KAAK,KAAK,KAAK,EAAG,QAAQ,EAAI,CAAQ,EAAI,CAAQ,CACxD,CACF,CAEA,SAAgB,EAAU,EAAsC,CAI9D,IAAM,MAAiC,EAAO,OAAS,GAAQ,EAAO,OAAS,EAAW,EAAO,OAAQ,EAAE,EACrG,MAAmC,EAAO,MAEhD,MAAO,CACL,IAAI,QAAuB,CACzB,OAAO,EAAU,CACnB,EAEA,OAAO,EAAqB,CAC1B,GAAM,CAAC,EAAI,GAAM,EAAU,EACrB,CAAC,EAAI,GAAM,EAAS,EAE1B,GAAI,IAAO,EAAI,OAAO,EAEtB,IAAM,GAAK,EAAQ,IAAO,EAAK,GAE/B,OAAO,IAAI,KAAK,EAAG,QAAQ,EAAI,GAAK,EAAG,QAAQ,EAAI,EAAG,QAAQ,EAAE,CAClE,EAEA,IAAI,EAAqB,CACvB,GAAM,CAAC,EAAI,GAAM,EAAU,EACrB,CAAC,EAAI,GAAM,EAAS,EACpB,EAAS,EAAG,QAAQ,EAAI,EAAG,QAAQ,EAMzC,OAJI,IAAW,EAAU,EAIlB,GAFI,EAAM,QAAQ,EAAI,EAAG,QAAQ,GAAK,GAE5B,EAAK,EACxB,EAEA,IAAI,OAA0B,CAC5B,OAAO,EAAS,CAClB,EAEA,MAAM,EAAQ,GAAY,CACxB,GAAM,CAAC,EAAI,GAAM,EAAU,EAErB,EAAW,EADH,EAAG,QAAQ,EAAI,EAAG,QAAQ,EACD,CAAK,EACtC,EAAQ,KAAK,KAAK,EAAG,QAAQ,EAAI,CAAQ,EAAI,EAC7C,EAAgB,CAAC,EAEvB,IAAK,IAAI,EAAI,EAAO,GAAK,EAAG,QAAQ,EAAG,GAAK,EAC1C,EAAM,KAAK,IAAI,KAAK,CAAC,CAAC,EAGxB,OAAO,CACT,CACF,CACF"}
@@ -0,0 +1,4 @@
1
+ import type { Scale } from '../types';
2
+ import type { TimeScaleConfig } from './types';
3
+ export declare function timeScale(config: TimeScaleConfig): Scale<Date>;
4
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/scales/time.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAsD/C,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAqD9D"}
@@ -0,0 +1,62 @@
1
+ //#region src/scales/time.ts
2
+ var e = 1e3, t = 60 * e, n = 60 * t, r = 24 * n, i = 30 * r, a = 365 * r, o = [
3
+ e,
4
+ 5 * e,
5
+ 15 * e,
6
+ 30 * e,
7
+ t,
8
+ 5 * t,
9
+ 15 * t,
10
+ 30 * t,
11
+ n,
12
+ 3 * n,
13
+ 6 * n,
14
+ 12 * n,
15
+ r,
16
+ 7 * r,
17
+ i,
18
+ 3 * i,
19
+ 6 * i,
20
+ a
21
+ ];
22
+ function s(e, t) {
23
+ let n = Math.abs(e) / Math.max(1, t);
24
+ for (let e of o) if (e >= n) return e;
25
+ return a;
26
+ }
27
+ function c(e, t) {
28
+ let [n, r] = e;
29
+ n.getTime() > r.getTime() && ([n, r] = [r, n]);
30
+ let i = s(r.getTime() - n.getTime(), t);
31
+ return [new Date(Math.floor(n.getTime() / i) * i), new Date(Math.ceil(r.getTime() / i) * i)];
32
+ }
33
+ function l(e) {
34
+ let t = () => e.nice === !1 ? e.domain : c(e.domain, 10), n = () => e.range;
35
+ return {
36
+ get domain() {
37
+ return t();
38
+ },
39
+ invert(e) {
40
+ let [r, i] = t(), [a, o] = n();
41
+ if (o === a) return r;
42
+ let s = (e - a) / (o - a);
43
+ return new Date(r.getTime() + s * (i.getTime() - r.getTime()));
44
+ },
45
+ map(e) {
46
+ let [r, i] = t(), [a, o] = n(), s = i.getTime() - r.getTime();
47
+ return s === 0 ? a : a + (e.getTime() - r.getTime()) / s * (o - a);
48
+ },
49
+ get range() {
50
+ return n();
51
+ },
52
+ ticks(e = 10) {
53
+ let [n, r] = t(), i = s(r.getTime() - n.getTime(), e), a = Math.ceil(n.getTime() / i) * i, o = [];
54
+ for (let e = a; e <= r.getTime(); e += i) o.push(new Date(e));
55
+ return o;
56
+ }
57
+ };
58
+ }
59
+ //#endregion
60
+ export { l as timeScale };
61
+
62
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","names":[],"sources":["../../src/scales/time.ts"],"sourcesContent":["import type { Scale } from '../types';\nimport type { TimeScaleConfig } from './types';\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\nconst TIME_INTERVALS = [\n SECOND,\n 5 * SECOND,\n 15 * SECOND,\n 30 * SECOND,\n MINUTE,\n 5 * MINUTE,\n 15 * MINUTE,\n 30 * MINUTE,\n HOUR,\n 3 * HOUR,\n 6 * HOUR,\n 12 * HOUR,\n DAY,\n 7 * DAY,\n MONTH,\n 3 * MONTH,\n 6 * MONTH,\n YEAR,\n];\n\nfunction chooseInterval(range: number, count: number): number {\n const target = Math.abs(range) / Math.max(1, count);\n\n for (const interval of TIME_INTERVALS) {\n if (interval >= target) return interval;\n }\n\n return YEAR;\n}\n\nfunction niceDomain(domain: [Date, Date], count: number): [Date, Date] {\n let [d0, d1] = domain;\n\n if (d0.getTime() > d1.getTime()) [d0, d1] = [d1, d0];\n\n const range = d1.getTime() - d0.getTime();\n const interval = chooseInterval(range, count);\n\n return [\n new Date(Math.floor(d0.getTime() / interval) * interval),\n new Date(Math.ceil(d1.getTime() / interval) * interval),\n ];\n}\n\nexport function timeScale(config: TimeScaleConfig): Scale<Date> {\n // Every method below closes over `config`/these helpers directly instead of reading\n // `this` — the returned object stays fully functional when destructured, e.g.\n // `const { map } = timeScale(cfg)`.\n const getDomain = (): [Date, Date] => (config.nice === false ? config.domain : niceDomain(config.domain, 10));\n const getRange = (): [number, number] => config.range;\n\n return {\n get domain(): [Date, Date] {\n return getDomain();\n },\n\n invert(pixel: number): Date {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (r1 === r0) return d0;\n\n const t = (pixel - r0) / (r1 - r0);\n\n return new Date(d0.getTime() + t * (d1.getTime() - d0.getTime()));\n },\n\n map(value: Date): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n const dRange = d1.getTime() - d0.getTime();\n\n if (dRange === 0) return r0;\n\n const t = (value.getTime() - d0.getTime()) / dRange;\n\n return r0 + t * (r1 - r0);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count = 10): Date[] {\n const [d0, d1] = getDomain();\n const range = d1.getTime() - d0.getTime();\n const interval = chooseInterval(range, count);\n const start = Math.ceil(d0.getTime() / interval) * interval;\n const ticks: Date[] = [];\n\n for (let t = start; t <= d1.getTime(); t += interval) {\n ticks.push(new Date(t));\n }\n\n return ticks;\n },\n };\n}\n"],"mappings":";AAGA,IAAM,IAAS,KACT,IAAS,KAAK,GACd,IAAO,KAAK,GACZ,IAAM,KAAK,GACX,IAAQ,KAAK,GACb,IAAO,MAAM,GAEb,IAAiB;CACrB;CACA,IAAI;CACJ,KAAK;CACL,KAAK;CACL;CACA,IAAI;CACJ,KAAK;CACL,KAAK;CACL;CACA,IAAI;CACJ,IAAI;CACJ,KAAK;CACL;CACA,IAAI;CACJ;CACA,IAAI;CACJ,IAAI;CACJ;AACF;AAEA,SAAS,EAAe,GAAe,GAAuB;CAC5D,IAAM,IAAS,KAAK,IAAI,CAAK,IAAI,KAAK,IAAI,GAAG,CAAK;CAElD,KAAK,IAAM,KAAY,GACrB,IAAI,KAAY,GAAQ,OAAO;CAGjC,OAAO;AACT;AAEA,SAAS,EAAW,GAAsB,GAA6B;CACrE,IAAI,CAAC,GAAI,KAAM;CAEf,AAAI,EAAG,QAAQ,IAAI,EAAG,QAAQ,MAAG,CAAC,GAAI,KAAM,CAAC,GAAI,CAAE;CAGnD,IAAM,IAAW,EADH,EAAG,QAAQ,IAAI,EAAG,QAAQ,GACD,CAAK;CAE5C,OAAO,CACL,IAAI,KAAK,KAAK,MAAM,EAAG,QAAQ,IAAI,CAAQ,IAAI,CAAQ,GACvD,IAAI,KAAK,KAAK,KAAK,EAAG,QAAQ,IAAI,CAAQ,IAAI,CAAQ,CACxD;AACF;AAEA,SAAgB,EAAU,GAAsC;CAI9D,IAAM,UAAiC,EAAO,SAAS,KAAQ,EAAO,SAAS,EAAW,EAAO,QAAQ,EAAE,GACrG,UAAmC,EAAO;CAEhD,OAAO;EACL,IAAI,SAAuB;GACzB,OAAO,EAAU;EACnB;EAEA,OAAO,GAAqB;GAC1B,IAAM,CAAC,GAAI,KAAM,EAAU,GACrB,CAAC,GAAI,KAAM,EAAS;GAE1B,IAAI,MAAO,GAAI,OAAO;GAEtB,IAAM,KAAK,IAAQ,MAAO,IAAK;GAE/B,OAAO,IAAI,KAAK,EAAG,QAAQ,IAAI,KAAK,EAAG,QAAQ,IAAI,EAAG,QAAQ,EAAE;EAClE;EAEA,IAAI,GAAqB;GACvB,IAAM,CAAC,GAAI,KAAM,EAAU,GACrB,CAAC,GAAI,KAAM,EAAS,GACpB,IAAS,EAAG,QAAQ,IAAI,EAAG,QAAQ;GAMzC,OAJI,MAAW,IAAU,IAIlB,KAFI,EAAM,QAAQ,IAAI,EAAG,QAAQ,KAAK,KAE5B,IAAK;EACxB;EAEA,IAAI,QAA0B;GAC5B,OAAO,EAAS;EAClB;EAEA,MAAM,IAAQ,IAAY;GACxB,IAAM,CAAC,GAAI,KAAM,EAAU,GAErB,IAAW,EADH,EAAG,QAAQ,IAAI,EAAG,QAAQ,GACD,CAAK,GACtC,IAAQ,KAAK,KAAK,EAAG,QAAQ,IAAI,CAAQ,IAAI,GAC7C,IAAgB,CAAC;GAEvB,KAAK,IAAI,IAAI,GAAO,KAAK,EAAG,QAAQ,GAAG,KAAK,GAC1C,EAAM,KAAK,IAAI,KAAK,CAAC,CAAC;GAGxB,OAAO;EACT;CACF;AACF"}
@@ -0,0 +1,19 @@
1
+ export type { BandScale, Scale } from '../types';
2
+ export interface BandScaleConfig {
3
+ domain: string[];
4
+ padding?: number;
5
+ paddingOuter?: number;
6
+ range: [number, number];
7
+ }
8
+ export interface LinearScaleConfig {
9
+ clamp?: boolean;
10
+ domain: [number, number];
11
+ nice?: boolean;
12
+ range: [number, number];
13
+ }
14
+ export interface TimeScaleConfig {
15
+ domain: [Date, Date];
16
+ nice?: boolean;
17
+ range: [number, number];
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scales/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ const e=require("../_dev.cjs");var t=`http://www.w3.org/2000/svg`;function n(e,n){let i=document.createElementNS(t,e);return n&&r(i,n),i}function r(t,n){for(let[r,i]of Object.entries(n)){if(i===void 0){t.removeAttribute(r);continue}typeof i==`number`&&!Number.isFinite(i)&&e.warn(`setAttributes: attribute "${r}" on <${t.tagName}> received a non-finite value (${i}) — check upstream scale/geometry math for invalid input.`),t.setAttribute(r,String(i))}}function i(e){for(;e.firstChild;)e.removeChild(e.firstChild)}exports.createSvgElement=n,exports.removeChildren=i,exports.setAttributes=r;
2
+ //# sourceMappingURL=element.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.cjs","names":[],"sources":["../../src/svg/element.ts"],"sourcesContent":["import { warn } from '../_dev';\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\n\nexport function createSvgElement<K extends keyof SVGElementTagNameMap>(\n tag: K,\n attrs?: Record<string, number | string | undefined>,\n): SVGElementTagNameMap[K] {\n const el = document.createElementNS(SVG_NS, tag);\n\n if (attrs) setAttributes(el, attrs);\n\n return el;\n}\n\nexport function setAttributes(el: SVGElement, attrs: Record<string, number | string | undefined>): void {\n for (const [key, value] of Object.entries(attrs)) {\n if (value === undefined) {\n el.removeAttribute(key);\n\n continue;\n }\n\n if (typeof value === 'number' && !Number.isFinite(value)) {\n warn(\n `setAttributes: attribute \"${key}\" on <${el.tagName}> received a non-finite value (${value}) — check upstream scale/geometry math for invalid input.`,\n );\n }\n\n el.setAttribute(key, String(value));\n }\n}\n\nexport function removeChildren(el: SVGElement): void {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n"],"mappings":"+BAEA,IAAM,EAAS,6BAEf,SAAgB,EACd,EACA,EACyB,CACzB,IAAM,EAAK,SAAS,gBAAgB,EAAQ,CAAG,EAI/C,OAFI,GAAO,EAAc,EAAI,CAAK,EAE3B,CACT,CAEA,SAAgB,EAAc,EAAgB,EAA0D,CACtG,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,CAAK,EAAG,CAChD,GAAI,IAAU,IAAA,GAAW,CACvB,EAAG,gBAAgB,CAAG,EAEtB,QACF,CAEI,OAAO,GAAU,UAAY,CAAC,OAAO,SAAS,CAAK,GACrD,EAAA,KACE,6BAA6B,EAAI,QAAQ,EAAG,QAAQ,iCAAiC,EAAM,0DAC7F,EAGF,EAAG,aAAa,EAAK,OAAO,CAAK,CAAC,CACpC,CACF,CAEA,SAAgB,EAAe,EAAsB,CACnD,KAAO,EAAG,YACR,EAAG,YAAY,EAAG,UAAU,CAEhC"}
@@ -0,0 +1,4 @@
1
+ export declare function createSvgElement<K extends keyof SVGElementTagNameMap>(tag: K, attrs?: Record<string, number | string | undefined>): SVGElementTagNameMap[K];
2
+ export declare function setAttributes(el: SVGElement, attrs: Record<string, number | string | undefined>): void;
3
+ export declare function removeChildren(el: SVGElement): void;
4
+ //# sourceMappingURL=element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../src/svg/element.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,oBAAoB,EACnE,GAAG,EAAE,CAAC,EACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAClD,oBAAoB,CAAC,CAAC,CAAC,CAMzB;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,CAgBtG;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAInD"}
@@ -0,0 +1,23 @@
1
+ import { warn as e } from "../_dev.js";
2
+ //#region src/svg/element.ts
3
+ var t = "http://www.w3.org/2000/svg";
4
+ function n(e, n) {
5
+ let i = document.createElementNS(t, e);
6
+ return n && r(i, n), i;
7
+ }
8
+ function r(t, n) {
9
+ for (let [r, i] of Object.entries(n)) {
10
+ if (i === void 0) {
11
+ t.removeAttribute(r);
12
+ continue;
13
+ }
14
+ typeof i == "number" && !Number.isFinite(i) && e(`setAttributes: attribute "${r}" on <${t.tagName}> received a non-finite value (${i}) — check upstream scale/geometry math for invalid input.`), t.setAttribute(r, String(i));
15
+ }
16
+ }
17
+ function i(e) {
18
+ for (; e.firstChild;) e.removeChild(e.firstChild);
19
+ }
20
+ //#endregion
21
+ export { n as createSvgElement, i as removeChildren, r as setAttributes };
22
+
23
+ //# sourceMappingURL=element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.js","names":[],"sources":["../../src/svg/element.ts"],"sourcesContent":["import { warn } from '../_dev';\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\n\nexport function createSvgElement<K extends keyof SVGElementTagNameMap>(\n tag: K,\n attrs?: Record<string, number | string | undefined>,\n): SVGElementTagNameMap[K] {\n const el = document.createElementNS(SVG_NS, tag);\n\n if (attrs) setAttributes(el, attrs);\n\n return el;\n}\n\nexport function setAttributes(el: SVGElement, attrs: Record<string, number | string | undefined>): void {\n for (const [key, value] of Object.entries(attrs)) {\n if (value === undefined) {\n el.removeAttribute(key);\n\n continue;\n }\n\n if (typeof value === 'number' && !Number.isFinite(value)) {\n warn(\n `setAttributes: attribute \"${key}\" on <${el.tagName}> received a non-finite value (${value}) — check upstream scale/geometry math for invalid input.`,\n );\n }\n\n el.setAttribute(key, String(value));\n }\n}\n\nexport function removeChildren(el: SVGElement): void {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n"],"mappings":";;AAEA,IAAM,IAAS;AAEf,SAAgB,EACd,GACA,GACyB;CACzB,IAAM,IAAK,SAAS,gBAAgB,GAAQ,CAAG;CAI/C,OAFI,KAAO,EAAc,GAAI,CAAK,GAE3B;AACT;AAEA,SAAgB,EAAc,GAAgB,GAA0D;CACtG,KAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,CAAK,GAAG;EAChD,IAAI,MAAU,KAAA,GAAW;GACvB,EAAG,gBAAgB,CAAG;GAEtB;EACF;EAQA,AANI,OAAO,KAAU,YAAY,CAAC,OAAO,SAAS,CAAK,KACrD,EACE,6BAA6B,EAAI,QAAQ,EAAG,QAAQ,iCAAiC,EAAM,0DAC7F,GAGF,EAAG,aAAa,GAAK,OAAO,CAAK,CAAC;CACpC;AACF;AAEA,SAAgB,EAAe,GAAsB;CACnD,OAAO,EAAG,aACR,EAAG,YAAY,EAAG,UAAU;AAEhC"}
@@ -0,0 +1,5 @@
1
+ export { createSvgElement, removeChildren, setAttributes } from './element';
2
+ export { areaPath, linePath, monotonePath, stepPath } from './path';
3
+ export type { Point } from './path';
4
+ export { createAxisLabel, createTextElement, measureTextWidth, truncateText } from './text';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/svg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACpE,YAAY,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ function e(e){if(e.length===0)return``;let t=`M${e[0].x},${e[0].y}`;for(let n=1;n<e.length;n++)t+=`L${e[n].x},${e[n].y}`;return t}function t(t){if(t.length<3)return e(t);let n=t.length,r=[];for(let e=0;e<n;e++)e===0?r.push({x:t[1].x-t[0].x,y:t[1].y-t[0].y}):e===n-1?r.push({x:t[n-1].x-t[n-2].x,y:t[n-1].y-t[n-2].y}):r.push({x:(t[e+1].x-t[e-1].x)/2,y:(t[e+1].y-t[e-1].y)/2});let i=`M${t[0].x},${t[0].y}`;for(let e=0;e<n-1;e++){let n=t[e],a=t[e+1],o=r[e],s=r[e+1],c=(a.x-n.x)/3;i+=`C${n.x+c},${n.y+o.y/3},${a.x-c},${a.y-s.y/3},${a.x},${a.y}`}return i}function n(e){if(e.length===0)return``;let t=`M${e[0].x},${e[0].y}`;for(let n=1;n<e.length;n++){let r=(e[n-1].x+e[n].x)/2;t+=`H${r}V${e[n].y}H${e[n].x}`}return t}function r(r,i,a=`linear`){if(r.length===0)return``;let o=a===`monotone`?t(r):a===`step`?n(r):e(r),s=[...i].reverse();if(s.length>0){o+=`L${s[0].x},${s[0].y}`;for(let e=1;e<s.length;e++)o+=`L${s[e].x},${s[e].y}`}return o+=`Z`,o}exports.areaPath=r,exports.linePath=e,exports.monotonePath=t,exports.stepPath=n;
2
+ //# sourceMappingURL=path.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.cjs","names":[],"sources":["../../src/svg/path.ts"],"sourcesContent":["export interface Point {\n x: number;\n y: number;\n}\n\nexport function linePath(points: Point[]): string {\n if (points.length === 0) return '';\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 1; i < points.length; i++) {\n d += `L${points[i].x},${points[i].y}`;\n }\n\n return d;\n}\n\nexport function monotonePath(points: Point[]): string {\n if (points.length < 3) return linePath(points);\n\n const n = points.length;\n const tangents: Point[] = [];\n\n for (let i = 0; i < n; i++) {\n if (i === 0) {\n tangents.push({ x: points[1].x - points[0].x, y: points[1].y - points[0].y });\n } else if (i === n - 1) {\n tangents.push({ x: points[n - 1].x - points[n - 2].x, y: points[n - 1].y - points[n - 2].y });\n } else {\n tangents.push({ x: (points[i + 1].x - points[i - 1].x) / 2, y: (points[i + 1].y - points[i - 1].y) / 2 });\n }\n }\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n const t0 = tangents[i];\n const t1 = tangents[i + 1];\n const dx = (p1.x - p0.x) / 3;\n\n d += `C${p0.x + dx},${p0.y + t0.y / 3},${p1.x - dx},${p1.y - t1.y / 3},${p1.x},${p1.y}`;\n }\n\n return d;\n}\n\nexport function stepPath(points: Point[]): string {\n if (points.length === 0) return '';\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 1; i < points.length; i++) {\n const midX = (points[i - 1].x + points[i].x) / 2;\n\n d += `H${midX}V${points[i].y}H${points[i].x}`;\n }\n\n return d;\n}\n\nexport function areaPath(\n topPoints: Point[],\n bottomPoints: Point[],\n curve: 'linear' | 'monotone' | 'step' = 'linear',\n): string {\n if (topPoints.length === 0) return '';\n\n const topPath =\n curve === 'monotone' ? monotonePath(topPoints) : curve === 'step' ? stepPath(topPoints) : linePath(topPoints);\n let d = topPath;\n const reversed = [...bottomPoints].reverse();\n\n if (reversed.length > 0) {\n d += `L${reversed[0].x},${reversed[0].y}`;\n for (let i = 1; i < reversed.length; i++) {\n d += `L${reversed[i].x},${reversed[i].y}`;\n }\n }\n\n d += 'Z';\n\n return d;\n}\n"],"mappings":"AAKA,SAAgB,EAAS,EAAyB,CAChD,GAAI,EAAO,SAAW,EAAG,MAAO,GAEhC,IAAI,EAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,IAErC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,GAAK,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,IAGpC,OAAO,CACT,CAEA,SAAgB,EAAa,EAAyB,CACpD,GAAI,EAAO,OAAS,EAAG,OAAO,EAAS,CAAM,EAE7C,IAAM,EAAI,EAAO,OACX,EAAoB,CAAC,EAE3B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACjB,IAAM,EACR,EAAS,KAAK,CAAE,EAAG,EAAO,EAAE,CAAC,EAAI,EAAO,EAAE,CAAC,EAAG,EAAG,EAAO,EAAE,CAAC,EAAI,EAAO,EAAE,CAAC,CAAE,CAAC,EACnE,IAAM,EAAI,EACnB,EAAS,KAAK,CAAE,EAAG,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAI,EAAE,CAAC,EAAG,EAAG,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAI,EAAE,CAAC,CAAE,CAAC,EAE5F,EAAS,KAAK,CAAE,GAAI,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAI,EAAE,CAAC,GAAK,EAAG,GAAI,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAI,EAAE,CAAC,GAAK,CAAE,CAAC,EAI5G,IAAI,EAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,IAErC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,EAAG,IAAK,CAC9B,IAAM,EAAK,EAAO,GACZ,EAAK,EAAO,EAAI,GAChB,EAAK,EAAS,GACd,EAAK,EAAS,EAAI,GAClB,GAAM,EAAG,EAAI,EAAG,GAAK,EAE3B,GAAK,IAAI,EAAG,EAAI,EAAG,GAAG,EAAG,EAAI,EAAG,EAAI,EAAE,GAAG,EAAG,EAAI,EAAG,GAAG,EAAG,EAAI,EAAG,EAAI,EAAE,GAAG,EAAG,EAAE,GAAG,EAAG,GACtF,CAEA,OAAO,CACT,CAEA,SAAgB,EAAS,EAAyB,CAChD,GAAI,EAAO,SAAW,EAAG,MAAO,GAEhC,IAAI,EAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,IAErC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACtC,IAAM,GAAQ,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAE,CAAC,GAAK,EAE/C,GAAK,IAAI,EAAK,GAAG,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,GAC5C,CAEA,OAAO,CACT,CAEA,SAAgB,EACd,EACA,EACA,EAAwC,SAChC,CACR,GAAI,EAAU,SAAW,EAAG,MAAO,GAInC,IAAI,EADF,IAAU,WAAa,EAAa,CAAS,EAAI,IAAU,OAAS,EAAS,CAAS,EAAI,EAAS,CAAS,EAExG,EAAW,CAAC,GAAG,CAAY,CAAC,CAAC,QAAQ,EAE3C,GAAI,EAAS,OAAS,EAAG,CACvB,GAAK,IAAI,EAAS,EAAE,CAAC,EAAE,GAAG,EAAS,EAAE,CAAC,IACtC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,GAAK,IAAI,EAAS,EAAE,CAAC,EAAE,GAAG,EAAS,EAAE,CAAC,GAE1C,CAIA,MAFA,IAAK,IAEE,CACT"}
@@ -0,0 +1,9 @@
1
+ export interface Point {
2
+ x: number;
3
+ y: number;
4
+ }
5
+ export declare function linePath(points: Point[]): string;
6
+ export declare function monotonePath(points: Point[]): string;
7
+ export declare function stepPath(points: Point[]): string;
8
+ export declare function areaPath(topPoints: Point[], bottomPoints: Point[], curve?: 'linear' | 'monotone' | 'step'): string;
9
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/svg/path.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAUhD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CA6BpD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAYhD;AAED,wBAAgB,QAAQ,CACtB,SAAS,EAAE,KAAK,EAAE,EAClB,YAAY,EAAE,KAAK,EAAE,EACrB,KAAK,GAAE,QAAQ,GAAG,UAAU,GAAG,MAAiB,GAC/C,MAAM,CAkBR"}
@@ -0,0 +1,49 @@
1
+ //#region src/svg/path.ts
2
+ function e(e) {
3
+ if (e.length === 0) return "";
4
+ let t = `M${e[0].x},${e[0].y}`;
5
+ for (let n = 1; n < e.length; n++) t += `L${e[n].x},${e[n].y}`;
6
+ return t;
7
+ }
8
+ function t(t) {
9
+ if (t.length < 3) return e(t);
10
+ let n = t.length, r = [];
11
+ for (let e = 0; e < n; e++) e === 0 ? r.push({
12
+ x: t[1].x - t[0].x,
13
+ y: t[1].y - t[0].y
14
+ }) : e === n - 1 ? r.push({
15
+ x: t[n - 1].x - t[n - 2].x,
16
+ y: t[n - 1].y - t[n - 2].y
17
+ }) : r.push({
18
+ x: (t[e + 1].x - t[e - 1].x) / 2,
19
+ y: (t[e + 1].y - t[e - 1].y) / 2
20
+ });
21
+ let i = `M${t[0].x},${t[0].y}`;
22
+ for (let e = 0; e < n - 1; e++) {
23
+ let n = t[e], a = t[e + 1], o = r[e], s = r[e + 1], c = (a.x - n.x) / 3;
24
+ i += `C${n.x + c},${n.y + o.y / 3},${a.x - c},${a.y - s.y / 3},${a.x},${a.y}`;
25
+ }
26
+ return i;
27
+ }
28
+ function n(e) {
29
+ if (e.length === 0) return "";
30
+ let t = `M${e[0].x},${e[0].y}`;
31
+ for (let n = 1; n < e.length; n++) {
32
+ let r = (e[n - 1].x + e[n].x) / 2;
33
+ t += `H${r}V${e[n].y}H${e[n].x}`;
34
+ }
35
+ return t;
36
+ }
37
+ function r(r, i, a = "linear") {
38
+ if (r.length === 0) return "";
39
+ let o = a === "monotone" ? t(r) : a === "step" ? n(r) : e(r), s = [...i].reverse();
40
+ if (s.length > 0) {
41
+ o += `L${s[0].x},${s[0].y}`;
42
+ for (let e = 1; e < s.length; e++) o += `L${s[e].x},${s[e].y}`;
43
+ }
44
+ return o += "Z", o;
45
+ }
46
+ //#endregion
47
+ export { r as areaPath, e as linePath, t as monotonePath, n as stepPath };
48
+
49
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","names":[],"sources":["../../src/svg/path.ts"],"sourcesContent":["export interface Point {\n x: number;\n y: number;\n}\n\nexport function linePath(points: Point[]): string {\n if (points.length === 0) return '';\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 1; i < points.length; i++) {\n d += `L${points[i].x},${points[i].y}`;\n }\n\n return d;\n}\n\nexport function monotonePath(points: Point[]): string {\n if (points.length < 3) return linePath(points);\n\n const n = points.length;\n const tangents: Point[] = [];\n\n for (let i = 0; i < n; i++) {\n if (i === 0) {\n tangents.push({ x: points[1].x - points[0].x, y: points[1].y - points[0].y });\n } else if (i === n - 1) {\n tangents.push({ x: points[n - 1].x - points[n - 2].x, y: points[n - 1].y - points[n - 2].y });\n } else {\n tangents.push({ x: (points[i + 1].x - points[i - 1].x) / 2, y: (points[i + 1].y - points[i - 1].y) / 2 });\n }\n }\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n const t0 = tangents[i];\n const t1 = tangents[i + 1];\n const dx = (p1.x - p0.x) / 3;\n\n d += `C${p0.x + dx},${p0.y + t0.y / 3},${p1.x - dx},${p1.y - t1.y / 3},${p1.x},${p1.y}`;\n }\n\n return d;\n}\n\nexport function stepPath(points: Point[]): string {\n if (points.length === 0) return '';\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 1; i < points.length; i++) {\n const midX = (points[i - 1].x + points[i].x) / 2;\n\n d += `H${midX}V${points[i].y}H${points[i].x}`;\n }\n\n return d;\n}\n\nexport function areaPath(\n topPoints: Point[],\n bottomPoints: Point[],\n curve: 'linear' | 'monotone' | 'step' = 'linear',\n): string {\n if (topPoints.length === 0) return '';\n\n const topPath =\n curve === 'monotone' ? monotonePath(topPoints) : curve === 'step' ? stepPath(topPoints) : linePath(topPoints);\n let d = topPath;\n const reversed = [...bottomPoints].reverse();\n\n if (reversed.length > 0) {\n d += `L${reversed[0].x},${reversed[0].y}`;\n for (let i = 1; i < reversed.length; i++) {\n d += `L${reversed[i].x},${reversed[i].y}`;\n }\n }\n\n d += 'Z';\n\n return d;\n}\n"],"mappings":";AAKA,SAAgB,EAAS,GAAyB;CAChD,IAAI,EAAO,WAAW,GAAG,OAAO;CAEhC,IAAI,IAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAErC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,QAAQ,KACjC,KAAK,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAGpC,OAAO;AACT;AAEA,SAAgB,EAAa,GAAyB;CACpD,IAAI,EAAO,SAAS,GAAG,OAAO,EAAS,CAAM;CAE7C,IAAM,IAAI,EAAO,QACX,IAAoB,CAAC;CAE3B,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KACrB,AAAI,MAAM,IACR,EAAS,KAAK;EAAE,GAAG,EAAO,EAAE,CAAC,IAAI,EAAO,EAAE,CAAC;EAAG,GAAG,EAAO,EAAE,CAAC,IAAI,EAAO,EAAE,CAAC;CAAE,CAAC,IACnE,MAAM,IAAI,IACnB,EAAS,KAAK;EAAE,GAAG,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,IAAI,EAAE,CAAC;EAAG,GAAG,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,IAAI,EAAE,CAAC;CAAE,CAAC,IAE5F,EAAS,KAAK;EAAE,IAAI,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,IAAI,EAAE,CAAC,KAAK;EAAG,IAAI,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,IAAI,EAAE,CAAC,KAAK;CAAE,CAAC;CAI5G,IAAI,IAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAErC,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,KAAK;EAC9B,IAAM,IAAK,EAAO,IACZ,IAAK,EAAO,IAAI,IAChB,IAAK,EAAS,IACd,IAAK,EAAS,IAAI,IAClB,KAAM,EAAG,IAAI,EAAG,KAAK;EAE3B,KAAK,IAAI,EAAG,IAAI,EAAG,GAAG,EAAG,IAAI,EAAG,IAAI,EAAE,GAAG,EAAG,IAAI,EAAG,GAAG,EAAG,IAAI,EAAG,IAAI,EAAE,GAAG,EAAG,EAAE,GAAG,EAAG;CACtF;CAEA,OAAO;AACT;AAEA,SAAgB,EAAS,GAAyB;CAChD,IAAI,EAAO,WAAW,GAAG,OAAO;CAEhC,IAAI,IAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAErC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,QAAQ,KAAK;EACtC,IAAM,KAAQ,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,EAAE,CAAC,KAAK;EAE/C,KAAK,IAAI,EAAK,GAAG,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAC5C;CAEA,OAAO;AACT;AAEA,SAAgB,EACd,GACA,GACA,IAAwC,UAChC;CACR,IAAI,EAAU,WAAW,GAAG,OAAO;CAInC,IAAI,IADF,MAAU,aAAa,EAAa,CAAS,IAAI,MAAU,SAAS,EAAS,CAAS,IAAI,EAAS,CAAS,GAExG,IAAW,CAAC,GAAG,CAAY,CAAC,CAAC,QAAQ;CAE3C,IAAI,EAAS,SAAS,GAAG;EACvB,KAAK,IAAI,EAAS,EAAE,CAAC,EAAE,GAAG,EAAS,EAAE,CAAC;EACtC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAS,QAAQ,KACnC,KAAK,IAAI,EAAS,EAAE,CAAC,EAAE,GAAG,EAAS,EAAE,CAAC;CAE1C;CAIA,OAFA,KAAK,KAEE;AACT"}
@@ -0,0 +1,2 @@
1
+ const e=require("./element.cjs");function t(t,n){let r=e.createSvgElement(`text`,n);return r.textContent=t,r}exports.createTextElement=t;
2
+ //# sourceMappingURL=text.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.cjs","names":[],"sources":["../../src/svg/text.ts"],"sourcesContent":["import { createSvgElement, setAttributes } from './element';\n\nexport function createTextElement(\n content: string,\n attrs?: Record<string, number | string | undefined>,\n): SVGTextElement {\n const text = createSvgElement('text', attrs);\n\n text.textContent = content;\n\n return text;\n}\n\nexport function truncateText(text: string, maxWidth: number, fontSize: number): string {\n const avgCharWidth = fontSize * 0.6;\n const maxChars = Math.floor(maxWidth / avgCharWidth);\n\n if (text.length <= maxChars) return text;\n\n return text.slice(0, Math.max(1, maxChars - 1)) + '…';\n}\n\nexport function measureTextWidth(text: string, fontSize: number): number {\n return text.length * fontSize * 0.6;\n}\n\nexport function createAxisLabel(\n content: string,\n x: number,\n y: number,\n anchor: 'end' | 'middle' | 'start' = 'middle',\n): SVGTextElement {\n return createTextElement(content, {\n 'dominant-baseline': 'middle',\n 'text-anchor': anchor,\n x,\n y,\n });\n}\n\nexport { setAttributes };\n"],"mappings":"iCAEA,SAAgB,EACd,EACA,EACgB,CAChB,IAAM,EAAO,EAAA,iBAAiB,OAAQ,CAAK,EAI3C,MAFA,GAAK,YAAc,EAEZ,CACT"}
@@ -0,0 +1,7 @@
1
+ import { setAttributes } from './element';
2
+ export declare function createTextElement(content: string, attrs?: Record<string, number | string | undefined>): SVGTextElement;
3
+ export declare function truncateText(text: string, maxWidth: number, fontSize: number): string;
4
+ export declare function measureTextWidth(text: string, fontSize: number): number;
5
+ export declare function createAxisLabel(content: string, x: number, y: number, anchor?: 'end' | 'middle' | 'start'): SVGTextElement;
6
+ export { setAttributes };
7
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/svg/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,aAAa,EAAE,MAAM,WAAW,CAAC;AAE5D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAClD,cAAc,CAMhB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOrF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,GAAE,KAAK,GAAG,QAAQ,GAAG,OAAkB,GAC5C,cAAc,CAOhB;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { createSvgElement as e } from "./element.js";
2
+ //#region src/svg/text.ts
3
+ function t(t, n) {
4
+ let r = e("text", n);
5
+ return r.textContent = t, r;
6
+ }
7
+ //#endregion
8
+ export { t as createTextElement };
9
+
10
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","names":[],"sources":["../../src/svg/text.ts"],"sourcesContent":["import { createSvgElement, setAttributes } from './element';\n\nexport function createTextElement(\n content: string,\n attrs?: Record<string, number | string | undefined>,\n): SVGTextElement {\n const text = createSvgElement('text', attrs);\n\n text.textContent = content;\n\n return text;\n}\n\nexport function truncateText(text: string, maxWidth: number, fontSize: number): string {\n const avgCharWidth = fontSize * 0.6;\n const maxChars = Math.floor(maxWidth / avgCharWidth);\n\n if (text.length <= maxChars) return text;\n\n return text.slice(0, Math.max(1, maxChars - 1)) + '…';\n}\n\nexport function measureTextWidth(text: string, fontSize: number): number {\n return text.length * fontSize * 0.6;\n}\n\nexport function createAxisLabel(\n content: string,\n x: number,\n y: number,\n anchor: 'end' | 'middle' | 'start' = 'middle',\n): SVGTextElement {\n return createTextElement(content, {\n 'dominant-baseline': 'middle',\n 'text-anchor': anchor,\n x,\n y,\n });\n}\n\nexport { setAttributes };\n"],"mappings":";;AAEA,SAAgB,EACd,GACA,GACgB;CAChB,IAAM,IAAO,EAAiB,QAAQ,CAAK;CAI3C,OAFA,EAAK,cAAc,GAEZ;AACT"}
@@ -0,0 +1,2 @@
1
+ function e(e){let t=document.documentElement;if(e.colors)for(let n=0;n<8;n++){let r=e.colors[n];r?t.style.setProperty(`--prism-color-${n+1}`,r):t.style.removeProperty(`--prism-color-${n+1}`)}e.fontFamily&&t.style.setProperty(`--prism-font-family`,e.fontFamily),e.gridColor&&t.style.setProperty(`--prism-grid-color`,e.gridColor),e.gridOpacity!==void 0&&t.style.setProperty(`--prism-grid-opacity`,String(e.gridOpacity))}function t(){let e=document.documentElement;for(let t=1;t<=8;t++)e.style.removeProperty(`--prism-color-${t}`);e.style.removeProperty(`--prism-font-family`),e.style.removeProperty(`--prism-grid-color`),e.style.removeProperty(`--prism-grid-opacity`)}function n(e,t){return t??`var(--prism-color-${e%8+1})`}exports.resetTheme=t,exports.seriesColor=n,exports.setTheme=e;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/theme/index.ts"],"sourcesContent":["import type { PrismTheme } from '../types';\n\nconst MAX_THEME_COLORS = 8;\n\nexport function setTheme(theme: PrismTheme): void {\n const root = document.documentElement;\n\n if (theme.colors) {\n // Clear (not just overwrite) every color slot the previous setTheme() call may have\n // used — otherwise a theme with fewer colors than the last one leaves stale values\n // on the untouched higher-index custom properties.\n for (let i = 0; i < MAX_THEME_COLORS; i++) {\n const color = theme.colors[i];\n\n if (color) {\n root.style.setProperty(`--prism-color-${i + 1}`, color);\n } else {\n root.style.removeProperty(`--prism-color-${i + 1}`);\n }\n }\n }\n\n if (theme.fontFamily) root.style.setProperty('--prism-font-family', theme.fontFamily);\n\n if (theme.gridColor) root.style.setProperty('--prism-grid-color', theme.gridColor);\n\n if (theme.gridOpacity !== undefined) root.style.setProperty('--prism-grid-opacity', String(theme.gridOpacity));\n}\n\n/** Clears every CSS custom property `setTheme()` can set, restoring prism's default theme (from `prism.css`). */\nexport function resetTheme(): void {\n const root = document.documentElement;\n\n for (let i = 1; i <= MAX_THEME_COLORS; i++) root.style.removeProperty(`--prism-color-${i}`);\n\n root.style.removeProperty('--prism-font-family');\n root.style.removeProperty('--prism-grid-color');\n root.style.removeProperty('--prism-grid-opacity');\n}\n\nexport function seriesColor(index: number, override?: string): string {\n return override ?? `var(--prism-color-${(index % MAX_THEME_COLORS) + 1})`;\n}\n"],"mappings":"AAIA,SAAgB,EAAS,EAAyB,CAChD,IAAM,EAAO,SAAS,gBAEtB,GAAI,EAAM,OAIR,IAAK,IAAI,EAAI,EAAG,EAAI,EAAkB,IAAK,CACzC,IAAM,EAAQ,EAAM,OAAO,GAEvB,EACF,EAAK,MAAM,YAAY,iBAAiB,EAAI,IAAK,CAAK,EAEtD,EAAK,MAAM,eAAe,iBAAiB,EAAI,GAAG,CAEtD,CAGE,EAAM,YAAY,EAAK,MAAM,YAAY,sBAAuB,EAAM,UAAU,EAEhF,EAAM,WAAW,EAAK,MAAM,YAAY,qBAAsB,EAAM,SAAS,EAE7E,EAAM,cAAgB,IAAA,IAAW,EAAK,MAAM,YAAY,uBAAwB,OAAO,EAAM,WAAW,CAAC,CAC/G,CAGA,SAAgB,GAAmB,CACjC,IAAM,EAAO,SAAS,gBAEtB,IAAK,IAAI,EAAI,EAAG,GAAK,EAAkB,IAAK,EAAK,MAAM,eAAe,iBAAiB,GAAG,EAE1F,EAAK,MAAM,eAAe,qBAAqB,EAC/C,EAAK,MAAM,eAAe,oBAAoB,EAC9C,EAAK,MAAM,eAAe,sBAAsB,CAClD,CAEA,SAAgB,EAAY,EAAe,EAA2B,CACpE,OAAO,GAAY,qBAAsB,EAAQ,EAAoB,EAAE,EACzE"}
@@ -0,0 +1,6 @@
1
+ import type { PrismTheme } from '../types';
2
+ export declare function setTheme(theme: PrismTheme): void;
3
+ /** Clears every CSS custom property `setTheme()` can set, restoring prism's default theme (from `prism.css`). */
4
+ export declare function resetTheme(): void;
5
+ export declare function seriesColor(index: number, override?: string): string;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAuBhD;AAED,iHAAiH;AACjH,wBAAgB,UAAU,IAAI,IAAI,CAQjC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpE"}
@@ -0,0 +1,20 @@
1
+ function e(e) {
2
+ let t = document.documentElement;
3
+ if (e.colors) for (let n = 0; n < 8; n++) {
4
+ let r = e.colors[n];
5
+ r ? t.style.setProperty(`--prism-color-${n + 1}`, r) : t.style.removeProperty(`--prism-color-${n + 1}`);
6
+ }
7
+ e.fontFamily && t.style.setProperty("--prism-font-family", e.fontFamily), e.gridColor && t.style.setProperty("--prism-grid-color", e.gridColor), e.gridOpacity !== void 0 && t.style.setProperty("--prism-grid-opacity", String(e.gridOpacity));
8
+ }
9
+ function t() {
10
+ let e = document.documentElement;
11
+ for (let t = 1; t <= 8; t++) e.style.removeProperty(`--prism-color-${t}`);
12
+ e.style.removeProperty("--prism-font-family"), e.style.removeProperty("--prism-grid-color"), e.style.removeProperty("--prism-grid-opacity");
13
+ }
14
+ function n(e, t) {
15
+ return t ?? `var(--prism-color-${e % 8 + 1})`;
16
+ }
17
+ //#endregion
18
+ export { t as resetTheme, n as seriesColor, e as setTheme };
19
+
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/theme/index.ts"],"sourcesContent":["import type { PrismTheme } from '../types';\n\nconst MAX_THEME_COLORS = 8;\n\nexport function setTheme(theme: PrismTheme): void {\n const root = document.documentElement;\n\n if (theme.colors) {\n // Clear (not just overwrite) every color slot the previous setTheme() call may have\n // used — otherwise a theme with fewer colors than the last one leaves stale values\n // on the untouched higher-index custom properties.\n for (let i = 0; i < MAX_THEME_COLORS; i++) {\n const color = theme.colors[i];\n\n if (color) {\n root.style.setProperty(`--prism-color-${i + 1}`, color);\n } else {\n root.style.removeProperty(`--prism-color-${i + 1}`);\n }\n }\n }\n\n if (theme.fontFamily) root.style.setProperty('--prism-font-family', theme.fontFamily);\n\n if (theme.gridColor) root.style.setProperty('--prism-grid-color', theme.gridColor);\n\n if (theme.gridOpacity !== undefined) root.style.setProperty('--prism-grid-opacity', String(theme.gridOpacity));\n}\n\n/** Clears every CSS custom property `setTheme()` can set, restoring prism's default theme (from `prism.css`). */\nexport function resetTheme(): void {\n const root = document.documentElement;\n\n for (let i = 1; i <= MAX_THEME_COLORS; i++) root.style.removeProperty(`--prism-color-${i}`);\n\n root.style.removeProperty('--prism-font-family');\n root.style.removeProperty('--prism-grid-color');\n root.style.removeProperty('--prism-grid-opacity');\n}\n\nexport function seriesColor(index: number, override?: string): string {\n return override ?? `var(--prism-color-${(index % MAX_THEME_COLORS) + 1})`;\n}\n"],"mappings":"AAIA,SAAgB,EAAS,GAAyB;CAChD,IAAM,IAAO,SAAS;CAEtB,IAAI,EAAM,QAIR,KAAK,IAAI,IAAI,GAAG,IAAI,GAAkB,KAAK;EACzC,IAAM,IAAQ,EAAM,OAAO;EAE3B,AAAI,IACF,EAAK,MAAM,YAAY,iBAAiB,IAAI,KAAK,CAAK,IAEtD,EAAK,MAAM,eAAe,iBAAiB,IAAI,GAAG;CAEtD;CAOF,AAJI,EAAM,cAAY,EAAK,MAAM,YAAY,uBAAuB,EAAM,UAAU,GAEhF,EAAM,aAAW,EAAK,MAAM,YAAY,sBAAsB,EAAM,SAAS,GAE7E,EAAM,gBAAgB,KAAA,KAAW,EAAK,MAAM,YAAY,wBAAwB,OAAO,EAAM,WAAW,CAAC;AAC/G;AAGA,SAAgB,IAAmB;CACjC,IAAM,IAAO,SAAS;CAEtB,KAAK,IAAI,IAAI,GAAG,KAAK,GAAkB,KAAK,EAAK,MAAM,eAAe,iBAAiB,GAAG;CAI1F,AAFA,EAAK,MAAM,eAAe,qBAAqB,GAC/C,EAAK,MAAM,eAAe,oBAAoB,GAC9C,EAAK,MAAM,eAAe,sBAAsB;AAClD;AAEA,SAAgB,EAAY,GAAe,GAA2B;CACpE,OAAO,KAAY,qBAAsB,IAAQ,IAAoB,EAAE;AACzE"}