@vielzeug/prism 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -0
- package/dist/_dev.cjs +2 -0
- package/dist/_dev.cjs.map +1 -0
- package/dist/_dev.d.ts +2 -0
- package/dist/_dev.d.ts.map +1 -0
- package/dist/_dev.js +12 -0
- package/dist/_dev.js.map +1 -0
- package/dist/animation/easing.cjs +2 -0
- package/dist/animation/easing.cjs.map +1 -0
- package/dist/animation/easing.d.ts +4 -0
- package/dist/animation/easing.d.ts.map +1 -0
- package/dist/animation/easing.js +14 -0
- package/dist/animation/easing.js.map +1 -0
- package/dist/animation/index.d.ts +6 -0
- package/dist/animation/index.d.ts.map +1 -0
- package/dist/animation/transition.cjs +2 -0
- package/dist/animation/transition.cjs.map +1 -0
- package/dist/animation/transition.d.ts +15 -0
- package/dist/animation/transition.d.ts.map +1 -0
- package/dist/animation/transition.js +28 -0
- package/dist/animation/transition.js.map +1 -0
- package/dist/animation/tween.cjs +2 -0
- package/dist/animation/tween.cjs.map +1 -0
- package/dist/animation/tween.d.ts +3 -0
- package/dist/animation/tween.d.ts.map +1 -0
- package/dist/animation/tween.js +8 -0
- package/dist/animation/tween.js.map +1 -0
- package/dist/axes/axis.cjs +2 -0
- package/dist/axes/axis.cjs.map +1 -0
- package/dist/axes/axis.d.ts +15 -0
- package/dist/axes/axis.d.ts.map +1 -0
- package/dist/axes/axis.js +60 -0
- package/dist/axes/axis.js.map +1 -0
- package/dist/axes/grid.cjs +2 -0
- package/dist/axes/grid.cjs.map +1 -0
- package/dist/axes/grid.d.ts +4 -0
- package/dist/axes/grid.d.ts.map +1 -0
- package/dist/axes/grid.js +30 -0
- package/dist/axes/grid.js.map +1 -0
- package/dist/axes/index.d.ts +3 -0
- package/dist/axes/index.d.ts.map +1 -0
- package/dist/axes/scale-utils.cjs +2 -0
- package/dist/axes/scale-utils.cjs.map +1 -0
- package/dist/axes/scale-utils.d.ts +17 -0
- package/dist/axes/scale-utils.d.ts.map +1 -0
- package/dist/axes/scale-utils.js +11 -0
- package/dist/axes/scale-utils.js.map +1 -0
- package/dist/axes/types.d.ts +2 -0
- package/dist/axes/types.d.ts.map +1 -0
- package/dist/charts/area/area-chart.cjs +2 -0
- package/dist/charts/area/area-chart.cjs.map +1 -0
- package/dist/charts/area/area-chart.d.ts +3 -0
- package/dist/charts/area/area-chart.d.ts.map +1 -0
- package/dist/charts/area/area-chart.js +58 -0
- package/dist/charts/area/area-chart.js.map +1 -0
- package/dist/charts/area/area-renderer.cjs +2 -0
- package/dist/charts/area/area-renderer.cjs.map +1 -0
- package/dist/charts/area/area-renderer.d.ts +14 -0
- package/dist/charts/area/area-renderer.d.ts.map +1 -0
- package/dist/charts/area/area-renderer.js +73 -0
- package/dist/charts/area/area-renderer.js.map +1 -0
- package/dist/charts/area/area-types.d.ts +2 -0
- package/dist/charts/area/area-types.d.ts.map +1 -0
- package/dist/charts/area/index.d.ts +2 -0
- package/dist/charts/area/index.d.ts.map +1 -0
- package/dist/charts/bar/bar-chart.cjs +2 -0
- package/dist/charts/bar/bar-chart.cjs.map +1 -0
- package/dist/charts/bar/bar-chart.d.ts +3 -0
- package/dist/charts/bar/bar-chart.d.ts.map +1 -0
- package/dist/charts/bar/bar-chart.js +151 -0
- package/dist/charts/bar/bar-chart.js.map +1 -0
- package/dist/charts/bar/bar-hit-test.cjs +2 -0
- package/dist/charts/bar/bar-hit-test.cjs.map +1 -0
- package/dist/charts/bar/bar-hit-test.d.ts +12 -0
- package/dist/charts/bar/bar-hit-test.d.ts.map +1 -0
- package/dist/charts/bar/bar-hit-test.js +29 -0
- package/dist/charts/bar/bar-hit-test.js.map +1 -0
- package/dist/charts/bar/bar-renderer.cjs +2 -0
- package/dist/charts/bar/bar-renderer.cjs.map +1 -0
- package/dist/charts/bar/bar-renderer.d.ts +19 -0
- package/dist/charts/bar/bar-renderer.d.ts.map +1 -0
- package/dist/charts/bar/bar-renderer.js +107 -0
- package/dist/charts/bar/bar-renderer.js.map +1 -0
- package/dist/charts/bar/bar-scale-context.d.ts +11 -0
- package/dist/charts/bar/bar-scale-context.d.ts.map +1 -0
- package/dist/charts/bar/bar-types.d.ts +2 -0
- package/dist/charts/bar/bar-types.d.ts.map +1 -0
- package/dist/charts/bar/index.d.ts +2 -0
- package/dist/charts/bar/index.d.ts.map +1 -0
- package/dist/charts/index.d.ts +6 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/line/index.d.ts +2 -0
- package/dist/charts/line/index.d.ts.map +1 -0
- package/dist/charts/line/line-chart.cjs +2 -0
- package/dist/charts/line/line-chart.cjs.map +1 -0
- package/dist/charts/line/line-chart.d.ts +3 -0
- package/dist/charts/line/line-chart.d.ts.map +1 -0
- package/dist/charts/line/line-chart.js +59 -0
- package/dist/charts/line/line-chart.js.map +1 -0
- package/dist/charts/line/line-renderer.cjs +2 -0
- package/dist/charts/line/line-renderer.cjs.map +1 -0
- package/dist/charts/line/line-renderer.d.ts +15 -0
- package/dist/charts/line/line-renderer.d.ts.map +1 -0
- package/dist/charts/line/line-renderer.js +100 -0
- package/dist/charts/line/line-renderer.js.map +1 -0
- package/dist/charts/line/line-types.d.ts +2 -0
- package/dist/charts/line/line-types.d.ts.map +1 -0
- package/dist/charts/pie/index.d.ts +2 -0
- package/dist/charts/pie/index.d.ts.map +1 -0
- package/dist/charts/pie/pie-chart.cjs +2 -0
- package/dist/charts/pie/pie-chart.cjs.map +1 -0
- package/dist/charts/pie/pie-chart.d.ts +3 -0
- package/dist/charts/pie/pie-chart.d.ts.map +1 -0
- package/dist/charts/pie/pie-chart.js +156 -0
- package/dist/charts/pie/pie-chart.js.map +1 -0
- package/dist/charts/pie/pie-renderer.cjs +2 -0
- package/dist/charts/pie/pie-renderer.cjs.map +1 -0
- package/dist/charts/pie/pie-renderer.d.ts +23 -0
- package/dist/charts/pie/pie-renderer.d.ts.map +1 -0
- package/dist/charts/pie/pie-renderer.js +77 -0
- package/dist/charts/pie/pie-renderer.js.map +1 -0
- package/dist/charts/sparkline/index.d.ts +2 -0
- package/dist/charts/sparkline/index.d.ts.map +1 -0
- package/dist/charts/sparkline/sparkline.cjs +2 -0
- package/dist/charts/sparkline/sparkline.cjs.map +1 -0
- package/dist/charts/sparkline/sparkline.d.ts +3 -0
- package/dist/charts/sparkline/sparkline.d.ts.map +1 -0
- package/dist/charts/sparkline/sparkline.js +187 -0
- package/dist/charts/sparkline/sparkline.js.map +1 -0
- package/dist/core/cartesian-scales.cjs +2 -0
- package/dist/core/cartesian-scales.cjs.map +1 -0
- package/dist/core/cartesian-scales.d.ts +4 -0
- package/dist/core/cartesian-scales.d.ts.map +1 -0
- package/dist/core/cartesian-scales.js +54 -0
- package/dist/core/cartesian-scales.js.map +1 -0
- package/dist/core/chart-base.cjs +2 -0
- package/dist/core/chart-base.cjs.map +1 -0
- package/dist/core/chart-base.d.ts +14 -0
- package/dist/core/chart-base.d.ts.map +1 -0
- package/dist/core/chart-base.js +60 -0
- package/dist/core/chart-base.js.map +1 -0
- package/dist/core/chart-scaffold.cjs +2 -0
- package/dist/core/chart-scaffold.cjs.map +1 -0
- package/dist/core/chart-scaffold.d.ts +54 -0
- package/dist/core/chart-scaffold.d.ts.map +1 -0
- package/dist/core/chart-scaffold.js +104 -0
- package/dist/core/chart-scaffold.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/layout.cjs +2 -0
- package/dist/core/layout.cjs.map +1 -0
- package/dist/core/layout.d.ts +7 -0
- package/dist/core/layout.d.ts.map +1 -0
- package/dist/core/layout.js +23 -0
- package/dist/core/layout.js.map +1 -0
- package/dist/core/responsive.cjs +2 -0
- package/dist/core/responsive.cjs.map +1 -0
- package/dist/core/responsive.d.ts +2 -0
- package/dist/core/responsive.d.ts.map +1 -0
- package/dist/core/responsive.js +20 -0
- package/dist/core/responsive.js.map +1 -0
- package/dist/devtools/index.d.ts +52 -0
- package/dist/devtools/index.d.ts.map +1 -0
- package/dist/devtools.cjs +2 -0
- package/dist/devtools.cjs.map +1 -0
- package/dist/devtools.js +19 -0
- package/dist/devtools.js.map +1 -0
- package/dist/errors.cjs +2 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/interaction/crosshair.cjs +2 -0
- package/dist/interaction/crosshair.cjs.map +1 -0
- package/dist/interaction/crosshair.d.ts +13 -0
- package/dist/interaction/crosshair.d.ts.map +1 -0
- package/dist/interaction/crosshair.js +46 -0
- package/dist/interaction/crosshair.js.map +1 -0
- package/dist/interaction/events.cjs +2 -0
- package/dist/interaction/events.cjs.map +1 -0
- package/dist/interaction/events.d.ts +3 -0
- package/dist/interaction/events.d.ts.map +1 -0
- package/dist/interaction/events.js +12 -0
- package/dist/interaction/events.js.map +1 -0
- package/dist/interaction/hit-test.cjs +2 -0
- package/dist/interaction/hit-test.cjs.map +1 -0
- package/dist/interaction/hit-test.d.ts +3 -0
- package/dist/interaction/hit-test.d.ts.map +1 -0
- package/dist/interaction/hit-test.js +14 -0
- package/dist/interaction/hit-test.js.map +1 -0
- package/dist/interaction/index.d.ts +9 -0
- package/dist/interaction/index.d.ts.map +1 -0
- package/dist/interaction/legend.cjs +2 -0
- package/dist/interaction/legend.cjs.map +1 -0
- package/dist/interaction/legend.d.ts +12 -0
- package/dist/interaction/legend.d.ts.map +1 -0
- package/dist/interaction/legend.js +31 -0
- package/dist/interaction/legend.js.map +1 -0
- package/dist/interaction/series-interaction.cjs +2 -0
- package/dist/interaction/series-interaction.cjs.map +1 -0
- package/dist/interaction/series-interaction.d.ts +18 -0
- package/dist/interaction/series-interaction.d.ts.map +1 -0
- package/dist/interaction/series-interaction.js +58 -0
- package/dist/interaction/series-interaction.js.map +1 -0
- package/dist/interaction/tooltip.cjs +2 -0
- package/dist/interaction/tooltip.cjs.map +1 -0
- package/dist/interaction/tooltip.d.ts +10 -0
- package/dist/interaction/tooltip.d.ts.map +1 -0
- package/dist/interaction/tooltip.js +53 -0
- package/dist/interaction/tooltip.js.map +1 -0
- package/dist/prism.cjs +2 -0
- package/dist/prism.cjs.map +1 -0
- package/dist/prism.iife.js +2 -0
- package/dist/prism.iife.js.map +1 -0
- package/dist/prism.js +2 -0
- package/dist/prism.js.map +1 -0
- package/dist/scales/band.cjs +2 -0
- package/dist/scales/band.cjs.map +1 -0
- package/dist/scales/band.d.ts +3 -0
- package/dist/scales/band.d.ts.map +1 -0
- package/dist/scales/band.js +40 -0
- package/dist/scales/band.js.map +1 -0
- package/dist/scales/index.d.ts +4 -0
- package/dist/scales/index.d.ts.map +1 -0
- package/dist/scales/linear.cjs +2 -0
- package/dist/scales/linear.cjs.map +1 -0
- package/dist/scales/linear.d.ts +4 -0
- package/dist/scales/linear.d.ts.map +1 -0
- package/dist/scales/linear.js +44 -0
- package/dist/scales/linear.js.map +1 -0
- package/dist/scales/time.cjs +2 -0
- package/dist/scales/time.cjs.map +1 -0
- package/dist/scales/time.d.ts +4 -0
- package/dist/scales/time.d.ts.map +1 -0
- package/dist/scales/time.js +62 -0
- package/dist/scales/time.js.map +1 -0
- package/dist/scales/types.d.ts +19 -0
- package/dist/scales/types.d.ts.map +1 -0
- package/dist/svg/element.cjs +2 -0
- package/dist/svg/element.cjs.map +1 -0
- package/dist/svg/element.d.ts +4 -0
- package/dist/svg/element.d.ts.map +1 -0
- package/dist/svg/element.js +23 -0
- package/dist/svg/element.js.map +1 -0
- package/dist/svg/index.d.ts +5 -0
- package/dist/svg/index.d.ts.map +1 -0
- package/dist/svg/path.cjs +2 -0
- package/dist/svg/path.cjs.map +1 -0
- package/dist/svg/path.d.ts +9 -0
- package/dist/svg/path.d.ts.map +1 -0
- package/dist/svg/path.js +49 -0
- package/dist/svg/path.js.map +1 -0
- package/dist/svg/text.cjs +2 -0
- package/dist/svg/text.cjs.map +1 -0
- package/dist/svg/text.d.ts +7 -0
- package/dist/svg/text.d.ts.map +1 -0
- package/dist/svg/text.js +10 -0
- package/dist/svg/text.js.map +1 -0
- package/dist/theme/index.cjs +2 -0
- package/dist/theme/index.cjs.map +1 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +20 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/prism.css +342 -0
- package/dist/types.d.ts +204 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.cjs","names":[],"sources":["../../src/scales/linear.ts"],"sourcesContent":["import type { Scale } from '../types';\nimport type { LinearScaleConfig } from './types';\n\nfunction niceNumber(value: number, round: boolean): number {\n const exp = Math.floor(Math.log10(value));\n const frac = value / Math.pow(10, exp);\n let nice: number;\n\n if (round) {\n if (frac < 1.5) nice = 1;\n else if (frac < 3) nice = 2;\n else if (frac < 7) nice = 5;\n else nice = 10;\n } else {\n if (frac <= 1) nice = 1;\n else if (frac <= 2) nice = 2;\n else if (frac <= 5) nice = 5;\n else nice = 10;\n }\n\n return nice * Math.pow(10, exp);\n}\n\nfunction niceRange(min: number, max: number, tickCount: number): [number, number] {\n if (!Number.isFinite(min) || !Number.isFinite(max)) return [0, 1];\n\n if (min > max) [min, max] = [max, min];\n\n if (min === max) return [min - 1, max + 1];\n\n const range = niceNumber(max - min, false);\n const step = niceNumber(range / Math.max(1, tickCount - 1), true);\n\n return [Math.floor(min / step) * step, Math.ceil(max / step) * step];\n}\n\nexport function linearScale(config: LinearScaleConfig): Scale<number> {\n // Every method below closes over `config`/these helpers directly instead of reading\n // `this` — the returned object stays fully functional when destructured, e.g.\n // `const { map } = linearScale(cfg)`.\n const getDomain = (): [number, number] =>\n config.nice === false ? config.domain : niceRange(config.domain[0], config.domain[1], 10);\n const getRange = (): [number, number] => config.range;\n\n return {\n get domain(): [number, number] {\n return getDomain();\n },\n\n invert(pixel: number): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (r1 === r0) return d0;\n\n const t = (pixel - r0) / (r1 - r0);\n\n return d0 + t * (d1 - d0);\n },\n\n map(value: number): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (d1 === d0) return r0;\n\n let t = (value - d0) / (d1 - d0);\n\n if (config.clamp) {\n t = Math.max(0, Math.min(1, t));\n }\n\n return r0 + t * (r1 - r0);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count = 10): number[] {\n if (count <= 0) return [];\n\n const [d0, d1] = getDomain();\n\n if (d0 === d1 || count === 1) return [d0];\n\n // Normalize ordering so a reversed domain (e.g. an explicitly inverted axis with\n // `nice: false`) doesn't feed a negative range into niceNumber()'s Math.log10.\n const lo = Math.min(d0, d1);\n const hi = Math.max(d0, d1);\n const range = niceNumber(hi - lo, false);\n const step = niceNumber(range / (count - 1), true);\n const start = Math.ceil(lo / step) * step;\n const end = Math.floor(hi / step) * step;\n const ticks: number[] = [];\n\n for (let v = start; v <= end + step * 0.5; v += step) {\n ticks.push(Math.round(v * 1e12) / 1e12);\n }\n\n return ticks;\n },\n };\n}\n"],"mappings":"AAGA,SAAS,EAAW,EAAe,EAAwB,CACzD,IAAM,EAAM,KAAK,MAAM,KAAK,MAAM,CAAK,CAAC,EAClC,EAAO,EAAiB,IAAI,EAC9B,EAcJ,MAZA,CASO,EATH,EACE,EAAO,IAAY,EACd,EAAO,EAAU,EACjB,EAAO,EAAU,EACd,GAER,GAAQ,EAAU,EACb,GAAQ,EAAU,EAClB,GAAQ,EAAU,EACf,GAGP,EAAgB,IAAI,CAC7B,CAEA,SAAS,EAAU,EAAa,EAAa,EAAqC,CAChF,GAAI,CAAC,OAAO,SAAS,CAAG,GAAK,CAAC,OAAO,SAAS,CAAG,EAAG,MAAO,CAAC,EAAG,CAAC,EAIhE,GAFI,EAAM,IAAK,CAAC,EAAK,GAAO,CAAC,EAAK,CAAG,GAEjC,IAAQ,EAAK,MAAO,CAAC,EAAM,EAAG,EAAM,CAAC,EAGzC,IAAM,EAAO,EADC,EAAW,EAAM,EAAK,EACZ,EAAQ,KAAK,IAAI,EAAG,EAAY,CAAC,EAAG,EAAI,EAEhE,MAAO,CAAC,KAAK,MAAM,EAAM,CAAI,EAAI,EAAM,KAAK,KAAK,EAAM,CAAI,EAAI,CAAI,CACrE,CAEA,SAAgB,EAAY,EAA0C,CAIpE,IAAM,MACJ,EAAO,OAAS,GAAQ,EAAO,OAAS,EAAU,EAAO,OAAO,GAAI,EAAO,OAAO,GAAI,EAAE,EACpF,MAAmC,EAAO,MAEhD,MAAO,CACL,IAAI,QAA2B,CAC7B,OAAO,EAAU,CACnB,EAEA,OAAO,EAAuB,CAC5B,GAAM,CAAC,EAAI,GAAM,EAAU,EACrB,CAAC,EAAI,GAAM,EAAS,EAM1B,OAJI,IAAO,EAAW,EAIf,GAFI,EAAQ,IAAO,EAAK,IAEd,EAAK,EACxB,EAEA,IAAI,EAAuB,CACzB,GAAM,CAAC,EAAI,GAAM,EAAU,EACrB,CAAC,EAAI,GAAM,EAAS,EAE1B,GAAI,IAAO,EAAI,OAAO,EAEtB,IAAI,GAAK,EAAQ,IAAO,EAAK,GAM7B,OAJI,EAAO,QACT,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,CAAC,CAAC,GAGzB,EAAK,GAAK,EAAK,EACxB,EAEA,IAAI,OAA0B,CAC5B,OAAO,EAAS,CAClB,EAEA,MAAM,EAAQ,GAAc,CAC1B,GAAI,GAAS,EAAG,MAAO,CAAC,EAExB,GAAM,CAAC,EAAI,GAAM,EAAU,EAE3B,GAAI,IAAO,GAAM,IAAU,EAAG,MAAO,CAAC,CAAE,EAIxC,IAAM,EAAK,KAAK,IAAI,EAAI,CAAE,EACpB,EAAK,KAAK,IAAI,EAAI,CAAE,EAEpB,EAAO,EADC,EAAW,EAAK,EAAI,EACV,GAAS,EAAQ,GAAI,EAAI,EAC3C,EAAQ,KAAK,KAAK,EAAK,CAAI,EAAI,EAC/B,EAAM,KAAK,MAAM,EAAK,CAAI,EAAI,EAC9B,EAAkB,CAAC,EAEzB,IAAK,IAAI,EAAI,EAAO,GAAK,EAAM,EAAO,GAAK,GAAK,EAC9C,EAAM,KAAK,KAAK,MAAM,EAAI,YAAI,EAAI,YAAI,EAGxC,OAAO,CACT,CACF,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/scales/linear.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAmCjD,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,CAmEpE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//#region src/scales/linear.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
|
|
4
|
+
return i = t ? r < 1.5 ? 1 : r < 3 ? 2 : r < 7 ? 5 : 10 : r <= 1 ? 1 : r <= 2 ? 2 : r <= 5 ? 5 : 10, i * 10 ** n;
|
|
5
|
+
}
|
|
6
|
+
function t(t, n, r) {
|
|
7
|
+
if (!Number.isFinite(t) || !Number.isFinite(n)) return [0, 1];
|
|
8
|
+
if (t > n && ([t, n] = [n, t]), t === n) return [t - 1, n + 1];
|
|
9
|
+
let i = e(e(n - t, !1) / Math.max(1, r - 1), !0);
|
|
10
|
+
return [Math.floor(t / i) * i, Math.ceil(n / i) * i];
|
|
11
|
+
}
|
|
12
|
+
function n(n) {
|
|
13
|
+
let r = () => n.nice === !1 ? n.domain : t(n.domain[0], n.domain[1], 10), i = () => n.range;
|
|
14
|
+
return {
|
|
15
|
+
get domain() {
|
|
16
|
+
return r();
|
|
17
|
+
},
|
|
18
|
+
invert(e) {
|
|
19
|
+
let [t, n] = r(), [a, o] = i();
|
|
20
|
+
return o === a ? t : t + (e - a) / (o - a) * (n - t);
|
|
21
|
+
},
|
|
22
|
+
map(e) {
|
|
23
|
+
let [t, a] = r(), [o, s] = i();
|
|
24
|
+
if (a === t) return o;
|
|
25
|
+
let c = (e - t) / (a - t);
|
|
26
|
+
return n.clamp && (c = Math.max(0, Math.min(1, c))), o + c * (s - o);
|
|
27
|
+
},
|
|
28
|
+
get range() {
|
|
29
|
+
return i();
|
|
30
|
+
},
|
|
31
|
+
ticks(t = 10) {
|
|
32
|
+
if (t <= 0) return [];
|
|
33
|
+
let [n, i] = r();
|
|
34
|
+
if (n === i || t === 1) return [n];
|
|
35
|
+
let a = Math.min(n, i), o = Math.max(n, i), s = e(e(o - a, !1) / (t - 1), !0), c = Math.ceil(a / s) * s, l = Math.floor(o / s) * s, u = [];
|
|
36
|
+
for (let e = c; e <= l + s * .5; e += s) u.push(Math.round(e * 0xe8d4a51000) / 0xe8d4a51000);
|
|
37
|
+
return u;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { n as linearScale };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=linear.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.js","names":[],"sources":["../../src/scales/linear.ts"],"sourcesContent":["import type { Scale } from '../types';\nimport type { LinearScaleConfig } from './types';\n\nfunction niceNumber(value: number, round: boolean): number {\n const exp = Math.floor(Math.log10(value));\n const frac = value / Math.pow(10, exp);\n let nice: number;\n\n if (round) {\n if (frac < 1.5) nice = 1;\n else if (frac < 3) nice = 2;\n else if (frac < 7) nice = 5;\n else nice = 10;\n } else {\n if (frac <= 1) nice = 1;\n else if (frac <= 2) nice = 2;\n else if (frac <= 5) nice = 5;\n else nice = 10;\n }\n\n return nice * Math.pow(10, exp);\n}\n\nfunction niceRange(min: number, max: number, tickCount: number): [number, number] {\n if (!Number.isFinite(min) || !Number.isFinite(max)) return [0, 1];\n\n if (min > max) [min, max] = [max, min];\n\n if (min === max) return [min - 1, max + 1];\n\n const range = niceNumber(max - min, false);\n const step = niceNumber(range / Math.max(1, tickCount - 1), true);\n\n return [Math.floor(min / step) * step, Math.ceil(max / step) * step];\n}\n\nexport function linearScale(config: LinearScaleConfig): Scale<number> {\n // Every method below closes over `config`/these helpers directly instead of reading\n // `this` — the returned object stays fully functional when destructured, e.g.\n // `const { map } = linearScale(cfg)`.\n const getDomain = (): [number, number] =>\n config.nice === false ? config.domain : niceRange(config.domain[0], config.domain[1], 10);\n const getRange = (): [number, number] => config.range;\n\n return {\n get domain(): [number, number] {\n return getDomain();\n },\n\n invert(pixel: number): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (r1 === r0) return d0;\n\n const t = (pixel - r0) / (r1 - r0);\n\n return d0 + t * (d1 - d0);\n },\n\n map(value: number): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (d1 === d0) return r0;\n\n let t = (value - d0) / (d1 - d0);\n\n if (config.clamp) {\n t = Math.max(0, Math.min(1, t));\n }\n\n return r0 + t * (r1 - r0);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count = 10): number[] {\n if (count <= 0) return [];\n\n const [d0, d1] = getDomain();\n\n if (d0 === d1 || count === 1) return [d0];\n\n // Normalize ordering so a reversed domain (e.g. an explicitly inverted axis with\n // `nice: false`) doesn't feed a negative range into niceNumber()'s Math.log10.\n const lo = Math.min(d0, d1);\n const hi = Math.max(d0, d1);\n const range = niceNumber(hi - lo, false);\n const step = niceNumber(range / (count - 1), true);\n const start = Math.ceil(lo / step) * step;\n const end = Math.floor(hi / step) * step;\n const ticks: number[] = [];\n\n for (let v = start; v <= end + step * 0.5; v += step) {\n ticks.push(Math.round(v * 1e12) / 1e12);\n }\n\n return ticks;\n },\n };\n}\n"],"mappings":";AAGA,SAAS,EAAW,GAAe,GAAwB;CACzD,IAAM,IAAM,KAAK,MAAM,KAAK,MAAM,CAAK,CAAC,GAClC,IAAO,IAAiB,MAAI,GAC9B;CAcJ,OAZA,AASO,IATH,IACE,IAAO,MAAY,IACd,IAAO,IAAU,IACjB,IAAO,IAAU,IACd,KAER,KAAQ,IAAU,IACb,KAAQ,IAAU,IAClB,KAAQ,IAAU,IACf,IAGP,IAAgB,MAAI;AAC7B;AAEA,SAAS,EAAU,GAAa,GAAa,GAAqC;CAChF,IAAI,CAAC,OAAO,SAAS,CAAG,KAAK,CAAC,OAAO,SAAS,CAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAIhE,IAFI,IAAM,MAAK,CAAC,GAAK,KAAO,CAAC,GAAK,CAAG,IAEjC,MAAQ,GAAK,OAAO,CAAC,IAAM,GAAG,IAAM,CAAC;CAGzC,IAAM,IAAO,EADC,EAAW,IAAM,GAAK,EACZ,IAAQ,KAAK,IAAI,GAAG,IAAY,CAAC,GAAG,EAAI;CAEhE,OAAO,CAAC,KAAK,MAAM,IAAM,CAAI,IAAI,GAAM,KAAK,KAAK,IAAM,CAAI,IAAI,CAAI;AACrE;AAEA,SAAgB,EAAY,GAA0C;CAIpE,IAAM,UACJ,EAAO,SAAS,KAAQ,EAAO,SAAS,EAAU,EAAO,OAAO,IAAI,EAAO,OAAO,IAAI,EAAE,GACpF,UAAmC,EAAO;CAEhD,OAAO;EACL,IAAI,SAA2B;GAC7B,OAAO,EAAU;EACnB;EAEA,OAAO,GAAuB;GAC5B,IAAM,CAAC,GAAI,KAAM,EAAU,GACrB,CAAC,GAAI,KAAM,EAAS;GAM1B,OAJI,MAAO,IAAW,IAIf,KAFI,IAAQ,MAAO,IAAK,MAEd,IAAK;EACxB;EAEA,IAAI,GAAuB;GACzB,IAAM,CAAC,GAAI,KAAM,EAAU,GACrB,CAAC,GAAI,KAAM,EAAS;GAE1B,IAAI,MAAO,GAAI,OAAO;GAEtB,IAAI,KAAK,IAAQ,MAAO,IAAK;GAM7B,OAJI,EAAO,UACT,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,IAGzB,IAAK,KAAK,IAAK;EACxB;EAEA,IAAI,QAA0B;GAC5B,OAAO,EAAS;EAClB;EAEA,MAAM,IAAQ,IAAc;GAC1B,IAAI,KAAS,GAAG,OAAO,CAAC;GAExB,IAAM,CAAC,GAAI,KAAM,EAAU;GAE3B,IAAI,MAAO,KAAM,MAAU,GAAG,OAAO,CAAC,CAAE;GAIxC,IAAM,IAAK,KAAK,IAAI,GAAI,CAAE,GACpB,IAAK,KAAK,IAAI,GAAI,CAAE,GAEpB,IAAO,EADC,EAAW,IAAK,GAAI,EACV,KAAS,IAAQ,IAAI,EAAI,GAC3C,IAAQ,KAAK,KAAK,IAAK,CAAI,IAAI,GAC/B,IAAM,KAAK,MAAM,IAAK,CAAI,IAAI,GAC9B,IAAkB,CAAC;GAEzB,KAAK,IAAI,IAAI,GAAO,KAAK,IAAM,IAAO,IAAK,KAAK,GAC9C,EAAM,KAAK,KAAK,MAAM,IAAI,YAAI,IAAI,YAAI;GAGxC,OAAO;EACT;CACF;AACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=1e3,t=60*e,n=60*t,r=24*n,i=30*r,a=365*r,o=[e,5*e,15*e,30*e,t,5*t,15*t,30*t,n,3*n,6*n,12*n,r,7*r,i,3*i,6*i,a];function s(e,t){let n=Math.abs(e)/Math.max(1,t);for(let e of o)if(e>=n)return e;return a}function c(e,t){let[n,r]=e;n.getTime()>r.getTime()&&([n,r]=[r,n]);let i=s(r.getTime()-n.getTime(),t);return[new Date(Math.floor(n.getTime()/i)*i),new Date(Math.ceil(r.getTime()/i)*i)]}function l(e){let t=()=>e.nice===!1?e.domain:c(e.domain,10),n=()=>e.range;return{get domain(){return t()},invert(e){let[r,i]=t(),[a,o]=n();if(o===a)return r;let s=(e-a)/(o-a);return new Date(r.getTime()+s*(i.getTime()-r.getTime()))},map(e){let[r,i]=t(),[a,o]=n(),s=i.getTime()-r.getTime();return s===0?a:a+(e.getTime()-r.getTime())/s*(o-a)},get range(){return n()},ticks(e=10){let[n,r]=t(),i=s(r.getTime()-n.getTime(),e),a=Math.ceil(n.getTime()/i)*i,o=[];for(let e=a;e<=r.getTime();e+=i)o.push(new Date(e));return o}}}exports.timeScale=l;
|
|
2
|
+
//# sourceMappingURL=time.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.cjs","names":[],"sources":["../../src/scales/time.ts"],"sourcesContent":["import type { Scale } from '../types';\nimport type { TimeScaleConfig } from './types';\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\nconst TIME_INTERVALS = [\n SECOND,\n 5 * SECOND,\n 15 * SECOND,\n 30 * SECOND,\n MINUTE,\n 5 * MINUTE,\n 15 * MINUTE,\n 30 * MINUTE,\n HOUR,\n 3 * HOUR,\n 6 * HOUR,\n 12 * HOUR,\n DAY,\n 7 * DAY,\n MONTH,\n 3 * MONTH,\n 6 * MONTH,\n YEAR,\n];\n\nfunction chooseInterval(range: number, count: number): number {\n const target = Math.abs(range) / Math.max(1, count);\n\n for (const interval of TIME_INTERVALS) {\n if (interval >= target) return interval;\n }\n\n return YEAR;\n}\n\nfunction niceDomain(domain: [Date, Date], count: number): [Date, Date] {\n let [d0, d1] = domain;\n\n if (d0.getTime() > d1.getTime()) [d0, d1] = [d1, d0];\n\n const range = d1.getTime() - d0.getTime();\n const interval = chooseInterval(range, count);\n\n return [\n new Date(Math.floor(d0.getTime() / interval) * interval),\n new Date(Math.ceil(d1.getTime() / interval) * interval),\n ];\n}\n\nexport function timeScale(config: TimeScaleConfig): Scale<Date> {\n // Every method below closes over `config`/these helpers directly instead of reading\n // `this` — the returned object stays fully functional when destructured, e.g.\n // `const { map } = timeScale(cfg)`.\n const getDomain = (): [Date, Date] => (config.nice === false ? config.domain : niceDomain(config.domain, 10));\n const getRange = (): [number, number] => config.range;\n\n return {\n get domain(): [Date, Date] {\n return getDomain();\n },\n\n invert(pixel: number): Date {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (r1 === r0) return d0;\n\n const t = (pixel - r0) / (r1 - r0);\n\n return new Date(d0.getTime() + t * (d1.getTime() - d0.getTime()));\n },\n\n map(value: Date): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n const dRange = d1.getTime() - d0.getTime();\n\n if (dRange === 0) return r0;\n\n const t = (value.getTime() - d0.getTime()) / dRange;\n\n return r0 + t * (r1 - r0);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count = 10): Date[] {\n const [d0, d1] = getDomain();\n const range = d1.getTime() - d0.getTime();\n const interval = chooseInterval(range, count);\n const start = Math.ceil(d0.getTime() / interval) * interval;\n const ticks: Date[] = [];\n\n for (let t = start; t <= d1.getTime(); t += interval) {\n ticks.push(new Date(t));\n }\n\n return ticks;\n },\n };\n}\n"],"mappings":"AAGA,IAAM,EAAS,IACT,EAAS,GAAK,EACd,EAAO,GAAK,EACZ,EAAM,GAAK,EACX,EAAQ,GAAK,EACb,EAAO,IAAM,EAEb,EAAiB,CACrB,EACA,EAAI,EACJ,GAAK,EACL,GAAK,EACL,EACA,EAAI,EACJ,GAAK,EACL,GAAK,EACL,EACA,EAAI,EACJ,EAAI,EACJ,GAAK,EACL,EACA,EAAI,EACJ,EACA,EAAI,EACJ,EAAI,EACJ,CACF,EAEA,SAAS,EAAe,EAAe,EAAuB,CAC5D,IAAM,EAAS,KAAK,IAAI,CAAK,EAAI,KAAK,IAAI,EAAG,CAAK,EAElD,IAAK,IAAM,KAAY,EACrB,GAAI,GAAY,EAAQ,OAAO,EAGjC,OAAO,CACT,CAEA,SAAS,EAAW,EAAsB,EAA6B,CACrE,GAAI,CAAC,EAAI,GAAM,EAEX,EAAG,QAAQ,EAAI,EAAG,QAAQ,IAAG,CAAC,EAAI,GAAM,CAAC,EAAI,CAAE,GAGnD,IAAM,EAAW,EADH,EAAG,QAAQ,EAAI,EAAG,QAAQ,EACD,CAAK,EAE5C,MAAO,CACL,IAAI,KAAK,KAAK,MAAM,EAAG,QAAQ,EAAI,CAAQ,EAAI,CAAQ,EACvD,IAAI,KAAK,KAAK,KAAK,EAAG,QAAQ,EAAI,CAAQ,EAAI,CAAQ,CACxD,CACF,CAEA,SAAgB,EAAU,EAAsC,CAI9D,IAAM,MAAiC,EAAO,OAAS,GAAQ,EAAO,OAAS,EAAW,EAAO,OAAQ,EAAE,EACrG,MAAmC,EAAO,MAEhD,MAAO,CACL,IAAI,QAAuB,CACzB,OAAO,EAAU,CACnB,EAEA,OAAO,EAAqB,CAC1B,GAAM,CAAC,EAAI,GAAM,EAAU,EACrB,CAAC,EAAI,GAAM,EAAS,EAE1B,GAAI,IAAO,EAAI,OAAO,EAEtB,IAAM,GAAK,EAAQ,IAAO,EAAK,GAE/B,OAAO,IAAI,KAAK,EAAG,QAAQ,EAAI,GAAK,EAAG,QAAQ,EAAI,EAAG,QAAQ,EAAE,CAClE,EAEA,IAAI,EAAqB,CACvB,GAAM,CAAC,EAAI,GAAM,EAAU,EACrB,CAAC,EAAI,GAAM,EAAS,EACpB,EAAS,EAAG,QAAQ,EAAI,EAAG,QAAQ,EAMzC,OAJI,IAAW,EAAU,EAIlB,GAFI,EAAM,QAAQ,EAAI,EAAG,QAAQ,GAAK,GAE5B,EAAK,EACxB,EAEA,IAAI,OAA0B,CAC5B,OAAO,EAAS,CAClB,EAEA,MAAM,EAAQ,GAAY,CACxB,GAAM,CAAC,EAAI,GAAM,EAAU,EAErB,EAAW,EADH,EAAG,QAAQ,EAAI,EAAG,QAAQ,EACD,CAAK,EACtC,EAAQ,KAAK,KAAK,EAAG,QAAQ,EAAI,CAAQ,EAAI,EAC7C,EAAgB,CAAC,EAEvB,IAAK,IAAI,EAAI,EAAO,GAAK,EAAG,QAAQ,EAAG,GAAK,EAC1C,EAAM,KAAK,IAAI,KAAK,CAAC,CAAC,EAGxB,OAAO,CACT,CACF,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/scales/time.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAsD/C,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAqD9D"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
//#region src/scales/time.ts
|
|
2
|
+
var e = 1e3, t = 60 * e, n = 60 * t, r = 24 * n, i = 30 * r, a = 365 * r, o = [
|
|
3
|
+
e,
|
|
4
|
+
5 * e,
|
|
5
|
+
15 * e,
|
|
6
|
+
30 * e,
|
|
7
|
+
t,
|
|
8
|
+
5 * t,
|
|
9
|
+
15 * t,
|
|
10
|
+
30 * t,
|
|
11
|
+
n,
|
|
12
|
+
3 * n,
|
|
13
|
+
6 * n,
|
|
14
|
+
12 * n,
|
|
15
|
+
r,
|
|
16
|
+
7 * r,
|
|
17
|
+
i,
|
|
18
|
+
3 * i,
|
|
19
|
+
6 * i,
|
|
20
|
+
a
|
|
21
|
+
];
|
|
22
|
+
function s(e, t) {
|
|
23
|
+
let n = Math.abs(e) / Math.max(1, t);
|
|
24
|
+
for (let e of o) if (e >= n) return e;
|
|
25
|
+
return a;
|
|
26
|
+
}
|
|
27
|
+
function c(e, t) {
|
|
28
|
+
let [n, r] = e;
|
|
29
|
+
n.getTime() > r.getTime() && ([n, r] = [r, n]);
|
|
30
|
+
let i = s(r.getTime() - n.getTime(), t);
|
|
31
|
+
return [new Date(Math.floor(n.getTime() / i) * i), new Date(Math.ceil(r.getTime() / i) * i)];
|
|
32
|
+
}
|
|
33
|
+
function l(e) {
|
|
34
|
+
let t = () => e.nice === !1 ? e.domain : c(e.domain, 10), n = () => e.range;
|
|
35
|
+
return {
|
|
36
|
+
get domain() {
|
|
37
|
+
return t();
|
|
38
|
+
},
|
|
39
|
+
invert(e) {
|
|
40
|
+
let [r, i] = t(), [a, o] = n();
|
|
41
|
+
if (o === a) return r;
|
|
42
|
+
let s = (e - a) / (o - a);
|
|
43
|
+
return new Date(r.getTime() + s * (i.getTime() - r.getTime()));
|
|
44
|
+
},
|
|
45
|
+
map(e) {
|
|
46
|
+
let [r, i] = t(), [a, o] = n(), s = i.getTime() - r.getTime();
|
|
47
|
+
return s === 0 ? a : a + (e.getTime() - r.getTime()) / s * (o - a);
|
|
48
|
+
},
|
|
49
|
+
get range() {
|
|
50
|
+
return n();
|
|
51
|
+
},
|
|
52
|
+
ticks(e = 10) {
|
|
53
|
+
let [n, r] = t(), i = s(r.getTime() - n.getTime(), e), a = Math.ceil(n.getTime() / i) * i, o = [];
|
|
54
|
+
for (let e = a; e <= r.getTime(); e += i) o.push(new Date(e));
|
|
55
|
+
return o;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { l as timeScale };
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","names":[],"sources":["../../src/scales/time.ts"],"sourcesContent":["import type { Scale } from '../types';\nimport type { TimeScaleConfig } from './types';\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\nconst TIME_INTERVALS = [\n SECOND,\n 5 * SECOND,\n 15 * SECOND,\n 30 * SECOND,\n MINUTE,\n 5 * MINUTE,\n 15 * MINUTE,\n 30 * MINUTE,\n HOUR,\n 3 * HOUR,\n 6 * HOUR,\n 12 * HOUR,\n DAY,\n 7 * DAY,\n MONTH,\n 3 * MONTH,\n 6 * MONTH,\n YEAR,\n];\n\nfunction chooseInterval(range: number, count: number): number {\n const target = Math.abs(range) / Math.max(1, count);\n\n for (const interval of TIME_INTERVALS) {\n if (interval >= target) return interval;\n }\n\n return YEAR;\n}\n\nfunction niceDomain(domain: [Date, Date], count: number): [Date, Date] {\n let [d0, d1] = domain;\n\n if (d0.getTime() > d1.getTime()) [d0, d1] = [d1, d0];\n\n const range = d1.getTime() - d0.getTime();\n const interval = chooseInterval(range, count);\n\n return [\n new Date(Math.floor(d0.getTime() / interval) * interval),\n new Date(Math.ceil(d1.getTime() / interval) * interval),\n ];\n}\n\nexport function timeScale(config: TimeScaleConfig): Scale<Date> {\n // Every method below closes over `config`/these helpers directly instead of reading\n // `this` — the returned object stays fully functional when destructured, e.g.\n // `const { map } = timeScale(cfg)`.\n const getDomain = (): [Date, Date] => (config.nice === false ? config.domain : niceDomain(config.domain, 10));\n const getRange = (): [number, number] => config.range;\n\n return {\n get domain(): [Date, Date] {\n return getDomain();\n },\n\n invert(pixel: number): Date {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n\n if (r1 === r0) return d0;\n\n const t = (pixel - r0) / (r1 - r0);\n\n return new Date(d0.getTime() + t * (d1.getTime() - d0.getTime()));\n },\n\n map(value: Date): number {\n const [d0, d1] = getDomain();\n const [r0, r1] = getRange();\n const dRange = d1.getTime() - d0.getTime();\n\n if (dRange === 0) return r0;\n\n const t = (value.getTime() - d0.getTime()) / dRange;\n\n return r0 + t * (r1 - r0);\n },\n\n get range(): [number, number] {\n return getRange();\n },\n\n ticks(count = 10): Date[] {\n const [d0, d1] = getDomain();\n const range = d1.getTime() - d0.getTime();\n const interval = chooseInterval(range, count);\n const start = Math.ceil(d0.getTime() / interval) * interval;\n const ticks: Date[] = [];\n\n for (let t = start; t <= d1.getTime(); t += interval) {\n ticks.push(new Date(t));\n }\n\n return ticks;\n },\n };\n}\n"],"mappings":";AAGA,IAAM,IAAS,KACT,IAAS,KAAK,GACd,IAAO,KAAK,GACZ,IAAM,KAAK,GACX,IAAQ,KAAK,GACb,IAAO,MAAM,GAEb,IAAiB;CACrB;CACA,IAAI;CACJ,KAAK;CACL,KAAK;CACL;CACA,IAAI;CACJ,KAAK;CACL,KAAK;CACL;CACA,IAAI;CACJ,IAAI;CACJ,KAAK;CACL;CACA,IAAI;CACJ;CACA,IAAI;CACJ,IAAI;CACJ;AACF;AAEA,SAAS,EAAe,GAAe,GAAuB;CAC5D,IAAM,IAAS,KAAK,IAAI,CAAK,IAAI,KAAK,IAAI,GAAG,CAAK;CAElD,KAAK,IAAM,KAAY,GACrB,IAAI,KAAY,GAAQ,OAAO;CAGjC,OAAO;AACT;AAEA,SAAS,EAAW,GAAsB,GAA6B;CACrE,IAAI,CAAC,GAAI,KAAM;CAEf,AAAI,EAAG,QAAQ,IAAI,EAAG,QAAQ,MAAG,CAAC,GAAI,KAAM,CAAC,GAAI,CAAE;CAGnD,IAAM,IAAW,EADH,EAAG,QAAQ,IAAI,EAAG,QAAQ,GACD,CAAK;CAE5C,OAAO,CACL,IAAI,KAAK,KAAK,MAAM,EAAG,QAAQ,IAAI,CAAQ,IAAI,CAAQ,GACvD,IAAI,KAAK,KAAK,KAAK,EAAG,QAAQ,IAAI,CAAQ,IAAI,CAAQ,CACxD;AACF;AAEA,SAAgB,EAAU,GAAsC;CAI9D,IAAM,UAAiC,EAAO,SAAS,KAAQ,EAAO,SAAS,EAAW,EAAO,QAAQ,EAAE,GACrG,UAAmC,EAAO;CAEhD,OAAO;EACL,IAAI,SAAuB;GACzB,OAAO,EAAU;EACnB;EAEA,OAAO,GAAqB;GAC1B,IAAM,CAAC,GAAI,KAAM,EAAU,GACrB,CAAC,GAAI,KAAM,EAAS;GAE1B,IAAI,MAAO,GAAI,OAAO;GAEtB,IAAM,KAAK,IAAQ,MAAO,IAAK;GAE/B,OAAO,IAAI,KAAK,EAAG,QAAQ,IAAI,KAAK,EAAG,QAAQ,IAAI,EAAG,QAAQ,EAAE;EAClE;EAEA,IAAI,GAAqB;GACvB,IAAM,CAAC,GAAI,KAAM,EAAU,GACrB,CAAC,GAAI,KAAM,EAAS,GACpB,IAAS,EAAG,QAAQ,IAAI,EAAG,QAAQ;GAMzC,OAJI,MAAW,IAAU,IAIlB,KAFI,EAAM,QAAQ,IAAI,EAAG,QAAQ,KAAK,KAE5B,IAAK;EACxB;EAEA,IAAI,QAA0B;GAC5B,OAAO,EAAS;EAClB;EAEA,MAAM,IAAQ,IAAY;GACxB,IAAM,CAAC,GAAI,KAAM,EAAU,GAErB,IAAW,EADH,EAAG,QAAQ,IAAI,EAAG,QAAQ,GACD,CAAK,GACtC,IAAQ,KAAK,KAAK,EAAG,QAAQ,IAAI,CAAQ,IAAI,GAC7C,IAAgB,CAAC;GAEvB,KAAK,IAAI,IAAI,GAAO,KAAK,EAAG,QAAQ,GAAG,KAAK,GAC1C,EAAM,KAAK,IAAI,KAAK,CAAC,CAAC;GAGxB,OAAO;EACT;CACF;AACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type { BandScale, Scale } from '../types';
|
|
2
|
+
export interface BandScaleConfig {
|
|
3
|
+
domain: string[];
|
|
4
|
+
padding?: number;
|
|
5
|
+
paddingOuter?: number;
|
|
6
|
+
range: [number, number];
|
|
7
|
+
}
|
|
8
|
+
export interface LinearScaleConfig {
|
|
9
|
+
clamp?: boolean;
|
|
10
|
+
domain: [number, number];
|
|
11
|
+
nice?: boolean;
|
|
12
|
+
range: [number, number];
|
|
13
|
+
}
|
|
14
|
+
export interface TimeScaleConfig {
|
|
15
|
+
domain: [Date, Date];
|
|
16
|
+
nice?: boolean;
|
|
17
|
+
range: [number, number];
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scales/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../_dev.cjs");var t=`http://www.w3.org/2000/svg`;function n(e,n){let i=document.createElementNS(t,e);return n&&r(i,n),i}function r(t,n){for(let[r,i]of Object.entries(n)){if(i===void 0){t.removeAttribute(r);continue}typeof i==`number`&&!Number.isFinite(i)&&e.warn(`setAttributes: attribute "${r}" on <${t.tagName}> received a non-finite value (${i}) — check upstream scale/geometry math for invalid input.`),t.setAttribute(r,String(i))}}function i(e){for(;e.firstChild;)e.removeChild(e.firstChild)}exports.createSvgElement=n,exports.removeChildren=i,exports.setAttributes=r;
|
|
2
|
+
//# sourceMappingURL=element.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.cjs","names":[],"sources":["../../src/svg/element.ts"],"sourcesContent":["import { warn } from '../_dev';\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\n\nexport function createSvgElement<K extends keyof SVGElementTagNameMap>(\n tag: K,\n attrs?: Record<string, number | string | undefined>,\n): SVGElementTagNameMap[K] {\n const el = document.createElementNS(SVG_NS, tag);\n\n if (attrs) setAttributes(el, attrs);\n\n return el;\n}\n\nexport function setAttributes(el: SVGElement, attrs: Record<string, number | string | undefined>): void {\n for (const [key, value] of Object.entries(attrs)) {\n if (value === undefined) {\n el.removeAttribute(key);\n\n continue;\n }\n\n if (typeof value === 'number' && !Number.isFinite(value)) {\n warn(\n `setAttributes: attribute \"${key}\" on <${el.tagName}> received a non-finite value (${value}) — check upstream scale/geometry math for invalid input.`,\n );\n }\n\n el.setAttribute(key, String(value));\n }\n}\n\nexport function removeChildren(el: SVGElement): void {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n"],"mappings":"+BAEA,IAAM,EAAS,6BAEf,SAAgB,EACd,EACA,EACyB,CACzB,IAAM,EAAK,SAAS,gBAAgB,EAAQ,CAAG,EAI/C,OAFI,GAAO,EAAc,EAAI,CAAK,EAE3B,CACT,CAEA,SAAgB,EAAc,EAAgB,EAA0D,CACtG,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,CAAK,EAAG,CAChD,GAAI,IAAU,IAAA,GAAW,CACvB,EAAG,gBAAgB,CAAG,EAEtB,QACF,CAEI,OAAO,GAAU,UAAY,CAAC,OAAO,SAAS,CAAK,GACrD,EAAA,KACE,6BAA6B,EAAI,QAAQ,EAAG,QAAQ,iCAAiC,EAAM,0DAC7F,EAGF,EAAG,aAAa,EAAK,OAAO,CAAK,CAAC,CACpC,CACF,CAEA,SAAgB,EAAe,EAAsB,CACnD,KAAO,EAAG,YACR,EAAG,YAAY,EAAG,UAAU,CAEhC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function createSvgElement<K extends keyof SVGElementTagNameMap>(tag: K, attrs?: Record<string, number | string | undefined>): SVGElementTagNameMap[K];
|
|
2
|
+
export declare function setAttributes(el: SVGElement, attrs: Record<string, number | string | undefined>): void;
|
|
3
|
+
export declare function removeChildren(el: SVGElement): void;
|
|
4
|
+
//# sourceMappingURL=element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../src/svg/element.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,oBAAoB,EACnE,GAAG,EAAE,CAAC,EACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAClD,oBAAoB,CAAC,CAAC,CAAC,CAMzB;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,CAgBtG;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAInD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { warn as e } from "../_dev.js";
|
|
2
|
+
//#region src/svg/element.ts
|
|
3
|
+
var t = "http://www.w3.org/2000/svg";
|
|
4
|
+
function n(e, n) {
|
|
5
|
+
let i = document.createElementNS(t, e);
|
|
6
|
+
return n && r(i, n), i;
|
|
7
|
+
}
|
|
8
|
+
function r(t, n) {
|
|
9
|
+
for (let [r, i] of Object.entries(n)) {
|
|
10
|
+
if (i === void 0) {
|
|
11
|
+
t.removeAttribute(r);
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
typeof i == "number" && !Number.isFinite(i) && e(`setAttributes: attribute "${r}" on <${t.tagName}> received a non-finite value (${i}) — check upstream scale/geometry math for invalid input.`), t.setAttribute(r, String(i));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function i(e) {
|
|
18
|
+
for (; e.firstChild;) e.removeChild(e.firstChild);
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { n as createSvgElement, i as removeChildren, r as setAttributes };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.js","names":[],"sources":["../../src/svg/element.ts"],"sourcesContent":["import { warn } from '../_dev';\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\n\nexport function createSvgElement<K extends keyof SVGElementTagNameMap>(\n tag: K,\n attrs?: Record<string, number | string | undefined>,\n): SVGElementTagNameMap[K] {\n const el = document.createElementNS(SVG_NS, tag);\n\n if (attrs) setAttributes(el, attrs);\n\n return el;\n}\n\nexport function setAttributes(el: SVGElement, attrs: Record<string, number | string | undefined>): void {\n for (const [key, value] of Object.entries(attrs)) {\n if (value === undefined) {\n el.removeAttribute(key);\n\n continue;\n }\n\n if (typeof value === 'number' && !Number.isFinite(value)) {\n warn(\n `setAttributes: attribute \"${key}\" on <${el.tagName}> received a non-finite value (${value}) — check upstream scale/geometry math for invalid input.`,\n );\n }\n\n el.setAttribute(key, String(value));\n }\n}\n\nexport function removeChildren(el: SVGElement): void {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n"],"mappings":";;AAEA,IAAM,IAAS;AAEf,SAAgB,EACd,GACA,GACyB;CACzB,IAAM,IAAK,SAAS,gBAAgB,GAAQ,CAAG;CAI/C,OAFI,KAAO,EAAc,GAAI,CAAK,GAE3B;AACT;AAEA,SAAgB,EAAc,GAAgB,GAA0D;CACtG,KAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,CAAK,GAAG;EAChD,IAAI,MAAU,KAAA,GAAW;GACvB,EAAG,gBAAgB,CAAG;GAEtB;EACF;EAQA,AANI,OAAO,KAAU,YAAY,CAAC,OAAO,SAAS,CAAK,KACrD,EACE,6BAA6B,EAAI,QAAQ,EAAG,QAAQ,iCAAiC,EAAM,0DAC7F,GAGF,EAAG,aAAa,GAAK,OAAO,CAAK,CAAC;CACpC;AACF;AAEA,SAAgB,EAAe,GAAsB;CACnD,OAAO,EAAG,aACR,EAAG,YAAY,EAAG,UAAU;AAEhC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createSvgElement, removeChildren, setAttributes } from './element';
|
|
2
|
+
export { areaPath, linePath, monotonePath, stepPath } from './path';
|
|
3
|
+
export type { Point } from './path';
|
|
4
|
+
export { createAxisLabel, createTextElement, measureTextWidth, truncateText } from './text';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/svg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACpE,YAAY,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e){if(e.length===0)return``;let t=`M${e[0].x},${e[0].y}`;for(let n=1;n<e.length;n++)t+=`L${e[n].x},${e[n].y}`;return t}function t(t){if(t.length<3)return e(t);let n=t.length,r=[];for(let e=0;e<n;e++)e===0?r.push({x:t[1].x-t[0].x,y:t[1].y-t[0].y}):e===n-1?r.push({x:t[n-1].x-t[n-2].x,y:t[n-1].y-t[n-2].y}):r.push({x:(t[e+1].x-t[e-1].x)/2,y:(t[e+1].y-t[e-1].y)/2});let i=`M${t[0].x},${t[0].y}`;for(let e=0;e<n-1;e++){let n=t[e],a=t[e+1],o=r[e],s=r[e+1],c=(a.x-n.x)/3;i+=`C${n.x+c},${n.y+o.y/3},${a.x-c},${a.y-s.y/3},${a.x},${a.y}`}return i}function n(e){if(e.length===0)return``;let t=`M${e[0].x},${e[0].y}`;for(let n=1;n<e.length;n++){let r=(e[n-1].x+e[n].x)/2;t+=`H${r}V${e[n].y}H${e[n].x}`}return t}function r(r,i,a=`linear`){if(r.length===0)return``;let o=a===`monotone`?t(r):a===`step`?n(r):e(r),s=[...i].reverse();if(s.length>0){o+=`L${s[0].x},${s[0].y}`;for(let e=1;e<s.length;e++)o+=`L${s[e].x},${s[e].y}`}return o+=`Z`,o}exports.areaPath=r,exports.linePath=e,exports.monotonePath=t,exports.stepPath=n;
|
|
2
|
+
//# sourceMappingURL=path.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.cjs","names":[],"sources":["../../src/svg/path.ts"],"sourcesContent":["export interface Point {\n x: number;\n y: number;\n}\n\nexport function linePath(points: Point[]): string {\n if (points.length === 0) return '';\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 1; i < points.length; i++) {\n d += `L${points[i].x},${points[i].y}`;\n }\n\n return d;\n}\n\nexport function monotonePath(points: Point[]): string {\n if (points.length < 3) return linePath(points);\n\n const n = points.length;\n const tangents: Point[] = [];\n\n for (let i = 0; i < n; i++) {\n if (i === 0) {\n tangents.push({ x: points[1].x - points[0].x, y: points[1].y - points[0].y });\n } else if (i === n - 1) {\n tangents.push({ x: points[n - 1].x - points[n - 2].x, y: points[n - 1].y - points[n - 2].y });\n } else {\n tangents.push({ x: (points[i + 1].x - points[i - 1].x) / 2, y: (points[i + 1].y - points[i - 1].y) / 2 });\n }\n }\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n const t0 = tangents[i];\n const t1 = tangents[i + 1];\n const dx = (p1.x - p0.x) / 3;\n\n d += `C${p0.x + dx},${p0.y + t0.y / 3},${p1.x - dx},${p1.y - t1.y / 3},${p1.x},${p1.y}`;\n }\n\n return d;\n}\n\nexport function stepPath(points: Point[]): string {\n if (points.length === 0) return '';\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 1; i < points.length; i++) {\n const midX = (points[i - 1].x + points[i].x) / 2;\n\n d += `H${midX}V${points[i].y}H${points[i].x}`;\n }\n\n return d;\n}\n\nexport function areaPath(\n topPoints: Point[],\n bottomPoints: Point[],\n curve: 'linear' | 'monotone' | 'step' = 'linear',\n): string {\n if (topPoints.length === 0) return '';\n\n const topPath =\n curve === 'monotone' ? monotonePath(topPoints) : curve === 'step' ? stepPath(topPoints) : linePath(topPoints);\n let d = topPath;\n const reversed = [...bottomPoints].reverse();\n\n if (reversed.length > 0) {\n d += `L${reversed[0].x},${reversed[0].y}`;\n for (let i = 1; i < reversed.length; i++) {\n d += `L${reversed[i].x},${reversed[i].y}`;\n }\n }\n\n d += 'Z';\n\n return d;\n}\n"],"mappings":"AAKA,SAAgB,EAAS,EAAyB,CAChD,GAAI,EAAO,SAAW,EAAG,MAAO,GAEhC,IAAI,EAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,IAErC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,GAAK,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,IAGpC,OAAO,CACT,CAEA,SAAgB,EAAa,EAAyB,CACpD,GAAI,EAAO,OAAS,EAAG,OAAO,EAAS,CAAM,EAE7C,IAAM,EAAI,EAAO,OACX,EAAoB,CAAC,EAE3B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACjB,IAAM,EACR,EAAS,KAAK,CAAE,EAAG,EAAO,EAAE,CAAC,EAAI,EAAO,EAAE,CAAC,EAAG,EAAG,EAAO,EAAE,CAAC,EAAI,EAAO,EAAE,CAAC,CAAE,CAAC,EACnE,IAAM,EAAI,EACnB,EAAS,KAAK,CAAE,EAAG,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAI,EAAE,CAAC,EAAG,EAAG,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAI,EAAE,CAAC,CAAE,CAAC,EAE5F,EAAS,KAAK,CAAE,GAAI,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAI,EAAE,CAAC,GAAK,EAAG,GAAI,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAI,EAAE,CAAC,GAAK,CAAE,CAAC,EAI5G,IAAI,EAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,IAErC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,EAAG,IAAK,CAC9B,IAAM,EAAK,EAAO,GACZ,EAAK,EAAO,EAAI,GAChB,EAAK,EAAS,GACd,EAAK,EAAS,EAAI,GAClB,GAAM,EAAG,EAAI,EAAG,GAAK,EAE3B,GAAK,IAAI,EAAG,EAAI,EAAG,GAAG,EAAG,EAAI,EAAG,EAAI,EAAE,GAAG,EAAG,EAAI,EAAG,GAAG,EAAG,EAAI,EAAG,EAAI,EAAE,GAAG,EAAG,EAAE,GAAG,EAAG,GACtF,CAEA,OAAO,CACT,CAEA,SAAgB,EAAS,EAAyB,CAChD,GAAI,EAAO,SAAW,EAAG,MAAO,GAEhC,IAAI,EAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,IAErC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACtC,IAAM,GAAQ,EAAO,EAAI,EAAE,CAAC,EAAI,EAAO,EAAE,CAAC,GAAK,EAE/C,GAAK,IAAI,EAAK,GAAG,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC,GAC5C,CAEA,OAAO,CACT,CAEA,SAAgB,EACd,EACA,EACA,EAAwC,SAChC,CACR,GAAI,EAAU,SAAW,EAAG,MAAO,GAInC,IAAI,EADF,IAAU,WAAa,EAAa,CAAS,EAAI,IAAU,OAAS,EAAS,CAAS,EAAI,EAAS,CAAS,EAExG,EAAW,CAAC,GAAG,CAAY,CAAC,CAAC,QAAQ,EAE3C,GAAI,EAAS,OAAS,EAAG,CACvB,GAAK,IAAI,EAAS,EAAE,CAAC,EAAE,GAAG,EAAS,EAAE,CAAC,IACtC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,GAAK,IAAI,EAAS,EAAE,CAAC,EAAE,GAAG,EAAS,EAAE,CAAC,GAE1C,CAIA,MAFA,IAAK,IAEE,CACT"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface Point {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
}
|
|
5
|
+
export declare function linePath(points: Point[]): string;
|
|
6
|
+
export declare function monotonePath(points: Point[]): string;
|
|
7
|
+
export declare function stepPath(points: Point[]): string;
|
|
8
|
+
export declare function areaPath(topPoints: Point[], bottomPoints: Point[], curve?: 'linear' | 'monotone' | 'step'): string;
|
|
9
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/svg/path.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAUhD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CA6BpD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAYhD;AAED,wBAAgB,QAAQ,CACtB,SAAS,EAAE,KAAK,EAAE,EAClB,YAAY,EAAE,KAAK,EAAE,EACrB,KAAK,GAAE,QAAQ,GAAG,UAAU,GAAG,MAAiB,GAC/C,MAAM,CAkBR"}
|
package/dist/svg/path.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/svg/path.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
if (e.length === 0) return "";
|
|
4
|
+
let t = `M${e[0].x},${e[0].y}`;
|
|
5
|
+
for (let n = 1; n < e.length; n++) t += `L${e[n].x},${e[n].y}`;
|
|
6
|
+
return t;
|
|
7
|
+
}
|
|
8
|
+
function t(t) {
|
|
9
|
+
if (t.length < 3) return e(t);
|
|
10
|
+
let n = t.length, r = [];
|
|
11
|
+
for (let e = 0; e < n; e++) e === 0 ? r.push({
|
|
12
|
+
x: t[1].x - t[0].x,
|
|
13
|
+
y: t[1].y - t[0].y
|
|
14
|
+
}) : e === n - 1 ? r.push({
|
|
15
|
+
x: t[n - 1].x - t[n - 2].x,
|
|
16
|
+
y: t[n - 1].y - t[n - 2].y
|
|
17
|
+
}) : r.push({
|
|
18
|
+
x: (t[e + 1].x - t[e - 1].x) / 2,
|
|
19
|
+
y: (t[e + 1].y - t[e - 1].y) / 2
|
|
20
|
+
});
|
|
21
|
+
let i = `M${t[0].x},${t[0].y}`;
|
|
22
|
+
for (let e = 0; e < n - 1; e++) {
|
|
23
|
+
let n = t[e], a = t[e + 1], o = r[e], s = r[e + 1], c = (a.x - n.x) / 3;
|
|
24
|
+
i += `C${n.x + c},${n.y + o.y / 3},${a.x - c},${a.y - s.y / 3},${a.x},${a.y}`;
|
|
25
|
+
}
|
|
26
|
+
return i;
|
|
27
|
+
}
|
|
28
|
+
function n(e) {
|
|
29
|
+
if (e.length === 0) return "";
|
|
30
|
+
let t = `M${e[0].x},${e[0].y}`;
|
|
31
|
+
for (let n = 1; n < e.length; n++) {
|
|
32
|
+
let r = (e[n - 1].x + e[n].x) / 2;
|
|
33
|
+
t += `H${r}V${e[n].y}H${e[n].x}`;
|
|
34
|
+
}
|
|
35
|
+
return t;
|
|
36
|
+
}
|
|
37
|
+
function r(r, i, a = "linear") {
|
|
38
|
+
if (r.length === 0) return "";
|
|
39
|
+
let o = a === "monotone" ? t(r) : a === "step" ? n(r) : e(r), s = [...i].reverse();
|
|
40
|
+
if (s.length > 0) {
|
|
41
|
+
o += `L${s[0].x},${s[0].y}`;
|
|
42
|
+
for (let e = 1; e < s.length; e++) o += `L${s[e].x},${s[e].y}`;
|
|
43
|
+
}
|
|
44
|
+
return o += "Z", o;
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { r as areaPath, e as linePath, t as monotonePath, n as stepPath };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","names":[],"sources":["../../src/svg/path.ts"],"sourcesContent":["export interface Point {\n x: number;\n y: number;\n}\n\nexport function linePath(points: Point[]): string {\n if (points.length === 0) return '';\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 1; i < points.length; i++) {\n d += `L${points[i].x},${points[i].y}`;\n }\n\n return d;\n}\n\nexport function monotonePath(points: Point[]): string {\n if (points.length < 3) return linePath(points);\n\n const n = points.length;\n const tangents: Point[] = [];\n\n for (let i = 0; i < n; i++) {\n if (i === 0) {\n tangents.push({ x: points[1].x - points[0].x, y: points[1].y - points[0].y });\n } else if (i === n - 1) {\n tangents.push({ x: points[n - 1].x - points[n - 2].x, y: points[n - 1].y - points[n - 2].y });\n } else {\n tangents.push({ x: (points[i + 1].x - points[i - 1].x) / 2, y: (points[i + 1].y - points[i - 1].y) / 2 });\n }\n }\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n const t0 = tangents[i];\n const t1 = tangents[i + 1];\n const dx = (p1.x - p0.x) / 3;\n\n d += `C${p0.x + dx},${p0.y + t0.y / 3},${p1.x - dx},${p1.y - t1.y / 3},${p1.x},${p1.y}`;\n }\n\n return d;\n}\n\nexport function stepPath(points: Point[]): string {\n if (points.length === 0) return '';\n\n let d = `M${points[0].x},${points[0].y}`;\n\n for (let i = 1; i < points.length; i++) {\n const midX = (points[i - 1].x + points[i].x) / 2;\n\n d += `H${midX}V${points[i].y}H${points[i].x}`;\n }\n\n return d;\n}\n\nexport function areaPath(\n topPoints: Point[],\n bottomPoints: Point[],\n curve: 'linear' | 'monotone' | 'step' = 'linear',\n): string {\n if (topPoints.length === 0) return '';\n\n const topPath =\n curve === 'monotone' ? monotonePath(topPoints) : curve === 'step' ? stepPath(topPoints) : linePath(topPoints);\n let d = topPath;\n const reversed = [...bottomPoints].reverse();\n\n if (reversed.length > 0) {\n d += `L${reversed[0].x},${reversed[0].y}`;\n for (let i = 1; i < reversed.length; i++) {\n d += `L${reversed[i].x},${reversed[i].y}`;\n }\n }\n\n d += 'Z';\n\n return d;\n}\n"],"mappings":";AAKA,SAAgB,EAAS,GAAyB;CAChD,IAAI,EAAO,WAAW,GAAG,OAAO;CAEhC,IAAI,IAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAErC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,QAAQ,KACjC,KAAK,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAGpC,OAAO;AACT;AAEA,SAAgB,EAAa,GAAyB;CACpD,IAAI,EAAO,SAAS,GAAG,OAAO,EAAS,CAAM;CAE7C,IAAM,IAAI,EAAO,QACX,IAAoB,CAAC;CAE3B,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KACrB,AAAI,MAAM,IACR,EAAS,KAAK;EAAE,GAAG,EAAO,EAAE,CAAC,IAAI,EAAO,EAAE,CAAC;EAAG,GAAG,EAAO,EAAE,CAAC,IAAI,EAAO,EAAE,CAAC;CAAE,CAAC,IACnE,MAAM,IAAI,IACnB,EAAS,KAAK;EAAE,GAAG,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,IAAI,EAAE,CAAC;EAAG,GAAG,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,IAAI,EAAE,CAAC;CAAE,CAAC,IAE5F,EAAS,KAAK;EAAE,IAAI,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,IAAI,EAAE,CAAC,KAAK;EAAG,IAAI,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,IAAI,EAAE,CAAC,KAAK;CAAE,CAAC;CAI5G,IAAI,IAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAErC,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,KAAK;EAC9B,IAAM,IAAK,EAAO,IACZ,IAAK,EAAO,IAAI,IAChB,IAAK,EAAS,IACd,IAAK,EAAS,IAAI,IAClB,KAAM,EAAG,IAAI,EAAG,KAAK;EAE3B,KAAK,IAAI,EAAG,IAAI,EAAG,GAAG,EAAG,IAAI,EAAG,IAAI,EAAE,GAAG,EAAG,IAAI,EAAG,GAAG,EAAG,IAAI,EAAG,IAAI,EAAE,GAAG,EAAG,EAAE,GAAG,EAAG;CACtF;CAEA,OAAO;AACT;AAEA,SAAgB,EAAS,GAAyB;CAChD,IAAI,EAAO,WAAW,GAAG,OAAO;CAEhC,IAAI,IAAI,IAAI,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAErC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,QAAQ,KAAK;EACtC,IAAM,KAAQ,EAAO,IAAI,EAAE,CAAC,IAAI,EAAO,EAAE,CAAC,KAAK;EAE/C,KAAK,IAAI,EAAK,GAAG,EAAO,EAAE,CAAC,EAAE,GAAG,EAAO,EAAE,CAAC;CAC5C;CAEA,OAAO;AACT;AAEA,SAAgB,EACd,GACA,GACA,IAAwC,UAChC;CACR,IAAI,EAAU,WAAW,GAAG,OAAO;CAInC,IAAI,IADF,MAAU,aAAa,EAAa,CAAS,IAAI,MAAU,SAAS,EAAS,CAAS,IAAI,EAAS,CAAS,GAExG,IAAW,CAAC,GAAG,CAAY,CAAC,CAAC,QAAQ;CAE3C,IAAI,EAAS,SAAS,GAAG;EACvB,KAAK,IAAI,EAAS,EAAE,CAAC,EAAE,GAAG,EAAS,EAAE,CAAC;EACtC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAS,QAAQ,KACnC,KAAK,IAAI,EAAS,EAAE,CAAC,EAAE,GAAG,EAAS,EAAE,CAAC;CAE1C;CAIA,OAFA,KAAK,KAEE;AACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.cjs","names":[],"sources":["../../src/svg/text.ts"],"sourcesContent":["import { createSvgElement, setAttributes } from './element';\n\nexport function createTextElement(\n content: string,\n attrs?: Record<string, number | string | undefined>,\n): SVGTextElement {\n const text = createSvgElement('text', attrs);\n\n text.textContent = content;\n\n return text;\n}\n\nexport function truncateText(text: string, maxWidth: number, fontSize: number): string {\n const avgCharWidth = fontSize * 0.6;\n const maxChars = Math.floor(maxWidth / avgCharWidth);\n\n if (text.length <= maxChars) return text;\n\n return text.slice(0, Math.max(1, maxChars - 1)) + '…';\n}\n\nexport function measureTextWidth(text: string, fontSize: number): number {\n return text.length * fontSize * 0.6;\n}\n\nexport function createAxisLabel(\n content: string,\n x: number,\n y: number,\n anchor: 'end' | 'middle' | 'start' = 'middle',\n): SVGTextElement {\n return createTextElement(content, {\n 'dominant-baseline': 'middle',\n 'text-anchor': anchor,\n x,\n y,\n });\n}\n\nexport { setAttributes };\n"],"mappings":"iCAEA,SAAgB,EACd,EACA,EACgB,CAChB,IAAM,EAAO,EAAA,iBAAiB,OAAQ,CAAK,EAI3C,MAFA,GAAK,YAAc,EAEZ,CACT"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { setAttributes } from './element';
|
|
2
|
+
export declare function createTextElement(content: string, attrs?: Record<string, number | string | undefined>): SVGTextElement;
|
|
3
|
+
export declare function truncateText(text: string, maxWidth: number, fontSize: number): string;
|
|
4
|
+
export declare function measureTextWidth(text: string, fontSize: number): number;
|
|
5
|
+
export declare function createAxisLabel(content: string, x: number, y: number, anchor?: 'end' | 'middle' | 'start'): SVGTextElement;
|
|
6
|
+
export { setAttributes };
|
|
7
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/svg/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,aAAa,EAAE,MAAM,WAAW,CAAC;AAE5D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAClD,cAAc,CAMhB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOrF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,GAAE,KAAK,GAAG,QAAQ,GAAG,OAAkB,GAC5C,cAAc,CAOhB;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/svg/text.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","names":[],"sources":["../../src/svg/text.ts"],"sourcesContent":["import { createSvgElement, setAttributes } from './element';\n\nexport function createTextElement(\n content: string,\n attrs?: Record<string, number | string | undefined>,\n): SVGTextElement {\n const text = createSvgElement('text', attrs);\n\n text.textContent = content;\n\n return text;\n}\n\nexport function truncateText(text: string, maxWidth: number, fontSize: number): string {\n const avgCharWidth = fontSize * 0.6;\n const maxChars = Math.floor(maxWidth / avgCharWidth);\n\n if (text.length <= maxChars) return text;\n\n return text.slice(0, Math.max(1, maxChars - 1)) + '…';\n}\n\nexport function measureTextWidth(text: string, fontSize: number): number {\n return text.length * fontSize * 0.6;\n}\n\nexport function createAxisLabel(\n content: string,\n x: number,\n y: number,\n anchor: 'end' | 'middle' | 'start' = 'middle',\n): SVGTextElement {\n return createTextElement(content, {\n 'dominant-baseline': 'middle',\n 'text-anchor': anchor,\n x,\n y,\n });\n}\n\nexport { setAttributes };\n"],"mappings":";;AAEA,SAAgB,EACd,GACA,GACgB;CAChB,IAAM,IAAO,EAAiB,QAAQ,CAAK;CAI3C,OAFA,EAAK,cAAc,GAEZ;AACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e){let t=document.documentElement;if(e.colors)for(let n=0;n<8;n++){let r=e.colors[n];r?t.style.setProperty(`--prism-color-${n+1}`,r):t.style.removeProperty(`--prism-color-${n+1}`)}e.fontFamily&&t.style.setProperty(`--prism-font-family`,e.fontFamily),e.gridColor&&t.style.setProperty(`--prism-grid-color`,e.gridColor),e.gridOpacity!==void 0&&t.style.setProperty(`--prism-grid-opacity`,String(e.gridOpacity))}function t(){let e=document.documentElement;for(let t=1;t<=8;t++)e.style.removeProperty(`--prism-color-${t}`);e.style.removeProperty(`--prism-font-family`),e.style.removeProperty(`--prism-grid-color`),e.style.removeProperty(`--prism-grid-opacity`)}function n(e,t){return t??`var(--prism-color-${e%8+1})`}exports.resetTheme=t,exports.seriesColor=n,exports.setTheme=e;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../src/theme/index.ts"],"sourcesContent":["import type { PrismTheme } from '../types';\n\nconst MAX_THEME_COLORS = 8;\n\nexport function setTheme(theme: PrismTheme): void {\n const root = document.documentElement;\n\n if (theme.colors) {\n // Clear (not just overwrite) every color slot the previous setTheme() call may have\n // used — otherwise a theme with fewer colors than the last one leaves stale values\n // on the untouched higher-index custom properties.\n for (let i = 0; i < MAX_THEME_COLORS; i++) {\n const color = theme.colors[i];\n\n if (color) {\n root.style.setProperty(`--prism-color-${i + 1}`, color);\n } else {\n root.style.removeProperty(`--prism-color-${i + 1}`);\n }\n }\n }\n\n if (theme.fontFamily) root.style.setProperty('--prism-font-family', theme.fontFamily);\n\n if (theme.gridColor) root.style.setProperty('--prism-grid-color', theme.gridColor);\n\n if (theme.gridOpacity !== undefined) root.style.setProperty('--prism-grid-opacity', String(theme.gridOpacity));\n}\n\n/** Clears every CSS custom property `setTheme()` can set, restoring prism's default theme (from `prism.css`). */\nexport function resetTheme(): void {\n const root = document.documentElement;\n\n for (let i = 1; i <= MAX_THEME_COLORS; i++) root.style.removeProperty(`--prism-color-${i}`);\n\n root.style.removeProperty('--prism-font-family');\n root.style.removeProperty('--prism-grid-color');\n root.style.removeProperty('--prism-grid-opacity');\n}\n\nexport function seriesColor(index: number, override?: string): string {\n return override ?? `var(--prism-color-${(index % MAX_THEME_COLORS) + 1})`;\n}\n"],"mappings":"AAIA,SAAgB,EAAS,EAAyB,CAChD,IAAM,EAAO,SAAS,gBAEtB,GAAI,EAAM,OAIR,IAAK,IAAI,EAAI,EAAG,EAAI,EAAkB,IAAK,CACzC,IAAM,EAAQ,EAAM,OAAO,GAEvB,EACF,EAAK,MAAM,YAAY,iBAAiB,EAAI,IAAK,CAAK,EAEtD,EAAK,MAAM,eAAe,iBAAiB,EAAI,GAAG,CAEtD,CAGE,EAAM,YAAY,EAAK,MAAM,YAAY,sBAAuB,EAAM,UAAU,EAEhF,EAAM,WAAW,EAAK,MAAM,YAAY,qBAAsB,EAAM,SAAS,EAE7E,EAAM,cAAgB,IAAA,IAAW,EAAK,MAAM,YAAY,uBAAwB,OAAO,EAAM,WAAW,CAAC,CAC/G,CAGA,SAAgB,GAAmB,CACjC,IAAM,EAAO,SAAS,gBAEtB,IAAK,IAAI,EAAI,EAAG,GAAK,EAAkB,IAAK,EAAK,MAAM,eAAe,iBAAiB,GAAG,EAE1F,EAAK,MAAM,eAAe,qBAAqB,EAC/C,EAAK,MAAM,eAAe,oBAAoB,EAC9C,EAAK,MAAM,eAAe,sBAAsB,CAClD,CAEA,SAAgB,EAAY,EAAe,EAA2B,CACpE,OAAO,GAAY,qBAAsB,EAAQ,EAAoB,EAAE,EACzE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PrismTheme } from '../types';
|
|
2
|
+
export declare function setTheme(theme: PrismTheme): void;
|
|
3
|
+
/** Clears every CSS custom property `setTheme()` can set, restoring prism's default theme (from `prism.css`). */
|
|
4
|
+
export declare function resetTheme(): void;
|
|
5
|
+
export declare function seriesColor(index: number, override?: string): string;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAuBhD;AAED,iHAAiH;AACjH,wBAAgB,UAAU,IAAI,IAAI,CAQjC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
function e(e) {
|
|
2
|
+
let t = document.documentElement;
|
|
3
|
+
if (e.colors) for (let n = 0; n < 8; n++) {
|
|
4
|
+
let r = e.colors[n];
|
|
5
|
+
r ? t.style.setProperty(`--prism-color-${n + 1}`, r) : t.style.removeProperty(`--prism-color-${n + 1}`);
|
|
6
|
+
}
|
|
7
|
+
e.fontFamily && t.style.setProperty("--prism-font-family", e.fontFamily), e.gridColor && t.style.setProperty("--prism-grid-color", e.gridColor), e.gridOpacity !== void 0 && t.style.setProperty("--prism-grid-opacity", String(e.gridOpacity));
|
|
8
|
+
}
|
|
9
|
+
function t() {
|
|
10
|
+
let e = document.documentElement;
|
|
11
|
+
for (let t = 1; t <= 8; t++) e.style.removeProperty(`--prism-color-${t}`);
|
|
12
|
+
e.style.removeProperty("--prism-font-family"), e.style.removeProperty("--prism-grid-color"), e.style.removeProperty("--prism-grid-opacity");
|
|
13
|
+
}
|
|
14
|
+
function n(e, t) {
|
|
15
|
+
return t ?? `var(--prism-color-${e % 8 + 1})`;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { t as resetTheme, n as seriesColor, e as setTheme };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/theme/index.ts"],"sourcesContent":["import type { PrismTheme } from '../types';\n\nconst MAX_THEME_COLORS = 8;\n\nexport function setTheme(theme: PrismTheme): void {\n const root = document.documentElement;\n\n if (theme.colors) {\n // Clear (not just overwrite) every color slot the previous setTheme() call may have\n // used — otherwise a theme with fewer colors than the last one leaves stale values\n // on the untouched higher-index custom properties.\n for (let i = 0; i < MAX_THEME_COLORS; i++) {\n const color = theme.colors[i];\n\n if (color) {\n root.style.setProperty(`--prism-color-${i + 1}`, color);\n } else {\n root.style.removeProperty(`--prism-color-${i + 1}`);\n }\n }\n }\n\n if (theme.fontFamily) root.style.setProperty('--prism-font-family', theme.fontFamily);\n\n if (theme.gridColor) root.style.setProperty('--prism-grid-color', theme.gridColor);\n\n if (theme.gridOpacity !== undefined) root.style.setProperty('--prism-grid-opacity', String(theme.gridOpacity));\n}\n\n/** Clears every CSS custom property `setTheme()` can set, restoring prism's default theme (from `prism.css`). */\nexport function resetTheme(): void {\n const root = document.documentElement;\n\n for (let i = 1; i <= MAX_THEME_COLORS; i++) root.style.removeProperty(`--prism-color-${i}`);\n\n root.style.removeProperty('--prism-font-family');\n root.style.removeProperty('--prism-grid-color');\n root.style.removeProperty('--prism-grid-opacity');\n}\n\nexport function seriesColor(index: number, override?: string): string {\n return override ?? `var(--prism-color-${(index % MAX_THEME_COLORS) + 1})`;\n}\n"],"mappings":"AAIA,SAAgB,EAAS,GAAyB;CAChD,IAAM,IAAO,SAAS;CAEtB,IAAI,EAAM,QAIR,KAAK,IAAI,IAAI,GAAG,IAAI,GAAkB,KAAK;EACzC,IAAM,IAAQ,EAAM,OAAO;EAE3B,AAAI,IACF,EAAK,MAAM,YAAY,iBAAiB,IAAI,KAAK,CAAK,IAEtD,EAAK,MAAM,eAAe,iBAAiB,IAAI,GAAG;CAEtD;CAOF,AAJI,EAAM,cAAY,EAAK,MAAM,YAAY,uBAAuB,EAAM,UAAU,GAEhF,EAAM,aAAW,EAAK,MAAM,YAAY,sBAAsB,EAAM,SAAS,GAE7E,EAAM,gBAAgB,KAAA,KAAW,EAAK,MAAM,YAAY,wBAAwB,OAAO,EAAM,WAAW,CAAC;AAC/G;AAGA,SAAgB,IAAmB;CACjC,IAAM,IAAO,SAAS;CAEtB,KAAK,IAAI,IAAI,GAAG,KAAK,GAAkB,KAAK,EAAK,MAAM,eAAe,iBAAiB,GAAG;CAI1F,AAFA,EAAK,MAAM,eAAe,qBAAqB,GAC/C,EAAK,MAAM,eAAe,oBAAoB,GAC9C,EAAK,MAAM,eAAe,sBAAsB;AAClD;AAEA,SAAgB,EAAY,GAAe,GAA2B;CACpE,OAAO,KAAY,qBAAsB,IAAQ,IAAoB,EAAE;AACzE"}
|