@pibbl/core 0.0.2 → 0.0.3-alpha.109.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/THIRD_PARTY_NOTICES.txt +81 -0
- package/dist/features/physics/2d-testing.d.ts +1 -1
- package/dist/features/physics/2d-testing.js +2 -2
- package/dist/features/physics/2d-testing.js.map +2 -2
- package/dist/features/physics/lib/2d/canvas/components.js +25 -21
- package/dist/features/physics/lib/2d/canvas/components.js.map +2 -2
- package/dist/features/physics/lib/2d/canvas/presentation.js +1 -2
- package/dist/features/physics/lib/2d/canvas/presentation.js.map +2 -2
- package/dist/features/physics/lib/2d/collision/casts.js +4 -2
- package/dist/features/physics/lib/2d/collision/casts.js.map +2 -2
- package/dist/features/physics/lib/2d/runtime/controller.js +1 -1
- package/dist/features/physics/lib/2d/runtime/controller.js.map +2 -2
- package/dist/features/physics/lib/2d/runtime/obstacles.js +9 -11
- package/dist/features/physics/lib/2d/runtime/obstacles.js.map +2 -2
- package/dist/features/physics/lib/2d/shapes.js +8 -9
- package/dist/features/physics/lib/2d/shapes.js.map +2 -2
- package/dist/features/physics/lib/2d/world/rapier.js +22 -26
- package/dist/features/physics/lib/2d/world/rapier.js.map +2 -2
- package/dist/features/sprites/loader.js +6 -3
- package/dist/features/sprites/loader.js.map +2 -2
- package/dist/features/textures/index.d.ts +12 -2
- package/dist/features/textures/index.js +33 -1
- package/dist/features/textures/index.js.map +2 -2
- package/dist/features/textures/lib/chemical-field.d.ts +56 -0
- package/dist/features/textures/lib/chemical-field.js +154 -0
- package/dist/features/textures/lib/chemical-field.js.map +7 -0
- package/dist/features/textures/lib/chemical-recipes.d.ts +119 -0
- package/dist/features/textures/lib/chemical-recipes.js +275 -0
- package/dist/features/textures/lib/chemical-recipes.js.map +7 -0
- package/dist/features/textures/lib/definitions.d.ts +3 -18
- package/dist/features/textures/lib/definitions.js +17 -24
- package/dist/features/textures/lib/definitions.js.map +2 -2
- package/dist/features/textures/lib/geometric-patterns.d.ts +149 -0
- package/dist/features/textures/lib/geometric-patterns.js +305 -0
- package/dist/features/textures/lib/geometric-patterns.js.map +7 -0
- package/dist/features/textures/lib/gray-scott.d.ts +55 -0
- package/dist/features/textures/lib/gray-scott.js +37 -0
- package/dist/features/textures/lib/gray-scott.js.map +7 -0
- package/dist/features/textures/lib/palette.js +1 -3
- package/dist/features/textures/lib/palette.js.map +2 -2
- package/dist/features/textures/lib/patterns.d.ts +123 -0
- package/dist/features/textures/lib/patterns.js +344 -0
- package/dist/features/textures/lib/patterns.js.map +7 -0
- package/dist/features/textures/lib/rain-drops.js +2 -1
- package/dist/features/textures/lib/rain-drops.js.map +2 -2
- package/dist/features/textures/lib/reaction-diffusion.d.ts +3 -2
- package/dist/features/textures/lib/reaction-diffusion.js +9 -20
- package/dist/features/textures/lib/reaction-diffusion.js.map +2 -2
- package/dist/features/textures/lib/simulation.d.ts +10 -4
- package/dist/features/textures/lib/simulation.js +23 -13
- package/dist/features/textures/lib/simulation.js.map +2 -2
- package/dist/features/textures/lib/wasm/electric.js +8 -1
- package/dist/features/textures/lib/wasm/electric.js.map +2 -2
- package/dist/features/textures/lib/water-surface.js +1 -3
- package/dist/features/textures/lib/water-surface.js.map +2 -2
- package/dist/features/viz/index.d.ts +68 -6
- package/dist/features/viz/index.js +164 -2
- package/dist/features/viz/index.js.map +2 -2
- package/dist/features/viz/inspection/bar.d.ts +79 -0
- package/dist/features/viz/inspection/bar.js +49 -0
- package/dist/features/viz/inspection/bar.js.map +7 -0
- package/dist/features/viz/inspection/candle.d.ts +156 -0
- package/dist/features/viz/inspection/candle.js +120 -0
- package/dist/features/viz/inspection/candle.js.map +7 -0
- package/dist/features/viz/inspection/capture-types.d.ts +65 -0
- package/dist/features/viz/inspection/capture.d.ts +16 -0
- package/dist/features/viz/inspection/capture.js +49 -0
- package/dist/features/viz/inspection/capture.js.map +7 -0
- package/dist/features/viz/inspection/handler.d.ts +36 -0
- package/dist/features/viz/inspection/handler.js +91 -0
- package/dist/features/viz/inspection/handler.js.map +7 -0
- package/dist/features/viz/inspection/ohlc-bar.d.ts +132 -0
- package/dist/features/viz/inspection/ohlc-bar.js +118 -0
- package/dist/features/viz/inspection/ohlc-bar.js.map +7 -0
- package/dist/features/viz/inspection/owned-ref.d.ts +16 -0
- package/dist/features/viz/inspection/owned-ref.js +99 -0
- package/dist/features/viz/inspection/owned-ref.js.map +7 -0
- package/dist/features/viz/inspection/painted-point.d.ts +22 -0
- package/dist/features/viz/inspection/painted-point.js +29 -0
- package/dist/features/viz/inspection/painted-point.js.map +7 -0
- package/dist/features/viz/inspection/queries.d.ts +100 -0
- package/dist/features/viz/inspection/queries.js +192 -0
- package/dist/features/viz/inspection/queries.js.map +7 -0
- package/dist/features/viz/inspection/query-types.d.ts +177 -0
- package/dist/features/viz/inspection/volume.d.ts +104 -0
- package/dist/features/viz/inspection/volume.js +95 -0
- package/dist/features/viz/inspection/volume.js.map +7 -0
- package/dist/features/viz/inspection.d.ts +19 -0
- package/dist/features/viz/inspection.js +54 -0
- package/dist/features/viz/inspection.js.map +7 -0
- package/dist/features/viz/inspection.mjs +1 -0
- package/dist/features/viz/lib/area-series.d.ts +62 -0
- package/dist/features/viz/lib/area-series.js +120 -0
- package/dist/features/viz/lib/area-series.js.map +7 -0
- package/dist/features/viz/lib/axis-title.js +2 -1
- package/dist/features/viz/lib/axis-title.js.map +2 -2
- package/dist/features/viz/lib/axis.js +1 -1
- package/dist/features/viz/lib/axis.js.map +2 -2
- package/dist/features/viz/lib/bar-series.d.ts +3 -1
- package/dist/features/viz/lib/bar-series.js +16 -1
- package/dist/features/viz/lib/bar-series.js.map +2 -2
- package/dist/features/viz/lib/baseline-series.d.ts +55 -0
- package/dist/features/viz/lib/baseline-series.js +136 -0
- package/dist/features/viz/lib/baseline-series.js.map +7 -0
- package/dist/features/viz/lib/candlestick-series.d.ts +62 -0
- package/dist/features/viz/lib/candlestick-series.js +150 -0
- package/dist/features/viz/lib/candlestick-series.js.map +7 -0
- package/dist/features/viz/lib/censored-point-series.d.ts +71 -0
- package/dist/features/viz/lib/censored-point-series.js +129 -0
- package/dist/features/viz/lib/censored-point-series.js.map +7 -0
- package/dist/features/viz/lib/color-context.d.ts +4 -0
- package/dist/features/viz/lib/color-context.js +41 -0
- package/dist/features/viz/lib/color-context.js.map +7 -0
- package/dist/features/viz/lib/color-math.d.ts +4 -0
- package/dist/features/viz/lib/color-math.js +31 -0
- package/dist/features/viz/lib/color-math.js.map +7 -0
- package/dist/features/viz/lib/color-types.d.ts +53 -0
- package/dist/features/viz/lib/curve-definition.d.ts +49 -0
- package/dist/features/viz/lib/curve-definition.js +142 -0
- package/dist/features/viz/lib/curve-definition.js.map +7 -0
- package/dist/features/viz/lib/diverging-color-scale.d.ts +11 -0
- package/dist/features/viz/lib/diverging-color-scale.js +51 -0
- package/dist/features/viz/lib/diverging-color-scale.js.map +7 -0
- package/dist/features/viz/lib/domain-navigation.d.ts +40 -0
- package/dist/features/viz/lib/domain-navigation.js +77 -0
- package/dist/features/viz/lib/domain-navigation.js.map +7 -0
- package/dist/features/viz/lib/editable-chart-elements.d.ts +178 -0
- package/dist/features/viz/lib/editable-chart-elements.js +733 -0
- package/dist/features/viz/lib/editable-chart-elements.js.map +7 -0
- package/dist/features/viz/lib/financial-aggregation.d.ts +127 -0
- package/dist/features/viz/lib/financial-aggregation.js +116 -0
- package/dist/features/viz/lib/financial-aggregation.js.map +7 -0
- package/dist/features/viz/lib/financial-autoscale.d.ts +64 -0
- package/dist/features/viz/lib/financial-autoscale.js +61 -0
- package/dist/features/viz/lib/financial-autoscale.js.map +7 -0
- package/dist/features/viz/lib/financial-comparison.d.ts +62 -0
- package/dist/features/viz/lib/financial-comparison.js +98 -0
- package/dist/features/viz/lib/financial-comparison.js.map +7 -0
- package/dist/features/viz/lib/financial-geometry.d.ts +77 -0
- package/dist/features/viz/lib/financial-geometry.js +67 -0
- package/dist/features/viz/lib/financial-geometry.js.map +7 -0
- package/dist/features/viz/lib/financial-indicators.d.ts +114 -0
- package/dist/features/viz/lib/financial-indicators.js +135 -0
- package/dist/features/viz/lib/financial-indicators.js.map +7 -0
- package/dist/features/viz/lib/financial-oscillators.d.ts +171 -0
- package/dist/features/viz/lib/financial-oscillators.js +265 -0
- package/dist/features/viz/lib/financial-oscillators.js.map +7 -0
- package/dist/features/viz/lib/graph/bipartite.d.ts +14 -0
- package/dist/features/viz/lib/graph/bipartite.js +250 -0
- package/dist/features/viz/lib/graph/bipartite.js.map +7 -0
- package/dist/features/viz/lib/graph/chord.d.ts +44 -0
- package/dist/features/viz/lib/graph/chord.js +348 -0
- package/dist/features/viz/lib/graph/chord.js.map +7 -0
- package/dist/features/viz/lib/graph/dependency.d.ts +26 -0
- package/dist/features/viz/lib/graph/dependency.js +140 -0
- package/dist/features/viz/lib/graph/dependency.js.map +7 -0
- package/dist/features/viz/lib/graph/force.d.ts +28 -0
- package/dist/features/viz/lib/graph/force.js +580 -0
- package/dist/features/viz/lib/graph/force.js.map +7 -0
- package/dist/features/viz/lib/graph/hierarchy.d.ts +21 -0
- package/dist/features/viz/lib/graph/hierarchy.js +112 -0
- package/dist/features/viz/lib/graph/hierarchy.js.map +7 -0
- package/dist/features/viz/lib/graph/icicle.d.ts +16 -0
- package/dist/features/viz/lib/graph/icicle.js +153 -0
- package/dist/features/viz/lib/graph/icicle.js.map +7 -0
- package/dist/features/viz/lib/graph/matrix.d.ts +30 -0
- package/dist/features/viz/lib/graph/matrix.js +243 -0
- package/dist/features/viz/lib/graph/matrix.js.map +7 -0
- package/dist/features/viz/lib/graph/neighborhood.d.ts +11 -0
- package/dist/features/viz/lib/graph/neighborhood.js +281 -0
- package/dist/features/viz/lib/graph/neighborhood.js.map +7 -0
- package/dist/features/viz/lib/graph/routes.d.ts +35 -0
- package/dist/features/viz/lib/graph/routes.js +101 -0
- package/dist/features/viz/lib/graph/routes.js.map +7 -0
- package/dist/features/viz/lib/graph/sankey.d.ts +44 -0
- package/dist/features/viz/lib/graph/sankey.js +341 -0
- package/dist/features/viz/lib/graph/sankey.js.map +7 -0
- package/dist/features/viz/lib/graph/shared.d.ts +59 -0
- package/dist/features/viz/lib/graph/shared.js +301 -0
- package/dist/features/viz/lib/graph/shared.js.map +7 -0
- package/dist/features/viz/lib/graph/tree.d.ts +11 -0
- package/dist/features/viz/lib/graph/tree.js +232 -0
- package/dist/features/viz/lib/graph/tree.js.map +7 -0
- package/dist/features/viz/lib/graph/treemap.d.ts +20 -0
- package/dist/features/viz/lib/graph/treemap.js +227 -0
- package/dist/features/viz/lib/graph/treemap.js.map +7 -0
- package/dist/features/viz/lib/graph/types.d.ts +1097 -0
- package/dist/features/viz/lib/hover-card.js +8 -9
- package/dist/features/viz/lib/hover-card.js.map +2 -2
- package/dist/features/viz/lib/hover-data.d.ts +1 -1
- package/dist/features/viz/lib/hover-data.js +5 -2
- package/dist/features/viz/lib/hover-data.js.map +2 -2
- package/dist/features/viz/lib/interval-band-series.d.ts +49 -0
- package/dist/features/viz/lib/interval-band-series.js +136 -0
- package/dist/features/viz/lib/interval-band-series.js.map +7 -0
- package/dist/features/viz/lib/interval-diamond-series.d.ts +43 -0
- package/dist/features/viz/lib/interval-diamond-series.js +122 -0
- package/dist/features/viz/lib/interval-diamond-series.js.map +7 -0
- package/dist/features/viz/lib/interval-series.d.ts +79 -0
- package/dist/features/viz/lib/interval-series.js +158 -0
- package/dist/features/viz/lib/interval-series.js.map +7 -0
- package/dist/features/viz/lib/layout-pie.js +9 -13
- package/dist/features/viz/lib/layout-pie.js.map +2 -2
- package/dist/features/viz/lib/line-series.d.ts +1 -1
- package/dist/features/viz/lib/line-series.js +47 -28
- package/dist/features/viz/lib/line-series.js.map +2 -2
- package/dist/features/viz/lib/linear-scale.js +1 -1
- package/dist/features/viz/lib/linear-scale.js.map +2 -2
- package/dist/features/viz/lib/monotone-curve.d.ts +11 -0
- package/dist/features/viz/lib/monotone-curve.js +63 -0
- package/dist/features/viz/lib/monotone-curve.js.map +7 -0
- package/dist/features/viz/lib/numeric-range-interpolation.d.ts +15 -0
- package/dist/features/viz/lib/numeric-range-interpolation.js +36 -0
- package/dist/features/viz/lib/numeric-range-interpolation.js.map +7 -0
- package/dist/features/viz/lib/ohlc-bar-series.d.ts +55 -0
- package/dist/features/viz/lib/ohlc-bar-series.js +168 -0
- package/dist/features/viz/lib/ohlc-bar-series.js.map +7 -0
- package/dist/features/viz/lib/paired-series.d.ts +44 -0
- package/dist/features/viz/lib/paired-series.js +93 -0
- package/dist/features/viz/lib/paired-series.js.map +7 -0
- package/dist/features/viz/lib/pie-layout.js +2 -1
- package/dist/features/viz/lib/pie-layout.js.map +2 -2
- package/dist/features/viz/lib/plot-series.js +11 -6
- package/dist/features/viz/lib/plot-series.js.map +2 -2
- package/dist/features/viz/lib/plot-types.d.ts +4 -3
- package/dist/features/viz/lib/point-series.d.ts +1 -1
- package/dist/features/viz/lib/point-series.js +36 -9
- package/dist/features/viz/lib/point-series.js.map +2 -2
- package/dist/features/viz/lib/point-types.d.ts +5 -2
- package/dist/features/viz/lib/reference-band.js +4 -1
- package/dist/features/viz/lib/reference-band.js.map +2 -2
- package/dist/features/viz/lib/scale-context.d.ts +1 -1
- package/dist/features/viz/lib/scale-ticks.js +21 -6
- package/dist/features/viz/lib/scale-ticks.js.map +2 -2
- package/dist/features/viz/lib/sequential-color-scale.d.ts +11 -0
- package/dist/features/viz/lib/sequential-color-scale.js +49 -0
- package/dist/features/viz/lib/sequential-color-scale.js.map +7 -0
- package/dist/features/viz/lib/series-position.d.ts +12 -0
- package/dist/features/viz/lib/series-position.js +44 -0
- package/dist/features/viz/lib/series-position.js.map +7 -0
- package/dist/features/viz/lib/step-curves.d.ts +19 -0
- package/dist/features/viz/lib/step-curves.js +53 -0
- package/dist/features/viz/lib/step-curves.js.map +7 -0
- package/dist/features/viz/lib/threshold-color-scale.d.ts +43 -0
- package/dist/features/viz/lib/threshold-color-scale.js +59 -0
- package/dist/features/viz/lib/threshold-color-scale.js.map +7 -0
- package/dist/features/viz/lib/trading-time-mapping.d.ts +32 -0
- package/dist/features/viz/lib/trading-time-mapping.js +89 -0
- package/dist/features/viz/lib/trading-time-mapping.js.map +7 -0
- package/dist/features/viz/lib/trading-time-scale.d.ts +83 -0
- package/dist/features/viz/lib/trading-time-scale.js +96 -0
- package/dist/features/viz/lib/trading-time-scale.js.map +7 -0
- package/dist/features/viz/lib/trajectory-series.d.ts +71 -0
- package/dist/features/viz/lib/trajectory-series.js +111 -0
- package/dist/features/viz/lib/trajectory-series.js.map +7 -0
- package/dist/features/viz/lib/types.d.ts +20 -4
- package/dist/features/viz/lib/use-continuous-scale.js +6 -1
- package/dist/features/viz/lib/use-continuous-scale.js.map +2 -2
- package/dist/features/viz/lib/utc-scale.js +11 -10
- package/dist/features/viz/lib/utc-scale.js.map +2 -2
- package/dist/features/viz/lib/volume-series.d.ts +59 -0
- package/dist/features/viz/lib/volume-series.js +117 -0
- package/dist/features/viz/lib/volume-series.js.map +7 -0
- package/dist/features/viz/lib/weighted-point-series.d.ts +71 -0
- package/dist/features/viz/lib/weighted-point-series.js +169 -0
- package/dist/features/viz/lib/weighted-point-series.js.map +7 -0
- package/dist/filters/backdrop-contrast-gpu.d.ts +5 -0
- package/dist/filters/backdrop-contrast-gpu.js +33 -0
- package/dist/filters/backdrop-contrast-gpu.js.map +7 -0
- package/dist/filters/backdrop-contrast.d.ts +21 -0
- package/dist/filters/backdrop-contrast.js +61 -0
- package/dist/filters/backdrop-contrast.js.map +7 -0
- package/dist/filters/displacement.js +1 -1
- package/dist/filters/displacement.js.map +2 -2
- package/dist/filters/emboss-gpu.d.ts +4 -0
- package/dist/filters/emboss-gpu.js +39 -0
- package/dist/filters/emboss-gpu.js.map +7 -0
- package/dist/filters/emboss.d.ts +32 -0
- package/dist/filters/emboss.js +104 -0
- package/dist/filters/emboss.js.map +7 -0
- package/dist/filters/filter-executor.d.ts +11 -4
- package/dist/filters/filter-executor.js +104 -49
- package/dist/filters/filter-executor.js.map +2 -2
- package/dist/filters/reflected-light.js +1 -1
- package/dist/filters/reflected-light.js.map +2 -2
- package/dist/filters/reflection-gpu.d.ts +3 -1
- package/dist/filters/reflection-gpu.js +5 -2
- package/dist/filters/reflection-gpu.js.map +2 -2
- package/dist/filters/render-backdrop-contrast-boundary.d.ts +31 -0
- package/dist/filters/render-backdrop-contrast-boundary.js +116 -0
- package/dist/filters/render-backdrop-contrast-boundary.js.map +7 -0
- package/dist/filters/render-emboss-boundary.d.ts +13 -0
- package/dist/filters/render-emboss-boundary.js +131 -0
- package/dist/filters/render-emboss-boundary.js.map +7 -0
- package/dist/filters.d.ts +9 -5
- package/dist/filters.js +4 -0
- package/dist/filters.js.map +2 -2
- package/dist/index.d.ts +9 -5
- package/dist/index.js +18 -2
- package/dist/index.js.map +2 -2
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +6 -0
- package/dist/internal.js.map +2 -2
- package/dist/layout-kernel.d.ts +12 -0
- package/dist/layout-kernel.js +11 -0
- package/dist/layout-kernel.js.map +7 -0
- package/dist/layout-kernel.mjs +1 -0
- package/dist/lib/backend/types.d.ts +13 -1
- package/dist/lib/backend/types.js.map +2 -2
- package/dist/lib/components/arc-geometry.js +2 -1
- package/dist/lib/components/arc-geometry.js.map +2 -2
- package/dist/lib/components/g.js +2 -0
- package/dist/lib/components/g.js.map +2 -2
- package/dist/lib/components/html-box.js +2 -1
- package/dist/lib/components/html-box.js.map +2 -2
- package/dist/lib/components/img.js +3 -3
- package/dist/lib/components/img.js.map +2 -2
- package/dist/lib/components/layer.js +98 -16
- package/dist/lib/components/layer.js.map +3 -3
- package/dist/lib/components/text.d.ts +16 -0
- package/dist/lib/components/text.js +131 -24
- package/dist/lib/components/text.js.map +2 -2
- package/dist/lib/define-primitive.d.ts +4 -2
- package/dist/lib/define-primitive.js +3 -1
- package/dist/lib/define-primitive.js.map +2 -2
- package/dist/lib/element/metadata.d.ts +9 -0
- package/dist/lib/element/metadata.js +19 -0
- package/dist/lib/element/metadata.js.map +2 -2
- package/dist/lib/element/resolve-primitive-inputs.d.ts +2 -0
- package/dist/lib/element/resolve-primitive-inputs.js +17 -4
- package/dist/lib/element/resolve-primitive-inputs.js.map +2 -2
- package/dist/lib/events/event-facade.d.ts +18 -0
- package/dist/lib/events/event-facade.js +28 -2
- package/dist/lib/events/event-facade.js.map +2 -2
- package/dist/lib/events/hit-test.js +2 -1
- package/dist/lib/events/hit-test.js.map +2 -2
- package/dist/lib/events/propagation.d.ts +2 -1
- package/dist/lib/events/propagation.js +22 -16
- package/dist/lib/events/propagation.js.map +2 -2
- package/dist/lib/events/registrations.d.ts +10 -0
- package/dist/lib/events/registrations.js +160 -5
- package/dist/lib/events/registrations.js.map +2 -2
- package/dist/lib/execute-render.js +25 -1
- package/dist/lib/execute-render.js.map +2 -2
- package/dist/lib/filter/filter-region.js +3 -10
- package/dist/lib/filter/filter-region.js.map +2 -2
- package/dist/lib/focus/focus-manager.d.ts +8 -1
- package/dist/lib/focus/focus-manager.js +87 -43
- package/dist/lib/focus/focus-manager.js.map +2 -2
- package/dist/lib/focus/geometry.d.ts +2 -0
- package/dist/lib/focus/geometry.js +6 -0
- package/dist/lib/focus/geometry.js.map +2 -2
- package/dist/lib/geometry/path-bend-guide.js +1 -1
- package/dist/lib/geometry/path-bend-guide.js.map +2 -2
- package/dist/lib/geometry/path-geometry.js +12 -11
- package/dist/lib/geometry/path-geometry.js.map +2 -2
- package/dist/lib/geometry/path-transforms.js +17 -21
- package/dist/lib/geometry/path-transforms.js.map +2 -2
- package/dist/lib/geometry/path-warp-bezier.js +3 -1
- package/dist/lib/geometry/path-warp-bezier.js.map +2 -2
- package/dist/lib/geometry/path-warp.js +1 -1
- package/dist/lib/geometry/path-warp.js.map +2 -2
- package/dist/lib/global-state.js +2 -0
- package/dist/lib/global-state.js.map +2 -2
- package/dist/lib/html/html-events.d.ts +32 -0
- package/dist/lib/html/html-events.js +179 -0
- package/dist/lib/html/html-events.js.map +7 -0
- package/dist/lib/html/html-service.d.ts +8 -2
- package/dist/lib/html/html-service.js +198 -65
- package/dist/lib/html/html-service.js.map +2 -2
- package/dist/lib/html/overlay-config.js +7 -6
- package/dist/lib/html/overlay-config.js.map +2 -2
- package/dist/lib/html/types.d.ts +29 -2
- package/dist/lib/layout/absolute.d.ts +11 -5
- package/dist/lib/layout/absolute.js +329 -55
- package/dist/lib/layout/absolute.js.map +3 -3
- package/dist/lib/layout/allocation-checkpoint-owner.d.ts +11 -0
- package/dist/lib/layout/allocation-checkpoint-owner.js +86 -0
- package/dist/lib/layout/allocation-checkpoint-owner.js.map +7 -0
- package/dist/lib/layout/allocation-checkpoint.d.ts +53 -0
- package/dist/lib/layout/allocation-checkpoint.js +463 -0
- package/dist/lib/layout/allocation-checkpoint.js.map +7 -0
- package/dist/lib/layout/allocation-dependencies.d.ts +30 -0
- package/dist/lib/layout/allocation-dependencies.js +90 -0
- package/dist/lib/layout/allocation-dependencies.js.map +7 -0
- package/dist/lib/layout/allocation-revision.d.ts +13 -0
- package/dist/lib/layout/allocation-revision.js +67 -0
- package/dist/lib/layout/allocation-revision.js.map +7 -0
- package/dist/lib/layout/box-insets.d.ts +17 -0
- package/dist/lib/layout/box-insets.js +138 -0
- package/dist/lib/layout/box-insets.js.map +7 -0
- package/dist/lib/layout/box-sizing.d.ts +16 -0
- package/dist/lib/layout/box-sizing.js +77 -0
- package/dist/lib/layout/box-sizing.js.map +7 -0
- package/dist/lib/layout/box.js +42 -12
- package/dist/lib/layout/box.js.map +2 -2
- package/dist/lib/layout/canvas-measurement.d.ts +13 -0
- package/dist/lib/layout/canvas-measurement.js +57 -0
- package/dist/lib/layout/canvas-measurement.js.map +7 -0
- package/dist/lib/layout/context.d.ts +35 -6
- package/dist/lib/layout/context.js +72 -3
- package/dist/lib/layout/context.js.map +2 -2
- package/dist/lib/layout/define-layout-component.d.ts +23 -0
- package/dist/lib/layout/define-layout-component.js +84 -0
- package/dist/lib/layout/define-layout-component.js.map +7 -0
- package/dist/lib/layout/flex-allocation-cache.d.ts +42 -0
- package/dist/lib/layout/flex-baseline-mode.d.ts +2 -0
- package/dist/lib/layout/flex-baseline-mode.js +7 -0
- package/dist/lib/layout/flex-baseline-mode.js.map +7 -0
- package/dist/lib/layout/flex.d.ts +50 -15
- package/dist/lib/layout/flex.js +2124 -195
- package/dist/lib/layout/flex.js.map +3 -3
- package/dist/lib/layout/flow.js +225 -49
- package/dist/lib/layout/flow.js.map +2 -2
- package/dist/lib/layout/geometry-publication.d.ts +53 -0
- package/dist/lib/layout/geometry-publication.js +244 -0
- package/dist/lib/layout/geometry-publication.js.map +7 -0
- package/dist/lib/layout/grid-kernel.d.ts +63 -0
- package/dist/lib/layout/grid-kernel.js +168 -0
- package/dist/lib/layout/grid-kernel.js.map +7 -0
- package/dist/lib/layout/grid.d.ts +63 -4
- package/dist/lib/layout/grid.js +767 -171
- package/dist/lib/layout/grid.js.map +3 -3
- package/dist/lib/layout/measure.d.ts +55 -3
- package/dist/lib/layout/measure.js +448 -15
- package/dist/lib/layout/measure.js.map +2 -2
- package/dist/lib/layout/overlay.js +81 -23
- package/dist/lib/layout/overlay.js.map +2 -2
- package/dist/lib/layout/participation.d.ts +27 -0
- package/dist/lib/layout/participation.js +188 -0
- package/dist/lib/layout/participation.js.map +7 -0
- package/dist/lib/layout/place-child.js +1 -1
- package/dist/lib/layout/place-child.js.map +2 -2
- package/dist/lib/layout/positioning-diagnostics.d.ts +1 -1
- package/dist/lib/layout/positioning-diagnostics.js +13 -2
- package/dist/lib/layout/positioning-diagnostics.js.map +2 -2
- package/dist/lib/layout/prepared-root.d.ts +121 -0
- package/dist/lib/layout/prepared-root.js +360 -0
- package/dist/lib/layout/prepared-root.js.map +7 -0
- package/dist/lib/layout/standalone-kernel.d.ts +60 -0
- package/dist/lib/layout/standalone-kernel.js +722 -0
- package/dist/lib/layout/standalone-kernel.js.map +7 -0
- package/dist/lib/layout/topology.d.ts +21 -0
- package/dist/lib/layout/topology.js +113 -0
- package/dist/lib/layout/topology.js.map +7 -0
- package/dist/lib/layout/types.d.ts +5 -0
- package/dist/lib/layout/wasm/artifact.d.ts +1 -0
- package/dist/lib/layout/wasm/artifact.js +5 -0
- package/dist/lib/layout/wasm/artifact.js.map +7 -0
- package/dist/lib/layout/wasm/bytes.d.ts +1 -0
- package/dist/lib/layout/wasm/bytes.js +5 -0
- package/dist/lib/layout/wasm/bytes.js.map +7 -0
- package/dist/lib/layout/wasm/embedded.d.ts +2 -0
- package/dist/lib/layout/wasm/embedded.js +12 -0
- package/dist/lib/layout/wasm/embedded.js.map +7 -0
- package/dist/lib/layout/wasm/layout.wasm +0 -0
- package/dist/lib/layout/wasm/module.d.ts +8 -0
- package/dist/lib/layout/wasm/module.js +70 -0
- package/dist/lib/layout/wasm/module.js.map +7 -0
- package/dist/lib/layout/wasm/region.d.ts +267 -0
- package/dist/lib/layout/wasm/region.js +1018 -0
- package/dist/lib/layout/wasm/region.js.map +7 -0
- package/dist/lib/manipulation/controller.js +4 -7
- package/dist/lib/manipulation/controller.js.map +2 -2
- package/dist/lib/manipulation/frame.js +1 -1
- package/dist/lib/manipulation/frame.js.map +2 -2
- package/dist/lib/manipulation/handles.js +32 -33
- package/dist/lib/manipulation/handles.js.map +2 -2
- package/dist/lib/manipulation/solve.js +12 -10
- package/dist/lib/manipulation/solve.js.map +2 -2
- package/dist/lib/mount-pibbl.js +1 -0
- package/dist/lib/mount-pibbl.js.map +2 -2
- package/dist/lib/mount-prepared-pibbl.d.ts +5 -0
- package/dist/lib/mount-prepared-pibbl.js +29 -0
- package/dist/lib/mount-prepared-pibbl.js.map +7 -0
- package/dist/lib/mount-request.d.ts +8 -0
- package/dist/lib/mount-request.js +41 -0
- package/dist/lib/mount-request.js.map +7 -0
- package/dist/lib/pibbl.d.ts +21 -13
- package/dist/lib/pibbl.js +18 -16
- package/dist/lib/pibbl.js.map +2 -2
- package/dist/lib/recording/recording.d.ts +43 -0
- package/dist/lib/recording/recording.js +555 -0
- package/dist/lib/recording/recording.js.map +7 -0
- package/dist/lib/recording/types.d.ts +118 -0
- package/dist/lib/recording/wasm-bytes.d.ts +1 -0
- package/dist/lib/recording/wasm-bytes.js +5 -0
- package/dist/lib/recording/wasm-bytes.js.map +7 -0
- package/dist/lib/recording/worker-source.d.ts +1 -0
- package/dist/lib/recording/worker-source.js +5 -0
- package/dist/lib/recording/worker-source.js.map +7 -0
- package/dist/lib/render-layer/controller.d.ts +9 -3
- package/dist/lib/render-layer/controller.js +259 -110
- package/dist/lib/render-layer/controller.js.map +2 -2
- package/dist/lib/render-transaction.d.ts +12 -2
- package/dist/lib/render-transaction.js +69 -1
- package/dist/lib/render-transaction.js.map +2 -2
- package/dist/lib/render.js +32 -8
- package/dist/lib/render.js.map +2 -2
- package/dist/lib/scheduler/realm-scheduler.d.ts +2 -0
- package/dist/lib/scheduler/realm-scheduler.js +55 -26
- package/dist/lib/scheduler/realm-scheduler.js.map +2 -2
- package/dist/lib/scheduler/renderer-participant.js +1 -0
- package/dist/lib/scheduler/renderer-participant.js.map +2 -2
- package/dist/lib/series-inspection-frame.d.ts +18 -0
- package/dist/lib/series-inspection-frame.js +70 -0
- package/dist/lib/series-inspection-frame.js.map +7 -0
- package/dist/lib/signals/edge.d.ts +7 -4
- package/dist/lib/signals/edge.js +25 -3
- package/dist/lib/signals/edge.js.map +2 -2
- package/dist/lib/signals/graph.d.ts +16 -2
- package/dist/lib/signals/graph.js +54 -12
- package/dist/lib/signals/graph.js.map +2 -2
- package/dist/lib/signals/input-provision.d.ts +15 -0
- package/dist/lib/signals/input-provision.js +53 -3
- package/dist/lib/signals/input-provision.js.map +2 -2
- package/dist/lib/signals/render-consumer.d.ts +3 -0
- package/dist/lib/signals/render-consumer.js +22 -14
- package/dist/lib/signals/render-consumer.js.map +2 -2
- package/dist/lib/style/positioning.d.ts +50 -2
- package/dist/lib/style/positioning.js +28 -4
- package/dist/lib/style/positioning.js.map +2 -2
- package/dist/lib/style/resolve-built-in.d.ts +4 -3
- package/dist/lib/style/resolve-built-in.js +17 -3
- package/dist/lib/style/resolve-built-in.js.map +2 -2
- package/dist/lib/style/resolve-dispatch.d.ts +3 -0
- package/dist/lib/style/resolve-dispatch.js +77 -4
- package/dist/lib/style/resolve-dispatch.js.map +2 -2
- package/dist/lib/style/resolve-length.d.ts +2 -0
- package/dist/lib/style/resolve-length.js +13 -9
- package/dist/lib/style/resolve-length.js.map +2 -2
- package/dist/lib/style/sizing-length.d.ts +51 -0
- package/dist/lib/style/sizing-length.js +77 -0
- package/dist/lib/style/sizing-length.js.map +7 -0
- package/dist/lib/style/types.d.ts +63 -25
- package/dist/lib/surface/root-surface.js +10 -6
- package/dist/lib/surface/root-surface.js.map +2 -2
- package/dist/lib/textures/texture.js +10 -8
- package/dist/lib/textures/texture.js.map +2 -2
- package/dist/lib/transitions/capture.js +4 -1
- package/dist/lib/transitions/capture.js.map +2 -2
- package/dist/lib/transitions/embers-physics.js +17 -10
- package/dist/lib/transitions/embers-physics.js.map +2 -2
- package/dist/lib/types.d.ts +110 -1
- package/dist/sync.d.ts +16 -0
- package/dist/sync.js +13 -0
- package/dist/sync.js.map +7 -0
- package/dist/sync.mjs +1 -0
- package/package.json +26 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/lib/geometry/path-warp-bezier.ts"],
|
|
4
|
-
"sourcesContent": ["/** @internal Homogeneous Bernstein curves, degree at most six after warping. */\nexport interface WarpSpan { x: number[]; y: number[]; w: number[] }\nexport type WarpPoint = readonly [number, number];\n\nconst choose = Array.from({ length: 8 }, (_, n) => {\n const row = [1];\n for (let i = 1; i <= n; i++) row[i] = row[i - 1] * (n - i + 1) / i;\n return row;\n});\n\nexport function product(a: readonly number[], b: readonly number[]): number[] {\n const n = a.length - 1, m = b.length - 1;\n const result = new Array<number>(n + m + 1).fill(0);\n for (let i = 0; i <= n; i++) {\n for (let j = 0; j <= m; j++) {\n result[i + j] += a[i] * b[j] * choose[n][i] * choose[m][j] / choose[n + m][i + j];\n }\n }\n return result;\n}\n\nexport function endpoint(span: WarpSpan, index: number): WarpPoint {\n const w = span.w[index], x = span.x[index] / w, y = span.y[index] / w;\n if (w === 0 || !Number.isFinite(x) || !Number.isFinite(y)) {\n throw new RangeError('warpPath encountered a projection pole or coordinate overflow.');\n }\n return [x, y];\n}\n\n/** Bound |R(t)-lerp(R(0),R(1),t)|, including collinear backtracking. */\nfunction errorBound(span: WarpSpan, ax: number, ay: number, bx: number, by: number): number {\n const n = span.w.length - 1;\n const sign = Math.sign(span.w[0]);\n let lower = Infinity, scale = 0, magnitude = 0;\n for (let i = 0; i <= n; i++) {\n lower = Math.min(lower, sign * span.w[i]);\n scale = Math.max(scale, Math.abs(span.w[i]));\n magnitude = Math.max(magnitude, Math.abs(span.x[i]), Math.abs(span.y[i]));\n }\n if (lower <= 0) return Infinity;\n let bound = 0;\n // Degree elevation of N minus the Bernstein product W*L. Computing\n // centered terms reduces cancellation compared with subtracting products.\n for (let i = 0; i <= n + 1; i++) {\n const t = i / (n + 1);\n let x = 0, y = 0;\n if (i <= n) {\n x += (1 - t) * (span.x[i] - span.w[i] * ax);\n y += (1 - t) * (span.y[i] - span.w[i] * ay);\n }\n if (i > 0) {\n x += t * (span.x[i - 1] - span.w[i - 1] * bx);\n y += t * (span.y[i - 1] - span.w[i - 1] * by);\n }\n bound = Math.max(bound, Math.hypot(x, y));\n }\n const roundoff = 64 * Number.EPSILON * (magnitude + scale * Math.max(Math.abs(ax), Math.abs(ay), Math.abs(bx), Math.abs(by)));\n return (bound + roundoff) / lower;\n}\n\n/** Split into reusable buffers. The right destination may alias the input. */\nfunction split(values: readonly number[], left: number[], right: number[], scratch: number[]): void {\n const n = values.length - 1;\n for (let i = 0; i <= n; i++) scratch[i] = values[i];\n left.length = right.length = n + 1;\n left[0] = scratch[0]; right[n] = scratch[n];\n for (let level = 1; level <= n; level++) {\n for (let i = 0; i <= n - level; i++) scratch[i] = scratch[i] / 2 + scratch[i + 1] / 2;\n left[level] = scratch[0]; right[n - level] = scratch[n - level];\n }\n}\n\n/** Call-owned workspace; at most 53 frames (degree <= 6), reused across spans. */\nexport interface WarpWork {\n remaining: number;\n pool: WarpSpan[];\n depths: number[];\n scratch: number[];\n}\nfunction frame(work: WarpWork, index: number): WarpSpan {\n return work.pool[index] ?? (work.pool[index] = { x: [], y: [], w: [] });\n}\nexport function emitSpan(span: WarpSpan
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["\nconst homogeneousCoordinateKeys = ['x', 'y', 'w'] as const;\n/** @internal Homogeneous Bernstein curves, degree at most six after warping. */\nexport interface WarpSpan { x: number[]; y: number[]; w: number[] }\nexport type WarpPoint = readonly [number, number];\n\nconst choose = Array.from({ length: 8 }, (_, n) => {\n const row = [1];\n for (let i = 1; i <= n; i++) row[i] = row[i - 1] * (n - i + 1) / i;\n return row;\n});\n\nexport function product(a: readonly number[], b: readonly number[]): number[] {\n const n = a.length - 1, m = b.length - 1;\n const result = new Array<number>(n + m + 1).fill(0);\n for (let i = 0; i <= n; i++) {\n for (let j = 0; j <= m; j++) {\n result[i + j] += a[i] * b[j] * choose[n][i] * choose[m][j] / choose[n + m][i + j];\n }\n }\n return result;\n}\n\nexport function endpoint(span: WarpSpan, index: number): WarpPoint {\n const w = span.w[index], x = span.x[index] / w, y = span.y[index] / w;\n if (w === 0 || !Number.isFinite(x) || !Number.isFinite(y)) {\n throw new RangeError('warpPath encountered a projection pole or coordinate overflow.');\n }\n return [x, y];\n}\n\n/** Bound |R(t)-lerp(R(0),R(1),t)|, including collinear backtracking. */\nfunction errorBound(span: WarpSpan, ax: number, ay: number, bx: number, by: number): number {\n const n = span.w.length - 1;\n const sign = Math.sign(span.w[0]);\n let lower = Infinity, scale = 0, magnitude = 0;\n for (let i = 0; i <= n; i++) {\n lower = Math.min(lower, sign * span.w[i]);\n scale = Math.max(scale, Math.abs(span.w[i]));\n magnitude = Math.max(magnitude, Math.abs(span.x[i]), Math.abs(span.y[i]));\n }\n if (lower <= 0) return Infinity;\n let bound = 0;\n // Degree elevation of N minus the Bernstein product W*L. Computing\n // centered terms reduces cancellation compared with subtracting products.\n for (let i = 0; i <= n + 1; i++) {\n const t = i / (n + 1);\n let x = 0, y = 0;\n if (i <= n) {\n x += (1 - t) * (span.x[i] - span.w[i] * ax);\n y += (1 - t) * (span.y[i] - span.w[i] * ay);\n }\n if (i > 0) {\n x += t * (span.x[i - 1] - span.w[i - 1] * bx);\n y += t * (span.y[i - 1] - span.w[i - 1] * by);\n }\n bound = Math.max(bound, Math.hypot(x, y));\n }\n const roundoff = 64 * Number.EPSILON * (magnitude + scale * Math.max(Math.abs(ax), Math.abs(ay), Math.abs(bx), Math.abs(by)));\n return (bound + roundoff) / lower;\n}\n\n/** Split into reusable buffers. The right destination may alias the input. */\nfunction split(values: readonly number[], left: number[], right: number[], scratch: number[]): void {\n const n = values.length - 1;\n for (let i = 0; i <= n; i++) scratch[i] = values[i];\n left.length = right.length = n + 1;\n left[0] = scratch[0]; right[n] = scratch[n];\n for (let level = 1; level <= n; level++) {\n for (let i = 0; i <= n - level; i++) scratch[i] = scratch[i] / 2 + scratch[i + 1] / 2;\n left[level] = scratch[0]; right[n - level] = scratch[n - level];\n }\n}\n\n/** Call-owned workspace; at most 53 frames (degree <= 6), reused across spans. */\nexport interface WarpWork {\n remaining: number;\n pool: WarpSpan[];\n depths: number[];\n scratch: number[];\n}\nfunction frame(work: WarpWork, index: number): WarpSpan {\n return work.pool[index] ?? (work.pool[index] = { x: [], y: [], w: [] });\n}\nexport function emitSpan(\n span: WarpSpan,\n tolerance: number,\n work: WarpWork,\n emit: (x: number, y: number) => void,\n): void {\n const first = frame(work, 0);\n for (\n let keyIndex = 0;\n keyIndex < homogeneousCoordinateKeys.length;\n keyIndex++\n ) {\n const key = homogeneousCoordinateKeys[keyIndex];\n first[key].length = span[key].length;\n for (let i = 0; i < span[key].length; i++) {\n const value = span[key][i];\n if (!Number.isFinite(value)) throw new RangeError('warpPath homogeneous coordinates overflowed.');\n first[key][i] = value;\n }\n }\n let size = 1;\n work.depths[0] = 0;\n while (size) {\n if (--work.remaining < 0) throw new RangeError('warpPath exceeded its subdivision work limit.');\n const index = --size, current = work.pool[index], depth = work.depths[index];\n const n = current.w.length - 1;\n const aw = current.w[0], bw = current.w[n];\n const ax = current.x[0] / aw, ay = current.y[0] / aw, bx = current.x[n] / bw, by = current.y[n] / bw;\n if (aw === 0 || bw === 0 || !Number.isFinite(ax) || !Number.isFinite(ay) || !Number.isFinite(bx) || !Number.isFinite(by)) {\n throw new RangeError('warpPath encountered a projection pole or coordinate overflow.');\n }\n if (Math.sign(aw) !== Math.sign(bw)) throw new RangeError('warpPath crosses a projection pole.');\n // A degree-one rational curve with like-signed weights traverses the\n // endpoint chord monotonically. Nonlinear parameter speed is not error.\n if (n === 1 && 64 * Number.EPSILON * Math.max(Math.abs(ax), Math.abs(ay), Math.abs(bx), Math.abs(by)) <= tolerance) {\n emit(bx, by); continue;\n }\n if (errorBound(current, ax, ay, bx, by) <= tolerance) { emit(bx, by); continue; }\n // 52 halvings exhaust meaningful double-precision parameter resolution.\n if (depth >= 52) throw new RangeError('warpPath cannot certify tolerance or finiteness at available precision.');\n const left = frame(work, index + 1);\n split(current.x, left.x, current.x, work.scratch);\n split(current.y, left.y, current.y, work.scratch);\n split(current.w, left.w, current.w, work.scratch);\n work.depths[index] = work.depths[index + 1] = depth + 1;\n size += 2;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -40,7 +40,7 @@ function perspective(corners) {
|
|
|
40
40
|
}
|
|
41
41
|
const g = (dx3 * dy2 - dx2 * dy3) / determinant;
|
|
42
42
|
const h = (dx1 * dy3 - dx3 * dy1) / determinant;
|
|
43
|
-
if (
|
|
43
|
+
if (1 + g <= 64 * Number.EPSILON * (1 + Math.abs(g) + Math.abs(h)) || 1 + h <= 64 * Number.EPSILON * (1 + Math.abs(g) + Math.abs(h)) || 1 + g + h <= 64 * Number.EPSILON * (1 + Math.abs(g) + Math.abs(h))) {
|
|
44
44
|
throw new RangeError("Perspective mapping cannot certify a finite source rectangle.");
|
|
45
45
|
}
|
|
46
46
|
const xx = b[0] - a[0] + g * b[0], xy = c[0] - a[0] + h * c[0];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/lib/geometry/path-warp.ts"],
|
|
4
|
-
"sourcesContent": ["import { arcPoint } from './path-arc.js';\nimport { PathGeometry } from './path-geometry.js';\nimport { emitSpan, endpoint, product, type WarpPoint, type WarpSpan, type WarpWork } from './path-warp-bezier.js';\n\nexport interface PathWarpPoint { readonly x: number; readonly y: number }\nexport interface PathWarpRect { readonly x: number; readonly y: number; readonly width: number; readonly height: number }\nexport interface PathWarpCorners {\n readonly topLeft: PathWarpPoint;\n readonly topRight: PathWarpPoint;\n readonly bottomLeft: PathWarpPoint;\n readonly bottomRight: PathWarpPoint;\n}\nexport type PathWarpMode = 'bilinear' | 'perspective';\nexport interface WarpPathOptions {\n readonly source: PathWarpRect;\n readonly destination: PathWarpCorners;\n readonly mode?: PathWarpMode;\n readonly tolerance: number;\n readonly maxSegments?: number;\n}\n\nfunction number(value: unknown, name: string): number {\n if (typeof value !== 'number') throw new TypeError(`warpPath ${name} must be a number.`);\n if (!Number.isFinite(value)) throw new RangeError(`warpPath ${name} must be finite.`);\n return value;\n}\nfunction point(value: PathWarpPoint | undefined, name: string): WarpPoint {\n return [number(value?.x, `${name}.x`), number(value?.y, `${name}.y`)];\n}\nfunction polynomial(points: readonly WarpPoint[]): WarpSpan {\n return { x: points.map(p => p[0]), y: points.map(p => p[1]), w: points.map(() => 1) };\n}\n\n/** Normalize destination coordinates before solving the unit-square homography. */\nfunction perspective(corners: readonly WarpPoint[]): (span: WarpSpan) => WarpSpan {\n const scale = Math.max(...corners.flatMap(p => [Math.abs(p[0]), Math.abs(p[1])]));\n if (scale === 0) throw new RangeError('Perspective warp requires a strictly convex quadrilateral.');\n const normalized = corners.map(p => [p[0] / scale, p[1] / scale] as const);\n const origin = normalized[0];\n const extent = Math.max(...normalized.flatMap(p => [Math.abs(p[0] - origin[0]), Math.abs(p[1] - origin[1])]));\n if (extent === 0) throw new RangeError('Perspective destination is degenerate.');\n const q = normalized.map(p => [(p[0] - origin[0]) / extent, (p[1] - origin[1]) / extent] as const);\n const perimeter = [q[0], q[1], q[3], q[2]];\n let orientation = 0;\n for (let i = 0; i < 4; i++) {\n const a = perimeter[i], b = perimeter[(i + 1) % 4], c = perimeter[(i + 2) % 4];\n const p = (b[0] - a[0]) * (c[1] - b[1]), r = (b[1] - a[1]) * (c[0] - b[0]);\n const cross = p - r;\n if (Math.abs(cross) <= 32 * Number.EPSILON * (Math.abs(p) + Math.abs(r)) ||\n (orientation !== 0 && Math.sign(cross) !== orientation)) {\n throw new RangeError('Perspective warp requires a strictly convex, nondegenerate quadrilateral.');\n }\n orientation = Math.sign(cross);\n }\n const [a, b, c, d] = q;\n const dx1 = b[0] - d[0], dx2 = c[0] - d[0], dx3 = a[0] - b[0] - c[0] + d[0];\n const dy1 = b[1] - d[1], dy2 = c[1] - d[1], dy3 = a[1] - b[1] - c[1] + d[1];\n const determinant = dx1 * dy2 - dx2 * dy1;\n if (Math.abs(determinant) <= 32 * Number.EPSILON * (Math.abs(dx1 * dy2) + Math.abs(dx2 * dy1))) {\n throw new RangeError('Perspective mapping is numerically singular.');\n }\n const g = (dx3 * dy2 - dx2 * dy3) / determinant;\n const h = (dx1 * dy3 - dx3 * dy1) / determinant;\n if (
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { arcPoint } from './path-arc.js';\nimport { PathGeometry } from './path-geometry.js';\nimport { emitSpan, endpoint, product, type WarpPoint, type WarpSpan, type WarpWork } from './path-warp-bezier.js';\n\nexport interface PathWarpPoint { readonly x: number; readonly y: number }\nexport interface PathWarpRect { readonly x: number; readonly y: number; readonly width: number; readonly height: number }\nexport interface PathWarpCorners {\n readonly topLeft: PathWarpPoint;\n readonly topRight: PathWarpPoint;\n readonly bottomLeft: PathWarpPoint;\n readonly bottomRight: PathWarpPoint;\n}\nexport type PathWarpMode = 'bilinear' | 'perspective';\nexport interface WarpPathOptions {\n readonly source: PathWarpRect;\n readonly destination: PathWarpCorners;\n readonly mode?: PathWarpMode;\n readonly tolerance: number;\n readonly maxSegments?: number;\n}\n\nfunction number(value: unknown, name: string): number {\n if (typeof value !== 'number') throw new TypeError(`warpPath ${name} must be a number.`);\n if (!Number.isFinite(value)) throw new RangeError(`warpPath ${name} must be finite.`);\n return value;\n}\nfunction point(value: PathWarpPoint | undefined, name: string): WarpPoint {\n return [number(value?.x, `${name}.x`), number(value?.y, `${name}.y`)];\n}\nfunction polynomial(points: readonly WarpPoint[]): WarpSpan {\n return { x: points.map(p => p[0]), y: points.map(p => p[1]), w: points.map(() => 1) };\n}\n\n/** Normalize destination coordinates before solving the unit-square homography. */\nfunction perspective(corners: readonly WarpPoint[]): (span: WarpSpan) => WarpSpan {\n const scale = Math.max(...corners.flatMap(p => [Math.abs(p[0]), Math.abs(p[1])]));\n if (scale === 0) throw new RangeError('Perspective warp requires a strictly convex quadrilateral.');\n const normalized = corners.map(p => [p[0] / scale, p[1] / scale] as const);\n const origin = normalized[0];\n const extent = Math.max(...normalized.flatMap(p => [Math.abs(p[0] - origin[0]), Math.abs(p[1] - origin[1])]));\n if (extent === 0) throw new RangeError('Perspective destination is degenerate.');\n const q = normalized.map(p => [(p[0] - origin[0]) / extent, (p[1] - origin[1]) / extent] as const);\n const perimeter = [q[0], q[1], q[3], q[2]];\n let orientation = 0;\n for (let i = 0; i < 4; i++) {\n const a = perimeter[i], b = perimeter[(i + 1) % 4], c = perimeter[(i + 2) % 4];\n const p = (b[0] - a[0]) * (c[1] - b[1]), r = (b[1] - a[1]) * (c[0] - b[0]);\n const cross = p - r;\n if (Math.abs(cross) <= 32 * Number.EPSILON * (Math.abs(p) + Math.abs(r)) ||\n (orientation !== 0 && Math.sign(cross) !== orientation)) {\n throw new RangeError('Perspective warp requires a strictly convex, nondegenerate quadrilateral.');\n }\n orientation = Math.sign(cross);\n }\n const [a, b, c, d] = q;\n const dx1 = b[0] - d[0], dx2 = c[0] - d[0], dx3 = a[0] - b[0] - c[0] + d[0];\n const dy1 = b[1] - d[1], dy2 = c[1] - d[1], dy3 = a[1] - b[1] - c[1] + d[1];\n const determinant = dx1 * dy2 - dx2 * dy1;\n if (Math.abs(determinant) <= 32 * Number.EPSILON * (Math.abs(dx1 * dy2) + Math.abs(dx2 * dy1))) {\n throw new RangeError('Perspective mapping is numerically singular.');\n }\n const g = (dx3 * dy2 - dx2 * dy3) / determinant;\n const h = (dx1 * dy3 - dx3 * dy1) / determinant;\n if (\n 1 + g <= 64 * Number.EPSILON * (1 + Math.abs(g) + Math.abs(h)) ||\n 1 + h <= 64 * Number.EPSILON * (1 + Math.abs(g) + Math.abs(h)) ||\n 1 + g + h <= 64 * Number.EPSILON * (1 + Math.abs(g) + Math.abs(h))\n ) {\n throw new RangeError('Perspective mapping cannot certify a finite source rectangle.');\n }\n const xx = b[0] - a[0] + g * b[0], xy = c[0] - a[0] + h * c[0];\n const yx = b[1] - a[1] + g * b[1], yy = c[1] - a[1] + h * c[1];\n return span => {\n const w = span.w.map((weight, i) => g * span.x[i] + h * span.y[i] + weight);\n const x = w.map((weight, i) => ((xx * span.x[i] + xy * span.y[i] + a[0] * span.w[i]) * extent + origin[0] * weight) * scale);\n const y = w.map((weight, i) => ((yx * span.x[i] + yy * span.y[i] + a[1] * span.w[i]) * extent + origin[1] * weight) * scale);\n return { x, y, w };\n };\n}\n\n/** Approximate a four-corner warp in destination units, returning independent line geometry. */\nexport function warpPath(path: PathGeometry, options: Readonly<WarpPathOptions>): PathGeometry {\n if (!(path instanceof PathGeometry)) throw new TypeError('warpPath requires PathGeometry.');\n const source = options?.source, destination = options?.destination;\n const sx = number(source?.x, 'source.x'), sy = number(source?.y, 'source.y');\n const width = number(source?.width, 'source.width'), height = number(source?.height, 'source.height');\n const tolerance = number(options?.tolerance, 'tolerance');\n const requestedLimit = options?.maxSegments;\n const maxSegments = number(requestedLimit === undefined ? 1_000_000 : requestedLimit, 'maxSegments');\n if (width <= 0 || height <= 0 || tolerance <= 0 || !Number.isSafeInteger(maxSegments) || maxSegments <= 0) {\n throw new RangeError('warpPath requires positive dimensions, tolerance, and a positive safe-integer maxSegments.');\n }\n const requestedMode = options?.mode;\n const mode = requestedMode === undefined ? 'bilinear' : requestedMode;\n if (mode !== 'bilinear' && mode !== 'perspective') throw new TypeError('Unknown warpPath mode.');\n const corners = [point(destination?.topLeft, 'topLeft'), point(destination?.topRight, 'topRight'),\n point(destination?.bottomLeft, 'bottomLeft'), point(destination?.bottomRight, 'bottomRight')];\n const project = mode === 'perspective' ? perspective(corners) : undefined;\n const map = (span: WarpSpan): WarpSpan => {\n const u = span.x.map((x, i) => (x - sx * span.w[i]) / width);\n const v = span.y.map((y, i) => (y - sy * span.w[i]) / height);\n if (project) return project({ x: u, y: v, w: span.w });\n const wu = span.w.map((w, i) => w - u[i]), wv = span.w.map((w, i) => w - v[i]);\n const weights = [product(wu, wv), product(u, wv), product(wu, v), product(u, v)];\n const w = product(span.w, span.w);\n const x = w.map((_, i) => weights.reduce((sum, ws, j) => sum + ws[i] * corners[j][0], 0));\n const y = w.map((_, i) => weights.reduce((sum, ws, j) => sum + ws[i] * corners[j][1], 0));\n return { x, y, w };\n };\n const output = new PathGeometry();\n let count = 0, closed = false;\n const reserve = () => {\n if (++count > maxSegments) throw new RangeError('warpPath exceeded maxSegments.');\n };\n const line = (x: number, y: number) => { reserve(); output.lineTo(x, y); closed = false; };\n // At most 4M subdivision visits per call, even for a pole with no output.\n const work: WarpWork = { remaining: Math.min(4_000_000, 2 * maxSegments + 53), pool: [], depths: [], scratch: [] };\n const emit = (span: WarpSpan) => {\n if (count >= maxSegments) throw new RangeError('warpPath exceeded maxSegments.');\n emitSpan(map(span), tolerance, work, line);\n };\n let current: WarpPoint = [0, 0], start: WarpPoint = current;\n for (const segment of path) {\n switch (segment.type) {\n case 'move': {\n current = start = [segment.x, segment.y];\n const p = endpoint(map(polynomial([current])), 0);\n reserve(); output.moveTo(p[0], p[1]); closed = false;\n break;\n }\n case 'line': {\n const end: WarpPoint = [segment.x, segment.y];\n emit(polynomial([current, end])); current = end; break;\n }\n case 'quadratic': {\n const end: WarpPoint = [segment.x, segment.y];\n emit(polynomial([current, [segment.cpx, segment.cpy], end])); current = end; break;\n }\n case 'cubic': {\n const end: WarpPoint = [segment.x, segment.y];\n emit(polynomial([current, [segment.cp1x, segment.cp1y], [segment.cp2x, segment.cp2y], end]));\n current = end; break;\n }\n case 'arc': {\n const first = arcPoint(segment, segment.startAngle);\n if (current[0] !== first[0] || current[1] !== first[1]) emit(polynomial([current, first]));\n const pieces = Math.max(1, Math.ceil(Math.abs(segment.sweep) / (Math.PI / 2)));\n for (let i = 0; i < pieces; i++) {\n const a = segment.startAngle + segment.sweep * i / pieces;\n const b = segment.startAngle + segment.sweep * (i + 1) / pieces;\n const mid = (a + b) / 2, weight = Math.cos((b - a) / 2);\n const p = arcPoint(segment, a), q = arcPoint(segment, b);\n emit({\n x: [p[0], segment.cx * weight + segment.ux * Math.cos(mid) + segment.vx * Math.sin(mid), q[0]],\n y: [p[1], segment.cy * weight + segment.uy * Math.cos(mid) + segment.vy * Math.sin(mid), q[1]],\n w: [1, weight, 1],\n });\n }\n current = arcPoint(segment, segment.startAngle + segment.sweep);\n break;\n }\n case 'close':\n if (current[0] !== start[0] || current[1] !== start[1]) emit(polynomial([current, start]));\n if (!closed) { reserve(); output.closePath(); closed = true; }\n current = start; break;\n }\n }\n return output;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["a", "b", "c", "x", "y", "w"]
|
|
7
7
|
}
|
package/dist/lib/global-state.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { cancelPendingMount } from "./mount-request.js";
|
|
1
2
|
import { unregisterRootInstance } from "./scheduler/realm-scheduler.js";
|
|
2
3
|
import { runTeardown } from "./teardowns.js";
|
|
3
4
|
const NO_PENDING_ROOT = /* @__PURE__ */ Symbol("PIBBL_NO_PENDING_ROOT");
|
|
@@ -82,6 +83,7 @@ function cleanupPibblInstance(pibblInstance) {
|
|
|
82
83
|
unregisterRootInstance(pibblInstance);
|
|
83
84
|
}
|
|
84
85
|
if (GLOBAL_STATE.pibblInstances.get(canvas) === pibblInstance) {
|
|
86
|
+
if (!pibblInstance.parent) cancelPendingMount(canvas);
|
|
85
87
|
GLOBAL_STATE.pibblInstances.delete(canvas);
|
|
86
88
|
}
|
|
87
89
|
pibblInstance.eventParent = void 0;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/lib/global-state.ts"],
|
|
4
|
-
"sourcesContent": ["import type { LayoutContext } from './layout/types.js';\nimport type { PibblNode } from './element/types.js';\nimport type { RenderTargetSnapshot } from './render-target.js';\nimport type { PibblFrameSnapshot } from './scheduler/types.js';\nimport { unregisterRootInstance } from './scheduler/realm-scheduler.js';\nimport type {\n PibblBackendDriver,\n PibblBackendFrame,\n} from './backend/types.js';\nimport type {\n Canvas,\n PibblComponentRefs,\n PibblClippingStackEntry,\n PibblInstance,\n PibblRenderTransaction,\n RenderingContext2D,\n} from './types.js';\nimport { runTeardown } from './teardowns.js';\n\nexport const NO_PENDING_ROOT = Symbol('PIBBL_NO_PENDING_ROOT');\nexport type PendingRoot = PibblNode | typeof NO_PENDING_ROOT;\n\n/** @internal Exact Pibbl-owned presentation transforms for the active traversal. */\nexport interface PibblPresentationTransformLineage {\n readonly parent: PibblPresentationTransformLineage | undefined;\n readonly localTransform: DOMMatrix;\n /** Number of raw Canvas transform deltas absorbed before this Pibbl node. */\n readonly untrackedCanvasTransformCount: number;\n}\n\nexport interface GlobalState {\n pibblInstances: Map<Canvas, PibblInstance>;\n currentPibblInstance: PibblInstance | undefined;\n componentRefs: PibblComponentRefs<any> | undefined;\n canvas: Canvas | undefined;\n componentIsMounting: boolean;\n componentHookIndex: number;\n backendDriver: PibblBackendDriver<unknown> | undefined;\n backendFrame: PibblBackendFrame<unknown> | undefined;\n backendEnvironment: unknown;\n renderContext: RenderingContext2D | undefined;\n renderTarget: RenderTargetSnapshot | undefined;\n worldBaseTransform: DOMMatrix | undefined;\n worldExactTransform: DOMMatrix | undefined;\n worldPaintAnchorTransform: DOMMatrix | undefined;\n presentationTransformLineage: PibblPresentationTransformLineage | undefined;\n presentationTransformLineageTrackingDepth: number;\n renderTransaction: PibblRenderTransaction | undefined;\n frameSnapshot: PibblFrameSnapshot | undefined;\n primitiveReceiverToken: object | undefined;\n seenIds: Set<string> | undefined;\n seenKeys: Set<string> | undefined;\n clippingStack: PibblClippingStackEntry[];\n htmlFilterDepth: number;\n layoutStack: LayoutContext[] | undefined;\n anonElementNames: WeakMap<any, string>;\n anon: number;\n}\n\nexport const GLOBAL_STATE: GlobalState = {\n pibblInstances: new Map(),\n currentPibblInstance: undefined,\n componentRefs: undefined,\n canvas: undefined,\n componentIsMounting: false,\n componentHookIndex: 0,\n backendDriver: undefined,\n backendFrame: undefined,\n backendEnvironment: undefined,\n renderContext: undefined,\n renderTarget: undefined,\n worldBaseTransform: undefined,\n worldExactTransform: undefined,\n worldPaintAnchorTransform: undefined,\n presentationTransformLineage: undefined,\n presentationTransformLineageTrackingDepth: 0,\n renderTransaction: undefined,\n frameSnapshot: undefined,\n primitiveReceiverToken: undefined,\n seenIds: undefined,\n seenKeys: undefined,\n clippingStack: [],\n htmlFilterDepth: 0,\n layoutStack: undefined,\n anonElementNames: new WeakMap(),\n anon: 0,\n};\n\nexport function getComponentRefs() {\n if (!GLOBAL_STATE.componentRefs) {\n throw new Error('No component refs available');\n }\n return GLOBAL_STATE.componentRefs;\n}\n\nexport function getCanvas() {\n if (!GLOBAL_STATE.canvas) {\n throw new Error('No canvas available');\n }\n return GLOBAL_STATE.canvas;\n}\n\nexport function getCurrentPibblInstance() {\n if (!GLOBAL_STATE.currentPibblInstance) {\n throw new Error('No Pibbl instance available');\n }\n return GLOBAL_STATE.currentPibblInstance;\n}\n\nexport function getInteractionRoot(pibblInstance: PibblInstance): PibblInstance {\n return pibblInstance.interactionRoot ?? pibblInstance;\n}\n\nexport function getPibblInstance(canvas: Canvas) {\n const pibblInstance = GLOBAL_STATE.pibblInstances.get(canvas);\n if (!pibblInstance) {\n throw new Error('Pibbl instance not found');\n }\n return pibblInstance;\n}\n\n/**\n * Used to get a name for an anonymous function.\n * @param fn The anonymous function to get a name for\n * @returns A name for the anonymous function\n */\nexport function getAnonElemName(fn: any) {\n if (!GLOBAL_STATE.anonElementNames.has(fn)) {\n GLOBAL_STATE.anonElementNames.set(fn, `Anon${GLOBAL_STATE.anon++}`);\n }\n return GLOBAL_STATE.anonElementNames.get(fn)!;\n}\n\n/**\n * Useful for testing and HMR.\n * DO NOT USE IN PROD\n */\nexport function clearSharedState() {\n for (const pibblInstance of Array.from(GLOBAL_STATE.pibblInstances.values())) {\n pibblInstance.controller.dispose();\n }\n GLOBAL_STATE.pibblInstances.clear();\n GLOBAL_STATE.clippingStack = [];\n GLOBAL_STATE.layoutStack = undefined;\n GLOBAL_STATE.anonElementNames = new WeakMap<any, string>();\n clearTempState();\n}\n\nexport function cleanupPibblInstance(pibblInstance: PibblInstance): void {\n const { canvas } = pibblInstance;\n if (pibblInstance.mainTeardowns.closed) {\n return;\n }\n\n if (!pibblInstance.parent) {\n unregisterRootInstance(pibblInstance);\n }\n\n if (GLOBAL_STATE.pibblInstances.get(canvas) === pibblInstance) {\n GLOBAL_STATE.pibblInstances.delete(canvas);\n }\n pibblInstance.eventParent = undefined;\n pibblInstance.focusParentBridge = undefined;\n pibblInstance.mainTeardowns.execute();\n runTeardown(() => pibblInstance.backendDriver.dispose());\n runTeardown(() => {\n for (const service of pibblInstance.optionalServices.values()) service.dispose();\n pibblInstance.optionalServices.clear();\n });\n if (!pibblInstance.parent) {\n for (const observers of pibblInstance.eventRoot.observers.values()) {\n observers.clear();\n }\n pibblInstance.eventRoot.observers.clear();\n pibblInstance.eventRoot.targets.clear();\n for (const listeners of pibblInstance.eventRoot.listenersByComponent.values()) {\n listeners.clear();\n }\n pibblInstance.eventRoot.listenersByComponent.clear();\n pibblInstance.eventRoot.pointerCaptures.clear();\n pibblInstance.eventRoot.onNodeRelease = undefined;\n pibblInstance.eventRoot.onTargetUpdate = undefined;\n pibblInstance.eventRoot.focusPolicy = undefined;\n pibblInstance.eventRoot.renderTransaction = undefined;\n pibblInstance.eventRoot.rootInstance = undefined;\n }\n pibblInstance.regions?.clear();\n pibblInstance.paintEntries?.clear();\n pibblInstance.cursorDefaults?.clear();\n const interaction = pibblInstance.interaction;\n if (interaction) {\n if (\n interaction.cursorCanvas &&\n interaction.cursorStyle &&\n interaction.cursorCanvas.style.cursor === interaction.cursorStyle\n ) {\n interaction.cursorCanvas.style.removeProperty('cursor');\n }\n interaction.hoveredRegion = undefined;\n interaction.primaryDown = undefined;\n interaction.primaryUp = undefined;\n interaction.auxiliaryDown.clear();\n interaction.auxiliaryUp.clear();\n interaction.clickStreakTarget = undefined;\n interaction.clickStreak = 0;\n interaction.cursorRegion = undefined;\n interaction.cursorDefault = undefined;\n interaction.pointerCanvas = undefined;\n interaction.cursorCanvas = undefined;\n interaction.cursorStyle = undefined;\n }\n pibblInstance.refs.clear();\n pibblInstance.pendingRoot = NO_PENDING_ROOT;\n pibblInstance.pendingUpdateParents = false;\n}\n\nexport function clearTempState() {\n GLOBAL_STATE.seenIds = undefined;\n GLOBAL_STATE.seenKeys = undefined;\n GLOBAL_STATE.canvas = undefined;\n GLOBAL_STATE.backendDriver = undefined;\n GLOBAL_STATE.backendFrame = undefined;\n GLOBAL_STATE.backendEnvironment = undefined;\n GLOBAL_STATE.renderContext = undefined;\n GLOBAL_STATE.renderTarget = undefined;\n GLOBAL_STATE.worldBaseTransform = undefined;\n GLOBAL_STATE.worldExactTransform = undefined;\n GLOBAL_STATE.worldPaintAnchorTransform = undefined;\n GLOBAL_STATE.presentationTransformLineage = undefined;\n GLOBAL_STATE.presentationTransformLineageTrackingDepth = 0;\n GLOBAL_STATE.renderTransaction = undefined;\n GLOBAL_STATE.frameSnapshot = undefined;\n GLOBAL_STATE.primitiveReceiverToken = undefined;\n GLOBAL_STATE.layoutStack = undefined;\n clearComponentState();\n}\n\nexport function clearComponentState() {\n GLOBAL_STATE.componentRefs = undefined;\n GLOBAL_STATE.componentIsMounting = false;\n GLOBAL_STATE.componentHookIndex = 0;\n}\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import { cancelPendingMount } from './mount-request.js';\nimport type { LayoutContext } from './layout/types.js';\nimport type { PibblNode } from './element/types.js';\nimport type { RenderTargetSnapshot } from './render-target.js';\nimport type { PibblFrameSnapshot } from './scheduler/types.js';\nimport { unregisterRootInstance } from './scheduler/realm-scheduler.js';\nimport type {\n PibblBackendDriver,\n PibblBackendFrame,\n} from './backend/types.js';\nimport type {\n Canvas,\n PibblComponentRefs,\n PibblClippingStackEntry,\n PibblInstance,\n PibblRenderTransaction,\n RenderingContext2D,\n} from './types.js';\nimport { runTeardown } from './teardowns.js';\n\nexport const NO_PENDING_ROOT = Symbol('PIBBL_NO_PENDING_ROOT');\nexport type PendingRoot = PibblNode | typeof NO_PENDING_ROOT;\n\n/** @internal Exact Pibbl-owned presentation transforms for the active traversal. */\nexport interface PibblPresentationTransformLineage {\n readonly parent: PibblPresentationTransformLineage | undefined;\n readonly localTransform: DOMMatrix;\n /** Number of raw Canvas transform deltas absorbed before this Pibbl node. */\n readonly untrackedCanvasTransformCount: number;\n}\n\nexport interface GlobalState {\n pibblInstances: Map<Canvas, PibblInstance>;\n currentPibblInstance: PibblInstance | undefined;\n componentRefs: PibblComponentRefs<any> | undefined;\n canvas: Canvas | undefined;\n componentIsMounting: boolean;\n componentHookIndex: number;\n backendDriver: PibblBackendDriver<unknown> | undefined;\n backendFrame: PibblBackendFrame<unknown> | undefined;\n backendEnvironment: unknown;\n renderContext: RenderingContext2D | undefined;\n renderTarget: RenderTargetSnapshot | undefined;\n worldBaseTransform: DOMMatrix | undefined;\n worldExactTransform: DOMMatrix | undefined;\n worldPaintAnchorTransform: DOMMatrix | undefined;\n presentationTransformLineage: PibblPresentationTransformLineage | undefined;\n presentationTransformLineageTrackingDepth: number;\n renderTransaction: PibblRenderTransaction | undefined;\n frameSnapshot: PibblFrameSnapshot | undefined;\n primitiveReceiverToken: object | undefined;\n seenIds: Set<string> | undefined;\n seenKeys: Set<string> | undefined;\n clippingStack: PibblClippingStackEntry[];\n htmlFilterDepth: number;\n layoutStack: LayoutContext[] | undefined;\n anonElementNames: WeakMap<any, string>;\n anon: number;\n}\n\nexport const GLOBAL_STATE: GlobalState = {\n pibblInstances: new Map(),\n currentPibblInstance: undefined,\n componentRefs: undefined,\n canvas: undefined,\n componentIsMounting: false,\n componentHookIndex: 0,\n backendDriver: undefined,\n backendFrame: undefined,\n backendEnvironment: undefined,\n renderContext: undefined,\n renderTarget: undefined,\n worldBaseTransform: undefined,\n worldExactTransform: undefined,\n worldPaintAnchorTransform: undefined,\n presentationTransformLineage: undefined,\n presentationTransformLineageTrackingDepth: 0,\n renderTransaction: undefined,\n frameSnapshot: undefined,\n primitiveReceiverToken: undefined,\n seenIds: undefined,\n seenKeys: undefined,\n clippingStack: [],\n htmlFilterDepth: 0,\n layoutStack: undefined,\n anonElementNames: new WeakMap(),\n anon: 0,\n};\n\nexport function getComponentRefs() {\n if (!GLOBAL_STATE.componentRefs) {\n throw new Error('No component refs available');\n }\n return GLOBAL_STATE.componentRefs;\n}\n\nexport function getCanvas() {\n if (!GLOBAL_STATE.canvas) {\n throw new Error('No canvas available');\n }\n return GLOBAL_STATE.canvas;\n}\n\nexport function getCurrentPibblInstance() {\n if (!GLOBAL_STATE.currentPibblInstance) {\n throw new Error('No Pibbl instance available');\n }\n return GLOBAL_STATE.currentPibblInstance;\n}\n\nexport function getInteractionRoot(pibblInstance: PibblInstance): PibblInstance {\n return pibblInstance.interactionRoot ?? pibblInstance;\n}\n\nexport function getPibblInstance(canvas: Canvas) {\n const pibblInstance = GLOBAL_STATE.pibblInstances.get(canvas);\n if (!pibblInstance) {\n throw new Error('Pibbl instance not found');\n }\n return pibblInstance;\n}\n\n/**\n * Used to get a name for an anonymous function.\n * @param fn The anonymous function to get a name for\n * @returns A name for the anonymous function\n */\nexport function getAnonElemName(fn: any) {\n if (!GLOBAL_STATE.anonElementNames.has(fn)) {\n GLOBAL_STATE.anonElementNames.set(fn, `Anon${GLOBAL_STATE.anon++}`);\n }\n return GLOBAL_STATE.anonElementNames.get(fn)!;\n}\n\n/**\n * Useful for testing and HMR.\n * DO NOT USE IN PROD\n */\nexport function clearSharedState() {\n for (const pibblInstance of Array.from(GLOBAL_STATE.pibblInstances.values())) {\n pibblInstance.controller.dispose();\n }\n GLOBAL_STATE.pibblInstances.clear();\n GLOBAL_STATE.clippingStack = [];\n GLOBAL_STATE.layoutStack = undefined;\n GLOBAL_STATE.anonElementNames = new WeakMap<any, string>();\n clearTempState();\n}\n\nexport function cleanupPibblInstance(pibblInstance: PibblInstance): void {\n const { canvas } = pibblInstance;\n if (pibblInstance.mainTeardowns.closed) {\n return;\n }\n\n if (!pibblInstance.parent) {\n unregisterRootInstance(pibblInstance);\n }\n\n if (GLOBAL_STATE.pibblInstances.get(canvas) === pibblInstance) {\n if (!pibblInstance.parent) cancelPendingMount(canvas);\n GLOBAL_STATE.pibblInstances.delete(canvas);\n }\n pibblInstance.eventParent = undefined;\n pibblInstance.focusParentBridge = undefined;\n pibblInstance.mainTeardowns.execute();\n runTeardown(() => pibblInstance.backendDriver.dispose());\n runTeardown(() => {\n for (const service of pibblInstance.optionalServices.values()) service.dispose();\n pibblInstance.optionalServices.clear();\n });\n if (!pibblInstance.parent) {\n for (const observers of pibblInstance.eventRoot.observers.values()) {\n observers.clear();\n }\n pibblInstance.eventRoot.observers.clear();\n pibblInstance.eventRoot.targets.clear();\n for (const listeners of pibblInstance.eventRoot.listenersByComponent.values()) {\n listeners.clear();\n }\n pibblInstance.eventRoot.listenersByComponent.clear();\n pibblInstance.eventRoot.pointerCaptures.clear();\n pibblInstance.eventRoot.onNodeRelease = undefined;\n pibblInstance.eventRoot.onTargetUpdate = undefined;\n pibblInstance.eventRoot.focusPolicy = undefined;\n pibblInstance.eventRoot.renderTransaction = undefined;\n pibblInstance.eventRoot.rootInstance = undefined;\n }\n pibblInstance.regions?.clear();\n pibblInstance.paintEntries?.clear();\n pibblInstance.cursorDefaults?.clear();\n const interaction = pibblInstance.interaction;\n if (interaction) {\n if (\n interaction.cursorCanvas &&\n interaction.cursorStyle &&\n interaction.cursorCanvas.style.cursor === interaction.cursorStyle\n ) {\n interaction.cursorCanvas.style.removeProperty('cursor');\n }\n interaction.hoveredRegion = undefined;\n interaction.primaryDown = undefined;\n interaction.primaryUp = undefined;\n interaction.auxiliaryDown.clear();\n interaction.auxiliaryUp.clear();\n interaction.clickStreakTarget = undefined;\n interaction.clickStreak = 0;\n interaction.cursorRegion = undefined;\n interaction.cursorDefault = undefined;\n interaction.pointerCanvas = undefined;\n interaction.cursorCanvas = undefined;\n interaction.cursorStyle = undefined;\n }\n pibblInstance.refs.clear();\n pibblInstance.pendingRoot = NO_PENDING_ROOT;\n pibblInstance.pendingUpdateParents = false;\n}\n\nexport function clearTempState() {\n GLOBAL_STATE.seenIds = undefined;\n GLOBAL_STATE.seenKeys = undefined;\n GLOBAL_STATE.canvas = undefined;\n GLOBAL_STATE.backendDriver = undefined;\n GLOBAL_STATE.backendFrame = undefined;\n GLOBAL_STATE.backendEnvironment = undefined;\n GLOBAL_STATE.renderContext = undefined;\n GLOBAL_STATE.renderTarget = undefined;\n GLOBAL_STATE.worldBaseTransform = undefined;\n GLOBAL_STATE.worldExactTransform = undefined;\n GLOBAL_STATE.worldPaintAnchorTransform = undefined;\n GLOBAL_STATE.presentationTransformLineage = undefined;\n GLOBAL_STATE.presentationTransformLineageTrackingDepth = 0;\n GLOBAL_STATE.renderTransaction = undefined;\n GLOBAL_STATE.frameSnapshot = undefined;\n GLOBAL_STATE.primitiveReceiverToken = undefined;\n GLOBAL_STATE.layoutStack = undefined;\n clearComponentState();\n}\n\nexport function clearComponentState() {\n GLOBAL_STATE.componentRefs = undefined;\n GLOBAL_STATE.componentIsMounting = false;\n GLOBAL_STATE.componentHookIndex = 0;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type PibblEventListenerRegistration, type PibblEventNode, type PibblNormalizedHandlers } from '../events/registrations.js';
|
|
2
|
+
import type { HtmlBoxEventHandlers, HtmlBoxSlot } from './types.js';
|
|
3
|
+
/** Candidate event state remains invisible until the shared geometry adoption. */
|
|
4
|
+
export interface HtmlNativeEventSnapshot {
|
|
5
|
+
readonly handlers: PibblNormalizedHandlers;
|
|
6
|
+
readonly path: readonly PibblEventNode[];
|
|
7
|
+
readonly inverseWorld: DOMMatrix;
|
|
8
|
+
readonly inverseProjection: DOMMatrix;
|
|
9
|
+
readonly active: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** Observes the real DOM path; never enters Canvas targeting/default actions. */
|
|
12
|
+
export declare class HtmlNativeEvents {
|
|
13
|
+
private readonly slot;
|
|
14
|
+
private readonly coordinateRoot;
|
|
15
|
+
private readonly relatedNode;
|
|
16
|
+
readonly node: PibblEventListenerRegistration;
|
|
17
|
+
private readonly listeners;
|
|
18
|
+
private readonly dispatches;
|
|
19
|
+
private readonly pendingDispatches;
|
|
20
|
+
private current;
|
|
21
|
+
constructor(slot: HtmlBoxSlot, coordinateRoot: () => SVGSVGElement, relatedNode: (target: EventTarget | null) => PibblEventNode | null);
|
|
22
|
+
prepare(handlers: HtmlBoxEventHandlers, world: DOMMatrix, projection: DOMMatrix, active: boolean): HtmlNativeEventSnapshot;
|
|
23
|
+
/** Add candidates without withdrawing any listeners needed by the old snapshot. */
|
|
24
|
+
prepareListeners(snapshot: HtmlNativeEventSnapshot): void;
|
|
25
|
+
adopt(snapshot: HtmlNativeEventSnapshot): void;
|
|
26
|
+
suspend(): void;
|
|
27
|
+
dispose(): void;
|
|
28
|
+
private listen;
|
|
29
|
+
private releaseDispatch;
|
|
30
|
+
private finish;
|
|
31
|
+
private coordinates;
|
|
32
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { batch } from "../signals/graph.js";
|
|
2
|
+
import { PIBBL_EVENT_DEFINITIONS } from "../events/event-definitions.js";
|
|
3
|
+
import { buildEventPath } from "../events/event-path.js";
|
|
4
|
+
import { createPibblEvent, finishEventDispatch, isPibblImmediatePropagationStopped, isPibblPropagationStopped } from "../events/event-facade.js";
|
|
5
|
+
import { invokePibblEventHandler } from "../events/propagation.js";
|
|
6
|
+
import { normalizeHandlers } from "../events/registrations.js";
|
|
7
|
+
class HtmlNativeEvents {
|
|
8
|
+
constructor(slot, coordinateRoot, relatedNode) {
|
|
9
|
+
this.slot = slot;
|
|
10
|
+
this.coordinateRoot = coordinateRoot;
|
|
11
|
+
this.relatedNode = relatedNode;
|
|
12
|
+
this.node = {
|
|
13
|
+
kind: "listener",
|
|
14
|
+
owner: slot.owner,
|
|
15
|
+
component: slot.component,
|
|
16
|
+
slot: -1,
|
|
17
|
+
suspendLayout: () => this.suspend(),
|
|
18
|
+
publicTarget: {
|
|
19
|
+
setPointerCapture: (id) => {
|
|
20
|
+
if (!slot.disposed) slot.content?.setPointerCapture(id);
|
|
21
|
+
},
|
|
22
|
+
hasPointerCapture: (id) => !slot.disposed && Boolean(slot.content?.hasPointerCapture(id)),
|
|
23
|
+
releasePointerCapture: (id) => {
|
|
24
|
+
if (!slot.disposed) slot.content?.releasePointerCapture(id);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
handlers: {},
|
|
28
|
+
live: false,
|
|
29
|
+
handlerTypesLow: 0,
|
|
30
|
+
handlerTypesHigh: 0,
|
|
31
|
+
requiredNativeTypesLow: 0,
|
|
32
|
+
requiredNativeTypesHigh: 0,
|
|
33
|
+
ownedNativeTypesLow: 0,
|
|
34
|
+
ownedNativeTypesHigh: 0
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
slot;
|
|
38
|
+
coordinateRoot;
|
|
39
|
+
relatedNode;
|
|
40
|
+
node;
|
|
41
|
+
listeners = /* @__PURE__ */ new Map();
|
|
42
|
+
dispatches = /* @__PURE__ */ new WeakMap();
|
|
43
|
+
pendingDispatches = /* @__PURE__ */ new Set();
|
|
44
|
+
current;
|
|
45
|
+
prepare(handlers, world, projection, active) {
|
|
46
|
+
const normalized = normalizeHandlers(handlers);
|
|
47
|
+
const inverseWorld = world.inverse();
|
|
48
|
+
const inverseProjection = projection.inverse();
|
|
49
|
+
const path = buildEventPath(this.node).map((node) => ({
|
|
50
|
+
...node,
|
|
51
|
+
handlers: node === this.node ? normalized : node.handlers,
|
|
52
|
+
live: node === this.node ? active : node.live
|
|
53
|
+
}));
|
|
54
|
+
return {
|
|
55
|
+
handlers: normalized,
|
|
56
|
+
path,
|
|
57
|
+
inverseWorld,
|
|
58
|
+
inverseProjection,
|
|
59
|
+
active: active && finite(inverseWorld) && finite(inverseProjection)
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Add candidates without withdrawing any listeners needed by the old snapshot. */
|
|
63
|
+
prepareListeners(snapshot) {
|
|
64
|
+
if (!snapshot.active) return;
|
|
65
|
+
for (const definition of PIBBL_EVENT_DEFINITIONS) {
|
|
66
|
+
if (!this.listeners.has(definition.type) && needsEvent(snapshot, definition.type)) this.listen(definition);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
adopt(snapshot) {
|
|
70
|
+
this.current = snapshot;
|
|
71
|
+
this.node.handlers = snapshot.handlers;
|
|
72
|
+
this.node.live = snapshot.active;
|
|
73
|
+
}
|
|
74
|
+
suspend() {
|
|
75
|
+
this.node.live = false;
|
|
76
|
+
}
|
|
77
|
+
dispose() {
|
|
78
|
+
this.node.live = false;
|
|
79
|
+
for (const release of this.listeners.values()) release();
|
|
80
|
+
this.listeners.clear();
|
|
81
|
+
for (const dispatch of this.pendingDispatches) this.releaseDispatch(dispatch);
|
|
82
|
+
this.node.handlers = {};
|
|
83
|
+
this.current = void 0;
|
|
84
|
+
}
|
|
85
|
+
listen(definition) {
|
|
86
|
+
const host = this.slot.shell;
|
|
87
|
+
const capture = (original) => batch(() => {
|
|
88
|
+
const snapshot = this.current;
|
|
89
|
+
if (!snapshot || !this.node.live || !this.slot.region.active || this.slot.disposed || !needsEvent(snapshot, definition.type)) return;
|
|
90
|
+
if ((definition.type === "mouseenter" || definition.type === "mouseleave" || definition.type === "pointerenter" || definition.type === "pointerleave") && original.target !== host) return;
|
|
91
|
+
const coordinates = definition.coordinate ? this.coordinates(original, snapshot) : void 0;
|
|
92
|
+
if (definition.coordinate && !coordinates) return;
|
|
93
|
+
const path = snapshot.path;
|
|
94
|
+
const event = createPibblEvent({
|
|
95
|
+
type: definition.type,
|
|
96
|
+
target: this.node,
|
|
97
|
+
path,
|
|
98
|
+
originalEvent: original,
|
|
99
|
+
relatedTarget: this.relatedNode(original.relatedTarget ?? null),
|
|
100
|
+
nativeBubbles: original.bubbles,
|
|
101
|
+
...coordinates
|
|
102
|
+
});
|
|
103
|
+
const dispatch = { event, path, original };
|
|
104
|
+
const previous = this.dispatches.get(original);
|
|
105
|
+
if (previous) this.releaseDispatch(previous);
|
|
106
|
+
this.dispatches.set(original, dispatch);
|
|
107
|
+
this.pendingDispatches.add(dispatch);
|
|
108
|
+
if (original.bubbles) dispatch.cleanup = setTimeout(() => this.releaseDispatch(dispatch), 0);
|
|
109
|
+
for (let index = 0; index < path.length - 1; index++) {
|
|
110
|
+
if (!this.node.live || this.slot.disposed || isPibblPropagationStopped(event)) break;
|
|
111
|
+
invokePibblEventHandler(path[index], definition.type, true, 1, event);
|
|
112
|
+
}
|
|
113
|
+
if (this.node.live && !this.slot.disposed && !isPibblPropagationStopped(event)) invokePibblEventHandler(path[path.length - 1], definition.type, true, 2, event);
|
|
114
|
+
if (!original.bubbles) {
|
|
115
|
+
this.finish(definition.type, dispatch, false);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
const bubble = (original) => batch(() => {
|
|
119
|
+
const dispatch = this.dispatches.get(original);
|
|
120
|
+
if (dispatch) this.finish(definition.type, dispatch, true);
|
|
121
|
+
});
|
|
122
|
+
host.addEventListener(definition.type, capture, { capture: true, passive: false });
|
|
123
|
+
try {
|
|
124
|
+
host.addEventListener(definition.type, bubble, { passive: false });
|
|
125
|
+
} catch (error) {
|
|
126
|
+
host.removeEventListener(definition.type, capture, true);
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
this.listeners.set(definition.type, () => {
|
|
130
|
+
host.removeEventListener(definition.type, capture, true);
|
|
131
|
+
host.removeEventListener(definition.type, bubble);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
releaseDispatch(dispatch) {
|
|
135
|
+
if (!this.pendingDispatches.delete(dispatch)) return;
|
|
136
|
+
if (dispatch.cleanup !== void 0) clearTimeout(dispatch.cleanup);
|
|
137
|
+
if (this.dispatches.get(dispatch.original) === dispatch) this.dispatches.delete(dispatch.original);
|
|
138
|
+
finishEventDispatch(dispatch.event);
|
|
139
|
+
}
|
|
140
|
+
finish(type, dispatch, bubbles) {
|
|
141
|
+
const { event, path } = dispatch;
|
|
142
|
+
try {
|
|
143
|
+
if (!this.node.live || this.slot.disposed || isPibblPropagationStopped(event)) return;
|
|
144
|
+
if (!isPibblImmediatePropagationStopped(event)) invokePibblEventHandler(path[path.length - 1], type, false, 2, event);
|
|
145
|
+
if (!bubbles) return;
|
|
146
|
+
for (let index = path.length - 2; index >= 0; index--) {
|
|
147
|
+
if (!this.node.live || this.slot.disposed || isPibblPropagationStopped(event)) break;
|
|
148
|
+
invokePibblEventHandler(path[index], type, false, 3, event);
|
|
149
|
+
}
|
|
150
|
+
} finally {
|
|
151
|
+
this.releaseDispatch(dispatch);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
coordinates(event, snapshot) {
|
|
155
|
+
const source = "changedTouches" in event ? event.changedTouches[0] : event;
|
|
156
|
+
if (!source || !Number.isFinite(source.clientX) || !Number.isFinite(source.clientY)) return;
|
|
157
|
+
const screen = this.coordinateRoot().getScreenCTM();
|
|
158
|
+
if (!screen) return;
|
|
159
|
+
const clientToOverlay = new DOMMatrix([screen.a, screen.b, screen.c, screen.d, screen.e, screen.f]).inverse();
|
|
160
|
+
const overlay = clientToOverlay.transformPoint({ x: source.clientX, y: source.clientY });
|
|
161
|
+
const root = snapshot.inverseProjection.transformPoint(overlay);
|
|
162
|
+
const local = snapshot.inverseWorld.transformPoint(root);
|
|
163
|
+
if (!Number.isFinite(root.x) || !Number.isFinite(root.y) || !Number.isFinite(local.x) || !Number.isFinite(local.y)) return;
|
|
164
|
+
return { x: root.x, y: root.y, localX: local.x, localY: local.y };
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function finite(matrix) {
|
|
168
|
+
return Number.isFinite(matrix.a) && Number.isFinite(matrix.b) && Number.isFinite(matrix.c) && Number.isFinite(matrix.d) && Number.isFinite(matrix.e) && Number.isFinite(matrix.f);
|
|
169
|
+
}
|
|
170
|
+
function needsEvent(snapshot, type) {
|
|
171
|
+
for (const node of snapshot.path) {
|
|
172
|
+
if (node.live && (node.handlers[type] || node.handlers[`${type}Capture`])) return true;
|
|
173
|
+
}
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
export {
|
|
177
|
+
HtmlNativeEvents
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=html-events.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/lib/html/html-events.ts"],
|
|
4
|
+
"sourcesContent": ["import { batch } from '../signals/graph.js';\nimport { PIBBL_EVENT_DEFINITIONS, type PibblEventDefinition } from '../events/event-definitions.js';\nimport { buildEventPath } from '../events/event-path.js';\nimport { createPibblEvent, finishEventDispatch, isPibblImmediatePropagationStopped, isPibblPropagationStopped } from '../events/event-facade.js';\nimport { invokePibblEventHandler } from '../events/propagation.js';\nimport { normalizeHandlers, type PibblEventListenerRegistration, type PibblEventNode, type PibblNormalizedHandlers } from '../events/registrations.js';\nimport type { PibblEvent, PibblEventHandlers, PibblEventType } from '../events/types.js';\nimport type { HtmlBoxEventHandlers, HtmlBoxSlot } from './types.js';\n\ninterface NativeDispatch {\n readonly original: Event;\n cleanup?: ReturnType<typeof setTimeout>;\n readonly event: PibblEvent;\n readonly path: readonly PibblEventNode[];\n}\n\n/** Candidate event state remains invisible until the shared geometry adoption. */\nexport interface HtmlNativeEventSnapshot {\n readonly handlers: PibblNormalizedHandlers;\n readonly path: readonly PibblEventNode[];\n readonly inverseWorld: DOMMatrix;\n readonly inverseProjection: DOMMatrix;\n readonly active: boolean;\n}\n\n/** Observes the real DOM path; never enters Canvas targeting/default actions. */\nexport class HtmlNativeEvents {\n readonly node: PibblEventListenerRegistration;\n private readonly listeners = new Map<PibblEventType, () => void>();\n private readonly dispatches = new WeakMap<Event, NativeDispatch>();\n private readonly pendingDispatches = new Set<NativeDispatch>();\n private current: HtmlNativeEventSnapshot | undefined;\n\n constructor(\n private readonly slot: HtmlBoxSlot,\n private readonly coordinateRoot: () => SVGSVGElement,\n private readonly relatedNode: (target: EventTarget | null) => PibblEventNode | null,\n ) {\n // Dedicated virtual listener: no Canvas hit geometry, subscriptions or capture.\n this.node = {\n kind: 'listener', owner: slot.owner, component: slot.component, slot: -1,\n suspendLayout: () => this.suspend(),\n publicTarget: {\n setPointerCapture: id => { if (!slot.disposed) slot.content?.setPointerCapture(id); },\n hasPointerCapture: id => !slot.disposed && Boolean(slot.content?.hasPointerCapture(id)),\n releasePointerCapture: id => { if (!slot.disposed) slot.content?.releasePointerCapture(id); },\n },\n handlers: {}, live: false,\n handlerTypesLow: 0, handlerTypesHigh: 0,\n requiredNativeTypesLow: 0, requiredNativeTypesHigh: 0,\n ownedNativeTypesLow: 0, ownedNativeTypesHigh: 0,\n };\n }\n\n prepare(handlers: HtmlBoxEventHandlers, world: DOMMatrix, projection: DOMMatrix, active: boolean): HtmlNativeEventSnapshot {\n const normalized = normalizeHandlers(handlers as PibblEventHandlers);\n const inverseWorld = world.inverse();\n const inverseProjection = projection.inverse();\n // Preserve ancestor handlers as well as geometry during fallible HTML callbacks.\n const path = buildEventPath(this.node).map(node => ({\n ...node,\n handlers: node === this.node ? normalized : node.handlers,\n live: node === this.node ? active : node.live,\n }));\n return {\n handlers: normalized, path, inverseWorld, inverseProjection,\n active: active && finite(inverseWorld) && finite(inverseProjection),\n };\n }\n\n /** Add candidates without withdrawing any listeners needed by the old snapshot. */\n prepareListeners(snapshot: HtmlNativeEventSnapshot): void {\n if (!snapshot.active) return;\n for (const definition of PIBBL_EVENT_DEFINITIONS) {\n if (!this.listeners.has(definition.type) && needsEvent(snapshot, definition.type)) this.listen(definition);\n }\n }\n\n adopt(snapshot: HtmlNativeEventSnapshot): void {\n this.current = snapshot;\n this.node.handlers = snapshot.handlers;\n this.node.live = snapshot.active;\n }\n\n suspend(): void { this.node.live = false; }\n\n dispose(): void {\n this.node.live = false;\n for (const release of this.listeners.values()) release();\n this.listeners.clear();\n for (const dispatch of this.pendingDispatches) this.releaseDispatch(dispatch);\n this.node.handlers = {};\n this.current = undefined;\n }\n\n private listen(definition: PibblEventDefinition): void {\n const host = this.slot.shell!;\n const capture = (original: Event) => batch(() => {\n const snapshot = this.current;\n if (!snapshot || !this.node.live || !this.slot.region.active || this.slot.disposed || !needsEvent(snapshot, definition.type)) return;\n // Native enter/leave traverse ancestors for each nested DOM target.\n if ((definition.type === 'mouseenter' || definition.type === 'mouseleave' ||\n definition.type === 'pointerenter' || definition.type === 'pointerleave') && original.target !== host) return;\n const coordinates = definition.coordinate ? this.coordinates(original, snapshot) : undefined;\n if (definition.coordinate && !coordinates) return;\n const path = snapshot.path;\n const event = createPibblEvent({\n type: definition.type, target: this.node, path, originalEvent: original,\n relatedTarget: this.relatedNode((original as FocusEvent).relatedTarget ?? null),\n nativeBubbles: original.bubbles,\n ...coordinates,\n });\n const dispatch: NativeDispatch = { event, path, original };\n const previous = this.dispatches.get(original);\n if (previous) this.releaseDispatch(previous);\n this.dispatches.set(original, dispatch);\n this.pendingDispatches.add(dispatch);\n // Native descendants may stop propagation before our bubble listener runs.\n // A microtask can run BETWEEN native listeners, so only a later task may\n // expire an abandoned dispatch. Normal bubbling releases synchronously.\n if (original.bubbles) dispatch.cleanup = setTimeout(() => this.releaseDispatch(dispatch), 0);\n for (let index = 0; index < path.length - 1; index++) {\n if (!this.node.live || this.slot.disposed || isPibblPropagationStopped(event)) break;\n invokePibblEventHandler(path[index], definition.type, true, 1, event);\n }\n if (this.node.live && !this.slot.disposed && !isPibblPropagationStopped(event)) invokePibblEventHandler(path[path.length - 1], definition.type, true, 2, event);\n // Focus/blur/enter/leave have no native bubble callback.\n if (!original.bubbles) {\n this.finish(definition.type, dispatch, false);\n }\n });\n const bubble = (original: Event) => batch(() => {\n const dispatch = this.dispatches.get(original);\n if (dispatch) this.finish(definition.type, dispatch, true);\n });\n host.addEventListener(definition.type, capture, { capture: true, passive: false });\n try {\n host.addEventListener(definition.type, bubble, { passive: false });\n } catch (error) {\n host.removeEventListener(definition.type, capture, true);\n throw error;\n }\n this.listeners.set(definition.type, () => {\n host.removeEventListener(definition.type, capture, true);\n host.removeEventListener(definition.type, bubble);\n });\n }\n\n private releaseDispatch(dispatch: NativeDispatch): void {\n if (!this.pendingDispatches.delete(dispatch)) return;\n if (dispatch.cleanup !== undefined) clearTimeout(dispatch.cleanup);\n if (this.dispatches.get(dispatch.original) === dispatch) this.dispatches.delete(dispatch.original);\n finishEventDispatch(dispatch.event);\n }\n\n private finish(type: PibblEventType, dispatch: NativeDispatch, bubbles: boolean): void {\n const { event, path } = dispatch;\n try {\n if (!this.node.live || this.slot.disposed || isPibblPropagationStopped(event)) return;\n if (!isPibblImmediatePropagationStopped(event)) invokePibblEventHandler(path[path.length - 1], type, false, 2, event);\n if (!bubbles) return;\n for (let index = path.length - 2; index >= 0; index--) {\n if (!this.node.live || this.slot.disposed || isPibblPropagationStopped(event)) break;\n invokePibblEventHandler(path[index], type, false, 3, event);\n }\n } finally { this.releaseDispatch(dispatch); }\n }\n\n private coordinates(event: Event, snapshot: HtmlNativeEventSnapshot): { x: number; y: number; localX: number; localY: number } | undefined {\n const source = 'changedTouches' in event ? (event as TouchEvent).changedTouches[0] : event as MouseEvent;\n if (!source || !Number.isFinite(source.clientX) || !Number.isFinite(source.clientY)) return;\n // This unpainted SVG at overlay (0,0) includes shared CSS affine transforms.\n const screen = this.coordinateRoot().getScreenCTM();\n if (!screen) return;\n const clientToOverlay = new DOMMatrix([screen.a, screen.b, screen.c, screen.d, screen.e, screen.f]).inverse();\n const overlay = clientToOverlay.transformPoint({ x: source.clientX, y: source.clientY });\n const root = snapshot.inverseProjection.transformPoint(overlay);\n const local = snapshot.inverseWorld.transformPoint(root);\n if (!Number.isFinite(root.x) || !Number.isFinite(root.y) || !Number.isFinite(local.x) || !Number.isFinite(local.y)) return;\n return { x: root.x, y: root.y, localX: local.x, localY: local.y };\n }\n}\n\nfunction finite(matrix: DOMMatrixReadOnly): boolean {\n return Number.isFinite(matrix.a) && Number.isFinite(matrix.b) && Number.isFinite(matrix.c) &&\n Number.isFinite(matrix.d) && Number.isFinite(matrix.e) && Number.isFinite(matrix.f);\n}\n\nfunction needsEvent(snapshot: HtmlNativeEventSnapshot, type: PibblEventType): boolean {\n for (const node of snapshot.path) {\n if (node.live && (node.handlers[type] || node.handlers[`${type}Capture`])) return true;\n }\n return false;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -10,6 +10,9 @@ export declare class HtmlService implements HtmlBridge {
|
|
|
10
10
|
private svg;
|
|
11
11
|
private viewport;
|
|
12
12
|
private disposed;
|
|
13
|
+
private suspended;
|
|
14
|
+
private projections;
|
|
15
|
+
private nextSnapshots;
|
|
13
16
|
private rendered;
|
|
14
17
|
constructor(root: PibblEventRoot);
|
|
15
18
|
private enterTransaction;
|
|
@@ -20,10 +23,13 @@ export declare class HtmlService implements HtmlBridge {
|
|
|
20
23
|
private hasHosts;
|
|
21
24
|
release(slot: HtmlBoxSlot): void;
|
|
22
25
|
private retire;
|
|
26
|
+
private prepare;
|
|
23
27
|
private publish;
|
|
28
|
+
private adopt;
|
|
24
29
|
private ensureDOM;
|
|
25
|
-
private
|
|
26
|
-
private
|
|
30
|
+
private publishContent;
|
|
31
|
+
private applyGeometry;
|
|
32
|
+
private prepareClips;
|
|
27
33
|
private reset;
|
|
28
34
|
dispose(): void;
|
|
29
35
|
}
|