@neural-charts/native 0.0.0-stage → 0.1.0-beta.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 +58 -2
- package/THIRD-PARTY-NOTICES.md +15 -0
- package/docs/guide.md +783 -0
- package/library/annular-hit.d.ts +10 -0
- package/library/annular-hit.d.ts.map +1 -0
- package/library/annular-hit.js +43 -0
- package/library/annular-hit.js.map +1 -0
- package/library/chart-capabilities.d.ts +326 -0
- package/library/chart-capabilities.d.ts.map +1 -0
- package/library/chart-capabilities.js +39 -0
- package/library/chart-capabilities.js.map +1 -0
- package/library/circular-scene.d.ts +55 -0
- package/library/circular-scene.d.ts.map +1 -0
- package/library/circular-scene.js +39 -0
- package/library/circular-scene.js.map +1 -0
- package/library/comparison-render.d.ts +18 -0
- package/library/comparison-render.d.ts.map +1 -0
- package/library/comparison-render.js +33 -0
- package/library/comparison-render.js.map +1 -0
- package/library/comparison-scene.d.ts +40 -0
- package/library/comparison-scene.d.ts.map +1 -0
- package/library/comparison-scene.js +77 -0
- package/library/comparison-scene.js.map +1 -0
- package/library/composition-scene.d.ts +35 -0
- package/library/composition-scene.d.ts.map +1 -0
- package/library/composition-scene.js +55 -0
- package/library/composition-scene.js.map +1 -0
- package/library/contour-hit-index.d.ts +15 -0
- package/library/contour-hit-index.d.ts.map +1 -0
- package/library/contour-hit-index.js +75 -0
- package/library/contour-hit-index.js.map +1 -0
- package/library/contour-label-anchors.d.ts +9 -0
- package/library/contour-label-anchors.d.ts.map +1 -0
- package/library/contour-label-anchors.js +20 -0
- package/library/contour-label-anchors.js.map +1 -0
- package/library/contour-scene.d.ts +10 -0
- package/library/contour-scene.d.ts.map +1 -0
- package/library/contour-scene.js +76 -0
- package/library/contour-scene.js.map +1 -0
- package/library/contracts.d.ts +445 -0
- package/library/contracts.d.ts.map +1 -0
- package/library/contracts.js +2 -0
- package/library/contracts.js.map +1 -0
- package/library/dendrogram-scene.d.ts +7 -0
- package/library/dendrogram-scene.d.ts.map +1 -0
- package/library/dendrogram-scene.js +28 -0
- package/library/dendrogram-scene.js.map +1 -0
- package/library/empty-state.d.ts +8 -0
- package/library/empty-state.d.ts.map +1 -0
- package/library/empty-state.js +30 -0
- package/library/empty-state.js.map +1 -0
- package/library/heatmap-hit.d.ts +27 -0
- package/library/heatmap-hit.d.ts.map +1 -0
- package/library/heatmap-hit.js +56 -0
- package/library/heatmap-hit.js.map +1 -0
- package/library/heatmap-scene.d.ts +17 -0
- package/library/heatmap-scene.d.ts.map +1 -0
- package/library/heatmap-scene.js +85 -0
- package/library/heatmap-scene.js.map +1 -0
- package/library/index.d.ts +14 -0
- package/library/index.d.ts.map +1 -0
- package/library/index.js +4 -0
- package/library/index.js.map +1 -0
- package/library/interaction-content.d.ts +4 -0
- package/library/interaction-content.d.ts.map +1 -0
- package/library/interaction-content.js +28 -0
- package/library/interaction-content.js.map +1 -0
- package/library/interaction.d.ts +75 -0
- package/library/interaction.d.ts.map +1 -0
- package/library/interaction.js +523 -0
- package/library/interaction.js.map +1 -0
- package/library/marker-style.d.ts +24 -0
- package/library/marker-style.d.ts.map +1 -0
- package/library/marker-style.js +43 -0
- package/library/marker-style.js.map +1 -0
- package/library/parallel-scene.d.ts +11 -0
- package/library/parallel-scene.d.ts.map +1 -0
- package/library/parallel-scene.js +44 -0
- package/library/parallel-scene.js.map +1 -0
- package/library/path-validation.d.ts +3 -0
- package/library/path-validation.d.ts.map +1 -0
- package/library/path-validation.js +78 -0
- package/library/path-validation.js.map +1 -0
- package/library/pictorial-hit.d.ts +19 -0
- package/library/pictorial-hit.d.ts.map +1 -0
- package/library/pictorial-hit.js +73 -0
- package/library/pictorial-hit.js.map +1 -0
- package/library/pictorial-scene.d.ts +16 -0
- package/library/pictorial-scene.d.ts.map +1 -0
- package/library/pictorial-scene.js +73 -0
- package/library/pictorial-scene.js.map +1 -0
- package/library/point-label-placement.d.ts +34 -0
- package/library/point-label-placement.d.ts.map +1 -0
- package/library/point-label-placement.js +24 -0
- package/library/point-label-placement.js.map +1 -0
- package/library/polar-grid.d.ts +5 -0
- package/library/polar-grid.d.ts.map +1 -0
- package/library/polar-grid.js +28 -0
- package/library/polar-grid.js.map +1 -0
- package/library/polygon-hit.d.ts +18 -0
- package/library/polygon-hit.d.ts.map +1 -0
- package/library/polygon-hit.js +98 -0
- package/library/polygon-hit.js.map +1 -0
- package/library/profile-scene.d.ts +11 -0
- package/library/profile-scene.d.ts.map +1 -0
- package/library/profile-scene.js +51 -0
- package/library/profile-scene.js.map +1 -0
- package/library/relationship-hit-index.d.ts +12 -0
- package/library/relationship-hit-index.d.ts.map +1 -0
- package/library/relationship-hit-index.js +87 -0
- package/library/relationship-hit-index.js.map +1 -0
- package/library/relationship-scene.d.ts +12 -0
- package/library/relationship-scene.d.ts.map +1 -0
- package/library/relationship-scene.js +62 -0
- package/library/relationship-scene.js.map +1 -0
- package/library/scene-paint.d.ts +29 -0
- package/library/scene-paint.d.ts.map +1 -0
- package/library/scene-paint.js +123 -0
- package/library/scene-paint.js.map +1 -0
- package/library/scene-styles.d.ts +13 -0
- package/library/scene-styles.d.ts.map +1 -0
- package/library/scene-styles.js +135 -0
- package/library/scene-styles.js.map +1 -0
- package/library/scene.d.ts +49 -0
- package/library/scene.d.ts.map +1 -0
- package/library/scene.js +533 -0
- package/library/scene.js.map +1 -0
- package/library/temporal-hit-index.d.ts +13 -0
- package/library/temporal-hit-index.d.ts.map +1 -0
- package/library/temporal-hit-index.js +71 -0
- package/library/temporal-hit-index.js.map +1 -0
- package/library/temporal-scene.d.ts +6 -0
- package/library/temporal-scene.d.ts.map +1 -0
- package/library/temporal-scene.js +70 -0
- package/library/temporal-scene.js.map +1 -0
- package/library/tile-index.d.ts +11 -0
- package/library/tile-index.d.ts.map +1 -0
- package/library/tile-index.js +37 -0
- package/library/tile-index.js.map +1 -0
- package/library/tilemap-hit.d.ts +11 -0
- package/library/tilemap-hit.d.ts.map +1 -0
- package/library/tilemap-hit.js +63 -0
- package/library/tilemap-hit.js.map +1 -0
- package/library/tilemap-scene.d.ts +24 -0
- package/library/tilemap-scene.d.ts.map +1 -0
- package/library/tilemap-scene.js +125 -0
- package/library/tilemap-scene.js.map +1 -0
- package/library/uncertainty-scene.d.ts +11 -0
- package/library/uncertainty-scene.d.ts.map +1 -0
- package/library/uncertainty-scene.js +61 -0
- package/library/uncertainty-scene.js.map +1 -0
- package/library/venn-hit.d.ts +21 -0
- package/library/venn-hit.d.ts.map +1 -0
- package/library/venn-hit.js +37 -0
- package/library/venn-hit.js.map +1 -0
- package/library/venn-scene.d.ts +14 -0
- package/library/venn-scene.d.ts.map +1 -0
- package/library/venn-scene.js +84 -0
- package/library/venn-scene.js.map +1 -0
- package/library/wordcloud-scene.d.ts +19 -0
- package/library/wordcloud-scene.d.ts.map +1 -0
- package/library/wordcloud-scene.js +58 -0
- package/library/wordcloud-scene.js.map +1 -0
- package/native/activity.d.ts +14 -0
- package/native/activity.d.ts.map +1 -0
- package/native/activity.js +31 -0
- package/native/activity.js.map +1 -0
- package/native/bar-labels.d.ts +4 -0
- package/native/bar-labels.d.ts.map +1 -0
- package/native/bar-labels.js +16 -0
- package/native/bar-labels.js.map +1 -0
- package/native/bubble-entrance.d.ts +15 -0
- package/native/bubble-entrance.d.ts.map +1 -0
- package/native/bubble-entrance.js +27 -0
- package/native/bubble-entrance.js.map +1 -0
- package/native/chart-drilldown.d.ts +57 -0
- package/native/chart-drilldown.d.ts.map +1 -0
- package/native/chart-drilldown.js +118 -0
- package/native/chart-drilldown.js.map +1 -0
- package/native/chart-motion.d.ts +69 -0
- package/native/chart-motion.d.ts.map +1 -0
- package/native/chart-motion.js +165 -0
- package/native/chart-motion.js.map +1 -0
- package/native/chart-panels-options.d.ts +77 -0
- package/native/chart-panels-options.d.ts.map +1 -0
- package/native/chart-panels-options.js +2 -0
- package/native/chart-panels-options.js.map +1 -0
- package/native/chart-panels-state.d.ts +34 -0
- package/native/chart-panels-state.d.ts.map +1 -0
- package/native/chart-panels-state.js +198 -0
- package/native/chart-panels-state.js.map +1 -0
- package/native/chart-panels.d.ts +43 -0
- package/native/chart-panels.d.ts.map +1 -0
- package/native/chart-panels.js +107 -0
- package/native/chart-panels.js.map +1 -0
- package/native/chart-presentation.d.ts +40 -0
- package/native/chart-presentation.d.ts.map +1 -0
- package/native/chart-presentation.js +16 -0
- package/native/chart-presentation.js.map +1 -0
- package/native/chart-type.d.ts +65 -0
- package/native/chart-type.d.ts.map +1 -0
- package/native/chart-type.js +66 -0
- package/native/chart-type.js.map +1 -0
- package/native/chart.d.ts +571 -0
- package/native/chart.d.ts.map +1 -0
- package/native/chart.js +1417 -0
- package/native/chart.js.map +1 -0
- package/native/circular-options.d.ts +17 -0
- package/native/circular-options.d.ts.map +1 -0
- package/native/circular-options.js +2 -0
- package/native/circular-options.js.map +1 -0
- package/native/comparison-data.d.ts +64 -0
- package/native/comparison-data.d.ts.map +1 -0
- package/native/comparison-data.js +2 -0
- package/native/comparison-data.js.map +1 -0
- package/native/comparison-format.d.ts +16 -0
- package/native/comparison-format.d.ts.map +1 -0
- package/native/comparison-format.js +26 -0
- package/native/comparison-format.js.map +1 -0
- package/native/composition-options.d.ts +18 -0
- package/native/composition-options.d.ts.map +1 -0
- package/native/composition-options.js +2 -0
- package/native/composition-options.js.map +1 -0
- package/native/contour-data.d.ts +48 -0
- package/native/contour-data.d.ts.map +1 -0
- package/native/contour-data.js +2 -0
- package/native/contour-data.js.map +1 -0
- package/native/contour-format.d.ts +3 -0
- package/native/contour-format.d.ts.map +1 -0
- package/native/contour-format.js +11 -0
- package/native/contour-format.js.map +1 -0
- package/native/control-accessibility.d.ts +7 -0
- package/native/control-accessibility.d.ts.map +1 -0
- package/native/control-accessibility.js +9 -0
- package/native/control-accessibility.js.map +1 -0
- package/native/data-chart.d.ts +179 -0
- package/native/data-chart.d.ts.map +1 -0
- package/native/data-chart.js +415 -0
- package/native/data-chart.js.map +1 -0
- package/native/data-identities.d.ts +10 -0
- package/native/data-identities.d.ts.map +1 -0
- package/native/data-identities.js +50 -0
- package/native/data-identities.js.map +1 -0
- package/native/data-options.d.ts +566 -0
- package/native/data-options.d.ts.map +1 -0
- package/native/data-options.js +2 -0
- package/native/data-options.js.map +1 -0
- package/native/data-planning.d.ts +84 -0
- package/native/data-planning.d.ts.map +1 -0
- package/native/data-planning.js +174 -0
- package/native/data-planning.js.map +1 -0
- package/native/dendrogram-data.d.ts +27 -0
- package/native/dendrogram-data.d.ts.map +1 -0
- package/native/dendrogram-data.js +2 -0
- package/native/dendrogram-data.js.map +1 -0
- package/native/dendrogram-labels.d.ts +13 -0
- package/native/dendrogram-labels.d.ts.map +1 -0
- package/native/dendrogram-labels.js +12 -0
- package/native/dendrogram-labels.js.map +1 -0
- package/native/drilldown-options.d.ts +62 -0
- package/native/drilldown-options.d.ts.map +1 -0
- package/native/drilldown-options.js +2 -0
- package/native/drilldown-options.js.map +1 -0
- package/native/drilldown-state.d.ts +18 -0
- package/native/drilldown-state.d.ts.map +1 -0
- package/native/drilldown-state.js +130 -0
- package/native/drilldown-state.js.map +1 -0
- package/native/gauge-entrance.d.ts +8 -0
- package/native/gauge-entrance.d.ts.map +1 -0
- package/native/gauge-entrance.js +42 -0
- package/native/gauge-entrance.js.map +1 -0
- package/native/haptics.d.ts +21 -0
- package/native/haptics.d.ts.map +1 -0
- package/native/haptics.js +66 -0
- package/native/haptics.js.map +1 -0
- package/native/heatmap-data.d.ts +56 -0
- package/native/heatmap-data.d.ts.map +1 -0
- package/native/heatmap-data.js +2 -0
- package/native/heatmap-data.js.map +1 -0
- package/native/index.d.ts +26 -0
- package/native/index.d.ts.map +1 -0
- package/native/index.js +11 -0
- package/native/index.js.map +1 -0
- package/native/input-bridge.d.ts +32 -0
- package/native/input-bridge.d.ts.map +1 -0
- package/native/input-bridge.js +3 -0
- package/native/input-bridge.js.map +1 -0
- package/native/input-lease.d.ts +23 -0
- package/native/input-lease.d.ts.map +1 -0
- package/native/input-lease.js +28 -0
- package/native/input-lease.js.map +1 -0
- package/native/label-contrast.d.ts +7 -0
- package/native/label-contrast.d.ts.map +1 -0
- package/native/label-contrast.js +33 -0
- package/native/label-contrast.js.map +1 -0
- package/native/label-halo.d.ts +9 -0
- package/native/label-halo.d.ts.map +1 -0
- package/native/label-halo.js +23 -0
- package/native/label-halo.js.map +1 -0
- package/native/label-ink.d.ts +3 -0
- package/native/label-ink.d.ts.map +1 -0
- package/native/label-ink.js +6 -0
- package/native/label-ink.js.map +1 -0
- package/native/legend.d.ts +21 -0
- package/native/legend.d.ts.map +1 -0
- package/native/legend.js +66 -0
- package/native/legend.js.map +1 -0
- package/native/log-axis-labels.d.ts +6 -0
- package/native/log-axis-labels.d.ts.map +1 -0
- package/native/log-axis-labels.js +16 -0
- package/native/log-axis-labels.js.map +1 -0
- package/native/log-options.d.ts +5 -0
- package/native/log-options.d.ts.map +1 -0
- package/native/log-options.js +6 -0
- package/native/log-options.js.map +1 -0
- package/native/number-format.d.ts +5 -0
- package/native/number-format.d.ts.map +1 -0
- package/native/number-format.js +24 -0
- package/native/number-format.js.map +1 -0
- package/native/observation-format.d.ts +8 -0
- package/native/observation-format.d.ts.map +1 -0
- package/native/observation-format.js +80 -0
- package/native/observation-format.js.map +1 -0
- package/native/options-validation.d.ts +8 -0
- package/native/options-validation.d.ts.map +1 -0
- package/native/options-validation.js +612 -0
- package/native/options-validation.js.map +1 -0
- package/native/panel-viewport-contract.d.ts +15 -0
- package/native/panel-viewport-contract.d.ts.map +1 -0
- package/native/panel-viewport-contract.js +86 -0
- package/native/panel-viewport-contract.js.map +1 -0
- package/native/panel-viewport-sync.d.ts +27 -0
- package/native/panel-viewport-sync.d.ts.map +1 -0
- package/native/panel-viewport-sync.js +96 -0
- package/native/panel-viewport-sync.js.map +1 -0
- package/native/parallel-data.d.ts +49 -0
- package/native/parallel-data.d.ts.map +1 -0
- package/native/parallel-data.js +2 -0
- package/native/parallel-data.js.map +1 -0
- package/native/parallel-labels.d.ts +20 -0
- package/native/parallel-labels.d.ts.map +1 -0
- package/native/parallel-labels.js +54 -0
- package/native/parallel-labels.js.map +1 -0
- package/native/pictorial-data.d.ts +78 -0
- package/native/pictorial-data.d.ts.map +1 -0
- package/native/pictorial-data.js +2 -0
- package/native/pictorial-data.js.map +1 -0
- package/native/pictorial-format.d.ts +8 -0
- package/native/pictorial-format.d.ts.map +1 -0
- package/native/pictorial-format.js +14 -0
- package/native/pictorial-format.js.map +1 -0
- package/native/pictorial-options.d.ts +2 -0
- package/native/pictorial-options.d.ts.map +1 -0
- package/native/pictorial-options.js +61 -0
- package/native/pictorial-options.js.map +1 -0
- package/native/pictorial-paint.d.ts +19 -0
- package/native/pictorial-paint.d.ts.map +1 -0
- package/native/pictorial-paint.js +31 -0
- package/native/pictorial-paint.js.map +1 -0
- package/native/plan.d.ts +45 -0
- package/native/plan.d.ts.map +1 -0
- package/native/plan.js +109 -0
- package/native/plan.js.map +1 -0
- package/native/profile-data.d.ts +82 -0
- package/native/profile-data.d.ts.map +1 -0
- package/native/profile-data.js +2 -0
- package/native/profile-data.js.map +1 -0
- package/native/profile-labels.d.ts +5 -0
- package/native/profile-labels.d.ts.map +1 -0
- package/native/profile-labels.js +19 -0
- package/native/profile-labels.js.map +1 -0
- package/native/radial-entrance.d.ts +24 -0
- package/native/radial-entrance.d.ts.map +1 -0
- package/native/radial-entrance.js +25 -0
- package/native/radial-entrance.js.map +1 -0
- package/native/radial-layer.d.ts +26 -0
- package/native/radial-layer.d.ts.map +1 -0
- package/native/radial-layer.js +76 -0
- package/native/radial-layer.js.map +1 -0
- package/native/reference-labels.d.ts +21 -0
- package/native/reference-labels.d.ts.map +1 -0
- package/native/reference-labels.js +36 -0
- package/native/reference-labels.js.map +1 -0
- package/native/reference-options.d.ts +23 -0
- package/native/reference-options.d.ts.map +1 -0
- package/native/reference-options.js +58 -0
- package/native/reference-options.js.map +1 -0
- package/native/relationship-data.d.ts +63 -0
- package/native/relationship-data.d.ts.map +1 -0
- package/native/relationship-data.js +2 -0
- package/native/relationship-data.js.map +1 -0
- package/native/relationship-format.d.ts +13 -0
- package/native/relationship-format.d.ts.map +1 -0
- package/native/relationship-format.js +26 -0
- package/native/relationship-format.js.map +1 -0
- package/native/selection-outlines.d.ts +12 -0
- package/native/selection-outlines.d.ts.map +1 -0
- package/native/selection-outlines.js +20 -0
- package/native/selection-outlines.js.map +1 -0
- package/native/temporal-format.d.ts +29 -0
- package/native/temporal-format.d.ts.map +1 -0
- package/native/temporal-format.js +41 -0
- package/native/temporal-format.js.map +1 -0
- package/native/text-style.d.ts +16 -0
- package/native/text-style.d.ts.map +1 -0
- package/native/text-style.js +14 -0
- package/native/text-style.js.map +1 -0
- package/native/tilemap-color-axis.d.ts +23 -0
- package/native/tilemap-color-axis.d.ts.map +1 -0
- package/native/tilemap-color-axis.js +77 -0
- package/native/tilemap-color-axis.js.map +1 -0
- package/native/tilemap-data.d.ts +71 -0
- package/native/tilemap-data.d.ts.map +1 -0
- package/native/tilemap-data.js +2 -0
- package/native/tilemap-data.js.map +1 -0
- package/native/tilemap-format.d.ts +3 -0
- package/native/tilemap-format.d.ts.map +1 -0
- package/native/tilemap-format.js +14 -0
- package/native/tilemap-format.js.map +1 -0
- package/native/tilemap-selection.d.ts +12 -0
- package/native/tilemap-selection.d.ts.map +1 -0
- package/native/tilemap-selection.js +8 -0
- package/native/tilemap-selection.js.map +1 -0
- package/native/time-axis-labels.d.ts +5 -0
- package/native/time-axis-labels.d.ts.map +1 -0
- package/native/time-axis-labels.js +38 -0
- package/native/time-axis-labels.js.map +1 -0
- package/native/tooltip-layout.d.ts +16 -0
- package/native/tooltip-layout.d.ts.map +1 -0
- package/native/tooltip-layout.js +33 -0
- package/native/tooltip-layout.js.map +1 -0
- package/native/tooltip-metrics.d.ts +4 -0
- package/native/tooltip-metrics.d.ts.map +1 -0
- package/native/tooltip-metrics.js +11 -0
- package/native/tooltip-metrics.js.map +1 -0
- package/native/tooltip-motion.d.ts +35 -0
- package/native/tooltip-motion.d.ts.map +1 -0
- package/native/tooltip-motion.js +36 -0
- package/native/tooltip-motion.js.map +1 -0
- package/native/tooltip-occupancy.d.ts +21 -0
- package/native/tooltip-occupancy.d.ts.map +1 -0
- package/native/tooltip-occupancy.js +67 -0
- package/native/tooltip-occupancy.js.map +1 -0
- package/native/tooltip.d.ts +144 -0
- package/native/tooltip.d.ts.map +1 -0
- package/native/tooltip.js +146 -0
- package/native/tooltip.js.map +1 -0
- package/native/uncertainty-data.d.ts +110 -0
- package/native/uncertainty-data.d.ts.map +1 -0
- package/native/uncertainty-data.js +2 -0
- package/native/uncertainty-data.js.map +1 -0
- package/native/uncertainty-format.d.ts +3 -0
- package/native/uncertainty-format.d.ts.map +1 -0
- package/native/uncertainty-format.js +10 -0
- package/native/uncertainty-format.js.map +1 -0
- package/native/value-labels.d.ts +30 -0
- package/native/value-labels.d.ts.map +1 -0
- package/native/value-labels.js +206 -0
- package/native/value-labels.js.map +1 -0
- package/native/variwide-labels.d.ts +14 -0
- package/native/variwide-labels.d.ts.map +1 -0
- package/native/variwide-labels.js +22 -0
- package/native/variwide-labels.js.map +1 -0
- package/native/venn-data.d.ts +29 -0
- package/native/venn-data.d.ts.map +1 -0
- package/native/venn-data.js +2 -0
- package/native/venn-data.js.map +1 -0
- package/native/viewport-gestures.d.ts +32 -0
- package/native/viewport-gestures.d.ts.map +1 -0
- package/native/viewport-gestures.js +43 -0
- package/native/viewport-gestures.js.map +1 -0
- package/native/viewport-motion.d.ts +67 -0
- package/native/viewport-motion.d.ts.map +1 -0
- package/native/viewport-motion.js +182 -0
- package/native/viewport-motion.js.map +1 -0
- package/native/viewport-state.d.ts +20 -0
- package/native/viewport-state.d.ts.map +1 -0
- package/native/viewport-state.js +14 -0
- package/native/viewport-state.js.map +1 -0
- package/native/waterfall-appearance.d.ts +8 -0
- package/native/waterfall-appearance.d.ts.map +1 -0
- package/native/waterfall-appearance.js +18 -0
- package/native/waterfall-appearance.js.map +1 -0
- package/native/wordcloud-data.d.ts +40 -0
- package/native/wordcloud-data.d.ts.map +1 -0
- package/native/wordcloud-data.js +2 -0
- package/native/wordcloud-data.js.map +1 -0
- package/native/wordcloud-layer.d.ts +29 -0
- package/native/wordcloud-layer.d.ts.map +1 -0
- package/native/wordcloud-layer.js +58 -0
- package/native/wordcloud-layer.js.map +1 -0
- package/native/wordcloud-measurements.d.ts +47 -0
- package/native/wordcloud-measurements.d.ts.map +1 -0
- package/native/wordcloud-measurements.js +137 -0
- package/native/wordcloud-measurements.js.map +1 -0
- package/native/wordcloud-planning.d.ts +23 -0
- package/native/wordcloud-planning.d.ts.map +1 -0
- package/native/wordcloud-planning.js +25 -0
- package/native/wordcloud-planning.js.map +1 -0
- package/native/wordcloud-probes.d.ts +48 -0
- package/native/wordcloud-probes.d.ts.map +1 -0
- package/native/wordcloud-probes.js +111 -0
- package/native/wordcloud-probes.js.map +1 -0
- package/native/wordcloud-text-backend.d.ts +16 -0
- package/native/wordcloud-text-backend.d.ts.map +1 -0
- package/native/wordcloud-text-backend.js +3 -0
- package/native/wordcloud-text-backend.js.map +1 -0
- package/package.json +58 -4
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
const cross = (a, b, c) => (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
|
|
2
|
+
const orientation = (a, b, c) => {
|
|
3
|
+
const product1 = (b.x - a.x) * (c.y - a.y), product2 = (b.y - a.y) * (c.x - a.x), det = product1 - product2, error = Number.EPSILON * 8 * (Math.abs(product1) + Math.abs(product2));
|
|
4
|
+
return det > error ? 1 : det < -error ? -1 : 0;
|
|
5
|
+
};
|
|
6
|
+
const onSegment = (a, b, p) => orientation(a, b, p) === 0 && p.x >= Math.min(a.x, b.x) && p.x <= Math.max(a.x, b.x) && p.y >= Math.min(a.y, b.y) && p.y <= Math.max(a.y, b.y);
|
|
7
|
+
function intersects(a, b, c, d) {
|
|
8
|
+
const x = orientation(a, b, c), y = orientation(a, b, d), z = orientation(c, d, a), w = orientation(c, d, b);
|
|
9
|
+
return (x * y < 0 && z * w < 0) || onSegment(a, b, c) || onSegment(a, b, d) || onSegment(c, d, a) || onSegment(c, d, b);
|
|
10
|
+
}
|
|
11
|
+
/** Bounded ownership/validation. Neck-crossing funnel polygons may be concave. */
|
|
12
|
+
export function ownPolygon(hit, scene) {
|
|
13
|
+
if (!(['column', 'bar'].includes(scene.family) && scene.stackGroups) && !['regression', 'flame', 'violin', 'heatmap', 'wordcloud', 'pictorial', 'tilemap', 'dependencywheel', 'arcdiagram', 'chord', 'bullet', 'variwide', 'xrange', 'sankey', 'organization', 'treegraph', 'funnel', 'pyramid', 'lollipop', 'dumbbell', 'columnpyramid', 'boxplot', 'errorbar', 'columnrange'].includes(scene.family) || !Array.isArray(hit.vertices) || hit.vertices.length < 3 || hit.vertices.length > (scene.family === 'violin' ? 256 : scene.family === 'pictorial' ? 5 : scene.family === 'sankey' ? 40 : ['dependencywheel', 'arcdiagram', 'chord'].includes(scene.family) ? 34 : 6))
|
|
14
|
+
throw Error('Invalid polygon hit region');
|
|
15
|
+
const vertices = hit.vertices.map(p => { if (!p || typeof p.x !== 'number' || typeof p.y !== 'number' || !Number.isFinite(p.x) || !Number.isFinite(p.y) || p.x < 0 || p.x > scene.width || p.y < 0 || p.y > scene.height)
|
|
16
|
+
throw Error('Invalid polygon vertex'); return { x: p.x, y: p.y }; });
|
|
17
|
+
const origin = vertices[0];
|
|
18
|
+
let area = 0;
|
|
19
|
+
for (let i = 0; i < vertices.length; i++) {
|
|
20
|
+
const a = vertices[i], b = vertices[(i + 1) % vertices.length];
|
|
21
|
+
if (a.x === b.x && a.y === b.y)
|
|
22
|
+
throw Error('Collapsed polygon edge');
|
|
23
|
+
area += cross(origin, a, b);
|
|
24
|
+
}
|
|
25
|
+
if (!Number.isFinite(area) || area === 0)
|
|
26
|
+
throw Error('Degenerate polygon hit region');
|
|
27
|
+
// A compact-kernel violin can pinch to zero between separate sample clusters.
|
|
28
|
+
// Validate the two mirrored, monotone chains in linear time: these boundary
|
|
29
|
+
// touches are valid density gaps, rather than self-crossing arbitrary polygons.
|
|
30
|
+
if (scene.family === 'violin' && vertices.length > 4) {
|
|
31
|
+
if (vertices.length % 2 !== 0)
|
|
32
|
+
throw Error('Invalid violin contour');
|
|
33
|
+
const steps = vertices.length / 2, center = vertices[0].x, direction = Math.sign(vertices[1].y - vertices[0].y);
|
|
34
|
+
if (!direction || vertices[steps].x !== center)
|
|
35
|
+
throw Error('Invalid violin contour');
|
|
36
|
+
for (let i = 1; i < steps; i++) {
|
|
37
|
+
const left = vertices[i], right = vertices[vertices.length - i];
|
|
38
|
+
if (direction * (left.y - vertices[i - 1].y) <= 0 || left.x > center || right.x < center || left.y !== right.y || Math.abs((left.x - center) + (right.x - center)) > 1e-7)
|
|
39
|
+
throw Error('Invalid violin contour');
|
|
40
|
+
}
|
|
41
|
+
if (direction * (vertices[steps].y - vertices[steps - 1].y) <= 0)
|
|
42
|
+
throw Error('Invalid violin contour');
|
|
43
|
+
return { type: 'polygon', vertices };
|
|
44
|
+
}
|
|
45
|
+
for (let i = 0; i < vertices.length; i++)
|
|
46
|
+
for (let j = i + 1; j < vertices.length; j++) {
|
|
47
|
+
if (j === i + 1 || i === 0 && j === vertices.length - 1)
|
|
48
|
+
continue;
|
|
49
|
+
if (intersects(vertices[i], vertices[(i + 1) % vertices.length], vertices[j], vertices[(j + 1) % vertices.length]))
|
|
50
|
+
throw Error('Self-intersecting polygon hit region');
|
|
51
|
+
}
|
|
52
|
+
return { type: 'polygon', vertices };
|
|
53
|
+
}
|
|
54
|
+
export function containsPolygon(hit, x, y) {
|
|
55
|
+
const p = { x, y }, v = hit.vertices;
|
|
56
|
+
let inside = false;
|
|
57
|
+
for (let i = 0, j = v.length - 1; i < v.length; j = i++) {
|
|
58
|
+
const a = v[j], b = v[i];
|
|
59
|
+
if (onSegment(a, b, p))
|
|
60
|
+
return true;
|
|
61
|
+
if ((a.y > y) !== (b.y > y) && x < (b.x - a.x) * (y - a.y) / (b.y - a.y) + a.x)
|
|
62
|
+
inside = !inside;
|
|
63
|
+
}
|
|
64
|
+
return inside;
|
|
65
|
+
}
|
|
66
|
+
/** Each candidate has at most six edges; callers bound the candidate set. */
|
|
67
|
+
export function polygonObservation(points, x, y) {
|
|
68
|
+
return points.find(p => p.hit?.type === 'polygon' && containsPolygon(p.hit, x, y)) ?? null;
|
|
69
|
+
}
|
|
70
|
+
const boundsCache = new WeakMap();
|
|
71
|
+
/** Cache bounds on immutable scene polygons; no arrays are allocated per move. */
|
|
72
|
+
export function sankeyObservation(points, x, y) {
|
|
73
|
+
let selected = null;
|
|
74
|
+
for (const point of points) {
|
|
75
|
+
const hit = point.hit;
|
|
76
|
+
if (hit?.type !== 'polygon')
|
|
77
|
+
continue;
|
|
78
|
+
let bounds = boundsCache.get(hit);
|
|
79
|
+
if (!bounds) {
|
|
80
|
+
let left = Infinity, right = -Infinity, top = Infinity, bottom = -Infinity;
|
|
81
|
+
for (const vertex of hit.vertices) {
|
|
82
|
+
left = Math.min(left, vertex.x);
|
|
83
|
+
right = Math.max(right, vertex.x);
|
|
84
|
+
top = Math.min(top, vertex.y);
|
|
85
|
+
bottom = Math.max(bottom, vertex.y);
|
|
86
|
+
}
|
|
87
|
+
bounds = { left, right, top, bottom };
|
|
88
|
+
boundsCache.set(hit, bounds);
|
|
89
|
+
}
|
|
90
|
+
if (x < bounds.left || x > bounds.right || y < bounds.top || y > bounds.bottom || !containsPolygon(hit, x, y))
|
|
91
|
+
continue;
|
|
92
|
+
if (point.sankey?.type === 'node')
|
|
93
|
+
return point;
|
|
94
|
+
selected = point;
|
|
95
|
+
}
|
|
96
|
+
return selected;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=polygon-hit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polygon-hit.js","sourceRoot":"","sources":["../../src/library/polygon-hit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PlanFlameLayout, PlanFlameValue, PlanViolinLayout, PlanViolinValue } from '@neural-charts/core/plan';
|
|
2
|
+
import type { NativeScene } from './contracts.js';
|
|
3
|
+
export type NativeFlameLayout = PlanFlameLayout;
|
|
4
|
+
export type NativeFlameValue = PlanFlameValue;
|
|
5
|
+
export type NativeViolinLayout = PlanViolinLayout;
|
|
6
|
+
export type NativeViolinValue = PlanViolinValue;
|
|
7
|
+
export declare function ownFlameValue(v: NativeFlameValue): NativeFlameValue;
|
|
8
|
+
export declare function ownFlame(v: NativeFlameLayout, scene: NativeScene): NativeFlameLayout;
|
|
9
|
+
export declare function ownViolinValue(v: NativeViolinValue): NativeViolinValue;
|
|
10
|
+
export declare function ownViolin(v: NativeViolinLayout, scene: NativeScene): NativeViolinLayout;
|
|
11
|
+
//# sourceMappingURL=profile-scene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-scene.d.ts","sourceRoot":"","sources":["../../src/library/profile-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,cAAc,EAAC,gBAAgB,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAC9G,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,MAAM,MAAM,iBAAiB,GAAC,eAAe,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GAAC,cAAc,CAAC;AAC5C,MAAM,MAAM,kBAAkB,GAAC,gBAAgB,CAAC;AAChD,MAAM,MAAM,iBAAiB,GAAC,eAAe,CAAC;AAG9C,wBAAgB,aAAa,CAAC,CAAC,EAAC,gBAAgB,GAAE,gBAAgB,CAGjE;AACD,wBAAgB,QAAQ,CAAC,CAAC,EAAC,iBAAiB,EAAC,KAAK,EAAC,WAAW,GAAE,iBAAiB,CAKhF;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAC,iBAAiB,GAAE,iBAAiB,CAGpE;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAC,kBAAkB,EAAC,KAAK,EAAC,WAAW,GAAE,kBAAkB,CAanF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const integer = (v, min, max) => Number.isInteger(v) && v >= min && v <= max;
|
|
2
|
+
const text = (v, max) => typeof v === 'string' && v.length <= max;
|
|
3
|
+
export function ownFlameValue(v) {
|
|
4
|
+
if (!v || !integer(v.depth, 0, 31) || !integer(v.childCount, 0, 2048) || !Number.isFinite(v.selfDuration) || v.selfDuration < 0 || v.parentId !== undefined && (!text(v.parentId, 128) || !v.parentId) || v.depth === 0 && v.parentId !== undefined || v.depth > 0 && v.parentId === undefined)
|
|
5
|
+
throw Error('Invalid flame observation');
|
|
6
|
+
return { ...(v.parentId === undefined ? {} : { parentId: v.parentId }), depth: v.depth, childCount: v.childCount, selfDuration: v.selfDuration };
|
|
7
|
+
}
|
|
8
|
+
export function ownFlame(v, scene) {
|
|
9
|
+
if (scene.family !== 'flame' || !v || !integer(v.maxDepth, 0, 31) || !integer(v.nodeCount, 0, 2048) || !integer(v.rootCount, 0, v.nodeCount) || v.nodeCount > 0 && v.rootCount === 0 || (scene.legend?.length ?? 0) !== 0 || scene.series.length !== 1 || scene.series[0]?.id !== 'profile' || scene.observations.length > v.nodeCount || scene.intervals?.length !== v.nodeCount)
|
|
10
|
+
throw Error('Invalid flame layout');
|
|
11
|
+
const sources = new Set(scene.intervals.map(p => p.id.pointId));
|
|
12
|
+
for (const p of scene.observations) {
|
|
13
|
+
const f = ownFlameValue(p.flame);
|
|
14
|
+
if (p.id.seriesId !== 'profile' || !p.interval || p.interval.completed !== undefined || f.depth > v.maxDepth || f.selfDuration > p.value || f.parentId !== undefined && !sources.has(f.parentId) || p.interval.rowId !== 'depth-' + f.depth)
|
|
15
|
+
throw Error('Invalid flame source role');
|
|
16
|
+
}
|
|
17
|
+
return Object.freeze({ maxDepth: v.maxDepth, nodeCount: v.nodeCount, rootCount: v.rootCount });
|
|
18
|
+
}
|
|
19
|
+
export function ownViolinValue(v) {
|
|
20
|
+
if (!v || v.derived !== true || !integer(v.sampleCount, 1, 4096) || !integer(v.missingCount, 0, 4096) || v.sampleCount + v.missingCount > 4096 || ![v.minimum, v.q1, v.median, v.q3, v.maximum, v.mean].every(Number.isFinite) || v.minimum > v.q1 || v.q1 > v.median || v.median > v.q3 || v.q3 > v.maximum || v.mean < v.minimum || v.mean > v.maximum || v.bandwidth !== null && (!Number.isFinite(v.bandwidth) || v.bandwidth <= 0) || v.bandwidth === null && v.minimum !== v.maximum)
|
|
21
|
+
throw Error('Invalid violin summary');
|
|
22
|
+
return { derived: true, sampleCount: v.sampleCount, missingCount: v.missingCount, minimum: v.minimum, q1: v.q1, median: v.median, q3: v.q3, maximum: v.maximum, mean: v.mean, bandwidth: v.bandwidth };
|
|
23
|
+
}
|
|
24
|
+
export function ownViolin(v, scene) {
|
|
25
|
+
if (scene.family !== 'violin' || !v || v.kernel !== 'epanechnikov' || !['width', 'area', 'count'].includes(v.normalization) || !integer(v.resolution, 32, 128) || !Array.isArray(v.groups) || v.groups.length > 16)
|
|
26
|
+
throw Error('Invalid violin layout');
|
|
27
|
+
const ids = new Set(), byId = new Map(scene.observations.map(p => [p.id.seriesId, p]));
|
|
28
|
+
let sourceCount = 0;
|
|
29
|
+
const groups = v.groups.map(g => {
|
|
30
|
+
if (!g || !text(g.id, 128) || !g.id || ids.has(g.id) || !text(g.label, 200) || typeof g.visible !== 'boolean' || !integer(g.sampleCount, 0, 4096) || !integer(g.missingCount, 0, 4096) || (sourceCount += g.sampleCount + g.missingCount) > 4096 || !Array.isArray(g.density) || g.density.length !== 0 && g.density.length !== v.resolution + 1)
|
|
31
|
+
throw Error('Invalid violin group');
|
|
32
|
+
ids.add(g.id);
|
|
33
|
+
const summary = g.summary ? ownViolinValue(g.summary) : undefined;
|
|
34
|
+
if (!!summary !== (g.sampleCount > 0) || summary && (summary.sampleCount !== g.sampleCount || summary.missingCount !== g.missingCount || summary.bandwidth === null && g.density.length !== 0 || summary.bandwidth !== null && g.density.length === 0))
|
|
35
|
+
throw Error('Invalid violin summary ownership');
|
|
36
|
+
const density = g.density.map((p, i) => { if (!p || !Number.isFinite(p.value) || !Number.isFinite(p.density) || p.density < 0 || i > 0 && p.value <= g.density[i - 1].value)
|
|
37
|
+
throw Error('Invalid violin density'); return Object.freeze({ value: p.value, density: p.density }); });
|
|
38
|
+
const p = byId.get(g.id);
|
|
39
|
+
if (g.visible && summary) {
|
|
40
|
+
if (!p || p.id.pointId !== 'summary' || p.value !== summary.median || p.hit?.type !== 'polygon' || !p.violin || Object.keys(summary).some(k => p.violin[k] !== summary[k]))
|
|
41
|
+
throw Error('Invalid violin observation ownership');
|
|
42
|
+
}
|
|
43
|
+
else if (p)
|
|
44
|
+
throw Error('Hidden or unknown violin group cannot invent a summary');
|
|
45
|
+
return Object.freeze({ id: g.id, label: g.label, visible: g.visible, sampleCount: g.sampleCount, missingCount: g.missingCount, ...(summary ? { summary: Object.freeze(summary) } : {}), density: Object.freeze(density) });
|
|
46
|
+
});
|
|
47
|
+
if (scene.observations.some(p => !ids.has(p.id.seriesId) || !p.violin) || (scene.legend?.length ?? 0) !== groups.length || scene.legend?.some(p => !ids.has(p.id)))
|
|
48
|
+
throw Error('Invalid violin identities');
|
|
49
|
+
return Object.freeze({ kernel: 'epanechnikov', normalization: v.normalization, resolution: v.resolution, groups: Object.freeze(groups) });
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=profile-scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-scene.js","sourceRoot":"","sources":["../../src/library/profile-scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { NativeScene, Observation } from './contracts.js';
|
|
2
|
+
/** Fixed 12×12 plot-local index. Construct once per owned geometry, never per pointer move. */
|
|
3
|
+
export declare class RelationshipHitIndex {
|
|
4
|
+
private readonly scene;
|
|
5
|
+
private readonly cells;
|
|
6
|
+
private readonly circles;
|
|
7
|
+
constructor(scene: NativeScene);
|
|
8
|
+
private cell;
|
|
9
|
+
private contains;
|
|
10
|
+
pick(x: number, y: number, tolerance?: number): Observation | null;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=relationship-hit-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship-hit-index.d.ts","sourceRoot":"","sources":["../../src/library/relationship-hit-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,WAAW,EAAW,MAAM,gBAAgB,CAAC;AAGtE,+FAA+F;AAC/F,qBAAa,oBAAoB;IAGnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4D;IAClF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;gBACb,KAAK,EAAC,WAAW;IAU9C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,QAAQ;IAQhB,IAAI,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,SAAS,SAAE,GAAE,WAAW,GAAC,IAAI;CAarD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { containsPolygon } from './polygon-hit.js';
|
|
2
|
+
/** Fixed 12×12 plot-local index. Construct once per owned geometry, never per pointer move. */
|
|
3
|
+
export class RelationshipHitIndex {
|
|
4
|
+
scene;
|
|
5
|
+
cells = Array.from({ length: 144 }, () => ({ nodes: [], links: [] }));
|
|
6
|
+
circles = [];
|
|
7
|
+
constructor(scene) {
|
|
8
|
+
this.scene = scene;
|
|
9
|
+
for (const point of scene.observations) {
|
|
10
|
+
const hit = point.hit;
|
|
11
|
+
if (!hit)
|
|
12
|
+
continue;
|
|
13
|
+
if (hit.type === 'compoundPolygon')
|
|
14
|
+
throw Error('Unsupported relationship hit geometry');
|
|
15
|
+
if (point.relationship?.type === 'node' && hit.type === 'circle')
|
|
16
|
+
this.circles.push(point);
|
|
17
|
+
let left, right, top, bottom;
|
|
18
|
+
if (hit.type === 'polygon') {
|
|
19
|
+
left = Infinity;
|
|
20
|
+
right = -Infinity;
|
|
21
|
+
top = Infinity;
|
|
22
|
+
bottom = -Infinity;
|
|
23
|
+
for (const vertex of hit.vertices) {
|
|
24
|
+
left = Math.min(left, vertex.x);
|
|
25
|
+
right = Math.max(right, vertex.x);
|
|
26
|
+
top = Math.min(top, vertex.y);
|
|
27
|
+
bottom = Math.max(bottom, vertex.y);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
left = hit.cx - hit.radius;
|
|
32
|
+
right = hit.cx + hit.radius;
|
|
33
|
+
top = hit.cy - hit.radius;
|
|
34
|
+
bottom = hit.cy + hit.radius;
|
|
35
|
+
}
|
|
36
|
+
for (let y = this.cell(top, scene.height); y <= this.cell(bottom, scene.height); y++)
|
|
37
|
+
for (let x = this.cell(left, scene.width); x <= this.cell(right, scene.width); x++)
|
|
38
|
+
this.cells[y * 12 + x][point.relationship?.type === 'node' ? 'nodes' : 'links'].push(point);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
cell(value, extent) { return Math.max(0, Math.min(11, Math.floor(value / extent * 12))); }
|
|
42
|
+
contains(hit, x, y) {
|
|
43
|
+
if (hit.type === 'compoundPolygon')
|
|
44
|
+
return false;
|
|
45
|
+
if (hit.type === 'polygon')
|
|
46
|
+
return containsPolygon(hit, x, y);
|
|
47
|
+
const radius = Math.hypot(x - hit.cx, y - hit.cy);
|
|
48
|
+
if (radius > hit.radius)
|
|
49
|
+
return false;
|
|
50
|
+
if (hit.type === 'circle')
|
|
51
|
+
return true;
|
|
52
|
+
if (radius < hit.innerRadius)
|
|
53
|
+
return false;
|
|
54
|
+
const turn = 2 * Math.PI, angle = (Math.atan2(x - hit.cx, hit.cy - y) - hit.start) % turn, relative = (angle + turn) % turn;
|
|
55
|
+
return relative <= hit.end - hit.start + 1e-10;
|
|
56
|
+
}
|
|
57
|
+
pick(x, y, tolerance = 0) {
|
|
58
|
+
if (x < 0 || y < 0 || x > this.scene.width || y > this.scene.height)
|
|
59
|
+
return null;
|
|
60
|
+
const cell = this.cells[this.cell(y, this.scene.height) * 12 + this.cell(x, this.scene.width)];
|
|
61
|
+
for (const point of cell.nodes)
|
|
62
|
+
if (point.hit && this.contains(point.hit, x, y))
|
|
63
|
+
return point;
|
|
64
|
+
// A miss inside the ring must fall through to its actual ribbon polygons.
|
|
65
|
+
for (let i = cell.links.length - 1; i >= 0; i--) {
|
|
66
|
+
const point = cell.links[i];
|
|
67
|
+
if (point.hit && this.contains(point.hit, x, y))
|
|
68
|
+
return point;
|
|
69
|
+
}
|
|
70
|
+
// A larger touch target is separate from drawn radius and never steals an
|
|
71
|
+
// actual ribbon hit. At most64 source nodes; no move-time collections.
|
|
72
|
+
let nearest = null, distance = Infinity;
|
|
73
|
+
const reach = Number.isFinite(tolerance) ? Math.max(0, Math.min(256, tolerance)) : 0;
|
|
74
|
+
for (const point of this.circles) {
|
|
75
|
+
const hit = point.hit;
|
|
76
|
+
if (hit?.type !== 'circle')
|
|
77
|
+
continue;
|
|
78
|
+
const d = (x - hit.cx) ** 2 + (y - hit.cy) ** 2;
|
|
79
|
+
if (d <= Math.max(hit.radius, reach) ** 2 && d < distance) {
|
|
80
|
+
nearest = point;
|
|
81
|
+
distance = d;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return nearest;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=relationship-hit-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship-hit-index.js","sourceRoot":"","sources":["../../src/library/relationship-hit-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { NativeScene, Observation, NativeAnnotation } from './contracts.js';
|
|
2
|
+
import type { PlanRelationshipMetadata } from '@neural-charts/core/plan';
|
|
3
|
+
export declare const relationshipFamily: (family: string) => family is "dependencywheel" | "arcdiagram" | "chord";
|
|
4
|
+
/** Own the public Core metadata without recomputing totals or projecting geometry. */
|
|
5
|
+
export declare function ownRelationshipPoint(point: Observation, family: NativeScene['family']): Readonly<{
|
|
6
|
+
relationship?: PlanRelationshipMetadata;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function validateRelationshipScene(scene: NativeScene): void;
|
|
9
|
+
/** Text boxes are presentation constraints, not source values or projected arcs.
|
|
10
|
+
* Core supplies a requested width; the native label must fit around its anchor. */
|
|
11
|
+
export declare function relationshipAnnotations(scene: NativeScene): readonly NativeAnnotation[];
|
|
12
|
+
//# sourceMappingURL=relationship-scene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship-scene.d.ts","sourceRoot":"","sources":["../../src/library/relationship-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,WAAW,EAAC,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AAEvE,eAAO,MAAM,kBAAkB,GAAE,QAAO,MAAM,KAAE,MAAM,IAAI,iBAAiB,GAAC,YAAY,GAAC,OAA4E,CAAC;AAEtK,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,KAAK,EAAC,WAAW,EAAC,MAAM,EAAC,WAAW,CAAC,QAAQ,CAAC,GAAE,QAAQ,CAAC;IAAC,YAAY,CAAC,EAAC,wBAAwB,CAAA;CAAC,CAAC,CAWtI;AACD,wBAAgB,yBAAyB,CAAC,KAAK,EAAC,WAAW,GAAE,IAAI,CAKhE;AAED;mFACmF;AACnF,wBAAgB,uBAAuB,CAAC,KAAK,EAAC,WAAW,GAAE,SAAS,gBAAgB,EAAE,CAcrF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export const relationshipFamily = (family) => family === 'dependencywheel' || family === 'arcdiagram' || family === 'chord';
|
|
2
|
+
const text = (value, max) => typeof value === 'string' && value.length > 0 && value.length <= max;
|
|
3
|
+
/** Own the public Core metadata without recomputing totals or projecting geometry. */
|
|
4
|
+
export function ownRelationshipPoint(point, family) {
|
|
5
|
+
const value = point.relationship;
|
|
6
|
+
if (!relationshipFamily(family)) {
|
|
7
|
+
if (value !== undefined)
|
|
8
|
+
throw Error('Unexpected relationship metadata');
|
|
9
|
+
return {};
|
|
10
|
+
}
|
|
11
|
+
if (!value || point.value < 0 || value.geometryOmitted !== undefined && value.geometryOmitted !== true || value.geometryOmitted && point.hit !== undefined)
|
|
12
|
+
throw Error('Invalid relationship metadata');
|
|
13
|
+
const omitted = value.geometryOmitted ? { geometryOmitted: true } : {};
|
|
14
|
+
if (value.type === 'node') {
|
|
15
|
+
if (!text(point.label, 256) || ![value.incoming, value.outgoing, value.incident].every(n => Number.isFinite(n) && n >= 0) || point.value !== value.incident)
|
|
16
|
+
throw Error('Invalid relationship totals');
|
|
17
|
+
return { relationship: { type: 'node', incoming: value.incoming, outgoing: value.outgoing, incident: value.incident, ...omitted } };
|
|
18
|
+
}
|
|
19
|
+
if (value.type !== 'link' || !text(value.from, 128) || !text(value.to, 128) || value.from === value.to || !text(value.fromLabel, 256) || !text(value.toLabel, 256) || value.directed !== (family === 'dependencywheel') || point.incomplete !== undefined || point.value === 0 && !value.geometryOmitted)
|
|
20
|
+
throw Error('Invalid relationship endpoints');
|
|
21
|
+
return { relationship: { type: 'link', from: value.from, to: value.to, fromLabel: value.fromLabel, toLabel: value.toLabel, directed: value.directed, ...omitted } };
|
|
22
|
+
}
|
|
23
|
+
export function validateRelationshipScene(scene) {
|
|
24
|
+
if (!relationshipFamily(scene.family))
|
|
25
|
+
return;
|
|
26
|
+
let nodes = 0, links = 0;
|
|
27
|
+
for (const point of scene.observations) {
|
|
28
|
+
if (point.relationship?.type === 'node')
|
|
29
|
+
nodes++;
|
|
30
|
+
else if (point.relationship?.type === 'link')
|
|
31
|
+
links++;
|
|
32
|
+
else
|
|
33
|
+
throw Error('Missing relationship metadata');
|
|
34
|
+
}
|
|
35
|
+
if (nodes > 64 || links > 256 || scene.observations.length > 320 || (scene.annotations?.length ?? 0) > 64 || scene.grid.length || scene.labels.length || scene.yLabels?.length || scene.references?.length)
|
|
36
|
+
throw Error('Invalid relationship frame budget or unsupported axes');
|
|
37
|
+
}
|
|
38
|
+
/** Text boxes are presentation constraints, not source values or projected arcs.
|
|
39
|
+
* Core supplies a requested width; the native label must fit around its anchor. */
|
|
40
|
+
export function relationshipAnnotations(scene) {
|
|
41
|
+
if (!relationshipFamily(scene.family))
|
|
42
|
+
return scene.annotations ?? [];
|
|
43
|
+
const allocated = [];
|
|
44
|
+
if ((scene.annotations?.length ?? 0) > 64)
|
|
45
|
+
throw Error('Relationship label budget exceeded');
|
|
46
|
+
return (scene.annotations ?? []).flatMap(annotation => {
|
|
47
|
+
const box = annotation.box;
|
|
48
|
+
if (!box)
|
|
49
|
+
return [annotation];
|
|
50
|
+
if (![annotation.x, annotation.y, box.width, box.height].every(Number.isFinite) || annotation.x < 0 || annotation.x > scene.width || annotation.y < 0 || annotation.y > scene.height || box.width <= 0 || box.width > 240 || box.height <= 0 || box.height > 64)
|
|
51
|
+
throw Error('Invalid relationship text box');
|
|
52
|
+
const width = Math.min(box.width, 2 * annotation.x, 2 * (scene.width - annotation.x)), height = Math.min(box.height, 2 * annotation.y, 2 * (scene.height - annotation.y));
|
|
53
|
+
if (width < 16 || height < 12)
|
|
54
|
+
return [];
|
|
55
|
+
const rect = { left: annotation.x - width / 2, right: annotation.x + width / 2, top: annotation.y - height / 2, bottom: annotation.y + height / 2 };
|
|
56
|
+
if (allocated.some(previous => rect.left < previous.right + 2 && rect.right > previous.left - 2 && rect.top < previous.bottom + 2 && rect.bottom > previous.top - 2))
|
|
57
|
+
return [];
|
|
58
|
+
allocated.push(rect);
|
|
59
|
+
return [{ ...annotation, box: { ...box, width, height } }];
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=relationship-scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship-scene.js","sourceRoot":"","sources":["../../src/library/relationship-scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { NativeScene, NativeReference, DatumId } from './contracts.js';
|
|
2
|
+
export declare function pointPaint(scene: NativeScene): ReadonlyMap<string, string>;
|
|
3
|
+
export declare function pointOverrideColor(scene: NativeScene, id: DatumId): string | undefined;
|
|
4
|
+
export declare function paintGroups<T extends {
|
|
5
|
+
readonly pointId?: string;
|
|
6
|
+
}>(seriesId: string, baseColor: string, items: readonly T[], overrides: ReadonlyMap<string, string>): ReadonlyMap<string, readonly T[]>;
|
|
7
|
+
/** Same-colour paint commutes; keep colour runs ordered and each path disjoint.
|
|
8
|
+
* Coarse cell masks bound work independently of the number of prior circles. */
|
|
9
|
+
export declare function circlePaintBatches<T extends {
|
|
10
|
+
readonly pointId?: string;
|
|
11
|
+
readonly cx: number;
|
|
12
|
+
readonly cy: number;
|
|
13
|
+
readonly radius: number;
|
|
14
|
+
}>(seriesId: string, baseColor: string, items: readonly T[], overrides: ReadonlyMap<string, string>, padding?: number): readonly (readonly [string, readonly T[]])[];
|
|
15
|
+
/** Preserve paint order; alpha and stroked rectangles also need disjoint bounds. */
|
|
16
|
+
export declare function barPaintBatches<T extends {
|
|
17
|
+
readonly pointId?: string;
|
|
18
|
+
readonly x: number;
|
|
19
|
+
readonly y: number;
|
|
20
|
+
readonly width: number;
|
|
21
|
+
readonly height: number;
|
|
22
|
+
}>(seriesId: string, baseColor: string, items: readonly T[], overrides: ReadonlyMap<string, string>, separateOverlaps: boolean, padding?: number): readonly (readonly [string, readonly T[]])[];
|
|
23
|
+
export declare function referencePaint(references: readonly NativeReference[] | undefined, transform: Readonly<{
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
sx: number;
|
|
27
|
+
sy: number;
|
|
28
|
+
}>): string;
|
|
29
|
+
//# sourceMappingURL=scene-paint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-paint.d.ts","sourceRoot":"","sources":["../../src/library/scene-paint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,eAAe,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAIxE,wBAAgB,UAAU,CAAC,KAAK,EAAC,WAAW,GAAE,WAAW,CAAC,MAAM,EAAC,MAAM,CAAC,CAEvE;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE,EAAC,OAAO,GAAE,MAAM,GAAC,SAAS,CAAgD;AACjI,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,MAAM,CAAA;CAAC,EAAE,QAAQ,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,SAAS,CAAC,EAAE,EAAC,SAAS,EAAC,WAAW,CAAC,MAAM,EAAC,MAAM,CAAC,GAAE,WAAW,CAAC,MAAM,EAAC,SAAS,CAAC,EAAE,CAAC,CAI3L;AACD;gFACgF;AAChF,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,EAAE,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,EAAE,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAA;CAAC,EAAE,QAAQ,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,SAAS,CAAC,EAAE,EAAC,SAAS,EAAC,WAAW,CAAC,MAAM,EAAC,MAAM,CAAC,EAAC,OAAO,SAAE,GAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAiCpR;AACD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,CAAC,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,CAAC,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,KAAK,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAA;CAAC,EAAE,QAAQ,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,SAAS,CAAC,EAAE,EAAC,SAAS,EAAC,WAAW,CAAC,MAAM,EAAC,MAAM,CAAC,EAAC,gBAAgB,EAAC,OAAO,EAAC,OAAO,SAAE,GAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAc9T;AACD,wBAAgB,cAAc,CAAC,UAAU,EAAC,SAAS,eAAe,EAAE,GAAC,SAAS,EAAC,SAAS,EAAC,QAAQ,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAA;CAAC,CAAC,GAAE,MAAM,CAMjJ"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { identityKey } from './contracts.js';
|
|
2
|
+
const colors = new WeakMap();
|
|
3
|
+
export function pointPaint(scene) {
|
|
4
|
+
let cached = colors.get(scene);
|
|
5
|
+
if (!cached) {
|
|
6
|
+
cached = new Map((scene.points ?? []).map(point => [identityKey(point), point.color]));
|
|
7
|
+
colors.set(scene, cached);
|
|
8
|
+
}
|
|
9
|
+
return cached;
|
|
10
|
+
}
|
|
11
|
+
export function pointOverrideColor(scene, id) { return pointPaint(scene).get(identityKey(id)); }
|
|
12
|
+
export function paintGroups(seriesId, baseColor, items, overrides) {
|
|
13
|
+
const groups = new Map();
|
|
14
|
+
for (const primitive of items) {
|
|
15
|
+
const color = primitive.pointId === undefined ? baseColor : overrides.get(identityKey({ seriesId, pointId: primitive.pointId })) ?? baseColor;
|
|
16
|
+
const group = groups.get(color);
|
|
17
|
+
if (group)
|
|
18
|
+
group.push(primitive);
|
|
19
|
+
else
|
|
20
|
+
groups.set(color, [primitive]);
|
|
21
|
+
}
|
|
22
|
+
return groups;
|
|
23
|
+
}
|
|
24
|
+
/** Same-colour paint commutes; keep colour runs ordered and each path disjoint.
|
|
25
|
+
* Coarse cell masks bound work independently of the number of prior circles. */
|
|
26
|
+
export function circlePaintBatches(seriesId, baseColor, items, overrides, padding = 2) {
|
|
27
|
+
const batches = [];
|
|
28
|
+
let runColor;
|
|
29
|
+
const reusable = [], cells = new Map(), occupied = new Uint32Array(32), cellSize = Math.max(16, padding * 2);
|
|
30
|
+
for (const circle of items) {
|
|
31
|
+
const color = circle.pointId === undefined ? baseColor : overrides.get(identityKey({ seriesId, pointId: circle.pointId })) ?? baseColor;
|
|
32
|
+
if (color !== runColor) {
|
|
33
|
+
runColor = color;
|
|
34
|
+
reusable.length = 0;
|
|
35
|
+
cells.clear();
|
|
36
|
+
}
|
|
37
|
+
// Include the half stroke and the caller's native-pixel rasterisation guard.
|
|
38
|
+
const radius = circle.radius + padding;
|
|
39
|
+
const left = Math.floor((circle.cx - radius) / cellSize), right = Math.floor((circle.cx + radius) / cellSize), top = Math.floor((circle.cy - radius) / cellSize), bottom = Math.floor((circle.cy + radius) / cellSize);
|
|
40
|
+
if ((right - left + 1) * (bottom - top + 1) > 64) {
|
|
41
|
+
batches.push([color, [circle]]);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const keys = [], words = Math.min(32, (reusable.length >>> 5) + 1);
|
|
45
|
+
occupied.fill(0);
|
|
46
|
+
for (let x = left; x <= right; x++)
|
|
47
|
+
for (let y = top; y <= bottom; y++) {
|
|
48
|
+
const key = x + ':' + y;
|
|
49
|
+
keys.push(key);
|
|
50
|
+
const mask = cells.get(key);
|
|
51
|
+
if (mask)
|
|
52
|
+
for (let word = 0; word < words; word++)
|
|
53
|
+
occupied[word] = occupied[word] | mask[word];
|
|
54
|
+
}
|
|
55
|
+
let index = -1;
|
|
56
|
+
for (let word = 0; word < words; word++) {
|
|
57
|
+
const free = (~occupied[word]) >>> 0;
|
|
58
|
+
if (free) {
|
|
59
|
+
index = word * 32 + 31 - Math.clz32(free & -free);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Never reuse an unindexed fallback path. Every reusable path occupies
|
|
64
|
+
// disjoint cells, a conservative guarantee of disjoint guarded bounds.
|
|
65
|
+
if (index < 0) {
|
|
66
|
+
batches.push([color, [circle]]);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
let group = reusable[index];
|
|
70
|
+
if (!group) {
|
|
71
|
+
group = [];
|
|
72
|
+
reusable.push(group);
|
|
73
|
+
batches.push([color, group]);
|
|
74
|
+
}
|
|
75
|
+
group.push(circle);
|
|
76
|
+
const word = index >>> 5, bit = 1 << (index & 31);
|
|
77
|
+
for (const key of keys) {
|
|
78
|
+
let mask = cells.get(key);
|
|
79
|
+
if (!mask) {
|
|
80
|
+
mask = new Uint32Array(32);
|
|
81
|
+
cells.set(key, mask);
|
|
82
|
+
}
|
|
83
|
+
mask[word] = mask[word] | bit;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return batches;
|
|
87
|
+
}
|
|
88
|
+
/** Preserve paint order; alpha and stroked rectangles also need disjoint bounds. */
|
|
89
|
+
export function barPaintBatches(seriesId, baseColor, items, overrides, separateOverlaps, padding = 0) {
|
|
90
|
+
const batches = [];
|
|
91
|
+
let batch, left = 0, top = 0, right = 0, bottom = 0;
|
|
92
|
+
for (const bar of items) {
|
|
93
|
+
const color = bar.pointId === undefined ? baseColor : overrides.get(identityKey({ seriesId, pointId: bar.pointId })) ?? baseColor;
|
|
94
|
+
const disjoint = !separateOverlaps || bar.x + bar.width + padding < left || bar.x - padding > right || bar.y + bar.height + padding < top || bar.y - padding > bottom;
|
|
95
|
+
if (!batch || batch[0] !== color || !disjoint) {
|
|
96
|
+
batch = [color, [bar]];
|
|
97
|
+
batches.push(batch);
|
|
98
|
+
left = bar.x - padding;
|
|
99
|
+
top = bar.y - padding;
|
|
100
|
+
right = bar.x + bar.width + padding;
|
|
101
|
+
bottom = bar.y + bar.height + padding;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
batch[1].push(bar);
|
|
105
|
+
if (separateOverlaps) {
|
|
106
|
+
left = Math.min(left, bar.x - padding);
|
|
107
|
+
top = Math.min(top, bar.y - padding);
|
|
108
|
+
right = Math.max(right, bar.x + bar.width + padding);
|
|
109
|
+
bottom = Math.max(bottom, bar.y + bar.height + padding);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return batches;
|
|
114
|
+
}
|
|
115
|
+
export function referencePaint(references, transform) {
|
|
116
|
+
return (references ?? []).filter(reference => reference.status === 'visible').map(reference => {
|
|
117
|
+
if (reference.status !== 'visible')
|
|
118
|
+
return '';
|
|
119
|
+
const { line } = reference, dash = reference.dash ?? 'dash', paint = `stroke="${reference.color ?? '#8B6CCE'}" stroke-width="${reference.width ?? 1.5}"${dash === 'solid' ? '' : ` stroke-dasharray="${dash === 'dot' ? '1 4' : '6 4'}"`}${dash === 'dot' ? ' stroke-linecap="round"' : ''}`;
|
|
120
|
+
return `<path d="M${transform.x + line.x1 * transform.sx} ${transform.y + line.y1 * transform.sy}L${transform.x + line.x2 * transform.sx} ${transform.y + line.y2 * transform.sy}" fill="none" ${paint}/>`;
|
|
121
|
+
}).join('');
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=scene-paint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-paint.js","sourceRoot":"","sources":["../../src/library/scene-paint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NativePointAppearance, NativeReference, NativeReferenceStyle, NativeReferenceBand, NativeReferenceBandStyle, NativeScene } from './contracts.js';
|
|
2
|
+
export declare function ownPrimitiveId(input: object): string | undefined;
|
|
3
|
+
export declare function ownReferenceStyles(input: readonly NativeReferenceStyle[]): readonly NativeReferenceStyle[];
|
|
4
|
+
export declare function ownReferences(input: readonly NativeReference[] | undefined, scene: Pick<NativeScene, 'width' | 'height' | 'family' | 'bulletOrientation' | 'mixedAxes'>): readonly NativeReference[] | undefined;
|
|
5
|
+
export declare function ownPointAppearance(input: readonly NativePointAppearance[] | undefined): readonly NativePointAppearance[] | undefined;
|
|
6
|
+
export declare function samePointAppearance(a: readonly NativePointAppearance[] | undefined, b: readonly NativePointAppearance[] | undefined): boolean;
|
|
7
|
+
export declare function sameReferenceStyle(a: NativeReferenceStyle, b: NativeReferenceStyle): boolean;
|
|
8
|
+
export declare function sameReferencePaint(a: NativeReferenceStyle, b: NativeReferenceStyle): boolean;
|
|
9
|
+
export declare function ownReferenceBandStyles(input: readonly NativeReferenceBandStyle[]): readonly NativeReferenceBandStyle[];
|
|
10
|
+
export declare function ownReferenceBands(input: readonly NativeReferenceBand[] | undefined, scene: Pick<NativeScene, 'width' | 'height' | 'family' | 'mixedAxes'>): readonly NativeReferenceBand[] | undefined;
|
|
11
|
+
export declare function sameReferenceBandPaint(a: NativeReferenceBandStyle, b: NativeReferenceBandStyle): boolean;
|
|
12
|
+
export declare function sameReferenceBandStyle(a: NativeReferenceBandStyle, b: NativeReferenceBandStyle): boolean;
|
|
13
|
+
//# sourceMappingURL=scene-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-styles.d.ts","sourceRoot":"","sources":["../../src/library/scene-styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,qBAAqB,EAAC,eAAe,EAAC,oBAAoB,EAAC,mBAAmB,EAAC,wBAAwB,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAMxJ,wBAAgB,cAAc,CAAC,KAAK,EAAC,MAAM,GAAE,MAAM,GAAC,SAAS,CAA2K;AAaxO,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,SAAS,oBAAoB,EAAE,GAAE,SAAS,oBAAoB,EAAE,CAGxG;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAC,SAAS,eAAe,EAAE,GAAC,SAAS,EAAC,KAAK,EAAC,IAAI,CAAC,WAAW,EAAC,OAAO,GAAC,QAAQ,GAAC,QAAQ,GAAC,mBAAmB,GAAC,WAAW,CAAC,GAAE,SAAS,eAAe,EAAE,GAAC,SAAS,CAc/L;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,SAAS,qBAAqB,EAAE,GAAC,SAAS,GAAE,SAAS,qBAAqB,EAAE,GAAC,SAAS,CAS9H;AACD,wBAAgB,mBAAmB,CAAC,CAAC,EAAC,SAAS,qBAAqB,EAAE,GAAC,SAAS,EAAC,CAAC,EAAC,SAAS,qBAAqB,EAAE,GAAC,SAAS,GAAE,OAAO,CAAgL;AACtT,wBAAgB,kBAAkB,CAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,oBAAoB,GAAE,OAAO,CAAoD;AAC7I,wBAAgB,kBAAkB,CAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,oBAAoB,GAAE,OAAO,CAA+D;AAaxJ,wBAAgB,sBAAsB,CAAC,KAAK,EAAC,SAAS,wBAAwB,EAAE,GAAE,SAAS,wBAAwB,EAAE,CAEpH;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAC,SAAS,mBAAmB,EAAE,GAAC,SAAS,EAAC,KAAK,EAAC,IAAI,CAAC,WAAW,EAAC,OAAO,GAAC,QAAQ,GAAC,QAAQ,GAAC,WAAW,CAAC,GAAE,SAAS,mBAAmB,EAAE,GAAC,SAAS,CAcvL;AACD,wBAAgB,sBAAsB,CAAC,CAAC,EAAC,wBAAwB,EAAC,CAAC,EAAC,wBAAwB,GAAE,OAAO,CAAkD;AACvJ,wBAAgB,sBAAsB,CAAC,CAAC,EAAC,wBAAwB,EAAC,CAAC,EAAC,wBAAwB,GAAE,OAAO,CAAwD"}
|