@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,523 @@
|
|
|
1
|
+
import { AnnularSectorHitIndex } from './annular-hit.js';
|
|
2
|
+
import { HeatmapHitIndex } from './heatmap-hit.js';
|
|
3
|
+
import { VennHitIndex } from './venn-hit.js';
|
|
4
|
+
import { ContourHitIndex } from './contour-hit-index.js';
|
|
5
|
+
import { relationshipFamily } from './relationship-scene.js';
|
|
6
|
+
import { PictorialHitIndex } from './pictorial-hit.js';
|
|
7
|
+
import { TilemapHitIndex } from './tilemap-hit.js';
|
|
8
|
+
import { RelationshipHitIndex } from './relationship-hit-index.js';
|
|
9
|
+
import { polygonObservation, sankeyObservation } from './polygon-hit.js';
|
|
10
|
+
import { identityKey } from './contracts.js';
|
|
11
|
+
import { ownScene, sceneInteractionKey } from './scene.js';
|
|
12
|
+
import { TileIndex } from './tile-index.js';
|
|
13
|
+
import { TemporalHitIndex } from './temporal-hit-index.js';
|
|
14
|
+
/** Platform-free interaction owner. No scales, domains, Angular or native dependencies. */
|
|
15
|
+
export class NativeChartSession {
|
|
16
|
+
clock;
|
|
17
|
+
haptics;
|
|
18
|
+
contentMode;
|
|
19
|
+
currentScene;
|
|
20
|
+
get scene() { return this.currentScene; }
|
|
21
|
+
positions = new Map();
|
|
22
|
+
semanticGroups = new Map();
|
|
23
|
+
sharedCache;
|
|
24
|
+
sharedOrder;
|
|
25
|
+
groupPositions = new Map();
|
|
26
|
+
groups;
|
|
27
|
+
listener;
|
|
28
|
+
lastEmitted;
|
|
29
|
+
active = null;
|
|
30
|
+
selected = null;
|
|
31
|
+
scrubbing = false;
|
|
32
|
+
pinned = false;
|
|
33
|
+
pending = null;
|
|
34
|
+
frame = null;
|
|
35
|
+
destroyed = false;
|
|
36
|
+
hapticState = { busy: false };
|
|
37
|
+
touchTolerance = 0;
|
|
38
|
+
hitCells = new Map();
|
|
39
|
+
glyphCircles = new Map();
|
|
40
|
+
glyphPoints = [];
|
|
41
|
+
maximumGlyphRadius = 1;
|
|
42
|
+
pictorial;
|
|
43
|
+
tilemap;
|
|
44
|
+
relationships;
|
|
45
|
+
annular;
|
|
46
|
+
radial;
|
|
47
|
+
radialOrigin;
|
|
48
|
+
radialPhase;
|
|
49
|
+
cellSize = 128;
|
|
50
|
+
tiles;
|
|
51
|
+
temporal;
|
|
52
|
+
contours;
|
|
53
|
+
venn;
|
|
54
|
+
heatmap;
|
|
55
|
+
constructor(scene, clock, haptics, listener, initialSelection = null, contentMode = 'point', initialGroup) {
|
|
56
|
+
this.clock = clock;
|
|
57
|
+
this.haptics = haptics;
|
|
58
|
+
this.contentMode = contentMode;
|
|
59
|
+
this.currentScene = ownScene(scene);
|
|
60
|
+
this.pictorial = scene.family === 'pictorial' ? new PictorialHitIndex(this.scene.observations.map(point => ({ point, ...(point.hit?.type === 'compoundPolygon' ? { hit: point.hit } : {}) })), scene.width, scene.height) : null;
|
|
61
|
+
this.tilemap = scene.family === 'tilemap' || scene.family === 'wordcloud' ? new TilemapHitIndex(this.scene.observations, scene.width, scene.height) : null;
|
|
62
|
+
this.heatmap = this.scene.heatmap ? new HeatmapHitIndex(this.scene.heatmap.layout.rows, this.scene.heatmap.layout.columns, this.scene.heatmap.data, this.scene.observations, scene.width, scene.height) : null;
|
|
63
|
+
this.venn = scene.venn ? new VennHitIndex(this.scene.venn.layout.circles, this.scene.observations.filter(point => point.venn?.geometry === 'placed').map(point => ({ mask: point.venn.mask, point })), scene.width, scene.height) : null;
|
|
64
|
+
this.contours = scene.family === 'contour' ? new ContourHitIndex(this.currentScene) : null;
|
|
65
|
+
this.temporal = ['regression', 'flame', 'violin', 'bullet', 'variwide', 'xrange', 'timeline'].includes(scene.family) ? new TemporalHitIndex(this.currentScene, scene.family === 'bullet' || scene.family === 'variwide') : null;
|
|
66
|
+
if (scene.family === 'lollipop' || scene.family === 'dumbbell') {
|
|
67
|
+
for (const series of this.scene.series)
|
|
68
|
+
for (const circle of series.circles ?? []) {
|
|
69
|
+
if (circle.pointId === undefined)
|
|
70
|
+
continue;
|
|
71
|
+
const key = identityKey({ seriesId: series.id, pointId: circle.pointId }), circles = this.glyphCircles.get(key) ?? [];
|
|
72
|
+
circles.push(circle);
|
|
73
|
+
this.glyphCircles.set(key, circles);
|
|
74
|
+
this.maximumGlyphRadius = Math.max(this.maximumGlyphRadius, circle.radius);
|
|
75
|
+
}
|
|
76
|
+
this.glyphPoints = this.scene.observations.filter(p => !!p.stem || this.glyphCircles.has(identityKey(p.id))).sort((a, b) => a.x - b.x);
|
|
77
|
+
}
|
|
78
|
+
this.tiles = (scene.family === 'treemap' || scene.family === 'organization') ? new TileIndex(this.currentScene) : null;
|
|
79
|
+
if (contentMode === 'shared' && (!['fan', 'parallel', 'bullet', 'streamgraph', 'lollipop', 'dumbbell', 'columnpyramid', 'boxplot', 'errorbar', 'arearange', 'areasplinerange', 'columnrange', 'pareto', 'line', 'area', 'streamgraph', 'areaspline', 'spline', 'mixed', 'column', 'bar'].includes(scene.family) || scene.observations.some(p => !p.group)))
|
|
80
|
+
throw new Error('Shared tooltip requires semantic groups on line, column or bar observations');
|
|
81
|
+
this.scene.observations.forEach((p, i) => this.positions.set(identityKey(p.id), i));
|
|
82
|
+
const initial = initialSelection ? this.point(initialSelection) : null;
|
|
83
|
+
this.active = initial;
|
|
84
|
+
this.selected = initial?.id ?? null;
|
|
85
|
+
this.listener = listener;
|
|
86
|
+
const groups = new Map();
|
|
87
|
+
for (const p of ['fan', 'bullet', 'streamgraph', 'lollipop', 'dumbbell', 'columnpyramid', 'boxplot', 'errorbar', 'arearange', 'areasplinerange', 'columnrange', 'histogram', 'bellcurve', 'pareto', 'waterfall', 'line', 'area', 'streamgraph', 'areaspline', 'spline', 'mixed', 'column', 'bar'].includes(this.scene.family) ? this.scene.observations : []) {
|
|
88
|
+
const coordinate = contentMode === 'shared' ? p.group.coordinate : (this.scene.family === 'bar' || this.scene.family === 'bullet' && this.scene.bulletOrientation === 'horizontal') ? p.y : p.x;
|
|
89
|
+
const bucket = groups.get(coordinate) ?? [];
|
|
90
|
+
bucket.push(p);
|
|
91
|
+
groups.set(coordinate, bucket);
|
|
92
|
+
}
|
|
93
|
+
this.groups = [...groups].sort(([a], [b]) => a - b).map(([coordinate, points]) => ({ coordinate, points }));
|
|
94
|
+
const semantic = new Map();
|
|
95
|
+
if (contentMode === 'shared')
|
|
96
|
+
for (const point of this.scene.observations) {
|
|
97
|
+
if (!point.group)
|
|
98
|
+
continue;
|
|
99
|
+
const rows = semantic.get(point.group.key) ?? [];
|
|
100
|
+
rows.push(point);
|
|
101
|
+
semantic.set(point.group.key, rows);
|
|
102
|
+
}
|
|
103
|
+
const order = new Map((scene.legend ?? scene.series).map((s, i) => [s.id, i]));
|
|
104
|
+
for (const [key, points] of semantic)
|
|
105
|
+
this.semanticGroups.set(key, Object.freeze(points.sort((a, b) => order.get(a.id.seriesId) - order.get(b.id.seriesId))));
|
|
106
|
+
this.sharedOrder = [...this.semanticGroups.values()].map(points => points[0]).sort((a, b) => a.group.coordinate - b.group.coordinate);
|
|
107
|
+
this.sharedOrder.forEach((p, i) => this.groupPositions.set(p.group.key, i));
|
|
108
|
+
if (contentMode === 'shared' && initialGroup) {
|
|
109
|
+
const restored = this.semanticGroups.get(initialGroup)?.[0];
|
|
110
|
+
if (restored) {
|
|
111
|
+
this.active = restored;
|
|
112
|
+
this.selected = restored.id;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
this.relationships = relationshipFamily(scene.family) ? new RelationshipHitIndex(scene) : null;
|
|
116
|
+
this.annular = scene.family === 'windrose' || scene.family === 'radialbar' ? new AnnularSectorHitIndex(this.scene.observations) : null;
|
|
117
|
+
this.radial = scene.family === 'variablepie' || scene.family === 'polar' || scene.family === 'pie' || scene.family === 'donut' || scene.family === 'gauge'
|
|
118
|
+
? this.scene.observations.filter(p => p.hit?.type === 'sector' && p.hit.end > p.hit.start && p.hit.radius > p.hit.innerRadius).sort((a, b) => (a.hit.type === 'sector' ? a.hit.start : 0) - (b.hit.type === 'sector' ? b.hit.start : 0)) : [];
|
|
119
|
+
const firstSector = this.radial[0]?.hit;
|
|
120
|
+
this.radialOrigin = firstSector?.type === 'sector' ? firstSector.start : 0;
|
|
121
|
+
this.radialPhase = (this.radialOrigin % (Math.PI * 2) + Math.PI * 2) % (Math.PI * 2);
|
|
122
|
+
// Bubble hit regions are indexed once. A touch only examines the cell under the finger.
|
|
123
|
+
if ((scene.family === 'vector' || scene.family === 'windbarb' || scene.family === 'networkgraph' || scene.family === 'packedbubble' || scene.family === 'treegraph' || scene.family === 'polygon' || scene.family === 'dendrogram' || scene.family === 'parallel' || scene.family === 'radar' || scene.family === 'bubble' || scene.family === 'scatter'))
|
|
124
|
+
for (const p of this.scene.observations) {
|
|
125
|
+
const h = p.hit;
|
|
126
|
+
if (!h || h.type !== 'circle' || h.radius <= 0)
|
|
127
|
+
continue;
|
|
128
|
+
for (let x = Math.max(0, Math.floor((h.cx - h.radius) / this.cellSize)); x <= Math.min(Math.floor(this.scene.width / this.cellSize), Math.floor((h.cx + h.radius) / this.cellSize)); x++)
|
|
129
|
+
for (let y = Math.max(0, Math.floor((h.cy - h.radius) / this.cellSize)); y <= Math.min(Math.floor(this.scene.height / this.cellSize), Math.floor((h.cy + h.radius) / this.cellSize)); y++) {
|
|
130
|
+
const key = x + ',' + y;
|
|
131
|
+
const points = this.hitCells.get(key) ?? [];
|
|
132
|
+
points.push(p);
|
|
133
|
+
this.hitCells.set(key, points);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
get snapshot() { const shared = this.shared(); return Object.freeze({ active: this.active, selected: this.selected, scrubbing: this.scrubbing, ...(shared ? { shared } : {}), ...(this.pinned ? { pinned: true } : {}) }); }
|
|
138
|
+
/** Freeze the last displayed observation, dropping any queued exploration. No new haptic. */
|
|
139
|
+
setPinned(value) {
|
|
140
|
+
if (this.destroyed)
|
|
141
|
+
return false;
|
|
142
|
+
if (value === this.pinned)
|
|
143
|
+
return this.pinned;
|
|
144
|
+
if (value && !this.active)
|
|
145
|
+
return false;
|
|
146
|
+
this.cancelFrame();
|
|
147
|
+
this.pending = null;
|
|
148
|
+
this.scrubbing = false;
|
|
149
|
+
if (value)
|
|
150
|
+
this.selected = this.active.id;
|
|
151
|
+
this.pinned = value;
|
|
152
|
+
this.emit();
|
|
153
|
+
return this.pinned;
|
|
154
|
+
}
|
|
155
|
+
shared() {
|
|
156
|
+
const group = this.contentMode === 'shared' ? this.active?.group : undefined;
|
|
157
|
+
if (!group)
|
|
158
|
+
return undefined;
|
|
159
|
+
if (this.sharedCache?.key === group.key)
|
|
160
|
+
return this.sharedCache;
|
|
161
|
+
const points = Object.freeze((this.semanticGroups.get(group.key) ?? []).map(p => this.point(p.id))), bySeries = new Map(points.map(p => [p.id.seriesId, p]));
|
|
162
|
+
const order = new Map((this.scene.legend ?? this.scene.series).map((s, i) => [s.id, i]));
|
|
163
|
+
const series = this.scene.family === 'mixed' || this.scene.family === 'fan' ? [...this.scene.series].sort((a, b) => order.get(a.id) - order.get(b.id)) : this.scene.series;
|
|
164
|
+
return this.sharedCache = Object.freeze({ ...group, points, rows: Object.freeze(series.map(s => Object.freeze({ seriesId: s.id, name: s.name, color: s.color, point: bySeries.get(s.id) ?? null }))) });
|
|
165
|
+
}
|
|
166
|
+
/** Safe presentation revisions share immutable geometry and index order. */
|
|
167
|
+
updatePresentation(input) {
|
|
168
|
+
if (this.destroyed)
|
|
169
|
+
return false;
|
|
170
|
+
const scene = ownScene(input);
|
|
171
|
+
if (scene === this.currentScene)
|
|
172
|
+
return true;
|
|
173
|
+
if (sceneInteractionKey(scene) !== sceneInteractionKey(this.scene))
|
|
174
|
+
return false;
|
|
175
|
+
const id = this.active?.id;
|
|
176
|
+
this.currentScene = scene;
|
|
177
|
+
this.sharedCache = undefined;
|
|
178
|
+
this.active = id ? this.point(id) : null;
|
|
179
|
+
this.emit();
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
point(id) { const index = this.positions.get(identityKey(id)); return index === undefined ? null : this.scene.observations[index] ?? null; }
|
|
183
|
+
/** Repeating a tap closes the same observation; an exploration gesture never toggles it. */
|
|
184
|
+
tap(x, y, tolerance = 0) {
|
|
185
|
+
if (this.destroyed || this.pinned || !Number.isFinite(x) || !Number.isFinite(y))
|
|
186
|
+
return;
|
|
187
|
+
this.touchTolerance = Number.isFinite(tolerance) ? Math.max(0, Math.min(256, tolerance)) : 0;
|
|
188
|
+
const next = this.nearest(x, y);
|
|
189
|
+
const previous = this.selected ? this.point(this.selected) : null;
|
|
190
|
+
if (!this.scrubbing && next && previous && (this.contentMode === 'shared' ? next.group?.key === previous.group?.key : next.id.seriesId === previous.id.seriesId && next.id.pointId === previous.id.pointId)) {
|
|
191
|
+
this.clear();
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
this.begin(x, y, tolerance);
|
|
195
|
+
this.end(true);
|
|
196
|
+
}
|
|
197
|
+
begin(x, y, tolerance = 0) {
|
|
198
|
+
if (this.destroyed || this.pinned || !Number.isFinite(x) || !Number.isFinite(y))
|
|
199
|
+
return;
|
|
200
|
+
this.cancelFrame();
|
|
201
|
+
this.pending = null;
|
|
202
|
+
this.scrubbing = true;
|
|
203
|
+
this.touchTolerance = Number.isFinite(tolerance) ? Math.max(0, Math.min(256, tolerance)) : 0;
|
|
204
|
+
this.setActive(this.nearest(x, y));
|
|
205
|
+
}
|
|
206
|
+
move(x, y) {
|
|
207
|
+
if (this.destroyed || this.pinned || !this.scrubbing || !Number.isFinite(x) || !Number.isFinite(y))
|
|
208
|
+
return;
|
|
209
|
+
if (this.pending) {
|
|
210
|
+
this.pending.x = x;
|
|
211
|
+
this.pending.y = y;
|
|
212
|
+
}
|
|
213
|
+
else
|
|
214
|
+
this.pending = { x, y };
|
|
215
|
+
if (this.frame === null)
|
|
216
|
+
this.frame = this.clock.request(() => {
|
|
217
|
+
this.frame = null;
|
|
218
|
+
this.flush();
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
end(commit) {
|
|
222
|
+
if (this.destroyed || this.pinned || !this.scrubbing)
|
|
223
|
+
return;
|
|
224
|
+
this.cancelFrame();
|
|
225
|
+
if (commit) {
|
|
226
|
+
this.flush();
|
|
227
|
+
this.selected = this.active?.id ?? null;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this.pending = null;
|
|
231
|
+
this.active = this.selected ? this.point(this.selected) : null;
|
|
232
|
+
}
|
|
233
|
+
this.scrubbing = false;
|
|
234
|
+
this.emit();
|
|
235
|
+
}
|
|
236
|
+
get navigationPoints() {
|
|
237
|
+
return this.contentMode === 'shared' ? this.sharedOrder : this.scene.observations;
|
|
238
|
+
}
|
|
239
|
+
get navigationIndex() {
|
|
240
|
+
if (!this.active)
|
|
241
|
+
return undefined;
|
|
242
|
+
return this.contentMode === 'shared' ? this.groupPositions.get(this.active.group.key) : this.positions.get(identityKey(this.active.id));
|
|
243
|
+
}
|
|
244
|
+
/** The slider range counts navigation stops, including shared groups rather than their rows. */
|
|
245
|
+
get navigationRange() {
|
|
246
|
+
const max = this.navigationPoints.length;
|
|
247
|
+
return max ? { min: 1, max, now: (this.navigationIndex ?? 0) + 1 } : { min: 0, max: 0, now: 0 };
|
|
248
|
+
}
|
|
249
|
+
/** Native adjustable, keyboard and explicit buttons share the same datum model. */
|
|
250
|
+
step(direction) {
|
|
251
|
+
if (this.destroyed || this.pinned || this.scene.observations.length === 0)
|
|
252
|
+
return;
|
|
253
|
+
this.cancelFrame();
|
|
254
|
+
this.pending = null;
|
|
255
|
+
this.scrubbing = false;
|
|
256
|
+
const points = this.navigationPoints;
|
|
257
|
+
let index;
|
|
258
|
+
if (direction === 'first')
|
|
259
|
+
index = 0;
|
|
260
|
+
else if (direction === 'last')
|
|
261
|
+
index = points.length - 1;
|
|
262
|
+
else {
|
|
263
|
+
const current = this.navigationIndex ?? (direction === 1 ? -1 : points.length);
|
|
264
|
+
index = Math.max(0, Math.min(points.length - 1, current + direction));
|
|
265
|
+
}
|
|
266
|
+
const next = this.point(points[index].id);
|
|
267
|
+
this.selected = next.id;
|
|
268
|
+
this.setActive(next);
|
|
269
|
+
}
|
|
270
|
+
clear() {
|
|
271
|
+
if (this.destroyed)
|
|
272
|
+
return;
|
|
273
|
+
this.cancelFrame();
|
|
274
|
+
this.pending = null;
|
|
275
|
+
this.scrubbing = false;
|
|
276
|
+
this.pinned = false;
|
|
277
|
+
this.active = null;
|
|
278
|
+
this.selected = null;
|
|
279
|
+
this.emit();
|
|
280
|
+
}
|
|
281
|
+
destroy() {
|
|
282
|
+
if (this.destroyed)
|
|
283
|
+
return;
|
|
284
|
+
this.destroyed = true;
|
|
285
|
+
this.tiles?.destroy();
|
|
286
|
+
this.temporal?.destroy();
|
|
287
|
+
this.glyphCircles.clear();
|
|
288
|
+
this.glyphPoints = [];
|
|
289
|
+
this.pinned = false;
|
|
290
|
+
this.lastEmitted = undefined;
|
|
291
|
+
this.cancelFrame();
|
|
292
|
+
this.pending = null;
|
|
293
|
+
this.listener = null;
|
|
294
|
+
this.active = null;
|
|
295
|
+
this.selected = null;
|
|
296
|
+
this.hitCells.clear();
|
|
297
|
+
this.positions.clear();
|
|
298
|
+
this.semanticGroups.clear();
|
|
299
|
+
this.groupPositions.clear();
|
|
300
|
+
this.sharedCache = undefined;
|
|
301
|
+
}
|
|
302
|
+
cancelFrame() { if (this.frame !== null)
|
|
303
|
+
this.clock.cancel(this.frame); this.frame = null; }
|
|
304
|
+
flush() { const p = this.pending; this.pending = null; if (p && !this.destroyed)
|
|
305
|
+
this.setActive(this.nearest(p.x, p.y, true)); }
|
|
306
|
+
nearest(x, y, continuous = false) {
|
|
307
|
+
if (x < 0 || y < 0 || x > this.scene.width || y > this.scene.height)
|
|
308
|
+
return null;
|
|
309
|
+
if (this.pictorial) {
|
|
310
|
+
const hit = this.pictorial.pick(x, y);
|
|
311
|
+
return hit ? this.point(hit.point.id) : null;
|
|
312
|
+
}
|
|
313
|
+
if (this.heatmap) {
|
|
314
|
+
const hit = this.heatmap.pick(x, y);
|
|
315
|
+
return hit.type === 'known' ? this.point(hit.point.id) : continuous && hit.type === 'gap' ? this.active : null;
|
|
316
|
+
}
|
|
317
|
+
if (this.venn) {
|
|
318
|
+
const point = this.venn.pick(x, y);
|
|
319
|
+
return point ? this.point(point.id) : continuous ? this.active : null;
|
|
320
|
+
}
|
|
321
|
+
if (this.tilemap) {
|
|
322
|
+
const point = this.tilemap.pick(x, y);
|
|
323
|
+
return point ? this.point(point.id) : continuous && this.scene.family === 'wordcloud' ? this.active : null;
|
|
324
|
+
}
|
|
325
|
+
if (this.contours) {
|
|
326
|
+
const point = this.contours.pick(x, y, this.touchTolerance);
|
|
327
|
+
return point ? this.point(point.id) : (continuous ? this.active : null);
|
|
328
|
+
}
|
|
329
|
+
if (this.temporal)
|
|
330
|
+
return this.temporal.pick(x, y, this.touchTolerance) ?? (continuous ? this.active : null);
|
|
331
|
+
if (['sankey', 'treegraph', 'organization', 'networkgraph', 'packedbubble'].includes(this.scene.family)) {
|
|
332
|
+
const plot = this.scene.clip;
|
|
333
|
+
if (plot && (x < plot.x || x > plot.x + plot.width || y < plot.y || y > plot.y + plot.height))
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
if (this.scene.family === 'sunburst') {
|
|
337
|
+
let selected = null, deepest = -1;
|
|
338
|
+
for (const point of this.scene.observations) {
|
|
339
|
+
const hit = point.hit;
|
|
340
|
+
if (hit?.type !== 'sector' || hit.radius <= hit.innerRadius)
|
|
341
|
+
continue;
|
|
342
|
+
const radius = Math.hypot(x - hit.cx, y - hit.cy), angle = Math.atan2(x - hit.cx, hit.cy - y), delta = ((angle - hit.start) % (Math.PI * 2) + Math.PI * 2) % (Math.PI * 2);
|
|
343
|
+
if (radius >= hit.innerRadius && radius <= hit.radius && delta <= hit.end - hit.start + 1e-10 && hit.innerRadius > deepest) {
|
|
344
|
+
selected = point;
|
|
345
|
+
deepest = hit.innerRadius;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return selected;
|
|
349
|
+
}
|
|
350
|
+
if (this.scene.family === 'item') {
|
|
351
|
+
let selected = null, score = Infinity;
|
|
352
|
+
for (const series of this.scene.series)
|
|
353
|
+
for (const circle of series.circles ?? []) {
|
|
354
|
+
if (circle.pointId === undefined)
|
|
355
|
+
continue;
|
|
356
|
+
const distance = (x - circle.cx) ** 2 + (y - circle.cy) ** 2, radius = Math.max(circle.radius, this.touchTolerance);
|
|
357
|
+
if (distance <= radius * radius && distance < score) {
|
|
358
|
+
selected = { seriesId: series.id, pointId: circle.pointId };
|
|
359
|
+
score = distance;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
return selected ? this.point(selected) : null;
|
|
363
|
+
}
|
|
364
|
+
if (this.scene.family === 'lollipop' || this.scene.family === 'dumbbell')
|
|
365
|
+
return this.nearestGlyph(x, y);
|
|
366
|
+
if (this.tiles)
|
|
367
|
+
return this.tiles.pick(x, y);
|
|
368
|
+
if (this.relationships)
|
|
369
|
+
return this.relationships.pick(x, y, this.touchTolerance) ?? (continuous ? this.active : null);
|
|
370
|
+
if (this.scene.family === 'sankey')
|
|
371
|
+
return sankeyObservation(this.scene.observations, x, y) ?? (continuous ? this.active : null);
|
|
372
|
+
if (this.scene.family === 'funnel' || this.scene.family === 'pyramid')
|
|
373
|
+
return polygonObservation(this.scene.observations, x, y);
|
|
374
|
+
if ((this.scene.family === 'vector' || this.scene.family === 'windbarb' || this.scene.family === 'networkgraph' || this.scene.family === 'packedbubble' || this.scene.family === 'treegraph' || this.scene.family === 'polygon' || this.scene.family === 'dendrogram' || this.scene.family === 'parallel' || this.scene.family === 'radar' || this.scene.family === 'bubble' || this.scene.family === 'scatter')) {
|
|
375
|
+
const candidates = new Set();
|
|
376
|
+
for (let cx = Math.floor((x - this.touchTolerance) / this.cellSize); cx <= Math.floor((x + this.touchTolerance) / this.cellSize); cx++)
|
|
377
|
+
for (let cy = Math.floor((y - this.touchTolerance) / this.cellSize); cy <= Math.floor((y + this.touchTolerance) / this.cellSize); cy++)
|
|
378
|
+
for (const p of this.hitCells.get(cx + ',' + cy) ?? [])
|
|
379
|
+
candidates.add(p);
|
|
380
|
+
let best = null, score = Infinity;
|
|
381
|
+
for (const p of candidates) {
|
|
382
|
+
const h = p.hit;
|
|
383
|
+
if (h.type !== 'circle')
|
|
384
|
+
continue;
|
|
385
|
+
const distance = (x - h.cx) ** 2 + (y - h.cy) ** 2;
|
|
386
|
+
if (distance <= Math.max(h.radius, this.touchTolerance) ** 2 && distance < score) {
|
|
387
|
+
best = p;
|
|
388
|
+
score = distance;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return best ? this.point(best.id) : null;
|
|
392
|
+
}
|
|
393
|
+
if (this.annular) {
|
|
394
|
+
const point = this.annular.pick(x, y);
|
|
395
|
+
return point ? this.point(point.id) : null;
|
|
396
|
+
}
|
|
397
|
+
if (this.radial.length) {
|
|
398
|
+
// Shared-frame sectors allow a binary angular lookup, independent of the slice count.
|
|
399
|
+
const first = this.radial[0], h = first.hit;
|
|
400
|
+
if (h.type !== 'sector')
|
|
401
|
+
return null;
|
|
402
|
+
const radius = Math.hypot(x - h.cx, y - h.cy), angle = (Math.atan2(x - h.cx, h.cy - y) + Math.PI * 2) % (Math.PI * 2);
|
|
403
|
+
const position = this.radialOrigin + (angle - this.radialPhase + Math.PI * 2) % (Math.PI * 2);
|
|
404
|
+
let low = 0, high = this.radial.length;
|
|
405
|
+
while (low < high) {
|
|
406
|
+
const mid = (low + high) >>> 1;
|
|
407
|
+
const region = this.radial[mid].hit;
|
|
408
|
+
if (region.type === 'sector' && region.start <= position)
|
|
409
|
+
low = mid + 1;
|
|
410
|
+
else
|
|
411
|
+
high = mid;
|
|
412
|
+
}
|
|
413
|
+
const point = this.radial[Math.max(0, low - 1)], region = point.hit;
|
|
414
|
+
if (region.type === 'sector') {
|
|
415
|
+
const relative = position - region.start;
|
|
416
|
+
return radius >= region.innerRadius && radius <= region.radius && relative >= -1e-10 && relative <= region.end - region.start + 1e-10 ? this.point(point.id) : null;
|
|
417
|
+
}
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
420
|
+
if (['variablepie', 'polar', 'pie', 'donut', 'gauge'].includes(this.scene.family))
|
|
421
|
+
return null;
|
|
422
|
+
if (this.groups.length === 0)
|
|
423
|
+
return null;
|
|
424
|
+
const target = this.scene.family === 'bar' ? y : x;
|
|
425
|
+
let low = 0, high = this.groups.length;
|
|
426
|
+
while (low < high) {
|
|
427
|
+
const mid = (low + high) >>> 1;
|
|
428
|
+
if (this.groups[mid].coordinate < target)
|
|
429
|
+
low = mid + 1;
|
|
430
|
+
else
|
|
431
|
+
high = mid;
|
|
432
|
+
}
|
|
433
|
+
const left = this.groups[Math.max(0, low - 1)];
|
|
434
|
+
const right = this.groups[Math.min(low, this.groups.length - 1)];
|
|
435
|
+
const group = Math.abs(target - left.coordinate) <= Math.abs(target - right.coordinate) ? left : right;
|
|
436
|
+
if (this.scene.stackGroups || this.scene.family === 'columnrange' || this.scene.family === 'boxplot' || this.scene.family === 'errorbar' || this.scene.family === 'columnpyramid') {
|
|
437
|
+
const precise = polygonObservation(left.points, x, y) ?? (left === right ? null : polygonObservation(right.points, x, y));
|
|
438
|
+
// Taps require a painted target. Continuous exploration follows the nearest
|
|
439
|
+
// semantic group through the whitespace between boxes/ranges instead of
|
|
440
|
+
// destroying and recreating the tooltip at every gap.
|
|
441
|
+
if (precise || !continuous)
|
|
442
|
+
return precise;
|
|
443
|
+
}
|
|
444
|
+
const other = this.scene.family === 'bar' ? x : y;
|
|
445
|
+
if (this.contentMode === 'shared')
|
|
446
|
+
return this.semanticGroups.get(group.points[0].group.key)?.[0] ?? null;
|
|
447
|
+
return group.points.reduce((best, p) => {
|
|
448
|
+
const distance = Math.abs((this.scene.family === 'bar' ? p.x : p.y) - other), current = Math.abs((this.scene.family === 'bar' ? best.x : best.y) - other);
|
|
449
|
+
// Supplied bands paint below scalar lines. At the same anchor, touch the
|
|
450
|
+
// visible line rather than the interval's compatible midpoint. Semantic
|
|
451
|
+
// navigation order and shared-tooltip grouping remain source ordered.
|
|
452
|
+
if (this.scene.mixedRanges && Math.abs(distance - current) <= Math.max(1, this.scene.height) * 1e-10) {
|
|
453
|
+
// Treat rounding noise symmetrically: a later interval cannot displace
|
|
454
|
+
// a scalar already chosen at the same visible anchor.
|
|
455
|
+
return p.lowValue === undefined ? p : best;
|
|
456
|
+
}
|
|
457
|
+
return distance < current ? p : best;
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
nearestGlyph(x, y) {
|
|
461
|
+
const reach = Math.max(this.maximumGlyphRadius, this.touchTolerance), points = this.glyphPoints;
|
|
462
|
+
let low = 0, high = points.length;
|
|
463
|
+
while (low < high) {
|
|
464
|
+
const mid = (low + high) >>> 1;
|
|
465
|
+
if (points[mid].x < x - reach)
|
|
466
|
+
low = mid + 1;
|
|
467
|
+
else
|
|
468
|
+
high = mid;
|
|
469
|
+
}
|
|
470
|
+
let best = null, score = Infinity;
|
|
471
|
+
for (let i = low; i < points.length && points[i].x <= x + reach; i++) {
|
|
472
|
+
const point = points[i];
|
|
473
|
+
for (const circle of this.glyphCircles.get(identityKey(point.id)) ?? []) {
|
|
474
|
+
const distance = (x - circle.cx) ** 2 + (y - circle.cy) ** 2, radius = Math.max(circle.radius, this.touchTolerance);
|
|
475
|
+
if (distance <= radius * radius && distance < score) {
|
|
476
|
+
best = point;
|
|
477
|
+
score = distance;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
const stem = point.stem;
|
|
481
|
+
if (stem) {
|
|
482
|
+
const first = Math.min(stem.startY, stem.endY), last = Math.max(stem.startY, stem.endY), dy = y < first ? first - y : y > last ? y - last : 0, distance = (x - stem.x) ** 2 + dy * dy, radius = Math.max(1, this.touchTolerance);
|
|
483
|
+
if (distance <= radius * radius && distance < score) {
|
|
484
|
+
best = point;
|
|
485
|
+
score = distance;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
return best;
|
|
490
|
+
}
|
|
491
|
+
setActive(point) {
|
|
492
|
+
if (point !== this.active)
|
|
493
|
+
point = point ? this.point(point.id) : null;
|
|
494
|
+
const changed = this.contentMode === 'shared' ? point?.group?.key !== this.active?.group?.key : point !== this.active;
|
|
495
|
+
this.active = point;
|
|
496
|
+
const hapticState = this.hapticState;
|
|
497
|
+
if (changed && point && !hapticState.busy) {
|
|
498
|
+
try {
|
|
499
|
+
if (this.haptics.allowed()) {
|
|
500
|
+
hapticState.busy = true;
|
|
501
|
+
// A stalled platform promise may outlive the chart. Its completion
|
|
502
|
+
// needs only this gate, never the session or its component owner.
|
|
503
|
+
void Promise.resolve(this.haptics.selection()).catch(() => { }).finally(() => { hapticState.busy = false; });
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
catch {
|
|
507
|
+
hapticState.busy = false;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
this.emit();
|
|
511
|
+
}
|
|
512
|
+
emit() {
|
|
513
|
+
if (!this.listener)
|
|
514
|
+
return;
|
|
515
|
+
const previous = this.lastEmitted, shared = this.shared();
|
|
516
|
+
if (previous && previous.active === this.active && previous.selected === this.selected && previous.scrubbing === this.scrubbing && !!previous.pinned === this.pinned && previous.shared === shared)
|
|
517
|
+
return;
|
|
518
|
+
const next = this.snapshot;
|
|
519
|
+
this.lastEmitted = next;
|
|
520
|
+
this.listener(next);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
//# sourceMappingURL=interaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/library/interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAC,kBAAkB,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAqI,MAAM,gBAAgB,CAAC;AAChL,OAAO,EAAE,QAAQ,EAAC,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAEzD,2FAA2F;AAC3F,MAAM,OAAO,kBAAkB;IAsCoB;IAC9B;IAAmH;IAtC9H,YAAY,CAAc;IAClC,IAAI,KAAK,KAAe,OAAO,IAAI,CAAC,YAAY,CAAC,CAAA,CAAC;IACjC,SAAS,GAAC,IAAI,GAAG,EAAiB,CAAC;IACnC,cAAc,GAAC,IAAI,GAAG,EAAiC,CAAC;IACjE,WAAW,CAA2B;IAC7B,WAAW,CAAwB;IACnC,cAAc,GAAC,IAAI,GAAG,EAAiB,CAAC;IACxC,MAAM,CAA8E;IAC7F,QAAQ,CAAmD;IAC3D,WAAW,CAA+B;IAC1C,MAAM,GAAuB,IAAI,CAAC;IAClC,QAAQ,GAAmB,IAAI,CAAC;IAChC,SAAS,GAAG,KAAK,CAAC;IAClB,MAAM,GAAG,KAAK,CAAC;IACf,OAAO,GAAoC,IAAI,CAAC;IAChD,KAAK,GAAkB,IAAI,CAAC;IAC5B,SAAS,GAAG,KAAK,CAAC;IACT,WAAW,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,CAAC;IACpC,cAAc,GAAG,CAAC,CAAC;IACV,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,YAAY,GAAC,IAAI,GAAG,EAAgD,CAAC;IAC9E,WAAW,GAAwB,EAAE,CAAC;IACtC,kBAAkB,GAAC,CAAC,CAAC;IACZ,SAAS,CAAmF;IAC5F,OAAO,CAAsB;IAC7B,aAAa,CAA2B;IACxC,OAAO,CAA4B;IACnC,MAAM,CAAyB;IAC/B,YAAY,CAAQ;IACpB,WAAW,CAAQ;IACnB,QAAQ,GAAG,GAAG,CAAC;IACf,KAAK,CAAgB;IACrB,QAAQ,CAAuB;IAC/B,QAAQ,CAAsB;IAC9B,IAAI,CAAmB;IACvB,OAAO,CAAsB;IAE9C,YAAY,KAAkB,EAAmB,KAAiB,EAC/C,OAAmB,EAAE,QAAiD,EAAC,mBAA8B,IAAI,EAAU,cAA6B,OAAO,EAAC,YAAoB;QAD9I,UAAK,GAAL,KAAK,CAAY;QAC/C,YAAO,GAAP,OAAO,CAAY;QAAgG,gBAAW,GAAX,WAAW,CAAyB;QACxK,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,GAAC,KAAK,CAAC,MAAM,KAAG,WAAW,CAAA,CAAC,CAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAA,EAAE,CAAA,CAAC,EAAC,KAAK,EAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,KAAG,iBAAiB,CAAA,CAAC,CAAA,EAAC,GAAG,EAAC,KAAK,CAAC,GAAG,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,KAAK,CAAC,KAAK,EAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QACzM,IAAI,CAAC,OAAO,GAAC,KAAK,CAAC,MAAM,KAAG,SAAS,IAAE,KAAK,CAAC,MAAM,KAAG,WAAW,CAAA,CAAC,CAAA,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAC,KAAK,CAAC,KAAK,EAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAC7I,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA,CAAC,CAAA,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAC,KAAK,CAAC,KAAK,EAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QACpM,IAAI,CAAC,IAAI,GAAC,KAAK,CAAC,IAAI,CAAA,CAAC,CAAA,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAK,CAAC,MAAM,CAAC,OAAO,EAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,IAAI,EAAE,QAAQ,KAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAA,EAAE,CAAA,CAAC,EAAC,IAAI,EAAC,KAAK,CAAC,IAAK,CAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAC,EAAC,KAAK,CAAC,KAAK,EAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QACxN,IAAI,CAAC,QAAQ,GAAC,KAAK,CAAC,MAAM,KAAG,SAAS,CAAA,CAAC,CAAA,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QACnF,IAAI,CAAC,QAAQ,GAAC,CAAC,YAAY,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAC,KAAK,CAAC,MAAM,KAAG,QAAQ,IAAE,KAAK,CAAC,MAAM,KAAG,UAAU,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAC7M,IAAG,KAAK,CAAC,MAAM,KAAG,UAAU,IAAE,KAAK,CAAC,MAAM,KAAG,UAAU,EAAC,CAAC;YACvD,KAAI,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAC,KAAI,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,IAAE,EAAE,EAAC,CAAC;oBAC5E,IAAG,MAAM,CAAC,OAAO,KAAG,SAAS;wBAAC,SAAS;oBACvC,MAAM,GAAG,GAAC,WAAW,CAAC,EAAC,QAAQ,EAAC,MAAM,CAAC,EAAE,EAAC,OAAO,EAAC,MAAM,CAAC,OAAO,EAAC,CAAC,EAAC,OAAO,GAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAE,EAAE,CAAC;oBAC1G,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAC,OAAO,CAAC,CAAC;oBAAA,IAAI,CAAC,kBAAkB,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClI,CAAC;YACD,IAAI,CAAC,WAAW,GAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,IAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9H,CAAC;QACD,IAAI,CAAC,KAAK,GAAC,CAAC,KAAK,CAAC,MAAM,KAAG,SAAS,IAAE,KAAK,CAAC,MAAM,KAAG,cAAc,CAAC,CAAA,CAAC,CAAA,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAC3G,IAAG,WAAW,KAAG,QAAQ,IAAE,CAAC,CAAC,CAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAC,aAAa,EAAC,UAAU,EAAC,UAAU,EAAC,eAAe,EAAC,SAAS,EAAC,UAAU,EAAC,WAAW,EAAC,iBAAiB,EAAC,aAAa,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,aAAa,EAAC,YAAY,EAAC,QAAQ,EAAC,OAAO,EAAC,QAAQ,EAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;QAC7Z,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,OAAO,GAAC,gBAAgB,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QACjE,IAAI,CAAC,MAAM,GAAC,OAAO,CAAC;QAAA,IAAI,CAAC,QAAQ,GAAC,OAAO,EAAE,EAAE,IAAE,IAAI,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,EAAC,QAAQ,EAAC,aAAa,EAAC,UAAU,EAAC,UAAU,EAAC,eAAe,EAAC,SAAS,EAAC,UAAU,EAAC,WAAW,EAAC,iBAAiB,EAAC,aAAa,EAAC,WAAW,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,MAAM,EAAC,aAAa,EAAC,YAAY,EAAC,QAAQ,EAAC,OAAO,EAAC,QAAQ,EAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA,CAAC,CAAA,EAAE,EAAE,CAAC;YACnU,MAAM,UAAU,GAAG,WAAW,KAAG,QAAQ,CAAA,CAAC,CAAA,CAAC,CAAC,KAAM,CAAC,UAAU,CAAA,CAAC,CAAA,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,KAAK,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,QAAQ,IAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,KAAG,YAAY,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;YAC7K,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC;QAC1G,MAAM,QAAQ,GAAC,IAAI,GAAG,EAAwB,CAAC;QAC/C,IAAG,WAAW,KAAG,QAAQ;YAAC,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAC,CAAC;gBAAA,IAAG,CAAC,KAAK,CAAC,KAAK;oBAAC,SAAS;gBAAA,MAAM,IAAI,GAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAE,EAAE,CAAC;gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAC,IAAI,CAAC,CAAC;YAAA,CAAC;QACjM,MAAM,KAAK,GAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,IAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,KAAI,MAAM,CAAC,GAAG,EAAC,MAAM,CAAC,IAAG,QAAQ;YAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAE,GAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAE,CAAC,CAAC,CAAC,CAAC;QACtJ,IAAI,CAAC,WAAW,GAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAA,EAAE,CAAA,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,KAAM,CAAC,UAAU,GAAC,CAAC,CAAC,KAAM,CAAC,UAAU,CAAC,CAAC;QAChI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAM,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAG,WAAW,KAAG,QAAQ,IAAE,YAAY,EAAC,CAAC;YAAA,MAAM,QAAQ,GAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAAA,IAAG,QAAQ,EAAC,CAAC;gBAAA,IAAI,CAAC,MAAM,GAAC,QAAQ,CAAC;gBAAA,IAAI,CAAC,QAAQ,GAAC,QAAQ,CAAC,EAAE,CAAC;YAAA,CAAC;QAAA,CAAC;QACjK,IAAI,CAAC,aAAa,GAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QACzF,IAAI,CAAC,OAAO,GAAC,KAAK,CAAC,MAAM,KAAG,UAAU,IAAE,KAAK,CAAC,MAAM,KAAG,WAAW,CAAA,CAAC,CAAA,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAC3H,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,KAAG,aAAa,IAAE,KAAK,CAAC,MAAM,KAAG,OAAO,IAAE,KAAK,CAAC,MAAM,KAAG,KAAK,IAAE,KAAK,CAAC,MAAM,KAAG,OAAO,IAAE,KAAK,CAAC,MAAM,KAAG,OAAO;YACtI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,GAAG,EAAE,IAAI,KAAG,QAAQ,IAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAE,CAAC,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,CAAC,GAAI,CAAC,IAAI,KAAG,QAAQ,CAAA,CAAC,CAAA,CAAC,CAAC,GAAI,CAAC,KAAK,CAAA,CAAC,CAAA,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,GAAI,CAAC,IAAI,KAAG,QAAQ,CAAA,CAAC,CAAA,CAAC,CAAC,GAAI,CAAC,KAAK,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAC;QACrN,MAAM,WAAW,GAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;QACtC,IAAI,CAAC,YAAY,GAAC,WAAW,EAAE,IAAI,KAAG,QAAQ,CAAA,CAAC,CAAA,WAAW,CAAC,KAAK,CAAA,CAAC,CAAA,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,GAAC,CAAC,IAAI,CAAC,YAAY,GAAC,CAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC;QACvE,wFAAwF;QACxF,IAAG,CAAC,KAAK,CAAC,MAAM,KAAG,QAAQ,IAAE,KAAK,CAAC,MAAM,KAAG,UAAU,IAAE,KAAK,CAAC,MAAM,KAAG,cAAc,IAAE,KAAK,CAAC,MAAM,KAAG,cAAc,IAAE,KAAK,CAAC,MAAM,KAAG,WAAW,IAAE,KAAK,CAAC,MAAM,KAAG,SAAS,IAAE,KAAK,CAAC,MAAM,KAAG,YAAY,IAAE,KAAK,CAAC,MAAM,KAAG,UAAU,IAAE,KAAK,CAAC,MAAM,KAAG,OAAO,IAAE,KAAK,CAAC,MAAM,KAAG,QAAQ,IAAE,KAAK,CAAC,MAAM,KAAG,SAAS,CAAC;YAAC,KAAI,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAC,CAAC;gBAAA,MAAM,CAAC,GAAC,CAAC,CAAC,GAAG,CAAC;gBAAA,IAAG,CAAC,CAAC,IAAE,CAAC,CAAC,IAAI,KAAG,QAAQ,IAAE,CAAC,CAAC,MAAM,IAAE,CAAC;oBAAC,SAAS;gBAClZ,KAAI,IAAI,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,IAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,EAAE;oBACnK,KAAI,IAAI,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,IAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC;wBACtK,MAAM,GAAG,GAAC,CAAC,GAAC,GAAG,GAAC,CAAC,CAAC;wBAAA,MAAM,MAAM,GAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAE,EAAE,CAAC;wBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAC,MAAM,CAAC,CAAC;oBACzG,CAAC;YACL,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,KAAyB,MAAM,MAAM,GAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,GAAG,CAAC,MAAM,CAAA,CAAC,CAAA,EAAC,MAAM,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA,CAAC,CAAA,EAAC,MAAM,EAAC,IAAa,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,CAAC,CAAC,CAAA,CAAC;IACpO,6FAA6F;IAC7F,SAAS,CAAC,KAAa;QACrB,IAAG,IAAI,CAAC,SAAS;YAAC,OAAO,KAAK,CAAC;QAC/B,IAAG,KAAK,KAAG,IAAI,CAAC,MAAM;YAAC,OAAO,IAAI,CAAC,MAAM,CAAC;QAC1C,IAAG,KAAK,IAAE,CAAC,IAAI,CAAC,MAAM;YAAC,OAAO,KAAK,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;QAAA,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC;QAAA,IAAI,CAAC,SAAS,GAAC,KAAK,CAAC;QAC1D,IAAG,KAAK;YAAC,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC,MAAO,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAC,KAAK,CAAC;QAAA,IAAI,CAAC,IAAI,EAAE,CAAC;QAAA,OAAO,IAAI,CAAC,MAAM,CAAC;IACnD,CAAC;IACO,MAAM;QACZ,MAAM,KAAK,GAAC,IAAI,CAAC,WAAW,KAAG,QAAQ,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,EAAE,KAAK,CAAA,CAAC,CAAA,SAAS,CAAC;QAAA,IAAG,CAAC,KAAK;YAAC,OAAO,SAAS,CAAC;QAChG,IAAG,IAAI,CAAC,WAAW,EAAE,GAAG,KAAG,KAAK,CAAC,GAAG;YAAC,OAAO,IAAI,CAAC,WAAW,CAAC;QAC7D,MAAM,MAAM,GAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,EAAC,QAAQ,GAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClJ,MAAM,KAAK,GAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,MAAM,GAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,OAAO,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,KAAK,CAAA,CAAC,CAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,GAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5J,OAAO,IAAI,CAAC,WAAW,GAAC,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,MAAM,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,EAAC,KAAK,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAE,IAAI,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IACtL,CAAC;IACD,4EAA4E;IAC5E,kBAAkB,CAAC,KAAiB;QAClC,IAAG,IAAI,CAAC,SAAS;YAAC,OAAO,KAAK,CAAC;QAAA,MAAM,KAAK,GAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAG,KAAK,KAAG,IAAI,CAAC,YAAY;YAAC,OAAO,IAAI,CAAC;QACzC,IAAG,mBAAmB,CAAC,KAAK,CAAC,KAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAC,OAAO,KAAK,CAAC;QAC7E,MAAM,EAAE,GAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAAA,IAAI,CAAC,YAAY,GAAC,KAAK,CAAC;QAAA,IAAI,CAAC,WAAW,GAAC,SAAS,CAAC;QAAA,IAAI,CAAC,MAAM,GAAC,EAAE,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAAA,IAAI,CAAC,IAAI,EAAE,CAAC;QAAA,OAAO,IAAI,CAAC;IACzI,CAAC;IACO,KAAK,CAAC,EAAU,IAAmB,MAAM,KAAK,GAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,OAAO,KAAK,KAAG,SAAS,CAAA,CAAC,CAAA,IAAI,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAE,IAAI,CAAC,CAAA,CAAC;IAC/J,4FAA4F;IAC5F,GAAG,CAAC,CAAQ,EAAC,CAAQ,EAAC,SAAS,GAAC,CAAC;QAC/B,IAAG,IAAI,CAAC,SAAS,IAAE,IAAI,CAAC,MAAM,IAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAC,OAAO;QAChF,IAAI,CAAC,cAAc,GAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC,SAAS,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC;QACrF,MAAM,IAAI,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAC,IAAI,CAAC,QAAQ,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAC5D,IAAG,CAAC,IAAI,CAAC,SAAS,IAAE,IAAI,IAAE,QAAQ,IAAE,CAAC,IAAI,CAAC,WAAW,KAAG,QAAQ,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,EAAE,GAAG,KAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAA,CAAC,CAAA,IAAI,CAAC,EAAE,CAAC,QAAQ,KAAG,QAAQ,CAAC,EAAE,CAAC,QAAQ,IAAE,IAAI,CAAC,EAAE,CAAC,OAAO,KAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,EAAC,CAAC;YAAA,IAAI,CAAC,KAAK,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC;QAC7M,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,EAAC,SAAS,CAAC,CAAC;QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,SAAS,GAAG,CAAC;QACvC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO;QACxF,IAAI,CAAC,WAAW,EAAE,CAAC;QAAA,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,GAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC,SAAS,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,CAAC,CAAS,EAAE,CAAS;QACvB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO;QAC3G,IAAG,IAAI,CAAC,OAAO,EAAC,CAAC;YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAC,CAAC,CAAC;YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAC,CAAC,CAAC;QAAA,CAAC;;YAAK,IAAI,CAAC,OAAO,GAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;IACL,CAAC;IACD,GAAG,CAAC,MAAe;QACjB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,WAAW,KAAG,QAAQ,CAAA,CAAC,CAAA,IAAI,CAAC,WAAW,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;IAC9E,CAAC;IACD,IAAY,eAAe;QACzB,IAAG,CAAC,IAAI,CAAC,MAAM;YAAC,OAAO,SAAS,CAAC;QACjC,OAAO,IAAI,CAAC,WAAW,KAAG,QAAQ,CAAA,CAAC,CAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAM,CAAC,GAAG,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACrI,CAAC;IACD,gGAAgG;IAChG,IAAI,eAAe;QACjB,MAAM,GAAG,GAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACvC,OAAO,GAAG,CAAA,CAAC,CAAA,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,GAAG,EAAC,CAAC,IAAI,CAAC,eAAe,IAAE,CAAC,CAAC,GAAC,CAAC,EAAC,CAAA,CAAC,CAAA,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC;IAC7E,CAAC;IACD,mFAAmF;IACnF,IAAI,CAAC,SAAoC;QACvC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAClF,IAAI,CAAC,WAAW,EAAE,CAAC;QAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAChE,MAAM,MAAM,GAAC,IAAI,CAAC,gBAAgB,CAAC;QACnC,IAAI,KAAY,CAAC;QACjB,IAAG,SAAS,KAAG,OAAO;YAAC,KAAK,GAAC,CAAC,CAAC;aAC1B,IAAG,SAAS,KAAG,MAAM;YAAC,KAAK,GAAC,MAAM,CAAC,MAAM,GAAC,CAAC,CAAC;aAC7C,CAAC;YACH,MAAM,OAAO,GAAC,IAAI,CAAC,eAAe,IAAE,CAAC,SAAS,KAAG,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAA,CAAC,CAAA,MAAM,CAAC,MAAM,CAAC,CAAC;YACrE,KAAK,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAC,CAAC,EAAC,OAAO,GAAC,SAAS,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,EAAE,CAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,KAAK;QACH,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;QAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAAC,IAAI,CAAC,MAAM,GAAC,KAAK,CAAC;QAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5I,CAAC;IACD,OAAO;QACL,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAAA,IAAI,CAAC,WAAW,GAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAC,KAAK,CAAC;QAClB,IAAI,CAAC,WAAW,GAAC,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;QAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAAA,IAAI,CAAC,WAAW,GAAC,SAAS,CAAC;IAC1O,CAAC;IACO,WAAW,KAAW,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IAClG,KAAK,KAAW,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrI,OAAO,CAAC,CAAS,EAAE,CAAS,EAAC,UAAU,GAAC,KAAK;QACnD,IAAG,CAAC,GAAC,CAAC,IAAE,CAAC,GAAC,CAAC,IAAE,CAAC,GAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAE,CAAC,GAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAC,OAAO,IAAI,CAAC;QACjE,IAAG,IAAI,CAAC,SAAS,EAAC,CAAC;YAAA,MAAM,GAAG,GAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;YAAA,OAAO,GAAG,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAAA,CAAC;QAChG,IAAG,IAAI,CAAC,OAAO,EAAC,CAAC;YAAA,MAAM,GAAG,GAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;YAAA,OAAO,GAAG,CAAC,IAAI,KAAG,OAAO,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,UAAU,IAAE,GAAG,CAAC,IAAI,KAAG,KAAK,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC;QAAA,CAAC;QACpJ,IAAG,IAAI,CAAC,IAAI,EAAC,CAAC;YAAA,MAAM,KAAK,GAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;YAAA,OAAO,KAAK,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC;QAAA,CAAC;QAC7G,IAAG,IAAI,CAAC,OAAO,EAAC,CAAC;YAAA,MAAM,KAAK,GAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;YAAA,OAAO,KAAK,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,UAAU,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,WAAW,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC;QAAA,CAAC;QACpJ,IAAG,IAAI,CAAC,QAAQ,EAAC,CAAC;YAAA,MAAM,KAAK,GAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAAA,OAAO,KAAK,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,CAAC,UAAU,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,CAAC;QAAA,CAAC;QAC3I,IAAG,IAAI,CAAC,QAAQ;YAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,cAAc,CAAC,IAAE,CAAC,UAAU,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,CAAC;QACnG,IAAG,CAAC,QAAQ,EAAC,WAAW,EAAC,cAAc,EAAC,cAAc,EAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC,CAAC;YAClG,MAAM,IAAI,GAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3B,IAAG,IAAI,IAAE,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,IAAE,CAAC,GAAC,IAAI,CAAC,CAAC,GAAC,IAAI,CAAC,KAAK,IAAE,CAAC,GAAC,IAAI,CAAC,CAAC,IAAE,CAAC,GAAC,IAAI,CAAC,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;gBAAC,OAAO,IAAI,CAAC;QACvF,CAAC;QACD,IAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,UAAU,EAAC,CAAC;YACjC,IAAI,QAAQ,GAAkB,IAAI,EAAC,OAAO,GAAC,CAAC,CAAC,CAAC;YAC9C,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAC,CAAC;gBAAA,MAAM,GAAG,GAAC,KAAK,CAAC,GAAG,CAAC;gBAAA,IAAG,GAAG,EAAE,IAAI,KAAG,QAAQ,IAAE,GAAG,CAAC,MAAM,IAAE,GAAG,CAAC,WAAW;oBAAC,SAAS;gBAC5H,MAAM,MAAM,GAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,GAAG,CAAC,EAAE,EAAC,CAAC,GAAC,GAAG,CAAC,EAAE,CAAC,EAAC,KAAK,GAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,GAAG,CAAC,EAAE,EAAC,GAAG,CAAC,EAAE,GAAC,CAAC,CAAC,EAAC,KAAK,GAAC,CAAC,CAAC,KAAK,GAAC,GAAG,CAAC,KAAK,CAAC,GAAC,CAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC;gBAC3I,IAAG,MAAM,IAAE,GAAG,CAAC,WAAW,IAAE,MAAM,IAAE,GAAG,CAAC,MAAM,IAAE,KAAK,IAAE,GAAG,CAAC,GAAG,GAAC,GAAG,CAAC,KAAK,GAAC,KAAK,IAAE,GAAG,CAAC,WAAW,GAAC,OAAO,EAAC,CAAC;oBAAA,QAAQ,GAAC,KAAK,CAAC;oBAAA,OAAO,GAAC,GAAG,CAAC,WAAW,CAAC;gBAAA,CAAC;YACnJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,MAAM,EAAC,CAAC;YAC7B,IAAI,QAAQ,GAAiD,IAAI,EAAC,KAAK,GAAC,QAAQ,CAAC;YACjF,KAAI,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAC,KAAI,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,IAAE,EAAE,EAAC,CAAC;oBAC5E,IAAG,MAAM,CAAC,OAAO,KAAG,SAAS;wBAAC,SAAS;oBACvC,MAAM,QAAQ,GAAC,CAAC,CAAC,GAAC,MAAM,CAAC,EAAE,CAAC,IAAE,CAAC,GAAC,CAAC,CAAC,GAAC,MAAM,CAAC,EAAE,CAAC,IAAE,CAAC,EAAC,MAAM,GAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACpG,IAAG,QAAQ,IAAE,MAAM,GAAC,MAAM,IAAE,QAAQ,GAAC,KAAK,EAAC,CAAC;wBAAA,QAAQ,GAAC,EAAC,QAAQ,EAAC,MAAM,CAAC,EAAE,EAAC,OAAO,EAAC,MAAM,CAAC,OAAO,EAAC,CAAC;wBAAA,KAAK,GAAC,QAAQ,CAAC;oBAAA,CAAC;gBACnH,CAAC;YACD,OAAO,QAAQ,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAC5C,CAAC;QACD,IAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,UAAU,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,UAAU;YAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAChG,IAAG,IAAI,CAAC,KAAK;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1C,IAAG,IAAI,CAAC,aAAa;YAAC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,cAAc,CAAC,IAAE,CAAC,UAAU,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,CAAC;QAC7G,IAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,QAAQ;YAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAC,CAAC,EAAC,CAAC,CAAC,IAAE,CAAC,UAAU,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,CAAC;QACrH,IAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,QAAQ,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,SAAS;YAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QACtH,IAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,QAAQ,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,UAAU,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,cAAc,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,cAAc,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,WAAW,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,SAAS,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,YAAY,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,UAAU,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,OAAO,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,QAAQ,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,SAAS,CAAC,EAAC,CAAC;YACrW,MAAM,UAAU,GAAC,IAAI,GAAG,EAAe,CAAC;YACxC,KAAI,IAAI,EAAE,GAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,cAAc,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,EAAE,IAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,cAAc,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,EAAE,EAAE;gBACrH,KAAI,IAAI,EAAE,GAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,cAAc,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,EAAE,IAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,cAAc,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,EAAE,EAAE;oBACrH,KAAI,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAC,GAAG,GAAC,EAAE,CAAC,IAAE,EAAE;wBAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,IAAI,GAAkB,IAAI,EAAC,KAAK,GAAC,QAAQ,CAAC;YAC9C,KAAI,MAAM,CAAC,IAAI,UAAU,EAAC,CAAC;gBAAA,MAAM,CAAC,GAAC,CAAC,CAAC,GAAI,CAAC;gBAAA,IAAG,CAAC,CAAC,IAAI,KAAG,QAAQ;oBAAC,SAAS;gBAAA,MAAM,QAAQ,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAE,CAAC,IAAE,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,EAAE,CAAC,IAAE,CAAC,CAAC;gBAAA,IAAG,QAAQ,IAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAC,IAAI,CAAC,cAAc,CAAC,IAAE,CAAC,IAAE,QAAQ,GAAC,KAAK,EAAC,CAAC;oBAAA,IAAI,GAAC,CAAC,CAAC;oBAAA,KAAK,GAAC,QAAQ,CAAC;gBAAA,CAAC;YAAA,CAAC;YAC/M,OAAO,IAAI,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QACvC,CAAC;QACD,IAAG,IAAI,CAAC,OAAO,EAAC,CAAC;YAAA,MAAM,KAAK,GAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;YAAA,OAAO,KAAK,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAAA,CAAC;QAC5F,IAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAC,CAAC;YACrB,sFAAsF;YACtF,MAAM,KAAK,GAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,EAAC,CAAC,GAAC,KAAK,CAAC,GAAI,CAAC;YAAA,IAAG,CAAC,CAAC,IAAI,KAAG,QAAQ;gBAAC,OAAO,IAAI,CAAC;YAC1E,MAAM,MAAM,GAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAC,EAAE,EAAC,CAAC,GAAC,CAAC,CAAC,EAAE,CAAC,EAAC,KAAK,GAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC;YAC/F,MAAM,QAAQ,GAAC,IAAI,CAAC,YAAY,GAAC,CAAC,KAAK,GAAC,IAAI,CAAC,WAAW,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC;YAChF,IAAI,GAAG,GAAC,CAAC,EAAC,IAAI,GAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAClC,OAAM,GAAG,GAAC,IAAI,EAAC,CAAC;gBAAA,MAAM,GAAG,GAAC,CAAC,GAAG,GAAC,IAAI,CAAC,KAAG,CAAC,CAAC;gBAAA,MAAM,MAAM,GAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC,GAAI,CAAC;gBAAA,IAAG,MAAM,CAAC,IAAI,KAAG,QAAQ,IAAE,MAAM,CAAC,KAAK,IAAE,QAAQ;oBAAC,GAAG,GAAC,GAAG,GAAC,CAAC,CAAC;;oBAAK,IAAI,GAAC,GAAG,CAAC;YAAA,CAAC;YACxJ,MAAM,KAAK,GAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,GAAG,GAAC,CAAC,CAAC,CAAE,EAAC,MAAM,GAAC,KAAK,CAAC,GAAI,CAAC;YAC9D,IAAG,MAAM,CAAC,IAAI,KAAG,QAAQ,EAAC,CAAC;gBACzB,MAAM,QAAQ,GAAC,QAAQ,GAAC,MAAM,CAAC,KAAK,CAAC;gBACrC,OAAO,MAAM,IAAE,MAAM,CAAC,WAAW,IAAE,MAAM,IAAE,MAAM,CAAC,MAAM,IAAE,QAAQ,IAAE,CAAC,KAAK,IAAE,QAAQ,IAAE,MAAM,CAAC,GAAG,GAAC,MAAM,CAAC,KAAK,GAAC,KAAK,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;YAChJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAG,CAAC,aAAa,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QACzF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;YAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC,UAAU,GAAG,MAAM;gBAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;;gBAAM,IAAI,GAAG,GAAG,CAAC;QAAC,CAAC;QACjI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAE,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACvG,IAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,aAAa,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,SAAS,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,UAAU,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,eAAe,EAAC,CAAC;YAChK,MAAM,OAAO,GAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC,EAAC,CAAC,CAAC,IAAE,CAAC,IAAI,KAAG,KAAK,CAAA,CAAC,CAAA,IAAI,CAAA,CAAC,CAAA,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;YAC5G,4EAA4E;YAC5E,wEAAwE;YACxE,sDAAsD;YACtD,IAAG,OAAO,IAAE,CAAC,UAAU;gBAAC,OAAO,OAAO,CAAC;QACzC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAG,IAAI,CAAC,WAAW,KAAG,QAAQ;YAAC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,KAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAE,IAAI,CAAC;QACtG,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAC,CAAC,EAAC,EAAE;YACnC,MAAM,QAAQ,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,KAAK,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,GAAC,KAAK,CAAC,EAAC,OAAO,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,KAAK,CAAA,CAAC,CAAA,IAAI,CAAC,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,CAAC,CAAC,GAAC,KAAK,CAAC,CAAC;YACrI,yEAAyE;YACzE,wEAAwE;YACxE,sEAAsE;YACtE,IAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAC,OAAO,CAAC,IAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAC,KAAK,EAAC,CAAC;gBAC1F,uEAAuE;gBACvE,sDAAsD;gBACtD,OAAO,CAAC,CAAC,QAAQ,KAAG,SAAS,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;YACvC,CAAC;YACD,OAAO,QAAQ,GAAC,OAAO,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IACO,YAAY,CAAC,CAAQ,EAAC,CAAQ;QACpC,MAAM,KAAK,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAC,IAAI,CAAC,cAAc,CAAC,EAAC,MAAM,GAAC,IAAI,CAAC,WAAW,CAAC;QAC1F,IAAI,GAAG,GAAC,CAAC,EAAC,IAAI,GAAC,MAAM,CAAC,MAAM,CAAC;QAC7B,OAAM,GAAG,GAAC,IAAI,EAAC,CAAC;YAAA,MAAM,GAAG,GAAC,CAAC,GAAG,GAAC,IAAI,CAAC,KAAG,CAAC,CAAC;YAAA,IAAG,MAAM,CAAC,GAAG,CAAE,CAAC,CAAC,GAAC,CAAC,GAAC,KAAK;gBAAC,GAAG,GAAC,GAAG,GAAC,CAAC,CAAC;;gBAAK,IAAI,GAAC,GAAG,CAAC;QAAA,CAAC;QAC5F,IAAI,IAAI,GAAkB,IAAI,EAAC,KAAK,GAAC,QAAQ,CAAC;QAC9C,KAAI,IAAI,CAAC,GAAC,GAAG,EAAC,CAAC,GAAC,MAAM,CAAC,MAAM,IAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,IAAE,CAAC,GAAC,KAAK,EAAC,CAAC,EAAE,EAAC,CAAC;YACxD,MAAM,KAAK,GAAC,MAAM,CAAC,CAAC,CAAE,CAAC;YACvB,KAAI,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAE,EAAE,EAAC,CAAC;gBACpE,MAAM,QAAQ,GAAC,CAAC,CAAC,GAAC,MAAM,CAAC,EAAE,CAAC,IAAE,CAAC,GAAC,CAAC,CAAC,GAAC,MAAM,CAAC,EAAE,CAAC,IAAE,CAAC,EAAC,MAAM,GAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACpG,IAAG,QAAQ,IAAE,MAAM,GAAC,MAAM,IAAE,QAAQ,GAAC,KAAK,EAAC,CAAC;oBAAA,IAAI,GAAC,KAAK,CAAC;oBAAA,KAAK,GAAC,QAAQ,CAAC;gBAAA,CAAC;YACzE,CAAC;YACD,MAAM,IAAI,GAAC,KAAK,CAAC,IAAI,CAAC;YACtB,IAAG,IAAI,EAAC,CAAC;gBAAA,MAAM,KAAK,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAC,IAAI,CAAC,IAAI,CAAC,EAAC,IAAI,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAC,IAAI,CAAC,IAAI,CAAC,EAAC,EAAE,GAAC,CAAC,GAAC,KAAK,CAAA,CAAC,CAAA,KAAK,GAAC,CAAC,CAAA,CAAC,CAAA,CAAC,GAAC,IAAI,CAAA,CAAC,CAAA,CAAC,GAAC,IAAI,CAAA,CAAC,CAAA,CAAC,EAAC,QAAQ,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,CAAC,IAAE,CAAC,GAAC,EAAE,GAAC,EAAE,EAAC,MAAM,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC/L,IAAG,QAAQ,IAAE,MAAM,GAAC,MAAM,IAAE,QAAQ,GAAC,KAAK,EAAC,CAAC;oBAAA,IAAI,GAAC,KAAK,CAAC;oBAAA,KAAK,GAAC,QAAQ,CAAC;gBAAA,CAAC;YACzE,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACO,SAAS,CAAC,KAAyB;QACzC,IAAG,KAAK,KAAG,IAAI,CAAC,MAAM;YAAC,KAAK,GAAC,KAAK,CAAA,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,KAAG,QAAQ,CAAA,CAAC,CAAA,KAAK,EAAE,KAAK,EAAE,GAAG,KAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAA,CAAC,CAAA,KAAK,KAAG,IAAI,CAAC,MAAM,CAAC;QAC5G,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,WAAW,GAAC,IAAI,CAAC,WAAW,CAAC;QACnC,IAAI,OAAO,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC3B,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;oBACxB,mEAAmE;oBACnE,kEAAkE;oBAClE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9G,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBAAC,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC;YAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACO,IAAI;QACV,IAAG,CAAC,IAAI,CAAC,QAAQ;YAAC,OAAO;QACzB,MAAM,QAAQ,GAAC,IAAI,CAAC,WAAW,EAAC,MAAM,GAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrD,IAAG,QAAQ,IAAE,QAAQ,CAAC,MAAM,KAAG,IAAI,CAAC,MAAM,IAAE,QAAQ,CAAC,QAAQ,KAAG,IAAI,CAAC,QAAQ,IAAE,QAAQ,CAAC,SAAS,KAAG,IAAI,CAAC,SAAS,IAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAG,IAAI,CAAC,MAAM,IAAE,QAAQ,CAAC,MAAM,KAAG,MAAM;YAAC,OAAO;QACrL,MAAM,IAAI,GAAC,IAAI,CAAC,QAAQ,CAAC;QAAA,IAAI,CAAC,WAAW,GAAC,IAAI,CAAC;QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { NativeMarkerShape, NativeMarkerStyle } from './contracts.js';
|
|
2
|
+
export type ResolvedMarkerStyle = Readonly<{
|
|
3
|
+
shape: NativeMarkerShape;
|
|
4
|
+
fillColor: string | undefined;
|
|
5
|
+
borderColor: string | undefined;
|
|
6
|
+
borderWidth: number;
|
|
7
|
+
}>;
|
|
8
|
+
/** Constant-size presentation validation. It never projects data or changes hit targets. */
|
|
9
|
+
export declare function resolveMarkerStyle(input: NativeMarkerStyle | undefined): ResolvedMarkerStyle;
|
|
10
|
+
export declare function sameMarkerStyle(a: ResolvedMarkerStyle, b: ResolvedMarkerStyle): boolean;
|
|
11
|
+
/** Geometry here is the display symbol around an already projected point. */
|
|
12
|
+
export declare function markerSvg(x: number, y: number, diameter: number, pointColor: string, style: ResolvedMarkerStyle): string;
|
|
13
|
+
/** Bounded point clouds keep every source symbol while batching by paint, not by SVG node. */
|
|
14
|
+
export declare function markerBatchSvg(points: readonly Readonly<{
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
color: string;
|
|
18
|
+
}>[], transform: Readonly<{
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
sx: number;
|
|
22
|
+
sy: number;
|
|
23
|
+
}>, diameter: number, style: ResolvedMarkerStyle): string;
|
|
24
|
+
//# sourceMappingURL=marker-style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marker-style.d.ts","sourceRoot":"","sources":["../../src/library/marker-style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAC,QAAQ,CAAC;IAAC,KAAK,EAAC,iBAAiB,CAAC;IAAA,SAAS,EAAC,MAAM,GAAC,SAAS,CAAC;IAAA,WAAW,EAAC,MAAM,GAAC,SAAS,CAAC;IAAA,WAAW,EAAC,MAAM,CAAA;CAAC,CAAC,CAAC;AAI/I,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,iBAAiB,GAAC,SAAS,GAAE,mBAAmB,CASxF;AACD,wBAAgB,eAAe,CAAC,CAAC,EAAC,mBAAmB,EAAC,CAAC,EAAC,mBAAmB,GAAE,OAAO,CAEnF;AACD,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM,EAAC,KAAK,EAAC,mBAAmB,GAAE,MAAM,CAM9G;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,MAAM,EAAC,SAAS,QAAQ,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAA;CAAC,CAAC,EAAE,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,EAAC,QAAQ,EAAC,MAAM,EAAC,KAAK,EAAC,mBAAmB,GAAE,MAAM,CAOxM"}
|