@vielzeug/prism 26.10.14 → 26.10.16

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 (162) hide show
  1. package/dist/_dev.cjs.map +1 -1
  2. package/dist/_dev.js +6 -1
  3. package/dist/_dev.js.map +1 -1
  4. package/dist/_tappers.cjs.map +1 -1
  5. package/dist/_tappers.js +25 -1
  6. package/dist/_tappers.js.map +1 -1
  7. package/dist/animation/easing.cjs.map +1 -1
  8. package/dist/animation/easing.js +15 -1
  9. package/dist/animation/easing.js.map +1 -1
  10. package/dist/animation/motion.cjs.map +1 -1
  11. package/dist/animation/motion.js +15 -1
  12. package/dist/animation/motion.js.map +1 -1
  13. package/dist/animation/reveal.cjs.map +1 -1
  14. package/dist/animation/reveal.js +97 -1
  15. package/dist/animation/reveal.js.map +1 -1
  16. package/dist/animation/transition.cjs.map +1 -1
  17. package/dist/animation/transition.js +39 -1
  18. package/dist/animation/transition.js.map +1 -1
  19. package/dist/animation/tween.cjs.map +1 -1
  20. package/dist/animation/tween.js +7 -1
  21. package/dist/animation/tween.js.map +1 -1
  22. package/dist/axes/axis.cjs.map +1 -1
  23. package/dist/axes/axis.js +76 -1
  24. package/dist/axes/axis.js.map +1 -1
  25. package/dist/axes/grid.cjs.map +1 -1
  26. package/dist/axes/grid.js +29 -1
  27. package/dist/axes/grid.js.map +1 -1
  28. package/dist/axes/scale-utils.cjs.map +1 -1
  29. package/dist/axes/scale-utils.js +10 -1
  30. package/dist/axes/scale-utils.js.map +1 -1
  31. package/dist/charts/area/area-chart.cjs.map +1 -1
  32. package/dist/charts/area/area-chart.js +71 -1
  33. package/dist/charts/area/area-chart.js.map +1 -1
  34. package/dist/charts/area/area-renderer.cjs.map +1 -1
  35. package/dist/charts/area/area-renderer.js +128 -1
  36. package/dist/charts/area/area-renderer.js.map +1 -1
  37. package/dist/charts/bar/bar-chart.cjs.map +1 -1
  38. package/dist/charts/bar/bar-chart.js +228 -1
  39. package/dist/charts/bar/bar-chart.js.map +1 -1
  40. package/dist/charts/bar/bar-hit-test.cjs.map +1 -1
  41. package/dist/charts/bar/bar-hit-test.js +25 -1
  42. package/dist/charts/bar/bar-hit-test.js.map +1 -1
  43. package/dist/charts/bar/bar-renderer.cjs.map +1 -1
  44. package/dist/charts/bar/bar-renderer.js +139 -1
  45. package/dist/charts/bar/bar-renderer.js.map +1 -1
  46. package/dist/charts/line/line-chart.cjs.map +1 -1
  47. package/dist/charts/line/line-chart.js +93 -1
  48. package/dist/charts/line/line-chart.js.map +1 -1
  49. package/dist/charts/line/line-renderer.cjs.map +1 -1
  50. package/dist/charts/line/line-renderer.js +143 -1
  51. package/dist/charts/line/line-renderer.js.map +1 -1
  52. package/dist/charts/pie/pie-chart.cjs +1 -1
  53. package/dist/charts/pie/pie-chart.cjs.map +1 -1
  54. package/dist/charts/pie/pie-chart.js +207 -1
  55. package/dist/charts/pie/pie-chart.js.map +1 -1
  56. package/dist/charts/pie/pie-renderer.cjs.map +1 -1
  57. package/dist/charts/pie/pie-renderer.js +68 -1
  58. package/dist/charts/pie/pie-renderer.js.map +1 -1
  59. package/dist/charts/radar/radar-chart.cjs +1 -1
  60. package/dist/charts/radar/radar-chart.cjs.map +1 -1
  61. package/dist/charts/radar/radar-chart.js +281 -1
  62. package/dist/charts/radar/radar-chart.js.map +1 -1
  63. package/dist/charts/radar/radar-geometry.cjs.map +1 -1
  64. package/dist/charts/radar/radar-geometry.js +69 -1
  65. package/dist/charts/radar/radar-geometry.js.map +1 -1
  66. package/dist/charts/scatter/scatter-chart.cjs.map +1 -1
  67. package/dist/charts/scatter/scatter-chart.js +69 -1
  68. package/dist/charts/scatter/scatter-chart.js.map +1 -1
  69. package/dist/charts/scatter/scatter-renderer.cjs.map +1 -1
  70. package/dist/charts/scatter/scatter-renderer.js +57 -1
  71. package/dist/charts/scatter/scatter-renderer.js.map +1 -1
  72. package/dist/charts/sparkline/sparkline.cjs +1 -1
  73. package/dist/charts/sparkline/sparkline.cjs.map +1 -1
  74. package/dist/charts/sparkline/sparkline.js +251 -1
  75. package/dist/charts/sparkline/sparkline.js.map +1 -1
  76. package/dist/core/cartesian-model.cjs +1 -1
  77. package/dist/core/cartesian-model.cjs.map +1 -1
  78. package/dist/core/cartesian-model.js +26 -1
  79. package/dist/core/cartesian-model.js.map +1 -1
  80. package/dist/core/cartesian-scales.cjs.map +1 -1
  81. package/dist/core/cartesian-scales.js +38 -1
  82. package/dist/core/cartesian-scales.js.map +1 -1
  83. package/dist/core/chart-base.cjs.map +1 -1
  84. package/dist/core/chart-base.js +62 -1
  85. package/dist/core/chart-base.js.map +1 -1
  86. package/dist/core/chart-scaffold.cjs.map +1 -1
  87. package/dist/core/chart-scaffold.js +103 -1
  88. package/dist/core/chart-scaffold.js.map +1 -1
  89. package/dist/core/datum-style.cjs +1 -1
  90. package/dist/core/datum-style.cjs.map +1 -1
  91. package/dist/core/datum-style.js +22 -1
  92. package/dist/core/datum-style.js.map +1 -1
  93. package/dist/core/ids.cjs.map +1 -1
  94. package/dist/core/ids.js +8 -1
  95. package/dist/core/ids.js.map +1 -1
  96. package/dist/core/layout.cjs.map +1 -1
  97. package/dist/core/layout.js +22 -1
  98. package/dist/core/layout.js.map +1 -1
  99. package/dist/core/polar.cjs.map +1 -1
  100. package/dist/core/polar.js +13 -1
  101. package/dist/core/polar.js.map +1 -1
  102. package/dist/core/responsive.cjs.map +1 -1
  103. package/dist/core/responsive.js +20 -1
  104. package/dist/core/responsive.js.map +1 -1
  105. package/dist/core/series-id.cjs.map +1 -1
  106. package/dist/core/series-id.js +7 -1
  107. package/dist/core/series-id.js.map +1 -1
  108. package/dist/errors.cjs.map +1 -1
  109. package/dist/errors.js +9 -1
  110. package/dist/errors.js.map +1 -1
  111. package/dist/index.js +13 -1
  112. package/dist/interaction/announcer.cjs.map +1 -1
  113. package/dist/interaction/announcer.js +25 -1
  114. package/dist/interaction/announcer.js.map +1 -1
  115. package/dist/interaction/crosshair.cjs.map +1 -1
  116. package/dist/interaction/crosshair.js +37 -1
  117. package/dist/interaction/crosshair.js.map +1 -1
  118. package/dist/interaction/events.cjs.map +1 -1
  119. package/dist/interaction/events.js +11 -1
  120. package/dist/interaction/events.js.map +1 -1
  121. package/dist/interaction/legend.cjs.map +1 -1
  122. package/dist/interaction/legend.js +31 -1
  123. package/dist/interaction/legend.js.map +1 -1
  124. package/dist/interaction/scatter-interaction.cjs.map +1 -1
  125. package/dist/interaction/scatter-interaction.js +105 -1
  126. package/dist/interaction/scatter-interaction.js.map +1 -1
  127. package/dist/interaction/series-interaction.cjs.map +1 -1
  128. package/dist/interaction/series-interaction.js +163 -1
  129. package/dist/interaction/series-interaction.js.map +1 -1
  130. package/dist/interaction/tooltip.cjs +1 -1
  131. package/dist/interaction/tooltip.cjs.map +1 -1
  132. package/dist/interaction/tooltip.js +87 -1
  133. package/dist/interaction/tooltip.js.map +1 -1
  134. package/dist/prism.cjs +1 -1
  135. package/dist/prism.cjs.map +1 -1
  136. package/dist/prism.iife.js +1 -1
  137. package/dist/prism.iife.js.map +1 -1
  138. package/dist/prism.js +2930 -1
  139. package/dist/prism.js.map +1 -1
  140. package/dist/scales/band.cjs.map +1 -1
  141. package/dist/scales/band.js +39 -1
  142. package/dist/scales/band.js.map +1 -1
  143. package/dist/scales/linear.cjs.map +1 -1
  144. package/dist/scales/linear.js +43 -1
  145. package/dist/scales/linear.js.map +1 -1
  146. package/dist/scales/time.cjs.map +1 -1
  147. package/dist/scales/time.js +61 -1
  148. package/dist/scales/time.js.map +1 -1
  149. package/dist/svg/element.cjs +1 -1
  150. package/dist/svg/element.cjs.map +1 -1
  151. package/dist/svg/element.js +16 -1
  152. package/dist/svg/element.js.map +1 -1
  153. package/dist/svg/path.cjs.map +1 -1
  154. package/dist/svg/path.js +48 -1
  155. package/dist/svg/path.js.map +1 -1
  156. package/dist/svg/text.cjs.map +1 -1
  157. package/dist/svg/text.js +13 -1
  158. package/dist/svg/text.js.map +1 -1
  159. package/dist/theme/index.cjs.map +1 -1
  160. package/dist/theme/index.js +37 -1
  161. package/dist/theme/index.js.map +1 -1
  162. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"band.cjs","names":[],"sources":["../../src/scales/band.ts"],"sourcesContent":["import { warn } from '../_dev';\nimport type { BandScale } from '../types';\nimport type { BandScaleConfig } from './types';\n\nexport function bandScale(config: BandScaleConfig): BandScale {\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 } = bandScale(cfg)`.\n const getDomain = (): string[] => config.domain;\n const getRange = (): [number, number] => config.range;\n\n const getBandwidth = (): number => {\n const n = getDomain().length;\n\n if (n === 0) return 0;\n\n const [r0, r1] = getRange();\n const padding = config.padding ?? 0.1;\n const totalWidth = r1 - r0;\n\n return totalWidth / (n + (n - 1) * padding + (config.paddingOuter ?? padding) * 2);\n };\n\n return {\n bandwidth: getBandwidth,\n\n get domain(): string[] {\n return getDomain();\n },\n\n gap(): number {\n const padding = config.padding ?? 0.1;\n\n return getBandwidth() * padding;\n },\n\n map(value: string): number {\n const domain = getDomain();\n const idx = domain.indexOf(value);\n\n if (idx === -1) {\n warn(`bandScale.map: unknown category \"${value}\"`);\n\n return 0;\n }\n\n const [r0] = getRange();\n const bw = getBandwidth();\n const padding = config.padding ?? 0.1;\n const outer = config.paddingOuter ?? padding;\n\n return r0 + outer * bw + idx * (bw + bw * padding);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count?: number): string[] {\n const domain = getDomain();\n\n if (count === undefined || count >= domain.length) return [...domain];\n\n if (count <= 0) return [];\n\n const step = Math.ceil(domain.length / count);\n\n return domain.filter((_, i) => i % step === 0);\n },\n };\n}\n"],"mappings":"uBAIA,SAAgB,UAAU,EAAoC,CAI5D,IAAM,cAA4B,EAAO,OACnC,aAAmC,EAAO,MAE1C,iBAA6B,CACjC,IAAM,EAAI,UAAU,CAAC,CAAC,OAEtB,GAAI,IAAM,EAAG,MAAO,GAEpB,GAAM,CAAC,EAAI,GAAM,SAAS,EACpB,EAAU,EAAO,SAAW,GAGlC,OAFmB,EAAK,IAEH,GAAK,EAAI,GAAK,GAAW,EAAO,cAAgB,GAAW,EAClF,EAEA,MAAO,CACL,UAAW,aAEX,IAAI,QAAmB,CACrB,OAAO,UAAU,CACnB,EAEA,KAAc,CACZ,IAAM,EAAU,EAAO,SAAW,GAElC,OAAO,aAAa,EAAI,CAC1B,EAEA,IAAI,EAAuB,CAEzB,IAAM,EADS,UACH,CAAA,CAAO,QAAQ,CAAK,EAEhC,GAAI,IAAQ,GAGV,MAFK,GAAoC,EAApC,EAEE,EAGT,GAAM,CAAC,GAAM,SAAS,EAChB,EAAK,aAAa,EAClB,EAAU,EAAO,SAAW,GAGlC,OAAO,GAFO,EAAO,cAAgB,GAEjB,EAAK,GAAO,EAAK,EAAK,EAC5C,EAEA,IAAI,OAA0B,CAC5B,OAAO,SAAS,CAClB,EAEA,MAAM,EAA0B,CAC9B,IAAM,EAAS,UAAU,EAEzB,GAAI,IAAU,IAAA,IAAa,GAAS,EAAO,OAAQ,MAAO,CAAC,GAAG,CAAM,EAEpE,GAAI,GAAS,EAAG,MAAO,CAAC,EAExB,IAAM,EAAO,KAAK,KAAK,EAAO,OAAS,CAAK,EAE5C,OAAO,EAAO,QAAQ,EAAG,IAAM,EAAI,IAAS,CAAC,CAC/C,CACF,CACF"}
