@ggts-sh/react 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -0
- package/dist/GGPlot.d.ts +6 -0
- package/dist/GGPlot.d.ts.map +1 -0
- package/dist/GGPlot.js +18 -0
- package/dist/GGPlot.js.map +1 -0
- package/dist/datum-key.d.ts +21 -0
- package/dist/datum-key.d.ts.map +1 -0
- package/dist/datum-key.js +60 -0
- package/dist/datum-key.js.map +1 -0
- package/dist/defined-props.d.ts +3 -0
- package/dist/defined-props.d.ts.map +1 -0
- package/dist/defined-props.js +11 -0
- package/dist/defined-props.js.map +1 -0
- package/dist/geom-factory.d.ts +17 -0
- package/dist/geom-factory.d.ts.map +1 -0
- package/dist/geom-factory.js +63 -0
- package/dist/geom-factory.js.map +1 -0
- package/dist/geoms/GeomAbline.d.ts +8 -0
- package/dist/geoms/GeomAbline.d.ts.map +1 -0
- package/dist/geoms/GeomAbline.js +8 -0
- package/dist/geoms/GeomAbline.js.map +1 -0
- package/dist/geoms/GeomArea.d.ts +8 -0
- package/dist/geoms/GeomArea.d.ts.map +1 -0
- package/dist/geoms/GeomArea.js +6 -0
- package/dist/geoms/GeomArea.js.map +1 -0
- package/dist/geoms/GeomBar.d.ts +8 -0
- package/dist/geoms/GeomBar.d.ts.map +1 -0
- package/dist/geoms/GeomBar.js +6 -0
- package/dist/geoms/GeomBar.js.map +1 -0
- package/dist/geoms/GeomBin2d.d.ts +8 -0
- package/dist/geoms/GeomBin2d.d.ts.map +1 -0
- package/dist/geoms/GeomBin2d.js +8 -0
- package/dist/geoms/GeomBin2d.js.map +1 -0
- package/dist/geoms/GeomBlank.d.ts +8 -0
- package/dist/geoms/GeomBlank.d.ts.map +1 -0
- package/dist/geoms/GeomBlank.js +6 -0
- package/dist/geoms/GeomBlank.js.map +1 -0
- package/dist/geoms/GeomBoxplot.d.ts +8 -0
- package/dist/geoms/GeomBoxplot.d.ts.map +1 -0
- package/dist/geoms/GeomBoxplot.js +8 -0
- package/dist/geoms/GeomBoxplot.js.map +1 -0
- package/dist/geoms/GeomCol.d.ts +8 -0
- package/dist/geoms/GeomCol.d.ts.map +1 -0
- package/dist/geoms/GeomCol.js +6 -0
- package/dist/geoms/GeomCol.js.map +1 -0
- package/dist/geoms/GeomContour.d.ts +8 -0
- package/dist/geoms/GeomContour.d.ts.map +1 -0
- package/dist/geoms/GeomContour.js +8 -0
- package/dist/geoms/GeomContour.js.map +1 -0
- package/dist/geoms/GeomCount.d.ts +8 -0
- package/dist/geoms/GeomCount.d.ts.map +1 -0
- package/dist/geoms/GeomCount.js +6 -0
- package/dist/geoms/GeomCount.js.map +1 -0
- package/dist/geoms/GeomCrossbar.d.ts +8 -0
- package/dist/geoms/GeomCrossbar.d.ts.map +1 -0
- package/dist/geoms/GeomCrossbar.js +8 -0
- package/dist/geoms/GeomCrossbar.js.map +1 -0
- package/dist/geoms/GeomCurve.d.ts +8 -0
- package/dist/geoms/GeomCurve.d.ts.map +1 -0
- package/dist/geoms/GeomCurve.js +8 -0
- package/dist/geoms/GeomCurve.js.map +1 -0
- package/dist/geoms/GeomDensity.d.ts +8 -0
- package/dist/geoms/GeomDensity.d.ts.map +1 -0
- package/dist/geoms/GeomDensity.js +8 -0
- package/dist/geoms/GeomDensity.js.map +1 -0
- package/dist/geoms/GeomDensity2d.d.ts +8 -0
- package/dist/geoms/GeomDensity2d.d.ts.map +1 -0
- package/dist/geoms/GeomDensity2d.js +8 -0
- package/dist/geoms/GeomDensity2d.js.map +1 -0
- package/dist/geoms/GeomDensity2dFilled.d.ts +8 -0
- package/dist/geoms/GeomDensity2dFilled.d.ts.map +1 -0
- package/dist/geoms/GeomDensity2dFilled.js +8 -0
- package/dist/geoms/GeomDensity2dFilled.js.map +1 -0
- package/dist/geoms/GeomDotplot.d.ts +8 -0
- package/dist/geoms/GeomDotplot.d.ts.map +1 -0
- package/dist/geoms/GeomDotplot.js +8 -0
- package/dist/geoms/GeomDotplot.js.map +1 -0
- package/dist/geoms/GeomErrorbar.d.ts +8 -0
- package/dist/geoms/GeomErrorbar.d.ts.map +1 -0
- package/dist/geoms/GeomErrorbar.js +8 -0
- package/dist/geoms/GeomErrorbar.js.map +1 -0
- package/dist/geoms/GeomFreqpoly.d.ts +8 -0
- package/dist/geoms/GeomFreqpoly.d.ts.map +1 -0
- package/dist/geoms/GeomFreqpoly.js +8 -0
- package/dist/geoms/GeomFreqpoly.js.map +1 -0
- package/dist/geoms/GeomFunction.d.ts +8 -0
- package/dist/geoms/GeomFunction.d.ts.map +1 -0
- package/dist/geoms/GeomFunction.js +8 -0
- package/dist/geoms/GeomFunction.js.map +1 -0
- package/dist/geoms/GeomHex.d.ts +8 -0
- package/dist/geoms/GeomHex.d.ts.map +1 -0
- package/dist/geoms/GeomHex.js +8 -0
- package/dist/geoms/GeomHex.js.map +1 -0
- package/dist/geoms/GeomHistogram.d.ts +8 -0
- package/dist/geoms/GeomHistogram.d.ts.map +1 -0
- package/dist/geoms/GeomHistogram.js +8 -0
- package/dist/geoms/GeomHistogram.js.map +1 -0
- package/dist/geoms/GeomHline.d.ts +8 -0
- package/dist/geoms/GeomHline.d.ts.map +1 -0
- package/dist/geoms/GeomHline.js +6 -0
- package/dist/geoms/GeomHline.js.map +1 -0
- package/dist/geoms/GeomJitter.d.ts +11 -0
- package/dist/geoms/GeomJitter.d.ts.map +1 -0
- package/dist/geoms/GeomJitter.js +15 -0
- package/dist/geoms/GeomJitter.js.map +1 -0
- package/dist/geoms/GeomLabel.d.ts +8 -0
- package/dist/geoms/GeomLabel.d.ts.map +1 -0
- package/dist/geoms/GeomLabel.js +6 -0
- package/dist/geoms/GeomLabel.js.map +1 -0
- package/dist/geoms/GeomLine.d.ts +8 -0
- package/dist/geoms/GeomLine.d.ts.map +1 -0
- package/dist/geoms/GeomLine.js +6 -0
- package/dist/geoms/GeomLine.js.map +1 -0
- package/dist/geoms/GeomLinerange.d.ts +8 -0
- package/dist/geoms/GeomLinerange.d.ts.map +1 -0
- package/dist/geoms/GeomLinerange.js +8 -0
- package/dist/geoms/GeomLinerange.js.map +1 -0
- package/dist/geoms/GeomMap.d.ts +8 -0
- package/dist/geoms/GeomMap.d.ts.map +1 -0
- package/dist/geoms/GeomMap.js +8 -0
- package/dist/geoms/GeomMap.js.map +1 -0
- package/dist/geoms/GeomPath.d.ts +8 -0
- package/dist/geoms/GeomPath.d.ts.map +1 -0
- package/dist/geoms/GeomPath.js +6 -0
- package/dist/geoms/GeomPath.js.map +1 -0
- package/dist/geoms/GeomPoint.d.ts +8 -0
- package/dist/geoms/GeomPoint.d.ts.map +1 -0
- package/dist/geoms/GeomPoint.js +6 -0
- package/dist/geoms/GeomPoint.js.map +1 -0
- package/dist/geoms/GeomPointrange.d.ts +8 -0
- package/dist/geoms/GeomPointrange.d.ts.map +1 -0
- package/dist/geoms/GeomPointrange.js +8 -0
- package/dist/geoms/GeomPointrange.js.map +1 -0
- package/dist/geoms/GeomPolygon.d.ts +8 -0
- package/dist/geoms/GeomPolygon.d.ts.map +1 -0
- package/dist/geoms/GeomPolygon.js +8 -0
- package/dist/geoms/GeomPolygon.js.map +1 -0
- package/dist/geoms/GeomQq.d.ts +8 -0
- package/dist/geoms/GeomQq.d.ts.map +1 -0
- package/dist/geoms/GeomQq.js +8 -0
- package/dist/geoms/GeomQq.js.map +1 -0
- package/dist/geoms/GeomQqLine.d.ts +8 -0
- package/dist/geoms/GeomQqLine.d.ts.map +1 -0
- package/dist/geoms/GeomQqLine.js +8 -0
- package/dist/geoms/GeomQqLine.js.map +1 -0
- package/dist/geoms/GeomQuantile.d.ts +8 -0
- package/dist/geoms/GeomQuantile.d.ts.map +1 -0
- package/dist/geoms/GeomQuantile.js +8 -0
- package/dist/geoms/GeomQuantile.js.map +1 -0
- package/dist/geoms/GeomRaster.d.ts +8 -0
- package/dist/geoms/GeomRaster.d.ts.map +1 -0
- package/dist/geoms/GeomRaster.js +8 -0
- package/dist/geoms/GeomRaster.js.map +1 -0
- package/dist/geoms/GeomRect.d.ts +8 -0
- package/dist/geoms/GeomRect.d.ts.map +1 -0
- package/dist/geoms/GeomRect.js +6 -0
- package/dist/geoms/GeomRect.js.map +1 -0
- package/dist/geoms/GeomRibbon.d.ts +8 -0
- package/dist/geoms/GeomRibbon.d.ts.map +1 -0
- package/dist/geoms/GeomRibbon.js +6 -0
- package/dist/geoms/GeomRibbon.js.map +1 -0
- package/dist/geoms/GeomRug.d.ts +8 -0
- package/dist/geoms/GeomRug.d.ts.map +1 -0
- package/dist/geoms/GeomRug.js +8 -0
- package/dist/geoms/GeomRug.js.map +1 -0
- package/dist/geoms/GeomRule.d.ts +8 -0
- package/dist/geoms/GeomRule.d.ts.map +1 -0
- package/dist/geoms/GeomRule.js +6 -0
- package/dist/geoms/GeomRule.js.map +1 -0
- package/dist/geoms/GeomSegment.d.ts +8 -0
- package/dist/geoms/GeomSegment.d.ts.map +1 -0
- package/dist/geoms/GeomSegment.js +6 -0
- package/dist/geoms/GeomSegment.js.map +1 -0
- package/dist/geoms/GeomSf.d.ts +8 -0
- package/dist/geoms/GeomSf.d.ts.map +1 -0
- package/dist/geoms/GeomSf.js +8 -0
- package/dist/geoms/GeomSf.js.map +1 -0
- package/dist/geoms/GeomSfLabel.d.ts +8 -0
- package/dist/geoms/GeomSfLabel.d.ts.map +1 -0
- package/dist/geoms/GeomSfLabel.js +8 -0
- package/dist/geoms/GeomSfLabel.js.map +1 -0
- package/dist/geoms/GeomSfText.d.ts +8 -0
- package/dist/geoms/GeomSfText.d.ts.map +1 -0
- package/dist/geoms/GeomSfText.js +8 -0
- package/dist/geoms/GeomSfText.js.map +1 -0
- package/dist/geoms/GeomSmooth.d.ts +8 -0
- package/dist/geoms/GeomSmooth.d.ts.map +1 -0
- package/dist/geoms/GeomSmooth.js +8 -0
- package/dist/geoms/GeomSmooth.js.map +1 -0
- package/dist/geoms/GeomSpoke.d.ts +8 -0
- package/dist/geoms/GeomSpoke.d.ts.map +1 -0
- package/dist/geoms/GeomSpoke.js +8 -0
- package/dist/geoms/GeomSpoke.js.map +1 -0
- package/dist/geoms/GeomStep.d.ts +8 -0
- package/dist/geoms/GeomStep.d.ts.map +1 -0
- package/dist/geoms/GeomStep.js +6 -0
- package/dist/geoms/GeomStep.js.map +1 -0
- package/dist/geoms/GeomText.d.ts +8 -0
- package/dist/geoms/GeomText.d.ts.map +1 -0
- package/dist/geoms/GeomText.js +6 -0
- package/dist/geoms/GeomText.js.map +1 -0
- package/dist/geoms/GeomTile.d.ts +8 -0
- package/dist/geoms/GeomTile.d.ts.map +1 -0
- package/dist/geoms/GeomTile.js +8 -0
- package/dist/geoms/GeomTile.js.map +1 -0
- package/dist/geoms/GeomViolin.d.ts +8 -0
- package/dist/geoms/GeomViolin.d.ts.map +1 -0
- package/dist/geoms/GeomViolin.js +8 -0
- package/dist/geoms/GeomViolin.js.map +1 -0
- package/dist/geoms/GeomVline.d.ts +8 -0
- package/dist/geoms/GeomVline.d.ts.map +1 -0
- package/dist/geoms/GeomVline.js +6 -0
- package/dist/geoms/GeomVline.js.map +1 -0
- package/dist/geoms/index.d.ts +50 -0
- package/dist/geoms/index.d.ts.map +1 -0
- package/dist/geoms/index.js +51 -0
- package/dist/geoms/index.js.map +1 -0
- package/dist/grammar.d.ts +59 -0
- package/dist/grammar.d.ts.map +1 -0
- package/dist/grammar.js +134 -0
- package/dist/grammar.js.map +1 -0
- package/dist/host-effect.d.ts +3 -0
- package/dist/host-effect.d.ts.map +1 -0
- package/dist/host-effect.js +3 -0
- package/dist/host-effect.js.map +1 -0
- package/dist/host-init.d.ts +2 -0
- package/dist/host-init.d.ts.map +1 -0
- package/dist/host-init.js +4 -0
- package/dist/host-init.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction.d.ts +9 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +2 -0
- package/dist/interaction.js.map +1 -0
- package/dist/plot-accessibility.d.ts +23 -0
- package/dist/plot-accessibility.d.ts.map +1 -0
- package/dist/plot-accessibility.js +68 -0
- package/dist/plot-accessibility.js.map +1 -0
- package/dist/plot-assemble.d.ts +5 -0
- package/dist/plot-assemble.d.ts.map +1 -0
- package/dist/plot-assemble.js +14 -0
- package/dist/plot-assemble.js.map +1 -0
- package/dist/plot-controls.d.ts +20 -0
- package/dist/plot-controls.d.ts.map +1 -0
- package/dist/plot-controls.js +119 -0
- package/dist/plot-controls.js.map +1 -0
- package/dist/plot-gesture.d.ts +15 -0
- package/dist/plot-gesture.d.ts.map +1 -0
- package/dist/plot-gesture.js +55 -0
- package/dist/plot-gesture.js.map +1 -0
- package/dist/plot-host-identity.d.ts +5 -0
- package/dist/plot-host-identity.d.ts.map +1 -0
- package/dist/plot-host-identity.js +30 -0
- package/dist/plot-host-identity.js.map +1 -0
- package/dist/plot-inputs.d.ts +41 -0
- package/dist/plot-inputs.d.ts.map +1 -0
- package/dist/plot-inputs.js +147 -0
- package/dist/plot-inputs.js.map +1 -0
- package/dist/plot-interactions.d.ts +45 -0
- package/dist/plot-interactions.d.ts.map +1 -0
- package/dist/plot-interactions.js +447 -0
- package/dist/plot-interactions.js.map +1 -0
- package/dist/plot-legends.d.ts +20 -0
- package/dist/plot-legends.d.ts.map +1 -0
- package/dist/plot-legends.js +200 -0
- package/dist/plot-legends.js.map +1 -0
- package/dist/plot-overlay.d.ts +15 -0
- package/dist/plot-overlay.d.ts.map +1 -0
- package/dist/plot-overlay.js +69 -0
- package/dist/plot-overlay.js.map +1 -0
- package/dist/plot-props.d.ts +49 -0
- package/dist/plot-props.d.ts.map +1 -0
- package/dist/plot-props.js +2 -0
- package/dist/plot-props.js.map +1 -0
- package/dist/plot-runtime.d.ts +15 -0
- package/dist/plot-runtime.d.ts.map +1 -0
- package/dist/plot-runtime.js +59 -0
- package/dist/plot-runtime.js.map +1 -0
- package/dist/plot-surface.d.ts +3 -0
- package/dist/plot-surface.d.ts.map +1 -0
- package/dist/plot-surface.js +285 -0
- package/dist/plot-surface.js.map +1 -0
- package/dist/registry.d.ts +28 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +164 -0
- package/dist/registry.js.map +1 -0
- package/dist/scales.d.ts +132 -0
- package/dist/scales.d.ts.map +1 -0
- package/dist/scales.js +434 -0
- package/dist/scales.js.map +1 -0
- package/dist/strata-sync.d.ts +7 -0
- package/dist/strata-sync.d.ts.map +1 -0
- package/dist/strata-sync.js +158 -0
- package/dist/strata-sync.js.map +1 -0
- package/dist/themes.d.ts +38 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +141 -0
- package/dist/themes.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { groupBatchesByPanel, planStrata, sceneToSVGString } from "@ggts-sh/core";
|
|
2
|
+
import { cssColorResolver, drawStratum, sizeCanvasForDpr } from "@ggts-sh/core/dom";
|
|
3
|
+
import { mountSceneSvg } from "@ggts-sh/core/svg-live";
|
|
4
|
+
const STRATUM_STYLE = "position:absolute;inset:0;pointer-events:none";
|
|
5
|
+
function slots(scene, strata) {
|
|
6
|
+
if (!strata.some((s) => s.backend === "canvas")) {
|
|
7
|
+
return [{ backend: "svg", batches: scene.batches, mode: "full" }];
|
|
8
|
+
}
|
|
9
|
+
return [
|
|
10
|
+
{ backend: "svg", batches: [], mode: "chrome-bottom" },
|
|
11
|
+
...strata.map((stratum) => ({ ...stratum, mode: "marks" })),
|
|
12
|
+
{ backend: "svg", batches: [], mode: "chrome-top" },
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
/** Prefix generated resource ids so sibling plots cannot borrow clips/gradients. */
|
|
16
|
+
function namespaceSvg(markup, prefix) {
|
|
17
|
+
return markup
|
|
18
|
+
.replaceAll(/\bid="([^"]+)"/g, (_match, id) => `id="${prefix}-${id}"`)
|
|
19
|
+
.replaceAll(/url\(#([^)]+)\)/g, (_match, id) => `url(#${prefix}-${id})`);
|
|
20
|
+
}
|
|
21
|
+
function slotSvg(scene, slot, prefix, label) {
|
|
22
|
+
const svg = sceneToSVGString({ ...scene, batches: slot.batches }, {
|
|
23
|
+
mode: slot.mode,
|
|
24
|
+
...(label !== undefined && { ariaLabel: label }),
|
|
25
|
+
});
|
|
26
|
+
const named = namespaceSvg(svg, prefix);
|
|
27
|
+
return slot.mode === "marks" || slot.mode === "chrome-top"
|
|
28
|
+
? named.replace('role="img"', 'aria-hidden="true"')
|
|
29
|
+
: named;
|
|
30
|
+
}
|
|
31
|
+
export function renderStackHTML(scene, strata, prefix, label) {
|
|
32
|
+
return slots(scene, strata)
|
|
33
|
+
.map((slot, index) => slot.backend === "canvas"
|
|
34
|
+
? `<canvas class="gg-stratum gg-canvas" aria-hidden="true" style="${STRATUM_STYLE}"></canvas>`
|
|
35
|
+
: `<div class="gg-stratum gg-svg-host" style="${STRATUM_STYLE}">${slotSvg(scene, slot, `${prefix}-${index}`, label)}</div>`)
|
|
36
|
+
.join("");
|
|
37
|
+
}
|
|
38
|
+
function namespaceLive(svg, prefix) {
|
|
39
|
+
for (const element of svg.querySelectorAll("[id]")) {
|
|
40
|
+
if (!element.id.startsWith(`${prefix}-`))
|
|
41
|
+
element.id = `${prefix}-${element.id}`;
|
|
42
|
+
}
|
|
43
|
+
for (const element of svg.querySelectorAll("[clip-path], [fill], [stroke], [filter]")) {
|
|
44
|
+
for (const attribute of ["clip-path", "fill", "stroke", "filter"]) {
|
|
45
|
+
const value = element.getAttribute(attribute);
|
|
46
|
+
if (value === null || !value.includes("url(#"))
|
|
47
|
+
continue;
|
|
48
|
+
const next = value.replaceAll(/url\(#([^)]+)\)/g, (match, id) => id.startsWith(`${prefix}-`) ? match : `url(#${prefix}-${id})`);
|
|
49
|
+
if (next !== value)
|
|
50
|
+
element.setAttribute(attribute, next);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function maskBatch(group, batch, mask, mutedOpacity) {
|
|
55
|
+
let primitive = 0;
|
|
56
|
+
for (const element of group.children) {
|
|
57
|
+
if (!(element instanceof SVGElement))
|
|
58
|
+
continue;
|
|
59
|
+
if (batch.kind === "paths") {
|
|
60
|
+
while (primitive < batch.pathOffsets.length - 1 &&
|
|
61
|
+
batch.pathOffsets[primitive] === batch.pathOffsets[primitive + 1])
|
|
62
|
+
primitive++;
|
|
63
|
+
}
|
|
64
|
+
const muted = mask !== null && !mask.isFocused(primitive);
|
|
65
|
+
element.style.opacity = muted
|
|
66
|
+
? String(Number(element.getAttribute("opacity") ?? 1) * mutedOpacity)
|
|
67
|
+
: "";
|
|
68
|
+
// Label backgrounds and their following text represent the same mark.
|
|
69
|
+
if (batch.kind !== "glyphs" || element.tagName === "text")
|
|
70
|
+
primitive++;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function maskMarks(host, scene, batches, masks) {
|
|
74
|
+
const grouped = groupBatchesByPanel(scene.panels.length, batches, true);
|
|
75
|
+
for (const [panelIndex, panelBatches] of grouped.byPanel.entries()) {
|
|
76
|
+
const groups = host.querySelectorAll(`.gg-panel[data-panel="${panelIndex}"] > .gg-marks > .gg-batch`);
|
|
77
|
+
for (const [batchIndex, batch] of panelBatches.entries()) {
|
|
78
|
+
const group = groups[batchIndex];
|
|
79
|
+
if (group === undefined)
|
|
80
|
+
continue;
|
|
81
|
+
const mask = masks[grouped.indices[panelIndex][batchIndex]] ?? null;
|
|
82
|
+
maskBatch(group, batch, mask, scene.theme.interactionMuted);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export function destroyAllLives(lives) {
|
|
87
|
+
for (const handle of lives.values())
|
|
88
|
+
handle.destroy();
|
|
89
|
+
lives.clear();
|
|
90
|
+
}
|
|
91
|
+
function syncSvgSlot(element, scene, slot, lives, index, prefix, label) {
|
|
92
|
+
element.className = "gg-stratum gg-svg-host";
|
|
93
|
+
if (slot.mode === "full") {
|
|
94
|
+
let live = lives.get(index);
|
|
95
|
+
if (live === undefined) {
|
|
96
|
+
element.replaceChildren();
|
|
97
|
+
live = mountSceneSvg(element, scene);
|
|
98
|
+
lives.set(index, live);
|
|
99
|
+
}
|
|
100
|
+
else if (live.scene !== scene)
|
|
101
|
+
live.update(scene);
|
|
102
|
+
namespaceLive(live.svg, prefix);
|
|
103
|
+
if (label !== undefined)
|
|
104
|
+
live.svg.setAttribute("aria-label", label);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
lives.get(index)?.destroy();
|
|
108
|
+
lives.delete(index);
|
|
109
|
+
const markup = slotSvg(scene, slot, prefix, label);
|
|
110
|
+
if (element.innerHTML !== markup)
|
|
111
|
+
element.innerHTML = markup;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export function syncStrata(stack, scene, strata, lives, prefix, label, interactionMasks = []) {
|
|
115
|
+
const planned = slots(scene, strata);
|
|
116
|
+
const sceneIndexes = new Map(scene.batches.map((batch, index) => [batch, index]));
|
|
117
|
+
while (stack.childElementCount > planned.length) {
|
|
118
|
+
const index = stack.childElementCount - 1;
|
|
119
|
+
lives.get(index)?.destroy();
|
|
120
|
+
lives.delete(index);
|
|
121
|
+
stack.lastElementChild?.remove();
|
|
122
|
+
}
|
|
123
|
+
let painted = true;
|
|
124
|
+
for (const [index, slot] of planned.entries()) {
|
|
125
|
+
const existing = stack.children[index];
|
|
126
|
+
const tag = slot.backend === "canvas" ? "CANVAS" : "DIV";
|
|
127
|
+
let element;
|
|
128
|
+
if (existing instanceof HTMLElement && existing.tagName === tag)
|
|
129
|
+
element = existing;
|
|
130
|
+
else {
|
|
131
|
+
lives.get(index)?.destroy();
|
|
132
|
+
lives.delete(index);
|
|
133
|
+
element = document.createElement(tag.toLowerCase());
|
|
134
|
+
if (existing === undefined)
|
|
135
|
+
stack.append(element);
|
|
136
|
+
else
|
|
137
|
+
stack.replaceChild(element, existing);
|
|
138
|
+
}
|
|
139
|
+
element.style.cssText = STRATUM_STYLE;
|
|
140
|
+
const masks = slot.batches.map((batch) => interactionMasks[sceneIndexes.get(batch)] ?? null);
|
|
141
|
+
if (element instanceof HTMLCanvasElement) {
|
|
142
|
+
element.className = "gg-stratum gg-canvas";
|
|
143
|
+
element.setAttribute("aria-hidden", "true");
|
|
144
|
+
const context = element.getContext("2d");
|
|
145
|
+
if (context === null) {
|
|
146
|
+
painted = false;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
sizeCanvasForDpr(element, context, scene.width, scene.height, window.devicePixelRatio || 1);
|
|
150
|
+
drawStratum(context, scene, slot.batches, cssColorResolver(element), masks.some((mask) => mask !== null) ? { focusMasks: masks } : undefined);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
syncSvgSlot(element, scene, slot, lives, index, `${prefix}-${index}`, label);
|
|
154
|
+
maskMarks(element, scene, slot.batches, masks);
|
|
155
|
+
}
|
|
156
|
+
return painted;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=strata-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strata-sync.js","sourceRoot":"","sources":["../src/strata-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAElF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAsB,MAAM,wBAAwB,CAAC;AAE3E,MAAM,aAAa,GAAG,+CAA+C,CAAC;AAItE,SAAS,KAAK,CAAC,KAAY,EAAE,MAAqC;IAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO;QACL,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;QACtD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;KACpD,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,SAAS,YAAY,CAAC,MAAc,EAAE,MAAc;IAClD,OAAO,MAAM;SACV,UAAU,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAU,EAAE,EAAE,CAAC,OAAO,MAAM,IAAI,EAAE,GAAG,CAAC;SAC7E,UAAU,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,EAAU,EAAE,EAAE,CAAC,QAAQ,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,OAAO,CAAC,KAAY,EAAE,IAAU,EAAE,MAAc,EAAE,KAAc;IACvE,MAAM,GAAG,GAAG,gBAAgB,CAC1B,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EACnC;QACE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KACjD,CACF,CAAC;IACF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;QACxD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,oBAAoB,CAAC;QACnD,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAY,EACZ,MAAqC,EACrC,MAAc,EACd,KAAc;IAEd,OAAO,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;SACxB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACnB,IAAI,CAAC,OAAO,KAAK,QAAQ;QACvB,CAAC,CAAC,kEAAkE,aAAa,aAAa;QAC9F,CAAC,CAAC,8CAA8C,aAAa,KAAK,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC,QAAQ,CAC9H;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,GAAkB,EAAE,MAAc;IACvD,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IACnF,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,gBAAgB,CAAC,yCAAyC,CAAC,EAAE,CAAC;QACtF,KAAK,MAAM,SAAS,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YACzD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE,CACtE,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,MAAM,IAAI,EAAE,GAAG,CAC9D,CAAC;YACF,IAAI,IAAI,KAAK,KAAK;gBAAE,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAChB,KAAc,EACd,KAAoB,EACpB,IAAiC,EACjC,YAAoB;IAEpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,OAAO,YAAY,UAAU,CAAC;YAAE,SAAS;QAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,OACE,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;gBACxC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;gBAEjE,SAAS,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK;YAC3B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC;YACrE,CAAC,CAAC,EAAE,CAAC;QACP,sEAAsE;QACtE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM;YAAE,SAAS,EAAE,CAAC;IACzE,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAChB,IAAiB,EACjB,KAAY,EACZ,OAAwB,EACxB,KAA+C;IAE/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxE,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAClC,yBAAyB,UAAU,4BAA4B,CAChE,CAAC;QACF,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAQ,CAAC,UAAU,CAAE,CAAC,UAAU,CAAE,CAAC,IAAI,IAAI,CAAC;YACvE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAiC;IAC/D,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACtD,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAClB,OAAoB,EACpB,KAAY,EACZ,IAAU,EACV,KAAiC,EACjC,KAAa,EACb,MAAc,EACd,KAAc;IAEd,OAAO,CAAC,SAAS,GAAG,wBAAwB,CAAC;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM;YAAE,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAqB,EACrB,KAAY,EACZ,MAAqC,EACrC,KAAiC,EACjC,MAAc,EACd,KAAc,EACd,mBAA6D,EAAE;IAE/D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QACzD,IAAI,OAAoB,CAAC;QACzB,IAAI,QAAQ,YAAY,WAAW,IAAI,QAAQ,CAAC,OAAO,KAAK,GAAG;YAAE,OAAO,GAAG,QAAQ,CAAC;aAC/E,CAAC;YACJ,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;YAC5B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACpD,IAAI,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;gBAC7C,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,IAAI,CAAC,CAAC;QAC9F,IAAI,OAAO,YAAY,iBAAiB,EAAE,CAAC;YACzC,OAAO,CAAC,SAAS,GAAG,sBAAsB,CAAC;YAC3C,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,GAAG,KAAK,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;YAC5F,WAAW,CACT,OAAO,EACP,KAAK,EACL,IAAI,CAAC,OAAO,EACZ,gBAAgB,CAAC,OAAO,CAAC,EACzB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACxE,CAAC;YACF,SAAS;QACX,CAAC;QACD,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7E,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/themes.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { ThemeSpec } from "@ggts-sh/spec";
|
|
3
|
+
type RoleProps = Partial<ThemeSpec>;
|
|
4
|
+
export declare function ThemeDefault(props?: RoleProps): ReactNode;
|
|
5
|
+
export declare function ThemeLight(props?: RoleProps): ReactNode;
|
|
6
|
+
export declare function ThemeDark(props?: RoleProps): ReactNode;
|
|
7
|
+
export declare function ThemeMinimal(props?: RoleProps): ReactNode;
|
|
8
|
+
export declare function ThemeGgplot2(props?: RoleProps): ReactNode;
|
|
9
|
+
export declare function ThemeClassic(props?: RoleProps): ReactNode;
|
|
10
|
+
export declare function ThemeBw(props?: RoleProps): ReactNode;
|
|
11
|
+
export declare function ThemeHrbr(props?: RoleProps): ReactNode;
|
|
12
|
+
export declare function ThemeFew(props?: RoleProps): ReactNode;
|
|
13
|
+
export declare function ThemeClean(props?: RoleProps): ReactNode;
|
|
14
|
+
export declare function ThemeFivethirtyeight(props?: RoleProps): ReactNode;
|
|
15
|
+
export declare function ThemeEconomist(props?: RoleProps): ReactNode;
|
|
16
|
+
export declare function ThemeTufte(props?: RoleProps): ReactNode;
|
|
17
|
+
export declare function ThemeLinedraw(props?: RoleProps): ReactNode;
|
|
18
|
+
export declare function ThemeVoid(props?: RoleProps): ReactNode;
|
|
19
|
+
export declare function ThemeStata(props?: RoleProps): ReactNode;
|
|
20
|
+
export declare function ThemeStatas1color(props?: RoleProps): ReactNode;
|
|
21
|
+
export declare function ThemeSolarized(props?: RoleProps): ReactNode;
|
|
22
|
+
export declare function ThemeSolarizeddark(props?: RoleProps): ReactNode;
|
|
23
|
+
export declare function ThemeEconomistwhite(props?: RoleProps): ReactNode;
|
|
24
|
+
export declare function ThemeSolarized2(props?: RoleProps): ReactNode;
|
|
25
|
+
export declare function ThemeSolarized2dark(props?: RoleProps): ReactNode;
|
|
26
|
+
export declare function ThemeWsj(props?: RoleProps): ReactNode;
|
|
27
|
+
export declare function ThemeHc(props?: RoleProps): ReactNode;
|
|
28
|
+
export declare function ThemeHcdark(props?: RoleProps): ReactNode;
|
|
29
|
+
export declare function ThemePander(props?: RoleProps): ReactNode;
|
|
30
|
+
export declare function ThemeBase(props?: RoleProps): ReactNode;
|
|
31
|
+
export declare function ThemeIgray(props?: RoleProps): ReactNode;
|
|
32
|
+
export declare function ThemeMap(props?: RoleProps): ReactNode;
|
|
33
|
+
export declare function ThemeSolid(props?: RoleProps): ReactNode;
|
|
34
|
+
export declare function ThemeGrey(props?: RoleProps): ReactNode;
|
|
35
|
+
export declare function ThemeGray(props?: RoleProps): ReactNode;
|
|
36
|
+
export declare function ThemeTest(props?: RoleProps): ReactNode;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=themes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../src/themes.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1D,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AASpC,wBAAgB,YAAY,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG7D;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG3D;AAED,wBAAgB,SAAS,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG1D;AAED,wBAAgB,YAAY,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG7D;AAED,wBAAgB,YAAY,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG7D;AAED,wBAAgB,YAAY,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG7D;AAED,wBAAgB,OAAO,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGxD;AAED,wBAAgB,SAAS,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG1D;AAED,wBAAgB,QAAQ,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGzD;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG3D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGrE;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG/D;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG3D;AAED,wBAAgB,aAAa,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG9D;AAED,wBAAgB,SAAS,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG1D;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG3D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGlE;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG/D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGnE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGpE;AAED,wBAAgB,eAAe,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGhE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGpE;AAED,wBAAgB,QAAQ,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGzD;AAED,wBAAgB,OAAO,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGxD;AAED,wBAAgB,WAAW,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG5D;AAED,wBAAgB,WAAW,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG5D;AAED,wBAAgB,SAAS,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG1D;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG3D;AAED,wBAAgB,QAAQ,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAGzD;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG3D;AAED,wBAAgB,SAAS,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG1D;AAED,wBAAgB,SAAS,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG1D;AAED,wBAAgB,SAAS,CAAC,KAAK,GAAE,SAAc,GAAG,SAAS,CAG1D"}
|
package/dist/themes.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { definedProps } from "./defined-props.js";
|
|
2
|
+
import { usePlotLayerValue } from "./geom-factory.js";
|
|
3
|
+
function useNamedTheme(name, props) {
|
|
4
|
+
usePlotLayerValue("theme", () => {
|
|
5
|
+
const roles = definedProps(props);
|
|
6
|
+
return Object.keys(roles).length === 0 ? name : { name, ...roles };
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
export function ThemeDefault(props = {}) {
|
|
10
|
+
useNamedTheme("default", props);
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
export function ThemeLight(props = {}) {
|
|
14
|
+
useNamedTheme("light", props);
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
export function ThemeDark(props = {}) {
|
|
18
|
+
useNamedTheme("dark", props);
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
export function ThemeMinimal(props = {}) {
|
|
22
|
+
useNamedTheme("minimal", props);
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
export function ThemeGgplot2(props = {}) {
|
|
26
|
+
useNamedTheme("ggplot2", props);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
export function ThemeClassic(props = {}) {
|
|
30
|
+
useNamedTheme("classic", props);
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
export function ThemeBw(props = {}) {
|
|
34
|
+
useNamedTheme("bw", props);
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
export function ThemeHrbr(props = {}) {
|
|
38
|
+
useNamedTheme("hrbr", props);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
export function ThemeFew(props = {}) {
|
|
42
|
+
useNamedTheme("few", props);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
export function ThemeClean(props = {}) {
|
|
46
|
+
useNamedTheme("clean", props);
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
export function ThemeFivethirtyeight(props = {}) {
|
|
50
|
+
useNamedTheme("fivethirtyeight", props);
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
export function ThemeEconomist(props = {}) {
|
|
54
|
+
useNamedTheme("economist", props);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
export function ThemeTufte(props = {}) {
|
|
58
|
+
useNamedTheme("tufte", props);
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
export function ThemeLinedraw(props = {}) {
|
|
62
|
+
useNamedTheme("linedraw", props);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
export function ThemeVoid(props = {}) {
|
|
66
|
+
useNamedTheme("void", props);
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
export function ThemeStata(props = {}) {
|
|
70
|
+
useNamedTheme("stata", props);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
export function ThemeStatas1color(props = {}) {
|
|
74
|
+
useNamedTheme("stata_s1color", props);
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
export function ThemeSolarized(props = {}) {
|
|
78
|
+
useNamedTheme("solarized", props);
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
export function ThemeSolarizeddark(props = {}) {
|
|
82
|
+
useNamedTheme("solarizeddark", props);
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
export function ThemeEconomistwhite(props = {}) {
|
|
86
|
+
useNamedTheme("economist_white", props);
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
export function ThemeSolarized2(props = {}) {
|
|
90
|
+
useNamedTheme("solarized_2", props);
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
export function ThemeSolarized2dark(props = {}) {
|
|
94
|
+
useNamedTheme("solarized_2dark", props);
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
export function ThemeWsj(props = {}) {
|
|
98
|
+
useNamedTheme("wsj", props);
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
export function ThemeHc(props = {}) {
|
|
102
|
+
useNamedTheme("hc", props);
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
export function ThemeHcdark(props = {}) {
|
|
106
|
+
useNamedTheme("hcdark", props);
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
export function ThemePander(props = {}) {
|
|
110
|
+
useNamedTheme("pander", props);
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
export function ThemeBase(props = {}) {
|
|
114
|
+
useNamedTheme("base", props);
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
export function ThemeIgray(props = {}) {
|
|
118
|
+
useNamedTheme("igray", props);
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
export function ThemeMap(props = {}) {
|
|
122
|
+
useNamedTheme("map", props);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
export function ThemeSolid(props = {}) {
|
|
126
|
+
useNamedTheme("solid", props);
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
export function ThemeGrey(props = {}) {
|
|
130
|
+
useNamedTheme("grey", props);
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
export function ThemeGray(props = {}) {
|
|
134
|
+
useNamedTheme("gray", props);
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
export function ThemeTest(props = {}) {
|
|
138
|
+
useNamedTheme("test", props);
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../src/themes.tsx"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ggts-sh/react",
|
|
3
|
+
"version": "0.43.0",
|
|
4
|
+
"description": "ggts React DOM adapter: ggplot2-named components over the framework-agnostic core pipeline.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"charts",
|
|
7
|
+
"components",
|
|
8
|
+
"dataviz",
|
|
9
|
+
"ggplot2",
|
|
10
|
+
"grammar-of-graphics",
|
|
11
|
+
"react",
|
|
12
|
+
"visualization"
|
|
13
|
+
],
|
|
14
|
+
"homepage": "https://ggts.sh/",
|
|
15
|
+
"bugs": "https://github.com/ggts-sh/ggts/issues",
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"author": "Liam O'Dea",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/ggts-sh/ggts.git",
|
|
21
|
+
"directory": "packages/react"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
26
|
+
"type": "module",
|
|
27
|
+
"sideEffects": [
|
|
28
|
+
"./dist/host-init.js"
|
|
29
|
+
],
|
|
30
|
+
"exports": {
|
|
31
|
+
".": {
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
33
|
+
"default": "./dist/index.js"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public",
|
|
38
|
+
"provenance": true
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsc -b",
|
|
42
|
+
"check": "tsc -b --pretty false",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"test:ssr": "vitest run --config vitest.ssr.config.ts"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@ggts-sh/compose": "^0.43.0",
|
|
48
|
+
"@ggts-sh/core": "^0.43.0",
|
|
49
|
+
"@ggts-sh/spec": "^0.43.0"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@testing-library/react": "^16.3.0",
|
|
53
|
+
"@types/react": "^19.2.0",
|
|
54
|
+
"@types/react-dom": "^19.2.5",
|
|
55
|
+
"@vitejs/plugin-react": "^5.1.0",
|
|
56
|
+
"@vitest/browser-playwright": "^4.1.11",
|
|
57
|
+
"playwright": "1.61.1",
|
|
58
|
+
"react": "^19.2.0",
|
|
59
|
+
"react-dom": "^19.2.0",
|
|
60
|
+
"typescript": "^6.0.3",
|
|
61
|
+
"vite": "^8.2.0",
|
|
62
|
+
"vitest": "^4.1.11"
|
|
63
|
+
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"react": "^18.2.0 || ^19.0.0",
|
|
66
|
+
"react-dom": "^18.2.0 || ^19.0.0"
|
|
67
|
+
},
|
|
68
|
+
"engines": {
|
|
69
|
+
"node": ">=22"
|
|
70
|
+
}
|
|
71
|
+
}
|