@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,40 @@
|
|
|
1
|
+
import type { PlanBulletFrame, PlanVariwideFrame, PlanBulletValue, PlanVariwideValue } from '@neural-charts/core/plan';
|
|
2
|
+
export interface ComparisonFields {
|
|
3
|
+
readonly bulletData?: PlanBulletFrame['bulletData'];
|
|
4
|
+
readonly bulletBands?: PlanBulletFrame['bulletBands'];
|
|
5
|
+
/** Band IDs whose colour was omitted by the caller; renderer resolves the theme. */
|
|
6
|
+
readonly automaticBulletBands?: readonly string[];
|
|
7
|
+
readonly bulletTargets?: PlanBulletFrame['bulletTargets'];
|
|
8
|
+
readonly bulletOrientation?: PlanBulletFrame['bulletOrientation'];
|
|
9
|
+
readonly bulletGrid?: PlanBulletFrame['bulletGrid'];
|
|
10
|
+
readonly categoryBands?: PlanVariwideFrame['categoryBands'];
|
|
11
|
+
readonly variwideData?: PlanVariwideFrame['variwideData'];
|
|
12
|
+
readonly variwideLayout?: PlanVariwideFrame['variwideLayout'];
|
|
13
|
+
}
|
|
14
|
+
export interface ComparisonPoint {
|
|
15
|
+
readonly id: Readonly<{
|
|
16
|
+
seriesId: string;
|
|
17
|
+
pointId: string;
|
|
18
|
+
}>;
|
|
19
|
+
readonly value: number;
|
|
20
|
+
readonly bullet?: PlanBulletValue;
|
|
21
|
+
readonly variwide?: PlanVariwideValue;
|
|
22
|
+
}
|
|
23
|
+
export interface ComparisonScene extends ComparisonFields {
|
|
24
|
+
readonly family: string;
|
|
25
|
+
readonly width: number;
|
|
26
|
+
readonly height: number;
|
|
27
|
+
readonly series: readonly Readonly<{
|
|
28
|
+
id: string;
|
|
29
|
+
}>[];
|
|
30
|
+
readonly legend?: readonly Readonly<{
|
|
31
|
+
id: string;
|
|
32
|
+
visible: boolean;
|
|
33
|
+
}>[];
|
|
34
|
+
readonly observations: readonly ComparisonPoint[];
|
|
35
|
+
}
|
|
36
|
+
export declare function ownComparisonPoint(point: ComparisonPoint, family: string): Pick<ComparisonPoint, 'bullet' | 'variwide'>;
|
|
37
|
+
/** Defensive ownership only. The planner remains the sole owner of domains,
|
|
38
|
+
* weighted allocation and geometry; null source values are never zero-filled. */
|
|
39
|
+
export declare function ownComparisonScene(scene: ComparisonScene): ComparisonFields;
|
|
40
|
+
//# sourceMappingURL=comparison-scene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparison-scene.d.ts","sourceRoot":"","sources":["../../src/library/comparison-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,iBAAiB,EAAC,eAAe,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAElH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IACrD,oFAAoF;IACpF,QAAQ,CAAC,oBAAoB,CAAC,EAAC,SAAS,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IACzD,QAAQ,CAAC,iBAAiB,CAAC,EAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACjE,QAAQ,CAAC,UAAU,CAAC,EAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC3D,QAAQ,CAAC,YAAY,CAAC,EAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;CAC9D;AACD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAC,QAAQ,CAAC;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,MAAM,CAAA;KAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAC,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAC,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAC,iBAAiB,CAAC;CACtC;AACD,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,KAAK,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAC;IACpE,QAAQ,CAAC,MAAM,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAA;KAAC,CAAC,EAAE,CAAC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,OAAO,CAAA;KAAC,CAAC,EAAE,CAAC;IAClE,QAAQ,CAAC,YAAY,EAAC,SAAS,eAAe,EAAE,CAAC;CAClD;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,eAAe,EAAC,MAAM,EAAC,MAAM,GAAE,IAAI,CAAC,eAAe,EAAC,QAAQ,GAAC,UAAU,CAAC,CAYhH;AAED;iFACiF;AACjF,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,eAAe,GAAE,gBAAgB,CA6BzE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const finite = (value) => typeof value === 'number' && Number.isFinite(value);
|
|
2
|
+
const text = (value, max = 128) => typeof value === 'string' && value.length > 0 && value.length <= max;
|
|
3
|
+
const key = (id) => JSON.stringify([id.seriesId, id.pointId]);
|
|
4
|
+
const ink = (value) => typeof value === 'string' && /^#[0-9a-f]{6}(?:[0-9a-f]{2})?$/i.test(value);
|
|
5
|
+
export function ownComparisonPoint(point, family) {
|
|
6
|
+
if (family === 'bullet' || point.bullet !== undefined) {
|
|
7
|
+
const value = point.bullet;
|
|
8
|
+
if (family !== 'bullet' || !value || point.variwide !== undefined || !['measure', 'target'].includes(value.type) || value.measure !== null && !finite(value.measure) || value.target !== undefined && value.target !== null && !finite(value.target) || point.value !== (value.type === 'measure' ? value.measure : value.target) || value.type === 'measure' && value.measure === null || value.type === 'target' && typeof value.target !== 'number')
|
|
9
|
+
throw Error('Invalid bullet observation');
|
|
10
|
+
return { bullet: { type: value.type, measure: value.measure, ...(value.target === undefined ? {} : { target: value.target }) } };
|
|
11
|
+
}
|
|
12
|
+
if (family === 'variwide' || point.variwide !== undefined) {
|
|
13
|
+
const value = point.variwide;
|
|
14
|
+
if (family !== 'variwide' || !value || !finite(value.z) || value.z < 0 || !finite(value.share) || value.share < 0 || value.share > 1 || typeof value.zeroWidth !== 'boolean' || value.zeroWidth !== (value.z === 0) || typeof value.geometryOmitted !== 'boolean')
|
|
15
|
+
throw Error('Invalid proportional observation');
|
|
16
|
+
return { variwide: { z: value.z, share: value.share, zeroWidth: value.zeroWidth, geometryOmitted: value.geometryOmitted } };
|
|
17
|
+
}
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
/** Defensive ownership only. The planner remains the sole owner of domains,
|
|
21
|
+
* weighted allocation and geometry; null source values are never zero-filled. */
|
|
22
|
+
export function ownComparisonScene(scene) {
|
|
23
|
+
const hasBullet = scene.bulletData !== undefined || scene.bulletBands !== undefined || scene.automaticBulletBands !== undefined || scene.bulletTargets !== undefined || scene.bulletOrientation !== undefined || scene.bulletGrid !== undefined;
|
|
24
|
+
const hasVariwide = scene.variwideData !== undefined || scene.categoryBands !== undefined || scene.variwideLayout !== undefined;
|
|
25
|
+
if (!hasBullet && !hasVariwide) {
|
|
26
|
+
if (scene.family === 'bullet' || scene.family === 'variwide')
|
|
27
|
+
throw Error('Missing comparison source');
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
const visibility = new Map((scene.legend ?? scene.series.map(s => ({ id: s.id, visible: true }))).map(s => [s.id, s.visible])), ids = new Set();
|
|
31
|
+
const identity = (id, visible) => { if (!id || !text(id.seriesId) || !text(id.pointId) || !visibility.has(id.seriesId) || typeof visible !== 'boolean' || visibility.get(id.seriesId) !== visible || ids.has(key(id)))
|
|
32
|
+
throw Error('Invalid comparison source identity'); ids.add(key(id)); return { seriesId: id.seriesId, pointId: id.pointId }; };
|
|
33
|
+
const line = (value) => { if (!value || ![value.x1, value.y1, value.x2, value.y2].every(finite) || Math.min(value.x1, value.x2) < 0 || Math.max(value.x1, value.x2) > scene.width || Math.min(value.y1, value.y2) < 0 || Math.max(value.y1, value.y2) > scene.height)
|
|
34
|
+
throw Error('Invalid comparison line'); return { x1: value.x1, y1: value.y1, x2: value.x2, y2: value.y2 }; };
|
|
35
|
+
if (hasBullet) {
|
|
36
|
+
if (scene.family !== 'bullet' || hasVariwide || !Array.isArray(scene.bulletData) || scene.bulletData.length > 1024 || !Array.isArray(scene.bulletBands) || scene.bulletBands.length > 32 || !Array.isArray(scene.bulletTargets) || scene.bulletTargets.length > 1024 || !Array.isArray(scene.bulletGrid) || scene.bulletGrid.length > 32 || !['horizontal', 'vertical'].includes(scene.bulletOrientation ?? ''))
|
|
37
|
+
throw Error('Invalid bullet frame');
|
|
38
|
+
const perSeries = new Map(), categoryIds = new Set();
|
|
39
|
+
const bulletData = scene.bulletData.map(p => { const id = identity(p.id, p.visible), categories = perSeries.get(id.seriesId) ?? new Set(); if (!text(p.categoryId, 256) || categories.has(p.categoryId) || p.measure !== null && !finite(p.measure) || p.target !== undefined && p.target !== null && !finite(p.target))
|
|
40
|
+
throw Error('Invalid bullet source'); categories.add(p.categoryId); categoryIds.add(p.categoryId); perSeries.set(id.seriesId, categories); if (categories.size > 64 || categoryIds.size > 64 || perSeries.size > 16)
|
|
41
|
+
throw Error('Bullet source budget exceeded'); return { id, categoryId: p.categoryId, measure: p.measure, ...(p.target === undefined ? {} : { target: p.target }), visible: p.visible }; });
|
|
42
|
+
const source = new Map(bulletData.map(p => [key(p.id), p]));
|
|
43
|
+
for (const p of scene.observations) {
|
|
44
|
+
const s = source.get(key(p.id)), v = ownComparisonPoint(p, scene.family).bullet;
|
|
45
|
+
if (!s || !s.visible || !v || s.measure !== v.measure || s.target !== v.target)
|
|
46
|
+
throw Error('Bullet observation differs from source');
|
|
47
|
+
}
|
|
48
|
+
const bands = new Set(), targets = new Set();
|
|
49
|
+
const bulletBands = scene.bulletBands.map(b => { if (!text(b.id) || bands.has(b.id) || !finite(b.from) || !finite(b.to) || b.to <= b.from || typeof b.label !== 'string' || b.label.length > 256 || !ink(b.color) || !['visible', 'outside'].includes(b.status) || (b.status === 'visible') !== (b.rect !== undefined))
|
|
50
|
+
throw Error('Invalid bullet band'); bands.add(b.id); const r = b.rect; if (r && (![r.x, r.y, r.width, r.height].every(finite) || r.x < 0 || r.y < 0 || r.width < 0 || r.height < 0 || r.x + r.width > scene.width || r.y + r.height > scene.height))
|
|
51
|
+
throw Error('Invalid bullet band bounds'); return { id: b.id, from: b.from, to: b.to, label: b.label, color: b.color, status: b.status, ...(r ? { rect: { x: r.x, y: r.y, width: r.width, height: r.height } } : {}) }; });
|
|
52
|
+
const bulletTargets = scene.bulletTargets.map(t => { const s = source.get(key(t.id)); if (!s || !s.visible || targets.has(key(t.id)) || !finite(t.value) || s.target !== t.value || !['visible', 'outside'].includes(t.status) || (t.status === 'visible') !== (t.line !== undefined))
|
|
53
|
+
throw Error('Invalid bullet target'); targets.add(key(t.id)); return { id: { seriesId: t.id.seriesId, pointId: t.id.pointId }, value: t.value, status: t.status, ...(t.line ? { line: line(t.line) } : {}) }; });
|
|
54
|
+
const automatic = scene.automaticBulletBands;
|
|
55
|
+
if (automatic !== undefined && (!Array.isArray(automatic) || automatic.length > 32 || new Set(automatic).size !== automatic.length || automatic.some(id => !bands.has(id))))
|
|
56
|
+
throw Error('Invalid automatic bullet band IDs');
|
|
57
|
+
return { bulletData, bulletBands, ...(automatic ? { automaticBulletBands: [...automatic] } : {}), bulletTargets, bulletOrientation: scene.bulletOrientation, bulletGrid: scene.bulletGrid.map(line) };
|
|
58
|
+
}
|
|
59
|
+
if (scene.family !== 'variwide' || !Array.isArray(scene.variwideData) || scene.variwideData.length > 64 || !Array.isArray(scene.categoryBands) || scene.categoryBands.length > 64 || !scene.variwideLayout || !['ready', 'no-positive-width'].includes(scene.variwideLayout.status) || typeof scene.variwideLayout.incomplete !== 'boolean')
|
|
60
|
+
throw Error('Invalid proportional frame');
|
|
61
|
+
if (scene.series.length > 1 || (scene.legend?.length ?? 0) > 1)
|
|
62
|
+
throw Error('Proportional layout supports one source series');
|
|
63
|
+
const sourceCategories = new Set();
|
|
64
|
+
const variwideData = scene.variwideData.map(p => { const id = identity(p.id, p.visible); if (!text(p.categoryId, 256) || sourceCategories.has(p.categoryId) || p.y !== null && !finite(p.y) || p.z !== null && (!finite(p.z) || p.z < 0) || p.missingValue !== (p.y === null) || p.missingWidth !== (p.z === null))
|
|
65
|
+
throw Error('Invalid proportional source'); sourceCategories.add(p.categoryId); return { id, categoryId: p.categoryId, y: p.y, z: p.z, visible: p.visible, missingValue: p.missingValue, missingWidth: p.missingWidth }; });
|
|
66
|
+
const source = new Map(variwideData.map(p => [key(p.id), p]));
|
|
67
|
+
for (const p of scene.observations) {
|
|
68
|
+
const s = source.get(key(p.id)), v = ownComparisonPoint(p, scene.family).variwide;
|
|
69
|
+
if (!s || !s.visible || !v || s.y !== p.value || s.z !== v.z)
|
|
70
|
+
throw Error('Proportional observation differs from source');
|
|
71
|
+
}
|
|
72
|
+
const categories = new Set();
|
|
73
|
+
const categoryBands = scene.categoryBands.map(b => { if (!text(b.categoryId, 256) || categories.has(b.categoryId) || typeof b.label !== 'string' || b.label.length > 256 || b.pointId !== undefined && !text(b.pointId) || b.z !== null && (!finite(b.z) || b.z < 0) || !['visible', 'zero', 'unknown', 'below-precision', 'hidden', 'no-positive-width'].includes(b.status) || (b.left === null) !== (b.right === null) || b.left !== null && (!finite(b.left) || !finite(b.right) || b.left < 0 || b.right < b.left || b.right > scene.width))
|
|
74
|
+
throw Error('Invalid proportional band'); categories.add(b.categoryId); return { categoryId: b.categoryId, label: b.label, ...(b.pointId === undefined ? {} : { pointId: b.pointId }), z: b.z, left: b.left, right: b.right, status: b.status }; });
|
|
75
|
+
return { variwideData, categoryBands, variwideLayout: { status: scene.variwideLayout.status, incomplete: scene.variwideLayout.incomplete } };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=comparison-scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparison-scene.js","sourceRoot":"","sources":["../../src/library/comparison-scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { NativeScene } from './contracts.js';
|
|
2
|
+
export interface NativeMixedRangesLayout {
|
|
3
|
+
readonly mode: 'range-line';
|
|
4
|
+
readonly series: readonly Readonly<{
|
|
5
|
+
id: string;
|
|
6
|
+
type: 'line' | 'arearange' | 'areasplinerange';
|
|
7
|
+
}>[];
|
|
8
|
+
}
|
|
9
|
+
export declare function ownMixedRanges(v: NativeMixedRangesLayout, s: NativeScene): NativeMixedRangesLayout;
|
|
10
|
+
export interface NativeStackGroupsLayout {
|
|
11
|
+
readonly groups: readonly Readonly<{
|
|
12
|
+
id: string;
|
|
13
|
+
label: string;
|
|
14
|
+
seriesIds: readonly string[];
|
|
15
|
+
}>[];
|
|
16
|
+
readonly placement: 'grouped';
|
|
17
|
+
readonly stacking: 'sum' | 'percent';
|
|
18
|
+
}
|
|
19
|
+
export interface NativeMixedYAxisFrame {
|
|
20
|
+
readonly domain: readonly [number, number] | null;
|
|
21
|
+
readonly displayed: readonly [number, number] | null;
|
|
22
|
+
readonly reversed: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface NativeMixedAxesLayout {
|
|
25
|
+
readonly mode: 'dual-y';
|
|
26
|
+
readonly primary: NativeMixedYAxisFrame;
|
|
27
|
+
readonly secondary: NativeMixedYAxisFrame;
|
|
28
|
+
readonly series: readonly Readonly<{
|
|
29
|
+
id: string;
|
|
30
|
+
yAxis: 'primary' | 'secondary';
|
|
31
|
+
}>[];
|
|
32
|
+
}
|
|
33
|
+
export declare function ownStackGroups(v: NativeStackGroupsLayout, s: NativeScene): NativeStackGroupsLayout;
|
|
34
|
+
export declare function ownMixedAxes(v: NativeMixedAxesLayout, s: NativeScene): NativeMixedAxesLayout;
|
|
35
|
+
//# sourceMappingURL=composition-scene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition-scene.d.ts","sourceRoot":"","sources":["../../src/library/composition-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,IAAI,EAAC,YAAY,CAAC;IAAA,QAAQ,CAAC,MAAM,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,MAAM,GAAC,WAAW,GAAC,iBAAiB,CAAA;KAAC,CAAC,EAAE,CAAC;CACtH;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAC,uBAAuB,EAAC,CAAC,EAAC,WAAW,GAAE,uBAAuB,CAO9F;AACD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,SAAS,MAAM,EAAE,CAAA;KAAC,CAAC,EAAE,CAAC;IAC1F,QAAQ,CAAC,SAAS,EAAC,SAAS,CAAC;IAAA,QAAQ,CAAC,QAAQ,EAAC,KAAK,GAAC,SAAS,CAAC;CAChE;AACD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAC,SAAQ,CAAC,MAAM,EAAC,MAAM,CAAC,GAAC,IAAI,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAC,SAAQ,CAAC,MAAM,EAAC,MAAM,CAAC,GAAC,IAAI,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAC,OAAO,CAAC;CAC3B;AACD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAC,QAAQ,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAC,qBAAqB,CAAC;IAAA,QAAQ,CAAC,SAAS,EAAC,qBAAqB,CAAC;IAChF,QAAQ,CAAC,MAAM,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,SAAS,GAAC,WAAW,CAAA;KAAC,CAAC,EAAE,CAAC;CAC9E;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAC,uBAAuB,EAAC,CAAC,EAAC,WAAW,GAAE,uBAAuB,CAQ9F;AAKD,wBAAgB,YAAY,CAAC,CAAC,EAAC,qBAAqB,EAAC,CAAC,EAAC,WAAW,GAAE,qBAAqB,CAOxF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export function ownMixedRanges(v, s) {
|
|
2
|
+
if (s.family !== 'mixed' || s.mixedAxes || !v || v.mode !== 'range-line' || !Array.isArray(v.series) || v.series.length < 2 || v.series.length > 16)
|
|
3
|
+
throw Error('Invalid coordinated interval layout');
|
|
4
|
+
const known = new Set((s.legend ?? s.series).map(x => x.id)), kinds = new Map();
|
|
5
|
+
for (const row of v.series) {
|
|
6
|
+
if (!row || !known.has(row.id) || kinds.has(row.id) || !['line', 'arearange', 'areasplinerange'].includes(row.type))
|
|
7
|
+
throw Error('Invalid original interval series');
|
|
8
|
+
kinds.set(row.id, row.type);
|
|
9
|
+
}
|
|
10
|
+
if (kinds.size !== known.size || !v.series.some(s => s.type === 'line') || !v.series.some(s => s.type !== 'line') || v.series.some(s => s.type === 'arearange') && v.series.some(s => s.type === 'areasplinerange'))
|
|
11
|
+
throw Error('Ambiguous interval composition');
|
|
12
|
+
for (const p of s.observations) {
|
|
13
|
+
const type = kinds.get(p.id.seriesId);
|
|
14
|
+
if (!type || type === 'line' && (p.lowValue !== undefined || p.highValue !== undefined) || type !== 'line' && (!Number.isFinite(p.lowValue) || !Number.isFinite(p.highValue) || p.lowValue > p.highValue || p.value !== p.lowValue / 2 + p.highValue / 2))
|
|
15
|
+
throw Error('Original interval endpoints were lost');
|
|
16
|
+
}
|
|
17
|
+
return { mode: 'range-line', series: v.series.map(s => ({ id: s.id, type: s.type })) };
|
|
18
|
+
}
|
|
19
|
+
function domain(v) { return v === null || Array.isArray(v) && v.length === 2 && v.every(Number.isFinite) && v[0] < v[1]; }
|
|
20
|
+
export function ownStackGroups(v, s) {
|
|
21
|
+
if (!['column', 'bar'].includes(s.family) || !v || v.placement !== 'grouped' || !['sum', 'percent'].includes(v.stacking) || !Array.isArray(v.groups) || v.groups.length < 1 || v.groups.length > 8)
|
|
22
|
+
throw Error('Invalid grouped stack layout');
|
|
23
|
+
const ids = new Set(), series = new Set(), known = new Set((s.legend ?? s.series).map(x => x.id));
|
|
24
|
+
const groups = v.groups.map(g => {
|
|
25
|
+
if (!g || typeof g.id !== 'string' || !g.id || g.id.length > 64 || ids.has(g.id) || typeof g.label !== 'string' || g.label.length > 200 || !Array.isArray(g.seriesIds) || g.seriesIds.length < 1 || g.seriesIds.length > 16)
|
|
26
|
+
throw Error('Invalid stack group');
|
|
27
|
+
ids.add(g.id);
|
|
28
|
+
for (const id of g.seriesIds) {
|
|
29
|
+
if (!known.has(id) || series.has(id))
|
|
30
|
+
throw Error('Invalid stack partition');
|
|
31
|
+
series.add(id);
|
|
32
|
+
}
|
|
33
|
+
return Object.freeze({ id: g.id, label: g.label, seriesIds: Object.freeze([...g.seriesIds]) });
|
|
34
|
+
});
|
|
35
|
+
if (known.size !== series.size || s.observations.some(p => !series.has(p.id.seriesId)))
|
|
36
|
+
throw Error('Incomplete stack ownership');
|
|
37
|
+
return Object.freeze({ placement: 'grouped', stacking: v.stacking, groups: Object.freeze(groups) });
|
|
38
|
+
}
|
|
39
|
+
function ownAxis(a) {
|
|
40
|
+
if (!a || !domain(a.domain) || !domain(a.displayed) || typeof a.reversed !== 'boolean' || a.domain === null && a.displayed !== null || a.domain !== null && a.displayed === null || a.domain && a.displayed && (a.displayed[0] < a.domain[0] || a.displayed[1] > a.domain[1]))
|
|
41
|
+
throw Error('Invalid mixed value scale');
|
|
42
|
+
return Object.freeze({ domain: a.domain === null ? null : Object.freeze([a.domain[0], a.domain[1]]), displayed: a.displayed === null ? null : Object.freeze([a.displayed[0], a.displayed[1]]), reversed: a.reversed });
|
|
43
|
+
}
|
|
44
|
+
export function ownMixedAxes(v, s) {
|
|
45
|
+
if (s.family !== 'mixed' || !v || v.mode !== 'dual-y' || !Array.isArray(v.series) || v.series.length < 2 || v.series.length > 16)
|
|
46
|
+
throw Error('Invalid mixed scale ownership');
|
|
47
|
+
const primary = ownAxis(v.primary), secondary = ownAxis(v.secondary), ids = new Set(), known = new Set((s.legend ?? s.series).map(x => x.id));
|
|
48
|
+
const series = v.series.map(item => { if (!item || !known.has(item.id) || ids.has(item.id) || !['primary', 'secondary'].includes(item.yAxis))
|
|
49
|
+
throw Error('Invalid mixed series scale'); ids.add(item.id); return Object.freeze({ id: item.id, yAxis: item.yAxis }); });
|
|
50
|
+
const byId = new Map(series.map(s => [s.id, s.yAxis]));
|
|
51
|
+
if (known.size !== ids.size || !series.some(s => s.yAxis === 'primary') || !series.some(s => s.yAxis === 'secondary') || s.observations.some(p => p.valueAxis !== byId.get(p.id.seriesId)))
|
|
52
|
+
throw Error('Mixed source values lost their scale identity');
|
|
53
|
+
return Object.freeze({ mode: 'dual-y', primary, secondary, series: Object.freeze(series) });
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=composition-scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition-scene.js","sourceRoot":"","sources":["../../src/library/composition-scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { NativeScene, Observation } from './contracts.js';
|
|
2
|
+
/** Bounded segment grid, built once per geometry revision. No allocation per move. */
|
|
3
|
+
export declare class ContourHitIndex {
|
|
4
|
+
private readonly scene;
|
|
5
|
+
private readonly bins;
|
|
6
|
+
private readonly seen;
|
|
7
|
+
private stamp;
|
|
8
|
+
private readonly columns;
|
|
9
|
+
private readonly rows;
|
|
10
|
+
constructor(scene: NativeScene);
|
|
11
|
+
private column;
|
|
12
|
+
private row;
|
|
13
|
+
pick(x: number, y: number, tolerance: number): Observation | null;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=contour-hit-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contour-hit-index.d.ts","sourceRoot":"","sources":["../../src/library/contour-hit-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE5D,sFAAsF;AACtF,qBAAa,eAAe;IAMd,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,KAAK,CAAG;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAI;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAI;gBACI,KAAK,EAAC,WAAW;IAwB9C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IACX,IAAI,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,GAAE,WAAW,GAAC,IAAI;CAa1D"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** Bounded segment grid, built once per geometry revision. No allocation per move. */
|
|
2
|
+
export class ContourHitIndex {
|
|
3
|
+
scene;
|
|
4
|
+
bins;
|
|
5
|
+
seen;
|
|
6
|
+
stamp = 0;
|
|
7
|
+
columns = 32;
|
|
8
|
+
rows = 32;
|
|
9
|
+
constructor(scene) {
|
|
10
|
+
this.scene = scene;
|
|
11
|
+
const bins = Array.from({ length: this.columns * this.rows }, () => []);
|
|
12
|
+
this.seen = new Uint32Array(scene.observations.length);
|
|
13
|
+
for (let i = 0; i < scene.observations.length; i++) {
|
|
14
|
+
const segment = scene.observations[i].contour;
|
|
15
|
+
if (!segment)
|
|
16
|
+
continue;
|
|
17
|
+
const a = segment.start, b = segment.end, dx = b.x - a.x, dy = b.y - a.y;
|
|
18
|
+
let column = this.column(a.x), row = this.row(a.y);
|
|
19
|
+
const endColumn = this.column(b.x), endRow = this.row(b.y), stepX = Math.sign(dx), stepY = Math.sign(dy);
|
|
20
|
+
const cellWidth = scene.width / this.columns, cellHeight = scene.height / this.rows;
|
|
21
|
+
const deltaX = dx === 0 ? Infinity : cellWidth / Math.abs(dx), deltaY = dy === 0 ? Infinity : cellHeight / Math.abs(dy);
|
|
22
|
+
let boundaryX = dx === 0 ? Infinity : ((stepX > 0 ? column + 1 : column) * cellWidth - a.x) / dx;
|
|
23
|
+
let boundaryY = dy === 0 ? Infinity : ((stepY > 0 ? row + 1 : row) * cellHeight - a.y) / dy;
|
|
24
|
+
// A straight segment traverses at most columns+rows cells, even diagonally.
|
|
25
|
+
for (let step = 0; step <= this.columns + this.rows; step++) {
|
|
26
|
+
bins[row * this.columns + column].push(i);
|
|
27
|
+
if (column === endColumn && row === endRow)
|
|
28
|
+
break;
|
|
29
|
+
if (boundaryX < boundaryY) {
|
|
30
|
+
column += stepX;
|
|
31
|
+
boundaryX += deltaX;
|
|
32
|
+
}
|
|
33
|
+
else if (boundaryY < boundaryX) {
|
|
34
|
+
row += stepY;
|
|
35
|
+
boundaryY += deltaY;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
column += stepX;
|
|
39
|
+
row += stepY;
|
|
40
|
+
boundaryX += deltaX;
|
|
41
|
+
boundaryY += deltaY;
|
|
42
|
+
}
|
|
43
|
+
if (column < 0 || column >= this.columns || row < 0 || row >= this.rows)
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
this.bins = bins;
|
|
48
|
+
}
|
|
49
|
+
column(x) { return Math.max(0, Math.min(this.columns - 1, Math.floor(x / this.scene.width * this.columns))); }
|
|
50
|
+
row(y) { return Math.max(0, Math.min(this.rows - 1, Math.floor(y / this.scene.height * this.rows))); }
|
|
51
|
+
pick(x, y, tolerance) {
|
|
52
|
+
const reach = Math.max(6, tolerance), left = this.column(x - reach), right = this.column(x + reach), top = this.row(y - reach), bottom = this.row(y + reach);
|
|
53
|
+
if (++this.stamp === 0xffffffff) {
|
|
54
|
+
this.seen.fill(0);
|
|
55
|
+
this.stamp = 1;
|
|
56
|
+
}
|
|
57
|
+
let selected = null, best = reach * reach;
|
|
58
|
+
for (let row = top; row <= bottom; row++)
|
|
59
|
+
for (let column = left; column <= right; column++)
|
|
60
|
+
for (const index of this.bins[row * this.columns + column]) {
|
|
61
|
+
if (this.seen[index] === this.stamp)
|
|
62
|
+
continue;
|
|
63
|
+
this.seen[index] = this.stamp;
|
|
64
|
+
const point = this.scene.observations[index], segment = point.contour, a = segment.start, b = segment.end, dx = b.x - a.x, dy = b.y - a.y, length = dx * dx + dy * dy;
|
|
65
|
+
const t = length ? Math.max(0, Math.min(1, ((x - a.x) * dx + (y - a.y) * dy) / length)) : 0;
|
|
66
|
+
const distance = (x - a.x - t * dx) ** 2 + (y - a.y - t * dy) ** 2;
|
|
67
|
+
if (distance < best || distance === best && selected === null) {
|
|
68
|
+
selected = point;
|
|
69
|
+
best = distance;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return selected;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=contour-hit-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contour-hit-index.js","sourceRoot":"","sources":["../../src/library/contour-hit-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NativeScene } from './contracts.js';
|
|
2
|
+
/** Pick existing projected observations for decoration; never fit or smooth isolines. */
|
|
3
|
+
export declare function contourLabelAnchors(scene: NativeScene): readonly Readonly<{
|
|
4
|
+
id: string;
|
|
5
|
+
value: number;
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
}>[];
|
|
9
|
+
//# sourceMappingURL=contour-label-anchors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contour-label-anchors.d.ts","sourceRoot":"","sources":["../../src/library/contour-label-anchors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEhD,yFAAyF;AACzF,wBAAgB,mBAAmB,CAAC,KAAK,EAAC,WAAW,GAAE,SAAS,QAAQ,CAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAA;CAAC,CAAC,EAAE,CAarH"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Pick existing projected observations for decoration; never fit or smooth isolines. */
|
|
2
|
+
export function contourLabelAnchors(scene) {
|
|
3
|
+
if (!scene.contour)
|
|
4
|
+
return [];
|
|
5
|
+
const best = new Map();
|
|
6
|
+
for (const point of scene.observations) {
|
|
7
|
+
const contour = point.contour;
|
|
8
|
+
if (!contour)
|
|
9
|
+
continue;
|
|
10
|
+
const score = (contour.end.x - contour.start.x) ** 2 + (contour.end.y - contour.start.y) ** 2;
|
|
11
|
+
if (score > (best.get(contour.levelId)?.score ?? -1))
|
|
12
|
+
best.set(contour.levelId, { score, x: point.x, y: point.y });
|
|
13
|
+
}
|
|
14
|
+
return scene.contour.levels.flatMap(level => {
|
|
15
|
+
const declared = scene.annotations?.find(label => label.box?.seriesId === level.id);
|
|
16
|
+
const anchor = declared ?? best.get(level.id);
|
|
17
|
+
return anchor ? [{ id: level.id, value: level.value, x: anchor.x, y: anchor.y }] : [];
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=contour-label-anchors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contour-label-anchors.js","sourceRoot":"","sources":["../../src/library/contour-label-anchors.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,UAAU,mBAAmB,CAAC,KAAiB;IACnD,IAAG,CAAC,KAAK,CAAC,OAAO;QAAC,OAAO,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAC,IAAI,GAAG,EAA2C,CAAC;IAC9D,KAAI,MAAM,KAAK,IAAI,KAAK,CAAC,YAAY,EAAC,CAAC;QACrC,MAAM,OAAO,GAAC,KAAK,CAAC,OAAO,CAAC;QAAA,IAAG,CAAC,OAAO;YAAC,SAAS;QACjD,MAAM,KAAK,GAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAE,CAAC,GAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC;QAClF,IAAG,KAAK,GAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,IAAE,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,CAAC,CAAC,EAAC,CAAC,EAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAA,EAAE;QACzC,MAAM,QAAQ,GAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,GAAG,EAAE,QAAQ,KAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAC,QAAQ,IAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAA,CAAC,CAAA,CAAC,EAAC,EAAE,EAAC,KAAK,CAAC,EAAE,EAAC,KAAK,EAAC,KAAK,CAAC,KAAK,EAAC,CAAC,EAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PlanContourLayout, PlanContourValue } from '@neural-charts/core/plan';
|
|
2
|
+
import type { NativeScene, Observation } from './contracts.js';
|
|
3
|
+
export declare function ownContourSource(scene: NativeScene): Readonly<{
|
|
4
|
+
contour?: PlanContourLayout;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function ownContourPoint(point: Observation, family: NativeScene['family']): Readonly<{
|
|
7
|
+
contour?: PlanContourValue;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function validateContourScene(scene: NativeScene): void;
|
|
10
|
+
//# sourceMappingURL=contour-scene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contour-scene.d.ts","sourceRoot":"","sources":["../../src/library/contour-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAAC,WAAW,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAK5D,wBAAgB,gBAAgB,CAAC,KAAK,EAAC,WAAW,GAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAC,iBAAiB,CAAA;CAAC,CAAC,CAezF;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAC,WAAW,EAAC,MAAM,EAAC,WAAW,CAAC,QAAQ,CAAC,GAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAC,gBAAgB,CAAA;CAAC,CAAC,CAKpH;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAC,WAAW,GAAE,IAAI,CAc3D"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
const finite = (v) => typeof v === 'number' && Number.isFinite(v);
|
|
2
|
+
const text = (v) => typeof v === 'string' && v.length > 0 && v.length <= 128;
|
|
3
|
+
const integer = (v, min, max) => Number.isInteger(v) && v >= min && v <= max;
|
|
4
|
+
export function ownContourSource(scene) {
|
|
5
|
+
const c = scene.contour;
|
|
6
|
+
if (scene.family !== 'contour') {
|
|
7
|
+
if (c !== undefined)
|
|
8
|
+
throw Error('Contour metadata on another family');
|
|
9
|
+
return {};
|
|
10
|
+
}
|
|
11
|
+
if (!c || c.method !== 'marching-squares-bilinear' || !text(c.gridId) || !integer(c.columns, 2, 64) || !integer(c.rows, 2, 64) || !integer(c.segmentBudget, 1, 8192) || !integer(c.segmentCount, 0, c.segmentBudget) || !integer(c.visibleSegments, 0, c.segmentCount) || !integer(c.knownSamples, 0, c.columns * c.rows) || !integer(c.missingCells, 0, (c.columns - 1) * (c.rows - 1)) || !Array.isArray(c.samples) || c.samples.length !== c.columns * c.rows || !Array.isArray(c.levels) || c.levels.length < 1 || c.levels.length > 8 || c.emptyReason !== undefined && !['hidden', 'missing', 'noCrossings', 'outsideViewport'].includes(c.emptyReason))
|
|
12
|
+
throw Error('Invalid bounded contour source');
|
|
13
|
+
const ids = new Set();
|
|
14
|
+
let known = 0;
|
|
15
|
+
const samples = c.samples.map((sample, index) => {
|
|
16
|
+
if (!sample || !text(sample.id) || ids.has(sample.id) || !finite(sample.x) || !finite(sample.y) || sample.value !== null && !finite(sample.value))
|
|
17
|
+
throw Error('Invalid contour sample');
|
|
18
|
+
ids.add(sample.id);
|
|
19
|
+
if (sample.value !== null)
|
|
20
|
+
known++;
|
|
21
|
+
if (index % c.columns > 0 && sample.x <= c.samples[index - 1].x || index >= c.columns && sample.y <= c.samples[index - c.columns].y || index >= c.columns && sample.x !== c.samples[index % c.columns].x || index % c.columns > 0 && sample.y !== c.samples[index - index % c.columns].y)
|
|
22
|
+
throw Error('Invalid contour grid coordinates');
|
|
23
|
+
return { id: sample.id, x: sample.x, y: sample.y, value: sample.value };
|
|
24
|
+
});
|
|
25
|
+
const levels = c.levels.map((level, index) => { if (!text(level.id) || !finite(level.value) || index > 0 && level.value <= c.levels[index - 1].value || c.levels.slice(0, index).some(other => other.id === level.id))
|
|
26
|
+
throw Error('Invalid contour threshold'); return { id: level.id, value: level.value }; });
|
|
27
|
+
let missing = 0;
|
|
28
|
+
for (let row = 0; row < c.rows - 1; row++)
|
|
29
|
+
for (let column = 0; column < c.columns - 1; column++) {
|
|
30
|
+
const i = row * c.columns + column;
|
|
31
|
+
if ([i, i + 1, i + c.columns, i + c.columns + 1].some(index => samples[index].value === null))
|
|
32
|
+
missing++;
|
|
33
|
+
}
|
|
34
|
+
if (known !== c.knownSamples || missing !== c.missingCells || c.visibleSegments !== scene.observations.length || scene.observations.length > 0 && c.emptyReason !== undefined)
|
|
35
|
+
throw Error('Contour source count differs');
|
|
36
|
+
return { contour: { ...c, samples, levels } };
|
|
37
|
+
}
|
|
38
|
+
export function ownContourPoint(point, family) {
|
|
39
|
+
const c = point.contour;
|
|
40
|
+
if (family !== 'contour') {
|
|
41
|
+
if (c !== undefined)
|
|
42
|
+
throw Error('Contour observation on another family');
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
if (!c || c.type !== 'isoline' || !text(c.gridId) || !text(c.levelId) || !finite(c.level) || !integer(c.row, 0, 62) || !integer(c.column, 0, 62) || !Array.isArray(c.sourceIds) || c.sourceIds.length !== 4 || c.sourceIds.some(id => !text(id)) || !Array.isArray(c.sourceValues) || c.sourceValues.length !== 4 || c.sourceValues.some(v => !finite(v)) || [c.start, c.end, c.sourceStart, c.sourceEnd].some(p => !p || !finite(p.x) || !finite(p.y)) || point.hit !== undefined || point.value !== c.level || point.id.seriesId !== c.levelId)
|
|
46
|
+
throw Error('Invalid derived contour observation');
|
|
47
|
+
return { contour: { ...c, sourceIds: [c.sourceIds[0], c.sourceIds[1], c.sourceIds[2], c.sourceIds[3]], sourceValues: [c.sourceValues[0], c.sourceValues[1], c.sourceValues[2], c.sourceValues[3]], start: { ...c.start }, end: { ...c.end }, sourceStart: { ...c.sourceStart }, sourceEnd: { ...c.sourceEnd } } };
|
|
48
|
+
}
|
|
49
|
+
export function validateContourScene(scene) {
|
|
50
|
+
if (scene.family !== 'contour')
|
|
51
|
+
return;
|
|
52
|
+
const c = scene.contour, levels = new Map(c.levels.map(level => [level.id, level.value]));
|
|
53
|
+
if ((scene.legend ?? scene.series).some(level => !levels.has(level.id)))
|
|
54
|
+
throw Error('Unknown contour legend threshold');
|
|
55
|
+
for (const point of scene.observations) {
|
|
56
|
+
const p = point.contour;
|
|
57
|
+
if (p.gridId !== c.gridId || levels.get(p.levelId) !== p.level || p.row >= c.rows - 1 || p.column >= c.columns - 1)
|
|
58
|
+
throw Error('Contour cell differs from source');
|
|
59
|
+
const i = p.row * c.columns + p.column, indices = [i, i + 1, i + c.columns + 1, i + c.columns];
|
|
60
|
+
for (let corner = 0; corner < 4; corner++) {
|
|
61
|
+
const sample = c.samples[indices[corner]];
|
|
62
|
+
if (sample.id !== p.sourceIds[corner] || sample.value !== p.sourceValues[corner])
|
|
63
|
+
throw Error('Contour corners differ from source');
|
|
64
|
+
}
|
|
65
|
+
for (const endpoint of [p.start, p.end])
|
|
66
|
+
if (endpoint.x < 0 || endpoint.x > scene.width || endpoint.y < 0 || endpoint.y > scene.height)
|
|
67
|
+
throw Error('Contour segment outside plot');
|
|
68
|
+
const low = c.samples[i], high = c.samples[i + c.columns + 1];
|
|
69
|
+
for (const endpoint of [p.sourceStart, p.sourceEnd])
|
|
70
|
+
if (endpoint.x < low.x || endpoint.x > high.x || endpoint.y < low.y || endpoint.y > high.y)
|
|
71
|
+
throw Error('Contour source segment outside its cell');
|
|
72
|
+
if (point.x !== p.start.x / 2 + p.end.x / 2 || point.y !== p.start.y / 2 + p.end.y / 2)
|
|
73
|
+
throw Error('Contour anchor differs from its segment');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=contour-scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contour-scene.js","sourceRoot":"","sources":["../../src/library/contour-scene.ts"],"names":[],"mappings":"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"}
|