1
+ {"version":3,"file":"band.cjs","names":["config","n","r0","r1","padding","idx","value","bw","domain","count","step","i"],"sources":["../../src/scales/band.ts"],"sourcesContent":["import { warn } from '../_dev';\nimport type { BandScale } from '../types';\nimport type { BandScaleConfig } from './types';\n\nexport function bandScale(config: BandScaleConfig): BandScale {\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 } = bandScale(cfg)`.\n const getDomain = (): string[] => config.domain;\n const getRange = (): [number, number] => config.range;\n\n const getBandwidth = (): number => {\n const n = getDomain().length;\n\n if (n === 0) return 0;\n\n const [r0, r1] = getRange();\n const padding = config.padding ?? 0.1;\n const totalWidth = r1 - r0;\n\n return totalWidth / (n + (n - 1) * padding + (config.paddingOuter ?? padding) * 2);\n };\n\n return {\n bandwidth: getBandwidth,\n\n get domain(): string[] {\n return getDomain();\n },\n\n gap(): number {\n const padding = config.padding ?? 0.1;\n\n return getBandwidth() * padding;\n },\n\n map(value: string): number {\n const domain = getDomain();\n const idx = domain.indexOf(value);\n\n if (idx === -1) {\n warn(`bandScale.map: unknown category \"${value}\"`);\n\n return 0;\n }\n\n const [r0] = getRange();\n const bw = getBandwidth();\n const padding = config.padding ?? 0.1;\n const outer = config.paddingOuter ?? padding;\n\n return r0 + outer * bw + idx * (bw + bw * padding);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count?: number): string[] {\n const domain = getDomain();\n\n if (count === undefined || count >= domain.length) return [...domain];\n\n if (count <= 0) return [];\n\n const step = Math.ceil(domain.length / count);\n\n return domain.filter((_, i) => i % step === 0);\n },\n };\n}\n"],"mappings":"A,uBAIA,SAAgB,UAAU,EAAoC,CAI5D,IAAM,cAA4BA,EAAO,OACnC,aAAmCA,EAAO,MAE1C,iBAA6B,CACjC,IAAMC,EAAI,UAAU,CAAC,CAAC,OAEtB,GAAIA,IAAM,EAAG,MAAO,GAEpB,GAAM,CAACC,EAAIC,GAAM,SAAS,EACpBC,EAAUJ,EAAO,SAAW,GAGlC,OAFmBG,EAAKD,IAEHD,GAAKA,EAAI,GAAKG,GAAWJ,EAAO,cAAgBI,GAAW,EAClF,EAEA,MAAO,CACL,UAAW,aAEX,IAAI,QAAmB,CACrB,OAAO,UAAU,CACnB,EAEA,KAAc,CACZ,IAAMA,EAAUJ,EAAO,SAAW,GAElC,OAAO,aAAa,EAAII,CAC1B,EAEA,IAAI,EAAuB,CAEzB,IAAMC,EADS,UACH,CAAA,CAAO,QAAQC,CAAK,EAEhC,GAAID,IAAQ,GAGV,MAFK,GAAoCC,EAApC,EAEE,EAGT,GAAM,CAACJ,GAAM,SAAS,EAChBK,EAAK,aAAa,EAClBH,EAAUJ,EAAO,SAAW,GAGlC,OAAOE,GAFOF,EAAO,cAAgBI,GAEjBG,EAAKF,GAAOE,EAAKA,EAAKH,EAC5C,EAEA,IAAI,OAA0B,CAC5B,OAAO,SAAS,CAClB,EAEA,MAAM,EAA0B,CAC9B,IAAMI,EAAS,UAAU,EAEzB,GAAIC,IAAU,IAAA,IAAaA,GAASD,EAAO,OAAQ,MAAO,CAAC,GAAGA,CAAM,EAEpE,GAAIC,GAAS,EAAG,MAAO,CAAC,EAExB,IAAMC,EAAO,KAAK,KAAKF,EAAO,OAASC,CAAK,EAE5C,OAAOD,EAAO,QAAQ,EAAG,IAAMG,EAAID,IAAS,CAAC,CAC/C,CACF,CACF,C"}
@@ -1,2 +1,40 @@
1
- import"../_dev.js";function bandScale(e){let getDomain=()=>e.domain,getRange=()=>e.range,getBandwidth=()=>{let t=getDomain().length;if(t===0)return 0;let[n,r]=getRange(),i=e.padding??.1;return(r-n)/(t+(t-1)*i+(e.paddingOuter??i)*2)};return{bandwidth:getBandwidth,get domain(){return getDomain()},gap(){let t=e.padding??.1;return getBandwidth()*t},map(t){let n=getDomain().indexOf(t);if(n===-1)return`${t}`,0;let[r]=getRange(),i=getBandwidth(),a=e.padding??.1;return r+(e.paddingOuter??a)*i+n*(i+i*a)},get range(){return getRange()},ticks(e){let t=getDomain();if(e===void 0||e>=t.length)return[...t];if(e<=0)return[];let n=Math.ceil(t.length/e);return t.filter((e,t)=>t%n===0)}}}export{bandScale};
1
+ import "../_dev.js";
2
+ //#region src/scales/band.ts
3
+ function bandScale(e) {
4
+ let getDomain = () => e.domain, getRange = () => e.range, getBandwidth = () => {
5
+ let t = getDomain().length;
6
+ if (t === 0) return 0;
7
+ let [n, r] = getRange(), i = e.padding ?? .1;
8
+ return (r - n) / (t + (t - 1) * i + (e.paddingOuter ?? i) * 2);
9
+ };
10
+ return {
11
+ bandwidth: getBandwidth,
12
+ get domain() {
13
+ return getDomain();
14
+ },
15
+ gap() {
16
+ let t = e.padding ?? .1;
17
+ return getBandwidth() * t;
18
+ },
19
+ map(t) {
20
+ let n = getDomain().indexOf(t);
21
+ if (n === -1) return `${t}`, 0;
22
+ let [r] = getRange(), i = getBandwidth(), a = e.padding ?? .1;
23
+ return r + (e.paddingOuter ?? a) * i + n * (i + i * a);
24
+ },
25
+ get range() {
26
+ return getRange();
27
+ },
28
+ ticks(e) {
29
+ let t = getDomain();
30
+ if (e === void 0 || e >= t.length) return [...t];
31
+ if (e <= 0) return [];
32
+ let n = Math.ceil(t.length / e);
33
+ return t.filter((e, t) => t % n === 0);
34
+ }
35
+ };
36
+ }
37
+ //#endregion
38
+ export { bandScale };
39
+
2
40
  //# sourceMappingURL=band.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"band.js","names":[],"sources":["../../src/scales/band.ts"],"sourcesContent":["import { warn } from '../_dev';\nimport type { BandScale } from '../types';\nimport type { BandScaleConfig } from './types';\n\nexport function bandScale(config: BandScaleConfig): BandScale {\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 } = bandScale(cfg)`.\n const getDomain = (): string[] => config.domain;\n const getRange = (): [number, number] => config.range;\n\n const getBandwidth = (): number => {\n const n = getDomain().length;\n\n if (n === 0) return 0;\n\n const [r0, r1] = getRange();\n const padding = config.padding ?? 0.1;\n const totalWidth = r1 - r0;\n\n return totalWidth / (n + (n - 1) * padding + (config.paddingOuter ?? padding) * 2);\n };\n\n return {\n bandwidth: getBandwidth,\n\n get domain(): string[] {\n return getDomain();\n },\n\n gap(): number {\n const padding = config.padding ?? 0.1;\n\n return getBandwidth() * padding;\n },\n\n map(value: string): number {\n const domain = getDomain();\n const idx = domain.indexOf(value);\n\n if (idx === -1) {\n warn(`bandScale.map: unknown category \"${value}\"`);\n\n return 0;\n }\n\n const [r0] = getRange();\n const bw = getBandwidth();\n const padding = config.padding ?? 0.1;\n const outer = config.paddingOuter ?? padding;\n\n return r0 + outer * bw + idx * (bw + bw * padding);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count?: number): string[] {\n const domain = getDomain();\n\n if (count === undefined || count >= domain.length) return [...domain];\n\n if (count <= 0) return [];\n\n const step = Math.ceil(domain.length / count);\n\n return domain.filter((_, i) => i % step === 0);\n },\n };\n}\n"],"mappings":"mBAIA,SAAgB,UAAU,EAAoC,CAI5D,IAAM,cAA4B,EAAO,OACnC,aAAmC,EAAO,MAE1C,iBAA6B,CACjC,IAAM,EAAI,UAAU,CAAC,CAAC,OAEtB,GAAI,IAAM,EAAG,MAAO,GAEpB,GAAM,CAAC,EAAI,GAAM,SAAS,EACpB,EAAU,EAAO,SAAW,GAGlC,OAFmB,EAAK,IAEH,GAAK,EAAI,GAAK,GAAW,EAAO,cAAgB,GAAW,EAClF,EAEA,MAAO,CACL,UAAW,aAEX,IAAI,QAAmB,CACrB,OAAO,UAAU,CACnB,EAEA,KAAc,CACZ,IAAM,EAAU,EAAO,SAAW,GAElC,OAAO,aAAa,EAAI,CAC1B,EAEA,IAAI,EAAuB,CAEzB,IAAM,EADS,UACH,CAAA,CAAO,QAAQ,CAAK,EAEhC,GAAI,IAAQ,GAGV,MAFK,GAAoC,EAApC,EAEE,EAGT,GAAM,CAAC,GAAM,SAAS,EAChB,EAAK,aAAa,EAClB,EAAU,EAAO,SAAW,GAGlC,OAAO,GAFO,EAAO,cAAgB,GAEjB,EAAK,GAAO,EAAK,EAAK,EAC5C,EAEA,IAAI,OAA0B,CAC5B,OAAO,SAAS,CAClB,EAEA,MAAM,EAA0B,CAC9B,IAAM,EAAS,UAAU,EAEzB,GAAI,IAAU,IAAA,IAAa,GAAS,EAAO,OAAQ,MAAO,CAAC,GAAG,CAAM,EAEpE,GAAI,GAAS,EAAG,MAAO,CAAC,EAExB,IAAM,EAAO,KAAK,KAAK,EAAO,OAAS,CAAK,EAE5C,OAAO,EAAO,QAAQ,EAAG,IAAM,EAAI,IAAS,CAAC,CAC/C,CACF,CACF"}
1
+ {"version":3,"file":"band.js","names":["config","n","r0","r1","padding","idx","value","bw","domain","count","step","i"],"sources":["../../src/scales/band.ts"],"sourcesContent":["import { warn } from '../_dev';\nimport type { BandScale } from '../types';\nimport type { BandScaleConfig } from './types';\n\nexport function bandScale(config: BandScaleConfig): BandScale {\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 } = bandScale(cfg)`.\n const getDomain = (): string[] => config.domain;\n const getRange = (): [number, number] => config.range;\n\n const getBandwidth = (): number => {\n const n = getDomain().length;\n\n if (n === 0) return 0;\n\n const [r0, r1] = getRange();\n const padding = config.padding ?? 0.1;\n const totalWidth = r1 - r0;\n\n return totalWidth / (n + (n - 1) * padding + (config.paddingOuter ?? padding) * 2);\n };\n\n return {\n bandwidth: getBandwidth,\n\n get domain(): string[] {\n return getDomain();\n },\n\n gap(): number {\n const padding = config.padding ?? 0.1;\n\n return getBandwidth() * padding;\n },\n\n map(value: string): number {\n const domain = getDomain();\n const idx = domain.indexOf(value);\n\n if (idx === -1) {\n warn(`bandScale.map: unknown category \"${value}\"`);\n\n return 0;\n }\n\n const [r0] = getRange();\n const bw = getBandwidth();\n const padding = config.padding ?? 0.1;\n const outer = config.paddingOuter ?? padding;\n\n return r0 + outer * bw + idx * (bw + bw * padding);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count?: number): string[] {\n const domain = getDomain();\n\n if (count === undefined || count >= domain.length) return [...domain];\n\n if (count <= 0) return [];\n\n const step = Math.ceil(domain.length / count);\n\n return domain.filter((_, i) => i % step === 0);\n },\n };\n}\n"],"mappings":";;AAIA,SAAgB,UAAU,GAAoC;CAI5D,IAAM,kBAA4BA,EAAO,QACnC,iBAAmCA,EAAO,OAE1C,qBAA6B;EACjC,IAAMC,IAAI,UAAU,CAAC,CAAC;EAEtB,IAAIA,MAAM,GAAG,OAAO;EAEpB,IAAM,CAACC,GAAIC,KAAM,SAAS,GACpBC,IAAUJ,EAAO,WAAW;EAGlC,QAFmBG,IAAKD,MAEHD,KAAKA,IAAI,KAAKG,KAAWJ,EAAO,gBAAgBI,KAAW;CAClF;CAEA,OAAO;EACL,WAAW;EAEX,IAAI,SAAmB;GACrB,OAAO,UAAU;EACnB;EAEA,MAAc;GACZ,IAAMA,IAAUJ,EAAO,WAAW;GAElC,OAAO,aAAa,IAAII;EAC1B;EAEA,IAAI,GAAuB;GAEzB,IAAMC,IADS,UACH,CAAA,CAAO,QAAQC,CAAK;GAEhC,IAAID,MAAQ,IAGV,OAFK,GAAoCC,EAApC,GAEE;GAGT,IAAM,CAACJ,KAAM,SAAS,GAChBK,IAAK,aAAa,GAClBH,IAAUJ,EAAO,WAAW;GAGlC,OAAOE,KAFOF,EAAO,gBAAgBI,KAEjBG,IAAKF,KAAOE,IAAKA,IAAKH;EAC5C;EAEA,IAAI,QAA0B;GAC5B,OAAO,SAAS;EAClB;EAEA,MAAM,GAA0B;GAC9B,IAAMI,IAAS,UAAU;GAEzB,IAAIC,MAAU,KAAA,KAAaA,KAASD,EAAO,QAAQ,OAAO,CAAC,GAAGA,CAAM;GAEpE,IAAIC,KAAS,GAAG,OAAO,CAAC;GAExB,IAAMC,IAAO,KAAK,KAAKF,EAAO,SAASC,CAAK;GAE5C,OAAOD,EAAO,QAAQ,GAAG,MAAMG,IAAID,MAAS,CAAC;EAC/C;CACF;AACF"}
@@ -1 +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 / 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 * 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,WAAW,EAAe,EAAwB,CACzD,IAAM,EAAM,KAAK,MAAM,KAAK,MAAM,CAAK,CAAC,EAClC,EAAO,EAAQ,IAAM,EACvB,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,EAAO,IAAM,CACtB,CAEA,SAAS,UAAU,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,WADC,WAAW,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,YAAY,EAA0C,CAIpE,IAAM,cACJ,EAAO,OAAS,GAAQ,EAAO,OAAS,UAAU,EAAO,OAAO,GAAI,EAAO,OAAO,GAAI,EAAE,EACpF,aAAmC,EAAO,MAEhD,MAAO,CACL,IAAI,QAA2B,CAC7B,OAAO,UAAU,CACnB,EAEA,OAAO,EAAuB,CAC5B,GAAM,CAAC,EAAI,GAAM,UAAU,EACrB,CAAC,EAAI,GAAM,SAAS,EAM1B,OAJI,IAAO,EAAW,EAIf,GAFI,EAAQ,IAAO,EAAK,IAEd,EAAK,EACxB,EAEA,IAAI,EAAuB,CACzB,GAAM,CAAC,EAAI,GAAM,UAAU,EACrB,CAAC,EAAI,GAAM,SAAS,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,SAAS,CAClB,EAEA,MAAM,EAAQ,GAAc,CAC1B,GAAI,GAAS,EAAG,MAAO,CAAC,EAExB,GAAM,CAAC,EAAI,GAAM,UAAU,EAE3B,GAAI,IAAO,GAAM,IAAU,EAAG,MAAO,CAAC,CAAE,EAIxC,IAAM,EAAK,KAAK,IAAI,EAAI,CAAE,EACpB,EAAK,KAAK,IAAI,EAAI,CAAE,EAEpB,EAAO,WADC,WAAW,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"}
1
+ {"version":3,"file":"linear.cjs","names":["exp","value","frac","nice","round","min","max","step","tickCount","config","d0","d1","r0","r1","pixel","t","count","lo","hi","start","end","ticks","v"],"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 / 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 * 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,WAAW,EAAe,EAAwB,CACzD,IAAMA,EAAM,KAAK,MAAM,KAAK,MAAMC,CAAK,CAAC,EAClCC,EAAOD,EAAQ,IAAMD,EACvBG,EAcJ,MAZA,CASOA,EATHC,EACEF,EAAO,IAAY,EACdA,EAAO,EAAU,EACjBA,EAAO,EAAU,EACd,GAERA,GAAQ,EAAU,EACbA,GAAQ,EAAU,EAClBA,GAAQ,EAAU,EACf,GAGPC,EAAO,IAAMH,CACtB,CAEA,SAAS,UAAU,EAAa,EAAa,EAAqC,CAChF,GAAI,CAAC,OAAO,SAASK,CAAG,GAAK,CAAC,OAAO,SAASC,CAAG,EAAG,MAAO,CAAC,EAAG,CAAC,EAIhE,GAFID,EAAMC,IAAK,CAACD,EAAKC,GAAO,CAACA,EAAKD,CAAG,GAEjCA,IAAQC,EAAK,MAAO,CAACD,EAAM,EAAGC,EAAM,CAAC,EAGzC,IAAMC,EAAO,WADC,WAAWD,EAAMD,EAAK,EACZ,EAAQ,KAAK,IAAI,EAAGG,EAAY,CAAC,EAAG,EAAI,EAEhE,MAAO,CAAC,KAAK,MAAMH,EAAME,CAAI,EAAIA,EAAM,KAAK,KAAKD,EAAMC,CAAI,EAAIA,CAAI,CACrE,CAEA,SAAgB,YAAY,EAA0C,CAIpE,IAAM,cACJE,EAAO,OAAS,GAAQA,EAAO,OAAS,UAAUA,EAAO,OAAO,GAAIA,EAAO,OAAO,GAAI,EAAE,EACpF,aAAmCA,EAAO,MAEhD,MAAO,CACL,IAAI,QAA2B,CAC7B,OAAO,UAAU,CACnB,EAEA,OAAO,EAAuB,CAC5B,GAAM,CAACC,EAAIC,GAAM,UAAU,EACrB,CAACC,EAAIC,GAAM,SAAS,EAM1B,OAJIA,IAAOD,EAAWF,EAIfA,GAFII,EAAQF,IAAOC,EAAKD,IAEdD,EAAKD,EACxB,EAEA,IAAI,EAAuB,CACzB,GAAM,CAACA,EAAIC,GAAM,UAAU,EACrB,CAACC,EAAIC,GAAM,SAAS,EAE1B,GAAIF,IAAOD,EAAI,OAAOE,EAEtB,IAAIG,GAAKd,EAAQS,IAAOC,EAAKD,GAM7B,OAJID,EAAO,QACT,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGM,CAAC,CAAC,GAGzBH,EAAKG,GAAKF,EAAKD,EACxB,EAEA,IAAI,OAA0B,CAC5B,OAAO,SAAS,CAClB,EAEA,MAAM,EAAQ,GAAc,CAC1B,GAAII,GAAS,EAAG,MAAO,CAAC,EAExB,GAAM,CAACN,EAAIC,GAAM,UAAU,EAE3B,GAAID,IAAOC,GAAMK,IAAU,EAAG,MAAO,CAACN,CAAE,EAIxC,IAAMO,EAAK,KAAK,IAAIP,EAAIC,CAAE,EACpBO,EAAK,KAAK,IAAIR,EAAIC,CAAE,EAEpBJ,EAAO,WADC,WAAWW,EAAKD,EAAI,EACV,GAASD,EAAQ,GAAI,EAAI,EAC3CG,EAAQ,KAAK,KAAKF,EAAKV,CAAI,EAAIA,EAC/Ba,EAAM,KAAK,MAAMF,EAAKX,CAAI,EAAIA,EAC9Bc,EAAkB,CAAC,EAEzB,IAAK,IAAIC,EAAIH,EAAOG,GAAKF,EAAMb,EAAO,GAAK,GAAKA,EAC9Cc,EAAM,KAAK,KAAK,MAAMC,EAAI,YAAI,EAAI,YAAI,EAGxC,OAAOD,CACT,CACF,CACF,C"}
@@ -1,2 +1,44 @@
1
- function niceNumber(e,t){let n=Math.floor(Math.log10(e)),r=e/10**n,i;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}function niceRange(e,t,n){if(!Number.isFinite(e)||!Number.isFinite(t))return[0,1];if(e>t&&([e,t]=[t,e]),e===t)return[e-1,t+1];let r=niceNumber(niceNumber(t-e,!1)/Math.max(1,n-1),!0);return[Math.floor(e/r)*r,Math.ceil(t/r)*r]}function linearScale(e){let getDomain=()=>e.nice===!1?e.domain:niceRange(e.domain[0],e.domain[1],10),getRange=()=>e.range;return{get domain(){return getDomain()},invert(e){let[t,n]=getDomain(),[r,i]=getRange();return i===r?t:t+(e-r)/(i-r)*(n-t)},map(t){let[n,r]=getDomain(),[i,a]=getRange();if(r===n)return i;let o=(t-n)/(r-n);return e.clamp&&(o=Math.max(0,Math.min(1,o))),i+o*(a-i)},get range(){return getRange()},ticks(e=10){if(e<=0)return[];let[t,n]=getDomain();if(t===n||e===1)return[t];let r=Math.min(t,n),i=Math.max(t,n),a=niceNumber(niceNumber(i-r,!1)/(e-1),!0),o=Math.ceil(r/a)*a,s=Math.floor(i/a)*a,c=[];for(let e=o;e<=s+a*.5;e+=a)c.push(Math.round(e*0xe8d4a51000)/0xe8d4a51000);return c}}}export{linearScale};
1
+ //#region src/scales/linear.ts
2
+ function niceNumber(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 niceRange(e, t, n) {
7
+ if (!Number.isFinite(e) || !Number.isFinite(t)) return [0, 1];
8
+ if (e > t && ([e, t] = [t, e]), e === t) return [e - 1, t + 1];
9
+ let r = niceNumber(niceNumber(t - e, !1) / Math.max(1, n - 1), !0);
10
+ return [Math.floor(e / r) * r, Math.ceil(t / r) * r];
11
+ }
12
+ function linearScale(e) {
13
+ let getDomain = () => e.nice === !1 ? e.domain : niceRange(e.domain[0], e.domain[1], 10), getRange = () => e.range;
14
+ return {
15
+ get domain() {
16
+ return getDomain();
17
+ },
18
+ invert(e) {
19
+ let [t, n] = getDomain(), [r, i] = getRange();
20
+ return i === r ? t : t + (e - r) / (i - r) * (n - t);
21
+ },
22
+ map(t) {
23
+ let [n, r] = getDomain(), [i, a] = getRange();
24
+ if (r === n) return i;
25
+ let o = (t - n) / (r - n);
26
+ return e.clamp && (o = Math.max(0, Math.min(1, o))), i + o * (a - i);
27
+ },
28
+ get range() {
29
+ return getRange();
30
+ },
31
+ ticks(e = 10) {
32
+ if (e <= 0) return [];
33
+ let [t, n] = getDomain();
34
+ if (t === n || e === 1) return [t];
35
+ let r = Math.min(t, n), i = Math.max(t, n), a = niceNumber(niceNumber(i - r, !1) / (e - 1), !0), o = Math.ceil(r / a) * a, s = Math.floor(i / a) * a, c = [];
36
+ for (let e = o; e <= s + a * .5; e += a) c.push(Math.round(e * 0xe8d4a51000) / 0xe8d4a51000);
37
+ return c;
38
+ }
39
+ };
40
+ }
41
+ //#endregion
42
+ export { linearScale };
43
+
2
44
  //# sourceMappingURL=linear.js.map
@@ -1 +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 / 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 * 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,WAAW,EAAe,EAAwB,CACzD,IAAM,EAAM,KAAK,MAAM,KAAK,MAAM,CAAK,CAAC,EAClC,EAAO,EAAQ,IAAM,EACvB,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,EAAO,IAAM,CACtB,CAEA,SAAS,UAAU,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,WADC,WAAW,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,YAAY,EAA0C,CAIpE,IAAM,cACJ,EAAO,OAAS,GAAQ,EAAO,OAAS,UAAU,EAAO,OAAO,GAAI,EAAO,OAAO,GAAI,EAAE,EACpF,aAAmC,EAAO,MAEhD,MAAO,CACL,IAAI,QAA2B,CAC7B,OAAO,UAAU,CACnB,EAEA,OAAO,EAAuB,CAC5B,GAAM,CAAC,EAAI,GAAM,UAAU,EACrB,CAAC,EAAI,GAAM,SAAS,EAM1B,OAJI,IAAO,EAAW,EAIf,GAFI,EAAQ,IAAO,EAAK,IAEd,EAAK,EACxB,EAEA,IAAI,EAAuB,CACzB,GAAM,CAAC,EAAI,GAAM,UAAU,EACrB,CAAC,EAAI,GAAM,SAAS,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,SAAS,CAClB,EAEA,MAAM,EAAQ,GAAc,CAC1B,GAAI,GAAS,EAAG,MAAO,CAAC,EAExB,GAAM,CAAC,EAAI,GAAM,UAAU,EAE3B,GAAI,IAAO,GAAM,IAAU,EAAG,MAAO,CAAC,CAAE,EAIxC,IAAM,EAAK,KAAK,IAAI,EAAI,CAAE,EACpB,EAAK,KAAK,IAAI,EAAI,CAAE,EAEpB,EAAO,WADC,WAAW,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"}
1
+ {"version":3,"file":"linear.js","names":["exp","value","frac","nice","round","min","max","step","tickCount","config","d0","d1","r0","r1","pixel","t","count","lo","hi","start","end","ticks","v"],"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 / 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 * 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,WAAW,GAAe,GAAwB;CACzD,IAAMA,IAAM,KAAK,MAAM,KAAK,MAAMC,CAAK,CAAC,GAClCC,IAAOD,IAAQ,MAAMD,GACvBG;CAcJ,OAZA,AASOA,IATHC,IACEF,IAAO,MAAY,IACdA,IAAO,IAAU,IACjBA,IAAO,IAAU,IACd,KAERA,KAAQ,IAAU,IACbA,KAAQ,IAAU,IAClBA,KAAQ,IAAU,IACf,IAGPC,IAAO,MAAMH;AACtB;AAEA,SAAS,UAAU,GAAa,GAAa,GAAqC;CAChF,IAAI,CAAC,OAAO,SAASK,CAAG,KAAK,CAAC,OAAO,SAASC,CAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAIhE,IAFID,IAAMC,MAAK,CAACD,GAAKC,KAAO,CAACA,GAAKD,CAAG,IAEjCA,MAAQC,GAAK,OAAO,CAACD,IAAM,GAAGC,IAAM,CAAC;CAGzC,IAAMC,IAAO,WADC,WAAWD,IAAMD,GAAK,EACZ,IAAQ,KAAK,IAAI,GAAGG,IAAY,CAAC,GAAG,EAAI;CAEhE,OAAO,CAAC,KAAK,MAAMH,IAAME,CAAI,IAAIA,GAAM,KAAK,KAAKD,IAAMC,CAAI,IAAIA,CAAI;AACrE;AAEA,SAAgB,YAAY,GAA0C;CAIpE,IAAM,kBACJE,EAAO,SAAS,KAAQA,EAAO,SAAS,UAAUA,EAAO,OAAO,IAAIA,EAAO,OAAO,IAAI,EAAE,GACpF,iBAAmCA,EAAO;CAEhD,OAAO;EACL,IAAI,SAA2B;GAC7B,OAAO,UAAU;EACnB;EAEA,OAAO,GAAuB;GAC5B,IAAM,CAACC,GAAIC,KAAM,UAAU,GACrB,CAACC,GAAIC,KAAM,SAAS;GAM1B,OAJIA,MAAOD,IAAWF,IAIfA,KAFII,IAAQF,MAAOC,IAAKD,MAEdD,IAAKD;EACxB;EAEA,IAAI,GAAuB;GACzB,IAAM,CAACA,GAAIC,KAAM,UAAU,GACrB,CAACC,GAAIC,KAAM,SAAS;GAE1B,IAAIF,MAAOD,GAAI,OAAOE;GAEtB,IAAIG,KAAKd,IAAQS,MAAOC,IAAKD;GAM7B,OAJID,EAAO,UACT,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGM,CAAC,CAAC,IAGzBH,IAAKG,KAAKF,IAAKD;EACxB;EAEA,IAAI,QAA0B;GAC5B,OAAO,SAAS;EAClB;EAEA,MAAM,IAAQ,IAAc;GAC1B,IAAII,KAAS,GAAG,OAAO,CAAC;GAExB,IAAM,CAACN,GAAIC,KAAM,UAAU;GAE3B,IAAID,MAAOC,KAAMK,MAAU,GAAG,OAAO,CAACN,CAAE;GAIxC,IAAMO,IAAK,KAAK,IAAIP,GAAIC,CAAE,GACpBO,IAAK,KAAK,IAAIR,GAAIC,CAAE,GAEpBJ,IAAO,WADC,WAAWW,IAAKD,GAAI,EACV,KAASD,IAAQ,IAAI,EAAI,GAC3CG,IAAQ,KAAK,KAAKF,IAAKV,CAAI,IAAIA,GAC/Ba,IAAM,KAAK,MAAMF,IAAKX,CAAI,IAAIA,GAC9Bc,IAAkB,CAAC;GAEzB,KAAK,IAAIC,IAAIH,GAAOG,KAAKF,IAAMb,IAAO,IAAK,KAAKA,GAC9C,EAAM,KAAK,KAAK,MAAMe,IAAI,YAAI,IAAI,YAAI;GAGxC,OAAOD;EACT;CACF;AACF"}
@@ -1 +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,WAAW,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,UAAU,EAAsC,CAI9D,IAAM,cAAiC,EAAO,OAAS,GAAQ,EAAO,OAAS,WAAW,EAAO,OAAQ,EAAE,EACrG,aAAmC,EAAO,MAEhD,MAAO,CACL,IAAI,QAAuB,CACzB,OAAO,UAAU,CACnB,EAEA,OAAO,EAAqB,CAC1B,GAAM,CAAC,EAAI,GAAM,UAAU,EACrB,CAAC,EAAI,GAAM,SAAS,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,UAAU,EACrB,CAAC,EAAI,GAAM,SAAS,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,SAAS,CAClB,EAEA,MAAM,EAAQ,GAAY,CACxB,GAAM,CAAC,EAAI,GAAM,UAAU,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"}
1
+ {"version":3,"file":"time.cjs","names":["SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","TIME_INTERVALS","target","range","count","interval","d0","d1","domain","config","r0","r1","t","pixel","dRange","value","start","ticks"],"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,IAAMA,EAAS,IACTC,EAAS,GAAKD,EACdE,EAAO,GAAKD,EACZE,EAAM,GAAKD,EACXE,EAAQ,GAAKD,EACbE,EAAO,IAAMF,EAEbG,EAAiB,CACrBN,EACA,EAAIA,EACJ,GAAKA,EACL,GAAKA,EACLC,EACA,EAAIA,EACJ,GAAKA,EACL,GAAKA,EACLC,EACA,EAAIA,EACJ,EAAIA,EACJ,GAAKA,EACLC,EACA,EAAIA,EACJC,EACA,EAAIA,EACJ,EAAIA,EACJC,CACF,EAEA,SAAS,eAAe,EAAe,EAAuB,CAC5D,IAAME,EAAS,KAAK,IAAIC,CAAK,EAAI,KAAK,IAAI,EAAGC,CAAK,EAElD,IAAK,IAAMC,KAAYJ,EACrB,GAAII,GAAYH,EAAQ,OAAOG,EAGjC,OAAOL,CACT,CAEA,SAAS,WAAW,EAAsB,EAA6B,CACrE,GAAI,CAACM,EAAIC,GAAMC,EAEXF,EAAG,QAAQ,EAAIC,EAAG,QAAQ,IAAG,CAACD,EAAIC,GAAM,CAACA,EAAID,CAAE,GAGnD,IAAMD,EAAW,eADHE,EAAG,QAAQ,EAAID,EAAG,QAAQ,EACDF,CAAK,EAE5C,MAAO,CACL,IAAI,KAAK,KAAK,MAAME,EAAG,QAAQ,EAAID,CAAQ,EAAIA,CAAQ,EACvD,IAAI,KAAK,KAAK,KAAKE,EAAG,QAAQ,EAAIF,CAAQ,EAAIA,CAAQ,CACxD,CACF,CAEA,SAAgB,UAAU,EAAsC,CAI9D,IAAM,cAAiCI,EAAO,OAAS,GAAQA,EAAO,OAAS,WAAWA,EAAO,OAAQ,EAAE,EACrG,aAAmCA,EAAO,MAEhD,MAAO,CACL,IAAI,QAAuB,CACzB,OAAO,UAAU,CACnB,EAEA,OAAO,EAAqB,CAC1B,GAAM,CAACH,EAAIC,GAAM,UAAU,EACrB,CAACG,EAAIC,GAAM,SAAS,EAE1B,GAAIA,IAAOD,EAAI,OAAOJ,EAEtB,IAAMM,GAAKC,EAAQH,IAAOC,EAAKD,GAE/B,OAAO,IAAI,KAAKJ,EAAG,QAAQ,EAAIM,GAAKL,EAAG,QAAQ,EAAID,EAAG,QAAQ,EAAE,CAClE,EAEA,IAAI,EAAqB,CACvB,GAAM,CAACA,EAAIC,GAAM,UAAU,EACrB,CAACG,EAAIC,GAAM,SAAS,EACpBG,EAASP,EAAG,QAAQ,EAAID,EAAG,QAAQ,EAMzC,OAJIQ,IAAW,EAAUJ,EAIlBA,GAFIK,EAAM,QAAQ,EAAIT,EAAG,QAAQ,GAAKQ,GAE5BH,EAAKD,EACxB,EAEA,IAAI,OAA0B,CAC5B,OAAO,SAAS,CAClB,EAEA,MAAM,EAAQ,GAAY,CACxB,GAAM,CAACJ,EAAIC,GAAM,UAAU,EAErBF,EAAW,eADHE,EAAG,QAAQ,EAAID,EAAG,QAAQ,EACDF,CAAK,EACtCY,EAAQ,KAAK,KAAKV,EAAG,QAAQ,EAAID,CAAQ,EAAIA,EAC7CY,EAAgB,CAAC,EAEvB,IAAK,IAAIL,EAAII,EAAOJ,GAAKL,EAAG,QAAQ,EAAG,GAAKF,EAC1CY,EAAM,KAAK,IAAI,KAAKL,CAAC,CAAC,EAGxB,OAAOK,CACT,CACF,CACF,C"}
@@ -1,2 +1,62 @@
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 chooseInterval(e,t){let n=Math.abs(e)/Math.max(1,t);for(let e of o)if(e>=n)return e;return a}function niceDomain(e,t){let[n,r]=e;n.getTime()>r.getTime()&&([n,r]=[r,n]);let i=chooseInterval(r.getTime()-n.getTime(),t);return[new Date(Math.floor(n.getTime()/i)*i),new Date(Math.ceil(r.getTime()/i)*i)]}function timeScale(e){let getDomain=()=>e.nice===!1?e.domain:niceDomain(e.domain,10),getRange=()=>e.range;return{get domain(){return getDomain()},invert(e){let[t,n]=getDomain(),[r,i]=getRange();if(i===r)return t;let a=(e-r)/(i-r);return new Date(t.getTime()+a*(n.getTime()-t.getTime()))},map(e){let[t,n]=getDomain(),[r,i]=getRange(),a=n.getTime()-t.getTime();return a===0?r:r+(e.getTime()-t.getTime())/a*(i-r)},get range(){return getRange()},ticks(e=10){let[t,n]=getDomain(),r=chooseInterval(n.getTime()-t.getTime(),e),i=Math.ceil(t.getTime()/r)*r,a=[];for(let e=i;e<=n.getTime();e+=r)a.push(new Date(e));return a}}}export{timeScale};
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 chooseInterval(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 niceDomain(e, t) {
28
+ let [n, r] = e;
29
+ n.getTime() > r.getTime() && ([n, r] = [r, n]);
30
+ let i = chooseInterval(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 timeScale(e) {
34
+ let getDomain = () => e.nice === !1 ? e.domain : niceDomain(e.domain, 10), getRange = () => e.range;
35
+ return {
36
+ get domain() {
37
+ return getDomain();
38
+ },
39
+ invert(e) {
40
+ let [t, n] = getDomain(), [r, i] = getRange();
41
+ if (i === r) return t;
42
+ let a = (e - r) / (i - r);
43
+ return new Date(t.getTime() + a * (n.getTime() - t.getTime()));
44
+ },
45
+ map(e) {
46
+ let [t, n] = getDomain(), [r, i] = getRange(), a = n.getTime() - t.getTime();
47
+ return a === 0 ? r : r + (e.getTime() - t.getTime()) / a * (i - r);
48
+ },
49
+ get range() {
50
+ return getRange();
51
+ },
52
+ ticks(e = 10) {
53
+ let [t, n] = getDomain(), r = chooseInterval(n.getTime() - t.getTime(), e), i = Math.ceil(t.getTime() / r) * r, a = [];
54
+ for (let e = i; e <= n.getTime(); e += r) a.push(new Date(e));
55
+ return a;
56
+ }
57
+ };
58
+ }
59
+ //#endregion
60
+ export { timeScale };
61
+
2
62
  //# sourceMappingURL=time.js.map
@@ -1 +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,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,WAAW,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,UAAU,EAAsC,CAI9D,IAAM,cAAiC,EAAO,OAAS,GAAQ,EAAO,OAAS,WAAW,EAAO,OAAQ,EAAE,EACrG,aAAmC,EAAO,MAEhD,MAAO,CACL,IAAI,QAAuB,CACzB,OAAO,UAAU,CACnB,EAEA,OAAO,EAAqB,CAC1B,GAAM,CAAC,EAAI,GAAM,UAAU,EACrB,CAAC,EAAI,GAAM,SAAS,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,UAAU,EACrB,CAAC,EAAI,GAAM,SAAS,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,SAAS,CAClB,EAEA,MAAM,EAAQ,GAAY,CACxB,GAAM,CAAC,EAAI,GAAM,UAAU,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"}
1
+ {"version":3,"file":"time.js","names":["SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","TIME_INTERVALS","target","range","count","interval","d0","d1","domain","config","r0","r1","t","pixel","dRange","value","start","ticks"],"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,IAAMA,IAAS,KACTC,IAAS,KAAKD,GACdE,IAAO,KAAKD,GACZE,IAAM,KAAKD,GACXE,IAAQ,KAAKD,GACbE,IAAO,MAAMF,GAEbG,IAAiB;CACrBN;CACA,IAAIA;CACJ,KAAKA;CACL,KAAKA;CACLC;CACA,IAAIA;CACJ,KAAKA;CACL,KAAKA;CACLC;CACA,IAAIA;CACJ,IAAIA;CACJ,KAAKA;CACLC;CACA,IAAIA;CACJC;CACA,IAAIA;CACJ,IAAIA;CACJC;AACF;AAEA,SAAS,eAAe,GAAe,GAAuB;CAC5D,IAAME,IAAS,KAAK,IAAIC,CAAK,IAAI,KAAK,IAAI,GAAGC,CAAK;CAElD,KAAK,IAAMC,KAAYJ,GACrB,IAAII,KAAYH,GAAQ,OAAOG;CAGjC,OAAOL;AACT;AAEA,SAAS,WAAW,GAAsB,GAA6B;CACrE,IAAI,CAACM,GAAIC,KAAMC;CAEf,AAAIF,EAAG,QAAQ,IAAIC,EAAG,QAAQ,MAAG,CAACD,GAAIC,KAAM,CAACA,GAAID,CAAE;CAGnD,IAAMD,IAAW,eADHE,EAAG,QAAQ,IAAID,EAAG,QAAQ,GACDF,CAAK;CAE5C,OAAO,CACL,IAAI,KAAK,KAAK,MAAME,EAAG,QAAQ,IAAID,CAAQ,IAAIA,CAAQ,GACvD,IAAI,KAAK,KAAK,KAAKE,EAAG,QAAQ,IAAIF,CAAQ,IAAIA,CAAQ,CACxD;AACF;AAEA,SAAgB,UAAU,GAAsC;CAI9D,IAAM,kBAAiCI,EAAO,SAAS,KAAQA,EAAO,SAAS,WAAWA,EAAO,QAAQ,EAAE,GACrG,iBAAmCA,EAAO;CAEhD,OAAO;EACL,IAAI,SAAuB;GACzB,OAAO,UAAU;EACnB;EAEA,OAAO,GAAqB;GAC1B,IAAM,CAACH,GAAIC,KAAM,UAAU,GACrB,CAACG,GAAIC,KAAM,SAAS;GAE1B,IAAIA,MAAOD,GAAI,OAAOJ;GAEtB,IAAMM,KAAKC,IAAQH,MAAOC,IAAKD;GAE/B,OAAO,IAAI,KAAKJ,EAAG,QAAQ,IAAIM,KAAKL,EAAG,QAAQ,IAAID,EAAG,QAAQ,EAAE;EAClE;EAEA,IAAI,GAAqB;GACvB,IAAM,CAACA,GAAIC,KAAM,UAAU,GACrB,CAACG,GAAIC,KAAM,SAAS,GACpBG,IAASP,EAAG,QAAQ,IAAID,EAAG,QAAQ;GAMzC,OAJIQ,MAAW,IAAUJ,IAIlBA,KAFIK,EAAM,QAAQ,IAAIT,EAAG,QAAQ,KAAKQ,KAE5BH,IAAKD;EACxB;EAEA,IAAI,QAA0B;GAC5B,OAAO,SAAS;EAClB;EAEA,MAAM,IAAQ,IAAY;GACxB,IAAM,CAACJ,GAAIC,KAAM,UAAU,GAErBF,IAAW,eADHE,EAAG,QAAQ,IAAID,EAAG,QAAQ,GACDF,CAAK,GACtCY,IAAQ,KAAK,KAAKV,EAAG,QAAQ,IAAID,CAAQ,IAAIA,GAC7CY,IAAgB,CAAC;GAEvB,KAAK,IAAIL,IAAII,GAAOJ,KAAKL,EAAG,QAAQ,GAAG,KAAKF,GAC1C,EAAM,KAAK,IAAI,KAAKO,CAAC,CAAC;GAGxB,OAAOK;EACT;CACF;AACF"}
@@ -1,2 +1,2 @@
1
- require("../_dev.cjs");var e=`http://www.w3.org/2000/svg`;function createSvgElement(t,n){let r=document.createElementNS(e,t);return n&&setAttributes(r,n),r}function setAttributes(e,t){for(let[n,r]of Object.entries(t)){if(r===void 0){e.removeAttribute(n);continue}typeof r==`number`&&!Number.isFinite(r)&&`${n}${e.tagName}${r}`,e.setAttribute(n,String(r))}}function removeChildren(e){for(;e.firstChild;)e.removeChild(e.firstChild)}exports.createSvgElement=createSvgElement,exports.removeChildren=removeChildren,exports.setAttributes=setAttributes;
1
+ require("../_dev.cjs");var e=`http://www.w3.org/2000/svg`;function createSvgElement(t,n){let r=document.createElementNS(e,t);return n&&setAttributes(r,n),r}function setAttributes(e,t){for(let[n,r]of Object.entries(t))r===void 0?e.removeAttribute(n):(typeof r==`number`&&!Number.isFinite(r)&&`${n}${e.tagName}${r}`,e.setAttribute(n,String(r)))}function removeChildren(e){for(;e.firstChild;)e.removeChild(e.firstChild)}exports.createSvgElement=createSvgElement,exports.removeChildren=removeChildren,exports.setAttributes=setAttributes;
2
2
  //# sourceMappingURL=element.cjs.map
@@ -1 +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":"uBAEA,IAAM,EAAS,6BAEf,SAAgB,iBACd,EACA,EACyB,CACzB,IAAM,EAAK,SAAS,gBAAgB,EAAQ,CAAG,EAI/C,OAFI,GAAO,cAAc,EAAI,CAAK,EAE3B,CACT,CAEA,SAAgB,cAAc,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,GAEnD,GAA6B,EAA7B,EAAyC,EAAG,QAA5C,EAAqF,EAArF,EAIJ,EAAG,aAAa,EAAK,OAAO,CAAK,CAAC,CACpC,CACF,CAEA,SAAgB,eAAe,EAAsB,CACnD,KAAO,EAAG,YACR,EAAG,YAAY,EAAG,UAAU,CAEhC"}
1
+ {"version":3,"file":"element.cjs","names":["SVG_NS","el","tag","attrs","key","value"],"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":"A,uBAEA,IAAMA,EAAS,6BAEf,SAAgB,iBACd,EACA,EACyB,CACzB,IAAMC,EAAK,SAAS,gBAAgBD,EAAQE,CAAG,EAI/C,OAFIC,GAAO,cAAcF,EAAIE,CAAK,EAE3BF,CACT,CAEA,SAAgB,cAAc,EAAgB,EAA0D,CACtG,IAAK,GAAM,CAACG,EAAKC,KAAU,OAAO,QAAQF,CAAK,EACzCE,IAAU,IAAA,GACZJ,EAAG,gBAAgBG,CAAG,GAKpB,OAAOC,GAAU,UAAY,CAAC,OAAO,SAASA,CAAK,GAEnD,GAA6BD,EAA7B,EAAyCH,EAAG,QAA5C,EAAqFI,EAArF,EAIJJ,EAAG,aAAaG,EAAK,OAAOC,CAAK,CAAC,EAEtC,CAEA,SAAgB,eAAe,EAAsB,CACnD,KAAOJ,EAAG,YACRA,EAAG,YAAYA,EAAG,UAAU,CAEhC,C"}
@@ -1,2 +1,17 @@
1
- import"../_dev.js";var e=`http://www.w3.org/2000/svg`;function createSvgElement(t,n){let r=document.createElementNS(e,t);return n&&setAttributes(r,n),r}function setAttributes(e,t){for(let[n,r]of Object.entries(t)){if(r===void 0){e.removeAttribute(n);continue}typeof r==`number`&&!Number.isFinite(r)&&`${n}${e.tagName}${r}`,e.setAttribute(n,String(r))}}function removeChildren(e){for(;e.firstChild;)e.removeChild(e.firstChild)}export{createSvgElement,removeChildren,setAttributes};
1
+ import "../_dev.js";
2
+ //#region src/svg/element.ts
3
+ var e = "http://www.w3.org/2000/svg";
4
+ function createSvgElement(t, n) {
5
+ let r = document.createElementNS(e, t);
6
+ return n && setAttributes(r, n), r;
7
+ }
8
+ function setAttributes(e, t) {
9
+ for (let [n, r] of Object.entries(t)) r === void 0 ? e.removeAttribute(n) : (typeof r == "number" && !Number.isFinite(r) && `${n}${e.tagName}${r}`, e.setAttribute(n, String(r)));
10
+ }
11
+ function removeChildren(e) {
12
+ for (; e.firstChild;) e.removeChild(e.firstChild);
13
+ }
14
+ //#endregion
15
+ export { createSvgElement, removeChildren, setAttributes };
16
+
2
17
  //# sourceMappingURL=element.js.map
@@ -1 +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":"mBAEA,IAAM,EAAS,6BAEf,SAAgB,iBACd,EACA,EACyB,CACzB,IAAM,EAAK,SAAS,gBAAgB,EAAQ,CAAG,EAI/C,OAFI,GAAO,cAAc,EAAI,CAAK,EAE3B,CACT,CAEA,SAAgB,cAAc,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,GAEnD,GAA6B,EAA7B,EAAyC,EAAG,QAA5C,EAAqF,EAArF,EAIJ,EAAG,aAAa,EAAK,OAAO,CAAK,CAAC,CACpC,CACF,CAEA,SAAgB,eAAe,EAAsB,CACnD,KAAO,EAAG,YACR,EAAG,YAAY,EAAG,UAAU,CAEhC"}
1
+ {"version":3,"file":"element.js","names":["SVG_NS","el","tag","attrs","key","value"],"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,IAAMA,IAAS;AAEf,SAAgB,iBACd,GACA,GACyB;CACzB,IAAMC,IAAK,SAAS,gBAAgBD,GAAQE,CAAG;CAI/C,OAFIC,KAAO,cAAcF,GAAIE,CAAK,GAE3BF;AACT;AAEA,SAAgB,cAAc,GAAgB,GAA0D;CACtG,KAAK,IAAM,CAACG,GAAKC,MAAU,OAAO,QAAQF,CAAK,GAC7C,AAAIE,MAAU,KAAA,IACZJ,EAAG,gBAAgBG,CAAG,KAKpB,OAAOC,KAAU,YAAY,CAAC,OAAO,SAASA,CAAK,KAEnD,GAA6BD,EAA7B,EAAyCH,EAAG,QAA5C,EAAqFI,EAArF,GAIJJ,EAAG,aAAaG,GAAK,OAAOC,CAAK,CAAC;AAEtC;AAEA,SAAgB,eAAe,GAAsB;CACnD,OAAOJ,EAAG,aACR,EAAG,YAAYA,EAAG,UAAU;AAEhC"}
@@ -1 +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,SAAS,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,aAAa,EAAyB,CACpD,GAAI,EAAO,OAAS,EAAG,OAAO,SAAS,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,SAAS,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,SACd,EACA,EACA,EAAwC,SAChC,CACR,GAAI,EAAU,SAAW,EAAG,MAAO,GAInC,IAAI,EADF,IAAU,WAAa,aAAa,CAAS,EAAI,IAAU,OAAS,SAAS,CAAS,EAAI,SAAS,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"}
1
+ {"version":3,"file":"path.cjs","names":["points","d","i","n","tangents","p0","p1","t0","t1","dx","midX","topPoints","curve","reversed","bottomPoints"],"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,SAAS,EAAyB,CAChD,GAAIA,EAAO,SAAW,EAAG,MAAO,GAEhC,IAAIC,EAAI,IAAID,EAAO,EAAE,CAAC,EAAE,GAAGA,EAAO,EAAE,CAAC,IAErC,IAAK,IAAIE,EAAI,EAAGA,EAAIF,EAAO,OAAQ,IACjC,GAAK,IAAIA,EAAOE,EAAE,CAAC,EAAE,GAAGF,EAAOE,EAAE,CAAC,IAGpC,OAAOD,CACT,CAEA,SAAgB,aAAa,EAAyB,CACpD,GAAID,EAAO,OAAS,EAAG,OAAO,SAASA,CAAM,EAE7C,IAAMG,EAAIH,EAAO,OACXI,EAAoB,CAAC,EAE3B,IAAK,IAAIF,EAAI,EAAGA,EAAIC,EAAG,IACjBD,IAAM,EACRE,EAAS,KAAK,CAAE,EAAGJ,EAAO,EAAE,CAAC,EAAIA,EAAO,EAAE,CAAC,EAAG,EAAGA,EAAO,EAAE,CAAC,EAAIA,EAAO,EAAE,CAAC,CAAE,CAAC,EACnEE,IAAMC,EAAI,EACnBC,EAAS,KAAK,CAAE,EAAGJ,EAAOG,EAAI,EAAE,CAAC,EAAIH,EAAOG,EAAI,EAAE,CAAC,EAAG,EAAGH,EAAOG,EAAI,EAAE,CAAC,EAAIH,EAAOG,EAAI,EAAE,CAAC,CAAE,CAAC,EAE5FC,EAAS,KAAK,CAAE,GAAIJ,EAAOE,EAAI,EAAE,CAAC,EAAIF,EAAOE,EAAI,EAAE,CAAC,GAAK,EAAG,GAAIF,EAAOE,EAAI,EAAE,CAAC,EAAIF,EAAOE,EAAI,EAAE,CAAC,GAAK,CAAE,CAAC,EAI5G,IAAID,EAAI,IAAID,EAAO,EAAE,CAAC,EAAE,GAAGA,EAAO,EAAE,CAAC,IAErC,IAAK,IAAI,EAAI,EAAG,EAAIG,EAAI,EAAG,IAAK,CAC9B,IAAME,EAAKL,EAAO,GACZM,EAAKN,EAAO,EAAI,GAChBO,EAAKH,EAAS,GACdI,EAAKJ,EAAS,EAAI,GAClBK,GAAMH,EAAG,EAAID,EAAG,GAAK,EAE3B,GAAK,IAAIA,EAAG,EAAII,EAAG,GAAGJ,EAAG,EAAIE,EAAG,EAAI,EAAE,GAAGD,EAAG,EAAIG,EAAG,GAAGH,EAAG,EAAIE,EAAG,EAAI,EAAE,GAAGF,EAAG,EAAE,GAAGA,EAAG,GACtF,CAEA,OAAOL,CACT,CAEA,SAAgB,SAAS,EAAyB,CAChD,GAAID,EAAO,SAAW,EAAG,MAAO,GAEhC,IAAIC,EAAI,IAAID,EAAO,EAAE,CAAC,EAAE,GAAGA,EAAO,EAAE,CAAC,IAErC,IAAK,IAAIE,EAAI,EAAGA,EAAIF,EAAO,OAAQ,IAAK,CACtC,IAAMU,GAAQV,EAAOE,EAAI,EAAE,CAAC,EAAIF,EAAOE,EAAE,CAAC,GAAK,EAE/C,GAAK,IAAIQ,EAAK,GAAGV,EAAOE,EAAE,CAAC,EAAE,GAAGF,EAAOE,EAAE,CAAC,GAC5C,CAEA,OAAOD,CACT,CAEA,SAAgB,SACd,EACA,EACA,EAAwC,SAChC,CACR,GAAIU,EAAU,SAAW,EAAG,MAAO,GAInC,IAAIV,EADFW,IAAU,WAAa,aAAaD,CAAS,EAAIC,IAAU,OAAS,SAASD,CAAS,EAAI,SAASA,CAAS,EAExGE,EAAW,CAAC,GAAGC,CAAY,CAAC,CAAC,QAAQ,EAE3C,GAAID,EAAS,OAAS,EAAG,CACvB,GAAK,IAAIA,EAAS,EAAE,CAAC,EAAE,GAAGA,EAAS,EAAE,CAAC,IACtC,IAAK,IAAIX,EAAI,EAAGA,EAAIW,EAAS,OAAQ,IACnC,GAAK,IAAIA,EAASX,EAAE,CAAC,EAAE,GAAGW,EAASX,EAAE,CAAC,GAE1C,CAIA,MAFA,IAAK,IAEED,CACT,C"}
package/dist/svg/path.js CHANGED
@@ -1,2 +1,49 @@
1
- function linePath(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 monotonePath(e){if(e.length<3)return linePath(e);let t=e.length,n=[];for(let r=0;r<t;r++)r===0?n.push({x:e[1].x-e[0].x,y:e[1].y-e[0].y}):r===t-1?n.push({x:e[t-1].x-e[t-2].x,y:e[t-1].y-e[t-2].y}):n.push({x:(e[r+1].x-e[r-1].x)/2,y:(e[r+1].y-e[r-1].y)/2});let r=`M${e[0].x},${e[0].y}`;for(let i=0;i<t-1;i++){let t=e[i],a=e[i+1],o=n[i],s=n[i+1],c=(a.x-t.x)/3;r+=`C${t.x+c},${t.y+o.y/3},${a.x-c},${a.y-s.y/3},${a.x},${a.y}`}return r}function stepPath(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 areaPath(e,t,n=`linear`){if(e.length===0)return``;let r=n===`monotone`?monotonePath(e):n===`step`?stepPath(e):linePath(e),i=[...t].reverse();if(i.length>0){r+=`L${i[0].x},${i[0].y}`;for(let e=1;e<i.length;e++)r+=`L${i[e].x},${i[e].y}`}return r+=`Z`,r}export{areaPath,linePath,monotonePath,stepPath};
1
+ //#region src/svg/path.ts
2
+ function linePath(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 monotonePath(e) {
9
+ if (e.length < 3) return linePath(e);
10
+ let t = e.length, n = [];
11
+ for (let r = 0; r < t; r++) r === 0 ? n.push({
12
+ x: e[1].x - e[0].x,
13
+ y: e[1].y - e[0].y
14
+ }) : r === t - 1 ? n.push({
15
+ x: e[t - 1].x - e[t - 2].x,
16
+ y: e[t - 1].y - e[t - 2].y
17
+ }) : n.push({
18
+ x: (e[r + 1].x - e[r - 1].x) / 2,
19
+ y: (e[r + 1].y - e[r - 1].y) / 2
20
+ });
21
+ let r = `M${e[0].x},${e[0].y}`;
22
+ for (let i = 0; i < t - 1; i++) {
23
+ let t = e[i], a = e[i + 1], o = n[i], s = n[i + 1], c = (a.x - t.x) / 3;
24
+ r += `C${t.x + c},${t.y + o.y / 3},${a.x - c},${a.y - s.y / 3},${a.x},${a.y}`;
25
+ }
26
+ return r;
27
+ }
28
+ function stepPath(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 areaPath(e, t, n = "linear") {
38
+ if (e.length === 0) return "";
39
+ let r = n === "monotone" ? monotonePath(e) : n === "step" ? stepPath(e) : linePath(e), i = [...t].reverse();
40
+ if (i.length > 0) {
41
+ r += `L${i[0].x},${i[0].y}`;
42
+ for (let e = 1; e < i.length; e++) r += `L${i[e].x},${i[e].y}`;
43
+ }
44
+ return r += "Z", r;
45
+ }
46
+ //#endregion
47
+ export { areaPath, linePath, monotonePath, stepPath };
48
+
2
49
  //# sourceMappingURL=path.js.map
@@ -1 +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,SAAS,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,aAAa,EAAyB,CACpD,GAAI,EAAO,OAAS,EAAG,OAAO,SAAS,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,SAAS,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,SACd,EACA,EACA,EAAwC,SAChC,CACR,GAAI,EAAU,SAAW,EAAG,MAAO,GAInC,IAAI,EADF,IAAU,WAAa,aAAa,CAAS,EAAI,IAAU,OAAS,SAAS,CAAS,EAAI,SAAS,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"}
1
+ {"version":3,"file":"path.js","names":["points","d","i","n","tangents","p0","p1","t0","t1","dx","midX","topPoints","curve","reversed","bottomPoints"],"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,SAAS,GAAyB;CAChD,IAAIA,EAAO,WAAW,GAAG,OAAO;CAEhC,IAAIC,IAAI,IAAID,EAAO,EAAE,CAAC,EAAE,GAAGA,EAAO,EAAE,CAAC;CAErC,KAAK,IAAIE,IAAI,GAAGA,IAAIF,EAAO,QAAQ,KACjC,KAAK,IAAIA,EAAOE,EAAE,CAAC,EAAE,GAAGF,EAAOE,EAAE,CAAC;CAGpC,OAAOD;AACT;AAEA,SAAgB,aAAa,GAAyB;CACpD,IAAID,EAAO,SAAS,GAAG,OAAO,SAASA,CAAM;CAE7C,IAAMG,IAAIH,EAAO,QACXI,IAAoB,CAAC;CAE3B,KAAK,IAAIF,IAAI,GAAGA,IAAIC,GAAG,KACrB,AAAID,MAAM,IACRE,EAAS,KAAK;EAAE,GAAGJ,EAAO,EAAE,CAAC,IAAIA,EAAO,EAAE,CAAC;EAAG,GAAGA,EAAO,EAAE,CAAC,IAAIA,EAAO,EAAE,CAAC;CAAE,CAAC,IACnEE,MAAMC,IAAI,IACnBC,EAAS,KAAK;EAAE,GAAGJ,EAAOG,IAAI,EAAE,CAAC,IAAIH,EAAOG,IAAI,EAAE,CAAC;EAAG,GAAGH,EAAOG,IAAI,EAAE,CAAC,IAAIH,EAAOG,IAAI,EAAE,CAAC;CAAE,CAAC,IAE5FC,EAAS,KAAK;EAAE,IAAIJ,EAAOE,IAAI,EAAE,CAAC,IAAIF,EAAOE,IAAI,EAAE,CAAC,KAAK;EAAG,IAAIF,EAAOE,IAAI,EAAE,CAAC,IAAIF,EAAOE,IAAI,EAAE,CAAC,KAAK;CAAE,CAAC;CAI5G,IAAID,IAAI,IAAID,EAAO,EAAE,CAAC,EAAE,GAAGA,EAAO,EAAE,CAAC;CAErC,KAAK,IAAI,IAAI,GAAG,IAAIG,IAAI,GAAG,KAAK;EAC9B,IAAME,IAAKL,EAAO,IACZM,IAAKN,EAAO,IAAI,IAChBO,IAAKH,EAAS,IACdI,IAAKJ,EAAS,IAAI,IAClBK,KAAMH,EAAG,IAAID,EAAG,KAAK;EAE3B,KAAK,IAAIA,EAAG,IAAII,EAAG,GAAGJ,EAAG,IAAIE,EAAG,IAAI,EAAE,GAAGD,EAAG,IAAIG,EAAG,GAAGH,EAAG,IAAIE,EAAG,IAAI,EAAE,GAAGF,EAAG,EAAE,GAAGA,EAAG;CACtF;CAEA,OAAOL;AACT;AAEA,SAAgB,SAAS,GAAyB;CAChD,IAAID,EAAO,WAAW,GAAG,OAAO;CAEhC,IAAIC,IAAI,IAAID,EAAO,EAAE,CAAC,EAAE,GAAGA,EAAO,EAAE,CAAC;CAErC,KAAK,IAAIE,IAAI,GAAGA,IAAIF,EAAO,QAAQ,KAAK;EACtC,IAAMU,KAAQV,EAAOE,IAAI,EAAE,CAAC,IAAIF,EAAOE,EAAE,CAAC,KAAK;EAE/C,KAAK,IAAIQ,EAAK,GAAGV,EAAOE,EAAE,CAAC,EAAE,GAAGF,EAAOE,EAAE,CAAC;CAC5C;CAEA,OAAOD;AACT;AAEA,SAAgB,SACd,GACA,GACA,IAAwC,UAChC;CACR,IAAIU,EAAU,WAAW,GAAG,OAAO;CAInC,IAAIV,IADFW,MAAU,aAAa,aAAaD,CAAS,IAAIC,MAAU,SAAS,SAASD,CAAS,IAAI,SAASA,CAAS,GAExGE,IAAW,CAAC,GAAGC,CAAY,CAAC,CAAC,QAAQ;CAE3C,IAAID,EAAS,SAAS,GAAG;EACvB,KAAK,IAAIA,EAAS,EAAE,CAAC,EAAE,GAAGA,EAAS,EAAE,CAAC;EACtC,KAAK,IAAIX,IAAI,GAAGA,IAAIW,EAAS,QAAQ,KACnC,KAAK,IAAIA,EAASX,EAAE,CAAC,EAAE,GAAGW,EAASX,EAAE,CAAC;CAE1C;CAIA,OAFA,KAAK,KAEED;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"text.cjs","names":[],"sources":["../../src/svg/text.ts"],"sourcesContent":["import { createSvgElement } from './element';\n\n/** Average glyph width relative to font size; jsdom cannot measure SVG text, so labels are estimated. */\nconst GLYPH_WIDTH = 0.6;\n\nexport function estimateTextWidth(text: string, fontSize: number): number {\n return text.length * fontSize * GLYPH_WIDTH;\n}\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"],"mappings":"iCAGA,IAAM,EAAc,GAEpB,SAAgB,kBAAkB,EAAc,EAA0B,CACxE,OAAO,EAAK,OAAS,EAAW,CAClC,CAEA,SAAgB,kBACd,EACA,EACgB,CAChB,IAAM,EAAO,EAAA,iBAAiB,OAAQ,CAAK,EAI3C,MAFA,GAAK,YAAc,EAEZ,CACT"}
1
+ {"version":3,"file":"text.cjs","names":["createSvgElement","require_element","GLYPH_WIDTH","text","fontSize","attrs","content"],"sources":["../../src/svg/text.ts"],"sourcesContent":["import { createSvgElement } from './element';\n\n/** Average glyph width relative to font size; jsdom cannot measure SVG text, so labels are estimated. */\nconst GLYPH_WIDTH = 0.6;\n\nexport function estimateTextWidth(text: string, fontSize: number): number {\n return text.length * fontSize * GLYPH_WIDTH;\n}\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"],"mappings":"A,iCAGA,IAAME,EAAc,GAEpB,SAAgB,kBAAkB,EAAc,EAA0B,CACxE,OAAOC,EAAK,OAASC,EAAWF,CAClC,CAEA,SAAgB,kBACd,EACA,EACgB,CAChB,IAAMC,EAAOH,EAAAA,iBAAiB,OAAQK,CAAK,EAI3C,MAFA,GAAK,YAAcC,EAEZH,CACT,C"}
package/dist/svg/text.js CHANGED
@@ -1,2 +1,14 @@
1
- import{createSvgElement as e}from"./element.js";var t=.6;function estimateTextWidth(e,n){return e.length*n*t}function createTextElement(t,n){let r=e(`text`,n);return r.textContent=t,r}export{createTextElement,estimateTextWidth};
1
+ import { createSvgElement as e } from "./element.js";
2
+ //#region src/svg/text.ts
3
+ var t = .6;
4
+ function estimateTextWidth(e, n) {
5
+ return e.length * n * t;
6
+ }
7
+ function createTextElement(t, n) {
8
+ let r = e("text", n);
9
+ return r.textContent = t, r;
10
+ }
11
+ //#endregion
12
+ export { createTextElement, estimateTextWidth };
13
+
2
14
  //# sourceMappingURL=text.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","names":[],"sources":["../../src/svg/text.ts"],"sourcesContent":["import { createSvgElement } from './element';\n\n/** Average glyph width relative to font size; jsdom cannot measure SVG text, so labels are estimated. */\nconst GLYPH_WIDTH = 0.6;\n\nexport function estimateTextWidth(text: string, fontSize: number): number {\n return text.length * fontSize * GLYPH_WIDTH;\n}\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"],"mappings":"gDAGA,IAAM,EAAc,GAEpB,SAAgB,kBAAkB,EAAc,EAA0B,CACxE,OAAO,EAAK,OAAS,EAAW,CAClC,CAEA,SAAgB,kBACd,EACA,EACgB,CAChB,IAAM,EAAO,EAAiB,OAAQ,CAAK,EAI3C,MAFA,GAAK,YAAc,EAEZ,CACT"}
1
+ {"version":3,"file":"text.js","names":["GLYPH_WIDTH","text","fontSize","createSvgElement","attrs","content"],"sources":["../../src/svg/text.ts"],"sourcesContent":["import { createSvgElement } from './element';\n\n/** Average glyph width relative to font size; jsdom cannot measure SVG text, so labels are estimated. */\nconst GLYPH_WIDTH = 0.6;\n\nexport function estimateTextWidth(text: string, fontSize: number): number {\n return text.length * fontSize * GLYPH_WIDTH;\n}\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"],"mappings":";;AAGA,IAAMA,IAAc;AAEpB,SAAgB,kBAAkB,GAAc,GAA0B;CACxE,OAAOC,EAAK,SAASC,IAAWF;AAClC;AAEA,SAAgB,kBACd,GACA,GACgB;CAChB,IAAMC,IAAOE,EAAiB,QAAQC,CAAK;CAI3C,OAFA,EAAK,cAAcC,GAEZJ;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/theme/index.ts"],"sourcesContent":["import type { PrismTheme, ThemeScope } from '../types';\n\nconst MAX_THEME_COLORS = 8;\n\n// Every scalar PrismTheme key mapped to the CSS custom property it drives. setTheme/resetTheme\n// iterate this single table, so expanding the theme surface is one row here plus one field on\n// PrismTheme — the two can never drift apart. `colors` is handled separately: it fans out to\n// indexed slots that must all be cleared, not just overwritten.\nconst THEME_TOKENS = {\n axisColor: '--prism-axis-color',\n fontFamily: '--prism-font-family',\n gridColor: '--prism-grid-color',\n gridOpacity: '--prism-grid-opacity',\n textColor: '--prism-text-color',\n textColorSecondary: '--prism-text-color-secondary',\n tooltipBg: '--prism-tooltip-bg',\n tooltipBorder: '--prism-tooltip-border',\n tooltipColor: '--prism-tooltip-color',\n} as const satisfies Record<keyof Omit<PrismTheme, 'colors'>, string>;\n\nfunction target(options?: ThemeScope): HTMLElement {\n return options?.scope ?? document.documentElement;\n}\n\n/**\n * Apply theme tokens as CSS custom properties. Writes to `options.scope` when given, otherwise\n * to `document.documentElement`. A scoped call themes one subtree (charts render inside it, so\n * their `var(--prism-*)` lookups resolve against it) without touching `:root`.\n */\nexport function setTheme(theme: PrismTheme, options?: ThemeScope): void {\n const root = target(options);\n\n if (theme.colors) {\n // Clear (not just overwrite) every color slot a previous setTheme() may have used, so a\n // theme with fewer colors than the last one leaves no stale values on higher-index slots.\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 for (const [key, property] of Object.entries(THEME_TOKENS)) {\n const value = theme[key as keyof typeof THEME_TOKENS];\n\n if (value !== undefined) root.style.setProperty(property, String(value));\n }\n}\n\n/** Clear every custom property `setTheme()` can set on `options.scope` (default `documentElement`), restoring prism's default theme from `theme.css`. */\nexport function resetTheme(options?: ThemeScope): void {\n const root = target(options);\n\n for (let i = 1; i <= MAX_THEME_COLORS; i++) root.style.removeProperty(`--prism-color-${i}`);\n\n for (const property of Object.values(THEME_TOKENS)) root.style.removeProperty(property);\n}\n\nexport function seriesColor(index: number, override?: string): string {\n return override ?? `var(--prism-color-${(index % MAX_THEME_COLORS) + 1})`;\n}\n"],"mappings":"AAEA,IAMM,EAAe,CACnB,UAAW,qBACX,WAAY,sBACZ,UAAW,qBACX,YAAa,uBACb,UAAW,qBACX,mBAAoB,+BACpB,UAAW,qBACX,cAAe,yBACf,aAAc,uBAChB,EAEA,SAAS,OAAO,EAAmC,CACjD,OAAO,GAAS,OAAS,SAAS,eACpC,CAOA,SAAgB,SAAS,EAAmB,EAA4B,CACtE,IAAM,EAAO,OAAO,CAAO,EAE3B,GAAI,EAAM,OAGR,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,CAGF,IAAK,GAAM,CAAC,EAAK,KAAa,OAAO,QAAQ,CAAY,EAAG,CAC1D,IAAM,EAAQ,EAAM,GAEhB,IAAU,IAAA,IAAW,EAAK,MAAM,YAAY,EAAU,OAAO,CAAK,CAAC,CACzE,CACF,CAGA,SAAgB,WAAW,EAA4B,CACrD,IAAM,EAAO,OAAO,CAAO,EAE3B,IAAK,IAAI,EAAI,EAAG,GAAK,EAAkB,IAAK,EAAK,MAAM,eAAe,iBAAiB,GAAG,EAE1F,IAAK,IAAM,KAAY,OAAO,OAAO,CAAY,EAAG,EAAK,MAAM,eAAe,CAAQ,CACxF,CAEA,SAAgB,YAAY,EAAe,EAA2B,CACpE,OAAO,GAAY,qBAAsB,EAAQ,EAAoB,EAAE,EACzE"}
1
+ {"version":3,"file":"index.cjs","names":["THEME_TOKENS","options","root","theme","i","color","key","property","value","override","index"],"sources":["../../src/theme/index.ts"],"sourcesContent":["import type { PrismTheme, ThemeScope } from '../types';\n\nconst MAX_THEME_COLORS = 8;\n\n// Every scalar PrismTheme key mapped to the CSS custom property it drives. setTheme/resetTheme\n// iterate this single table, so expanding the theme surface is one row here plus one field on\n// PrismTheme — the two can never drift apart. `colors` is handled separately: it fans out to\n// indexed slots that must all be cleared, not just overwritten.\nconst THEME_TOKENS = {\n axisColor: '--prism-axis-color',\n fontFamily: '--prism-font-family',\n gridColor: '--prism-grid-color',\n gridOpacity: '--prism-grid-opacity',\n textColor: '--prism-text-color',\n textColorSecondary: '--prism-text-color-secondary',\n tooltipBg: '--prism-tooltip-bg',\n tooltipBorder: '--prism-tooltip-border',\n tooltipColor: '--prism-tooltip-color',\n} as const satisfies Record<keyof Omit<PrismTheme, 'colors'>, string>;\n\nfunction target(options?: ThemeScope): HTMLElement {\n return options?.scope ?? document.documentElement;\n}\n\n/**\n * Apply theme tokens as CSS custom properties. Writes to `options.scope` when given, otherwise\n * to `document.documentElement`. A scoped call themes one subtree (charts render inside it, so\n * their `var(--prism-*)` lookups resolve against it) without touching `:root`.\n */\nexport function setTheme(theme: PrismTheme, options?: ThemeScope): void {\n const root = target(options);\n\n if (theme.colors) {\n // Clear (not just overwrite) every color slot a previous setTheme() may have used, so a\n // theme with fewer colors than the last one leaves no stale values on higher-index slots.\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 for (const [key, property] of Object.entries(THEME_TOKENS)) {\n const value = theme[key as keyof typeof THEME_TOKENS];\n\n if (value !== undefined) root.style.setProperty(property, String(value));\n }\n}\n\n/** Clear every custom property `setTheme()` can set on `options.scope` (default `documentElement`), restoring prism's default theme from `theme.css`. */\nexport function resetTheme(options?: ThemeScope): void {\n const root = target(options);\n\n for (let i = 1; i <= MAX_THEME_COLORS; i++) root.style.removeProperty(`--prism-color-${i}`);\n\n for (const property of Object.values(THEME_TOKENS)) root.style.removeProperty(property);\n}\n\nexport function seriesColor(index: number, override?: string): string {\n return override ?? `var(--prism-color-${(index % MAX_THEME_COLORS) + 1})`;\n}\n"],"mappings":"AAEA,IAMMA,EAAe,CACnB,UAAW,qBACX,WAAY,sBACZ,UAAW,qBACX,YAAa,uBACb,UAAW,qBACX,mBAAoB,+BACpB,UAAW,qBACX,cAAe,yBACf,aAAc,uBAChB,EAEA,SAAS,OAAO,EAAmC,CACjD,OAAOC,GAAS,OAAS,SAAS,eACpC,CAOA,SAAgB,SAAS,EAAmB,EAA4B,CACtE,IAAMC,EAAO,OAAOD,CAAO,EAE3B,GAAIE,EAAM,OAGR,IAAK,IAAIC,EAAI,EAAGA,EAAI,EAAkB,IAAK,CACzC,IAAMC,EAAQF,EAAM,OAAOC,GAEvBC,EACFH,EAAK,MAAM,YAAY,iBAAiBE,EAAI,IAAKC,CAAK,EAEtDH,EAAK,MAAM,eAAe,iBAAiBE,EAAI,GAAG,CAEtD,CAGF,IAAK,GAAM,CAACE,EAAKC,KAAa,OAAO,QAAQP,CAAY,EAAG,CAC1D,IAAMQ,EAAQL,EAAMG,GAEhBE,IAAU,IAAA,IAAWN,EAAK,MAAM,YAAYK,EAAU,OAAOC,CAAK,CAAC,CACzE,CACF,CAGA,SAAgB,WAAW,EAA4B,CACrD,IAAMN,EAAO,OAAOD,CAAO,EAE3B,IAAK,IAAIG,EAAI,EAAGA,GAAK,EAAkB,IAAKF,EAAK,MAAM,eAAe,iBAAiBE,GAAG,EAE1F,IAAK,IAAMG,KAAY,OAAO,OAAOP,CAAY,EAAGE,EAAK,MAAM,eAAeK,CAAQ,CACxF,CAEA,SAAgB,YAAY,EAAe,EAA2B,CACpE,OAAOE,GAAY,qBAAsBC,EAAQ,EAAoB,EAAE,EACzE,C"}
@@ -1,2 +1,38 @@
1
- var e={axisColor:`--prism-axis-color`,fontFamily:`--prism-font-family`,gridColor:`--prism-grid-color`,gridOpacity:`--prism-grid-opacity`,textColor:`--prism-text-color`,textColorSecondary:`--prism-text-color-secondary`,tooltipBg:`--prism-tooltip-bg`,tooltipBorder:`--prism-tooltip-border`,tooltipColor:`--prism-tooltip-color`};function target(e){return e?.scope??document.documentElement}function setTheme(t,n){let r=target(n);if(t.colors)for(let e=0;e<8;e++){let n=t.colors[e];n?r.style.setProperty(`--prism-color-${e+1}`,n):r.style.removeProperty(`--prism-color-${e+1}`)}for(let[n,i]of Object.entries(e)){let e=t[n];e!==void 0&&r.style.setProperty(i,String(e))}}function resetTheme(t){let n=target(t);for(let e=1;e<=8;e++)n.style.removeProperty(`--prism-color-${e}`);for(let t of Object.values(e))n.style.removeProperty(t)}function seriesColor(e,t){return t??`var(--prism-color-${e%8+1})`}export{resetTheme,seriesColor,setTheme};
1
+ //#region src/theme/index.ts
2
+ var e = {
3
+ axisColor: "--prism-axis-color",
4
+ fontFamily: "--prism-font-family",
5
+ gridColor: "--prism-grid-color",
6
+ gridOpacity: "--prism-grid-opacity",
7
+ textColor: "--prism-text-color",
8
+ textColorSecondary: "--prism-text-color-secondary",
9
+ tooltipBg: "--prism-tooltip-bg",
10
+ tooltipBorder: "--prism-tooltip-border",
11
+ tooltipColor: "--prism-tooltip-color"
12
+ };
13
+ function target(e) {
14
+ return e?.scope ?? document.documentElement;
15
+ }
16
+ function setTheme(t, n) {
17
+ let r = target(n);
18
+ if (t.colors) for (let e = 0; e < 8; e++) {
19
+ let n = t.colors[e];
20
+ n ? r.style.setProperty(`--prism-color-${e + 1}`, n) : r.style.removeProperty(`--prism-color-${e + 1}`);
21
+ }
22
+ for (let [n, i] of Object.entries(e)) {
23
+ let e = t[n];
24
+ e !== void 0 && r.style.setProperty(i, String(e));
25
+ }
26
+ }
27
+ function resetTheme(t) {
28
+ let n = target(t);
29
+ for (let e = 1; e <= 8; e++) n.style.removeProperty(`--prism-color-${e}`);
30
+ for (let t of Object.values(e)) n.style.removeProperty(t);
31
+ }
32
+ function seriesColor(e, t) {
33
+ return t ?? `var(--prism-color-${e % 8 + 1})`;
34
+ }
35
+ //#endregion
36
+ export { resetTheme, seriesColor, setTheme };
37
+
2
38
  //# sourceMappingURL=index.js.map