@pibbl/core 0.0.1 → 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/README.md +1 -1
- package/THIRD_PARTY_NOTICES.txt +81 -0
- package/dist/features/machines/animation.d.ts +64 -0
- package/dist/features/machines/animation.js +55 -0
- package/dist/features/machines/animation.js.map +7 -0
- package/dist/features/machines/animation.mjs +1 -0
- package/dist/features/machines/assign.d.ts +16 -0
- package/dist/features/machines/assign.js +15 -0
- package/dist/features/machines/assign.js.map +7 -0
- package/dist/features/machines/callback.d.ts +9 -0
- package/dist/features/machines/callback.js +7 -0
- package/dist/features/machines/callback.js.map +7 -0
- package/dist/features/machines/hook.d.ts +30 -0
- package/dist/features/machines/hook.js +37 -0
- package/dist/features/machines/hook.js.map +7 -0
- package/dist/features/machines/index.d.ts +6 -0
- package/dist/features/machines/index.js +12 -0
- package/dist/features/machines/index.js.map +7 -0
- package/dist/features/machines/index.mjs +1 -0
- package/dist/features/machines/runtime.d.ts +18 -0
- package/dist/features/machines/runtime.js +363 -0
- package/dist/features/machines/runtime.js.map +7 -0
- package/dist/features/machines/types.d.ts +164 -0
- package/dist/features/physics/2d-geometry.d.ts +3 -3
- package/dist/features/physics/2d-geometry.js.map +1 -1
- 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/2d.d.ts +115 -62
- package/dist/features/physics/2d.js +59 -28
- package/dist/features/physics/2d.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/query-types.d.ts +6 -0
- package/dist/features/physics/lib/2d/runtime/controller.d.ts +7 -6
- 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/types.d.ts +8 -30
- package/dist/features/physics/lib/2d/world/queries.d.ts +7 -6
- package/dist/features/physics/lib/2d/world/queries.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/formats/aseprite.d.ts +5 -0
- package/dist/features/sprites/formats/texture-packer.d.ts +5 -0
- package/dist/features/sprites/index.d.ts +6 -0
- package/dist/features/sprites/loader.d.ts +25 -0
- package/dist/features/sprites/loader.js +6 -3
- package/dist/features/sprites/loader.js.map +2 -2
- package/dist/features/sprites/model.d.ts +75 -0
- package/dist/features/sprites/sprite.d.ts +22 -0
- 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 +92 -5
- package/dist/features/viz/index.js +202 -4
- 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-labels.d.ts +2 -0
- package/dist/features/viz/lib/axis-labels.js +41 -0
- package/dist/features/viz/lib/axis-labels.js.map +7 -0
- package/dist/features/viz/lib/axis-title.d.ts +23 -0
- package/dist/features/viz/lib/axis-title.js +24 -0
- package/dist/features/viz/lib/axis-title.js.map +7 -0
- package/dist/features/viz/lib/axis.d.ts +1 -1
- package/dist/features/viz/lib/axis.js +50 -50
- package/dist/features/viz/lib/axis.js.map +2 -2
- package/dist/features/viz/lib/bar-scale.d.ts +7 -0
- package/dist/features/viz/lib/bar-scale.js +34 -0
- package/dist/features/viz/lib/bar-scale.js.map +7 -0
- package/dist/features/viz/lib/bar-series.d.ts +3 -1
- package/dist/features/viz/lib/bar-series.js +21 -5
- 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/chart-lines.d.ts +41 -0
- package/dist/features/viz/lib/chart-lines.js +32 -0
- package/dist/features/viz/lib/chart-lines.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 +6 -3
- package/dist/features/viz/lib/hover-data.js.map +2 -2
- package/dist/features/viz/lib/hover-types.d.ts +5 -5
- 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-component.d.ts +7 -0
- package/dist/features/viz/lib/linear-scale-component.js +18 -0
- package/dist/features/viz/lib/linear-scale-component.js.map +7 -0
- 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/log-scale-component.d.ts +7 -0
- package/dist/features/viz/lib/log-scale-component.js +19 -0
- package/dist/features/viz/lib/log-scale-component.js.map +7 -0
- package/dist/features/viz/lib/log-scale.d.ts +2 -0
- package/dist/features/viz/lib/log-scale.js +53 -0
- package/dist/features/viz/lib/log-scale.js.map +7 -0
- 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/nearest.d.ts +9 -9
- package/dist/features/viz/lib/nearest.js.map +1 -1
- 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/numeric-ticks.d.ts +38 -0
- package/dist/features/viz/lib/numeric-ticks.js +54 -0
- package/dist/features/viz/lib/numeric-ticks.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-scale-component.d.ts +7 -0
- package/dist/features/viz/lib/point-scale-component.js +19 -0
- package/dist/features/viz/lib/point-scale-component.js.map +7 -0
- package/dist/features/viz/lib/point-scale.d.ts +2 -0
- package/dist/features/viz/lib/point-scale.js +45 -0
- package/dist/features/viz/lib/point-scale.js.map +7 -0
- 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.d.ts +16 -0
- package/dist/features/viz/lib/reference-band.js +30 -0
- package/dist/features/viz/lib/reference-band.js.map +7 -0
- package/dist/features/viz/lib/scale-adjust.js +9 -4
- package/dist/features/viz/lib/scale-adjust.js.map +2 -2
- package/dist/features/viz/lib/scale-context.d.ts +5 -4
- package/dist/features/viz/lib/scale-context.js +15 -11
- package/dist/features/viz/lib/scale-context.js.map +2 -2
- package/dist/features/viz/lib/scale-provider.d.ts +2 -0
- package/dist/features/viz/lib/scale-provider.js +13 -0
- package/dist/features/viz/lib/scale-provider.js.map +7 -0
- package/dist/features/viz/lib/scale-ticks.d.ts +5 -0
- package/dist/features/viz/lib/scale-ticks.js +64 -0
- package/dist/features/viz/lib/scale-ticks.js.map +7 -0
- package/dist/features/viz/lib/scale-view.d.ts +4 -0
- package/dist/features/viz/lib/scale-view.js +21 -0
- package/dist/features/viz/lib/scale-view.js.map +7 -0
- 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/symlog-scale-component.d.ts +7 -0
- package/dist/features/viz/lib/symlog-scale-component.js +19 -0
- package/dist/features/viz/lib/symlog-scale-component.js.map +7 -0
- package/dist/features/viz/lib/symlog-scale.d.ts +2 -0
- package/dist/features/viz/lib/symlog-scale.js +38 -0
- package/dist/features/viz/lib/symlog-scale.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 +114 -21
- package/dist/features/viz/lib/use-bar-scale.d.ts +8 -0
- package/dist/features/viz/lib/use-bar-scale.js +9 -0
- package/dist/features/viz/lib/use-bar-scale.js.map +7 -0
- package/dist/features/viz/lib/use-continuous-scale.d.ts +8 -0
- package/dist/features/viz/lib/use-continuous-scale.js +14 -0
- package/dist/features/viz/lib/use-continuous-scale.js.map +7 -0
- package/dist/features/viz/lib/use-linear-scale.d.ts +8 -0
- package/dist/features/viz/lib/use-linear-scale.js +9 -0
- package/dist/features/viz/lib/use-linear-scale.js.map +7 -0
- package/dist/features/viz/lib/use-log-scale.d.ts +8 -0
- package/dist/features/viz/lib/use-log-scale.js +9 -0
- package/dist/features/viz/lib/use-log-scale.js.map +7 -0
- package/dist/features/viz/lib/use-point-scale.d.ts +8 -0
- package/dist/features/viz/lib/use-point-scale.js +9 -0
- package/dist/features/viz/lib/use-point-scale.js.map +7 -0
- package/dist/features/viz/lib/use-symlog-scale.d.ts +8 -0
- package/dist/features/viz/lib/use-symlog-scale.js +9 -0
- package/dist/features/viz/lib/use-symlog-scale.js.map +7 -0
- package/dist/features/viz/lib/use-utc-scale.d.ts +8 -0
- package/dist/features/viz/lib/use-utc-scale.js +9 -0
- package/dist/features/viz/lib/use-utc-scale.js.map +7 -0
- package/dist/features/viz/lib/utc-labels.d.ts +12 -0
- package/dist/features/viz/lib/utc-labels.js +27 -0
- package/dist/features/viz/lib/utc-labels.js.map +7 -0
- package/dist/features/viz/lib/utc-scale-component.d.ts +7 -0
- package/dist/features/viz/lib/utc-scale-component.js +18 -0
- package/dist/features/viz/lib/utc-scale-component.js.map +7 -0
- package/dist/features/viz/lib/utc-scale.d.ts +21 -0
- package/dist/features/viz/lib/utc-scale.js +124 -0
- package/dist/features/viz/lib/utc-scale.js.map +7 -0
- 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 +10 -6
- 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/animation/definition.d.ts +5 -3
- package/dist/lib/animation/definition.js +29 -4
- package/dist/lib/animation/definition.js.map +2 -2
- package/dist/lib/animation/playback.d.ts +8 -0
- package/dist/lib/animation/playback.js +33 -11
- package/dist/lib/animation/playback.js.map +2 -2
- package/dist/lib/animation/spring.d.ts +3 -1
- package/dist/lib/animation/spring.js.map +2 -2
- package/dist/lib/animation/types.d.ts +29 -73
- 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/hooks/use-animated-value.d.ts +11 -21
- package/dist/lib/hooks/use-animated-value.js +23 -70
- package/dist/lib/hooks/use-animated-value.js.map +3 -3
- package/dist/lib/hooks/use-playback.js +1 -0
- package/dist/lib/hooks/use-playback.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 +43 -6
- package/dist/features/viz/lib/scale.d.ts +0 -11
- package/dist/features/viz/lib/scale.js +0 -80
- package/dist/features/viz/lib/scale.js.map +0 -7
- package/dist/features/viz/lib/use-scale.d.ts +0 -20
- package/dist/features/viz/lib/use-scale.js +0 -10
- package/dist/features/viz/lib/use-scale.js.map +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/lib/animation/definition.ts"],
|
|
4
|
-
"sourcesContent": ["import { withSignalWriteForbidden } from '../signals/graph.js';\nimport { easing } from './easing.js';\nimport {\n createSpringRecord,\n resolveSpringStart,\n sampleSpring,\n type SpringDefinitionRecord,\n} from './spring.js';\nimport type {\n PibblAnimationDefinition,\n PibblAnimationOptions,\n PibblAnimationSampleInput,\n PibblEasing,\n PibblInterpolator,\n PibblKeyframesOptions,\n PibblSpringOptions,\n PibblStepperOptions,\n PibblTweenOptions,\n} from './types.js';\n\ndeclare const seekableDefinitionActivationBrand: unique symbol;\n\ninterface BaseDefinitionRecord {\n readonly duration: number;\n readonly debugName: string | undefined;\n}\n\ninterface TweenDefinitionRecord<T> extends BaseDefinitionRecord {\n readonly kind: 'tween';\n readonly hasFrom: boolean;\n readonly from: T | undefined;\n readonly to: T;\n readonly easing: PibblEasing;\n readonly interpolate: PibblInterpolator<T> | undefined;\n}\n\ninterface KeyframesDefinitionRecord<T> extends BaseDefinitionRecord {\n readonly kind: 'keyframes';\n readonly values: readonly T[];\n readonly offsets: readonly number[];\n readonly easings: readonly PibblEasing[];\n readonly interpolate: PibblInterpolator<T> | undefined;\n}\n\ninterface CustomDefinitionRecord<T> extends BaseDefinitionRecord {\n readonly kind: 'custom';\n readonly sample: (input: PibblAnimationSampleInput<T>) => T;\n}\n\nexport interface StepperDefinitionRecord<T> extends BaseDefinitionRecord {\n readonly kind: 'stepper';\n readonly stepMilliseconds: number;\n readonly maxElapsedMilliseconds: number;\n readonly initial: (currentValue: T) => unknown;\n readonly step: (state: unknown, deltaMilliseconds: number) => unknown;\n readonly read: (state: unknown) => T;\n readonly done: ((state: unknown) => boolean) | undefined;\n}\n\nexport type DefinitionRecord<T> =\n | TweenDefinitionRecord<T>\n | KeyframesDefinitionRecord<T>\n | CustomDefinitionRecord<T>\n | StepperDefinitionRecord<T>\n | SpringDefinitionRecord;\n\n/** @internal Opaque activation-time state for one seekable track instance. */\nexport interface SeekableDefinitionActivation<T> {\n readonly [seekableDefinitionActivationBrand]: T;\n readonly duration: number;\n readonly initialValue: T;\n}\n\n/** @internal Callback-free knowledge about a seekable definition boundary. */\nexport type SeekableDefinitionBoundaryValue<T> =\n | { readonly kind: 'known'; readonly value: T }\n | { readonly kind: 'unknown' };\n\ninterface SeekableDefinitionActivationRecord<T> {\n readonly definition: PibblAnimationDefinition<T>;\n readonly definitionRecord: Exclude<DefinitionRecord<T>, StepperDefinitionRecord<T>>;\n readonly initialValue: T;\n}\n\nconst definitionRecords = new WeakMap<\n PibblAnimationDefinition<unknown>,\n DefinitionRecord<unknown>\n>();\nconst seekableActivationRecords = new WeakMap<\n SeekableDefinitionActivation<unknown>,\n SeekableDefinitionActivationRecord<unknown>\n>();\nlet keyframeDefinitions = 0;\nlet keyframeStorageArrayAllocations = 0;\nlet keyframeSamples = 0;\nlet keyframeSampleArrayAllocations = 0;\nlet keyframeSampleDepth = 0;\n\nexport interface AnimationDefinitionPerformanceSnapshot {\n readonly keyframeDefinitions: number;\n readonly keyframeStorageArrayAllocations: number;\n readonly keyframeSamples: number;\n readonly keyframeSampleArrayAllocations: number;\n}\n\n/** @internal Deterministic structural counters for normalized keyframe sampling. */\nexport function animationDefinitionPerformanceSnapshot():\nAnimationDefinitionPerformanceSnapshot {\n return Object.freeze({\n keyframeDefinitions,\n keyframeStorageArrayAllocations,\n keyframeSamples,\n keyframeSampleArrayAllocations,\n });\n}\n\nfunction definitionLabel(debugName: string | undefined): string {\n return debugName === undefined ? 'Pibbl animation definition' :\n `Pibbl animation definition \"${debugName}\"`;\n}\n\nfunction assertDuration(duration: number, debugName: string | undefined): void {\n if (!Number.isFinite(duration) || duration < 0) {\n throw new RangeError(`${definitionLabel(debugName)} duration must be finite and nonnegative.`);\n }\n}\n\nfunction assertFiniteNumber(value: number, message: string): void {\n if (!Number.isFinite(value)) throw new RangeError(message);\n}\n\nconst MUTATING_MAP_METHODS = new Set<PropertyKey>(['set', 'delete', 'clear']);\nconst MUTATING_SET_METHODS = new Set<PropertyKey>(['add', 'delete', 'clear']);\nconst MUTATING_DATE_METHODS = new Set<PropertyKey>([\n 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', 'setMinutes',\n 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',\n 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth',\n 'setUTCSeconds', 'setYear',\n]);\n\nfunction immutableBuiltin<T extends object>(\n target: T,\n mutatingMethods: ReadonlySet<PropertyKey>,\n): T {\n return new Proxy(target, {\n get(current, key) {\n if (mutatingMethods.has(key)) {\n return (): never => {\n throw new TypeError('Cannot mutate an animation definition snapshot.');\n };\n }\n const member = Reflect.get(current, key, current);\n return typeof member === 'function' && key !== 'constructor' ?\n member.bind(current) : member;\n },\n set(): false {\n return false;\n },\n defineProperty(): false {\n return false;\n },\n deleteProperty(): false {\n return false;\n },\n });\n}\n\nfunction rememberIdentity<T extends object>(\n value: T,\n seen: WeakMap<object, unknown>,\n): T {\n seen.set(value, value);\n return value;\n}\n\nfunction hasOwnProperties(value: object, allowed: ReadonlySet<PropertyKey>): boolean {\n return Reflect.ownKeys(value).some(key => !allowed.has(key));\n}\n\nfunction hasOnlyDataProperties(value: object, allowed: ReadonlySet<PropertyKey>): boolean {\n return Reflect.ownKeys(value).every(key => {\n if (allowed.has(key)) return true;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return descriptor !== undefined && 'value' in descriptor;\n });\n}\n\nconst ARRAY_OWN_KEYS = new Set<PropertyKey>(['length']);\nconst REGEXP_OWN_KEYS = new Set<PropertyKey>(['lastIndex']);\nconst snapshotsRequiringIsolation = new WeakSet<object>();\n\nfunction requiresIsolation(value: unknown): value is object {\n return (typeof value === 'object' && value !== null || typeof value === 'function') &&\n snapshotsRequiringIsolation.has(value as object);\n}\n\nfunction propagateIsolation(snapshot: object, value: unknown): void {\n if (requiresIsolation(value)) snapshotsRequiringIsolation.add(snapshot);\n}\n\nfunction isArrayIndex(key: PropertyKey): boolean {\n return typeof key === 'string' && /^(?:0|[1-9]\\d*)$/u.test(key);\n}\n\nfunction cloneTypedArray(\n value: ArrayBufferView,\n buffer?: ArrayBuffer,\n): ArrayBufferView {\n if (value instanceof DataView) {\n if (buffer !== undefined) {\n return new DataView(buffer, value.byteOffset, value.byteLength);\n }\n const bytes = value.buffer.slice(value.byteOffset, value.byteOffset + value.byteLength);\n return new DataView(bytes);\n }\n const TypedArray = value.constructor as unknown as {\n new (source: ArrayBufferView): ArrayBufferView;\n new (buffer: ArrayBuffer, byteOffset: number, length: number): ArrayBufferView;\n };\n return buffer === undefined ? new TypedArray(value) :\n new TypedArray(\n buffer,\n value.byteOffset,\n (value as ArrayBufferView & { readonly length: number }).length,\n );\n}\n\n/**\n * Definitions retain values after their caller has moved on. The context is\n * shared across one definition so aliases and cycles remain aliases and cycles\n * in its immutable snapshot. Only categories with stable, inspectable cloning\n * semantics are copied. Reconstructable values that cannot themselves be\n * frozen are marked so only the containing paths are rematerialized before a\n * callback or terminal return. Functions, classes, accessors, and opaque host\n * values (notably WeakMap, WeakSet, Promise, and host handles) remain usable\n * identity values because cloning them can manufacture an invalid receiver or\n * change their behavior; an absolute snapshot guarantee for those values\n * requires an explicit public clone contract that Pibbl does not currently\n * provide.\n */\nfunction snapshotAnimationValue<T>(\n value: T,\n seen: WeakMap<object, unknown>,\n isolateStoredValue = false,\n): T {\n if (value === null || typeof value === 'function' || typeof value !== 'object') {\n return value;\n }\n const existing = seen.get(value);\n if (existing !== undefined) return existing as T;\n if (isolateStoredValue && !requiresIsolation(value)) {\n seen.set(value, value);\n return value;\n }\n\n if (value instanceof Date) {\n if (hasOwnProperties(value, new Set())) return rememberIdentity(value, seen) as T;\n const snapshot = immutableBuiltin(new Date(value.getTime()), MUTATING_DATE_METHODS);\n seen.set(value, snapshot);\n return snapshot as T;\n }\n if (value instanceof Map) {\n if (hasOwnProperties(value, new Set())) return rememberIdentity(value, seen) as T;\n const target = new Map();\n const snapshot = immutableBuiltin(target, MUTATING_MAP_METHODS);\n seen.set(value, snapshot);\n for (const [key, entry] of value) {\n const keySnapshot = snapshotAnimationValue(key, seen, isolateStoredValue);\n const entrySnapshot = snapshotAnimationValue(entry, seen, isolateStoredValue);\n target.set(keySnapshot, entrySnapshot);\n propagateIsolation(snapshot, keySnapshot);\n propagateIsolation(snapshot, entrySnapshot);\n }\n return snapshot as T;\n }\n if (value instanceof Set) {\n if (hasOwnProperties(value, new Set())) return rememberIdentity(value, seen) as T;\n const target = new Set();\n const snapshot = immutableBuiltin(target, MUTATING_SET_METHODS);\n seen.set(value, snapshot);\n for (const entry of value) {\n const entrySnapshot = snapshotAnimationValue(entry, seen, isolateStoredValue);\n target.add(entrySnapshot);\n propagateIsolation(snapshot, entrySnapshot);\n }\n return snapshot as T;\n }\n if (Array.isArray(value)) {\n const ownKeys = Reflect.ownKeys(value);\n if (Object.getPrototypeOf(value) !== Array.prototype ||\n ownKeys.some(key => !ARRAY_OWN_KEYS.has(key) && !isArrayIndex(key)) ||\n !hasOnlyDataProperties(value, ARRAY_OWN_KEYS)) {\n return rememberIdentity(value, seen) as T;\n }\n const snapshot: unknown[] = new Array(value.length);\n if (keyframeSampleDepth > 0) keyframeSampleArrayAllocations++;\n seen.set(value, snapshot);\n for (const key of ownKeys) {\n if (ARRAY_OWN_KEYS.has(key)) continue;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !('value' in descriptor)) continue;\n const itemSnapshot = snapshotAnimationValue(\n descriptor.value,\n seen,\n isolateStoredValue,\n );\n Object.defineProperty(snapshot, key, {\n configurable: false,\n enumerable: descriptor.enumerable,\n writable: false,\n value: itemSnapshot,\n });\n propagateIsolation(snapshot, itemSnapshot);\n }\n return Object.freeze(snapshot) as T;\n }\n\n if (value instanceof RegExp) {\n if (hasOwnProperties(value, REGEXP_OWN_KEYS)) return rememberIdentity(value, seen) as T;\n const snapshot = new RegExp(value.source, value.flags);\n snapshot.lastIndex = value.lastIndex;\n seen.set(value, snapshot);\n snapshotsRequiringIsolation.add(snapshot);\n return snapshot as T;\n }\n\n if (ArrayBuffer.isView(value)) {\n const ownKeys = Reflect.ownKeys(value);\n if (ownKeys.some(key => !isArrayIndex(key))) return rememberIdentity(value, seen) as T;\n const buffer = value.buffer instanceof ArrayBuffer ?\n snapshotAnimationValue(value.buffer, seen, isolateStoredValue) : undefined;\n const snapshot = cloneTypedArray(value, buffer);\n seen.set(value, snapshot);\n snapshotsRequiringIsolation.add(snapshot);\n return snapshot as T;\n }\n\n if (value instanceof ArrayBuffer) {\n const snapshot = value.slice(0);\n seen.set(value, snapshot);\n snapshotsRequiringIsolation.add(snapshot);\n return snapshot as T;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null ||\n !hasOnlyDataProperties(value, new Set())) {\n return rememberIdentity(value, seen) as T;\n }\n const snapshot = Object.create(prototype) as Record<PropertyKey, unknown>;\n seen.set(value, snapshot);\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined) continue;\n const propertySnapshot = snapshotAnimationValue(\n descriptor.value,\n seen,\n isolateStoredValue,\n );\n Object.defineProperty(snapshot, key, {\n configurable: false,\n enumerable: descriptor.enumerable,\n writable: false,\n value: propertySnapshot,\n });\n propagateIsolation(snapshot, propertySnapshot);\n }\n return Object.freeze(snapshot) as T;\n}\n\nfunction isolateStoredAnimationValue<T>(\n value: T,\n seen: WeakMap<object, unknown>,\n): T {\n return snapshotAnimationValue(value, seen, true);\n}\n\n/** @internal Captures a committed output value for a playback activation. */\nexport function snapshotAnimationActivationValue<T>(\n value: T,\n seen: WeakMap<object, unknown> = new WeakMap(),\n): T {\n return snapshotAnimationValue(value, seen);\n}\n\nfunction validateSampledValue<T>(sampled: T, debugName: string | undefined): T {\n if (typeof sampled === 'number' && !Number.isFinite(sampled)) {\n throw new RangeError(`${definitionLabel(debugName)} sampled value must be finite.`);\n }\n return sampled;\n}\n\nfunction createDefinition<T>(record: DefinitionRecord<T>): PibblAnimationDefinition<T> {\n const definition = Object.freeze({}) as PibblAnimationDefinition<T>;\n definitionRecords.set(\n definition as PibblAnimationDefinition<unknown>,\n Object.freeze(record) as DefinitionRecord<unknown>,\n );\n return definition;\n}\n\nfunction hasOwn(object: object, key: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction callback<T>(\n debugName: string | undefined,\n callback: () => T,\n): T {\n return withSignalWriteForbidden(\n `${definitionLabel(debugName)} callbacks cannot write to signals.`,\n callback,\n );\n}\n\nfunction sampledProgress(duration: number, localTime: number): {\n readonly localTime: number;\n readonly progress: number;\n} {\n assertFiniteNumber(localTime, 'Pibbl animation sample localTime must be finite.');\n if (duration === 0) return Object.freeze({ localTime: 0, progress: 1 });\n const normalizedLocalTime = Math.min(duration, Math.max(0, localTime));\n return Object.freeze({\n localTime: normalizedLocalTime,\n progress: normalizedLocalTime / duration,\n });\n}\n\nfunction interpolate<T>(\n from: T,\n to: T,\n progress: number,\n custom: PibblInterpolator<T> | undefined,\n debugName: string | undefined,\n): T {\n if (custom === undefined && (typeof from !== 'number' || typeof to !== 'number')) {\n throw new TypeError(`${definitionLabel(debugName)} requires an explicit interpolator for nonnumeric values.`);\n }\n let sampled: T;\n if (custom === undefined) {\n sampled = ((from as unknown as number) +\n ((to as unknown as number) - (from as unknown as number)) * progress) as T;\n } else {\n const isolated = new WeakMap<object, unknown>();\n const isolatedFrom = isolateStoredAnimationValue(from, isolated);\n const isolatedTo = isolateStoredAnimationValue(to, isolated);\n sampled = callback(debugName, () => custom(isolatedFrom, isolatedTo, progress));\n }\n return validateSampledValue(sampled, debugName);\n}\n\nfunction easedProgress(\n ease: PibblEasing,\n progress: number,\n debugName: string | undefined,\n): number {\n const eased = callback(debugName, () => ease(progress));\n if (!Number.isFinite(eased)) {\n throw new RangeError(`${definitionLabel(debugName)} easing result must be finite.`);\n }\n return eased;\n}\n\nfunction normalizeOffsets(\n values: readonly unknown[],\n offsets: readonly number[] | undefined,\n debugName: string | undefined,\n): readonly number[] {\n if (offsets === undefined) {\n return Object.freeze(values.map((_, index) => index / (values.length - 1)));\n }\n if (offsets.length !== values.length) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must match the values length.`);\n }\n const snapshot = [...offsets];\n for (const offset of snapshot) {\n if (!Number.isFinite(offset) || offset < 0 || offset > 1) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must be finite values within [0, 1].`);\n }\n }\n if (snapshot[0] !== 0) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must start at 0.`);\n }\n if (snapshot.at(-1) !== 1) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must end at 1.`);\n }\n for (let index = 1; index < snapshot.length; index++) {\n if (snapshot[index] < snapshot[index - 1]) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must be nondecreasing.`);\n }\n }\n return Object.freeze(snapshot);\n}\n\nfunction normalizeEasings(\n easingOption: PibblEasing | readonly PibblEasing[] | undefined,\n segmentCount: number,\n debugName: string | undefined,\n): readonly PibblEasing[] {\n if (Array.isArray(easingOption)) {\n if (easingOption.length !== segmentCount) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe easing list must have one entry per segment.`);\n }\n if (easingOption.some(ease => typeof ease !== 'function')) {\n throw new TypeError(`${definitionLabel(debugName)} keyframe easings must be functions.`);\n }\n return Object.freeze([...easingOption]);\n }\n const ease = easingOption ?? easing.linear;\n if (typeof ease !== 'function') {\n throw new TypeError(`${definitionLabel(debugName)} easing must be a function.`);\n }\n return Object.freeze(Array.from({ length: segmentCount }, () => ease));\n}\n\n/**\n * Returns an opaque immutable tween definition.\n *\n * @param options - Start and end values, duration, easing, and interpolation settings. See\n * {@link PibblTweenOptions} .\n * @returns An immutable tween definition. See {@link PibblAnimationDefinition}.\n *\n * @see {@link PibblTweenOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function tween<T>(options: Readonly<PibblTweenOptions<T>>): PibblAnimationDefinition<T> {\n assertDuration(options.duration, options.debugName);\n if (typeof options.easing !== 'undefined' && typeof options.easing !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} easing must be a function.`);\n }\n if (typeof options.interpolate !== 'undefined' && typeof options.interpolate !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} interpolator must be a function.`);\n }\n const hasFrom = hasOwn(options, 'from');\n const snapshots = new WeakMap<object, unknown>();\n return createDefinition({\n kind: 'tween',\n duration: options.duration,\n debugName: options.debugName,\n hasFrom,\n from: hasFrom ? snapshotAnimationValue(options.from as T, snapshots) : undefined,\n to: snapshotAnimationValue(options.to, snapshots),\n easing: options.easing ?? easing.linear,\n interpolate: options.interpolate,\n });\n}\n\n/**\n * Returns an opaque immutable keyframe definition.\n *\n * @param options - Keyframe values, timing, easing, and interpolation settings. See\n * {@link PibblKeyframesOptions} .\n * @returns An immutable animation definition sampling the keyframes. See\n * {@link PibblAnimationDefinition} .\n *\n * @see {@link PibblKeyframesOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function keyframes<T>(\n options: Readonly<PibblKeyframesOptions<T>>,\n): PibblAnimationDefinition<T> {\n assertDuration(options.duration, options.debugName);\n if (options.values.length < 2) {\n throw new RangeError(`${definitionLabel(options.debugName)} keyframes require at least two values.`);\n }\n if (typeof options.interpolate !== 'undefined' && typeof options.interpolate !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} interpolator must be a function.`);\n }\n const snapshots = new WeakMap<object, unknown>();\n const values = Object.freeze(options.values.map(value => snapshotAnimationValue(value, snapshots)));\n const offsets = normalizeOffsets(values, options.offsets, options.debugName);\n const easings = normalizeEasings(options.easing, values.length - 1, options.debugName);\n keyframeDefinitions++;\n keyframeStorageArrayAllocations += 3;\n return createDefinition({\n kind: 'keyframes',\n duration: options.duration,\n debugName: options.debugName,\n values,\n offsets,\n easings,\n interpolate: options.interpolate,\n });\n}\n\n/**\n * Returns an opaque immutable analytic one-dimensional spring definition.\n *\n * @param options - Target, initial conditions, and spring parameters. See {@link PibblSpringOptions}\n * .\n * @returns An analytic numeric spring definition. See {@link PibblAnimationDefinition}.\n *\n * @see {@link PibblSpringOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function spring(\n options: Readonly<PibblSpringOptions>,\n): PibblAnimationDefinition<number> {\n return createDefinition(createSpringRecord(options));\n}\n\n/**\n * Returns an opaque immutable definition from a custom seekable sampler.\n *\n * @param options - Duration and pure sampling callback for the animation. See\n * {@link PibblAnimationOptions} .\n * @returns An immutable, seekable animation definition. See {@link PibblAnimationDefinition}.\n *\n * @see {@link PibblAnimationOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function defineAnimation<T>(\n options: Readonly<PibblAnimationOptions<T>>,\n): PibblAnimationDefinition<T> {\n assertDuration(options.duration, options.debugName);\n if (typeof options.sample !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} sample must be a function.`);\n }\n return createDefinition({\n kind: 'custom',\n duration: options.duration,\n debugName: options.debugName,\n sample: options.sample,\n });\n}\n\n/**\n * Returns an opaque immutable stepper definition. Steppers are evaluated by\n * the playback engine, not by the seekable sampler.\n *\n * @param options - Initial state, fixed-step integration, value reader, and completion predicate.\n * See {@link PibblStepperOptions} .\n * @returns A stateful animation definition advanced by fixed simulation steps. See\n * {@link PibblAnimationDefinition} .\n *\n * @see {@link PibblStepperOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function stepper<State, T>(\n options: Readonly<PibblStepperOptions<State, T>>,\n): PibblAnimationDefinition<T> {\n if (typeof options.initial !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} stepper initial must be a function.`);\n }\n if (typeof options.step !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} stepper step must be a function.`);\n }\n if (typeof options.read !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} stepper read must be a function.`);\n }\n if (typeof options.done !== 'undefined' && typeof options.done !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} stepper done must be a function.`);\n }\n if (!Number.isFinite(options.stepMilliseconds) || options.stepMilliseconds <= 0) {\n throw new RangeError(`${definitionLabel(options.debugName)} stepper stepMilliseconds must be finite and positive.`);\n }\n const maxElapsedMilliseconds = options.maxElapsedMilliseconds ?? 100;\n if (!Number.isFinite(maxElapsedMilliseconds) || maxElapsedMilliseconds <= 0) {\n throw new RangeError(`${definitionLabel(options.debugName)} stepper maxElapsedMilliseconds must be finite and positive.`);\n }\n return createDefinition({\n kind: 'stepper',\n duration: Number.POSITIVE_INFINITY,\n debugName: options.debugName,\n stepMilliseconds: options.stepMilliseconds,\n maxElapsedMilliseconds,\n initial: options.initial as (currentValue: T) => unknown,\n step: options.step as (state: unknown, deltaMilliseconds: number) => unknown,\n read: options.read as (state: unknown) => T,\n done: options.done as ((state: unknown) => boolean) | undefined,\n });\n}\n\n/** @internal Returns the private immutable record associated with a definition. */\nexport function getDefinitionRecord<T>(\n definition: PibblAnimationDefinition<T>,\n): DefinitionRecord<T> {\n const record = definitionRecords.get(definition as PibblAnimationDefinition<unknown>);\n if (record === undefined) throw new TypeError('Expected a Pibbl animation definition.');\n return record as DefinitionRecord<T>;\n}\n\n/** @internal Samples a non-stepper definition from its activation snapshot. */\nexport function sampleSeekableDefinition<T>(\n definition: PibblAnimationDefinition<T>,\n input: Readonly<Pick<PibblAnimationSampleInput<T>, 'initialValue' | 'localTime'>>,\n): T {\n const record = getDefinitionRecord(definition);\n if (record.kind === 'stepper') {\n throw new TypeError(\n `${definitionLabel(record.debugName)} is stateful and requires the stateful program evaluator.`,\n );\n }\n if (record.kind === 'spring') {\n const resolved = resolveSpringStart(record, input.initialValue as number);\n const timing = sampledProgress(resolved.duration, input.localTime);\n return sampleSpring(resolved, timing.localTime / 1000).position as T;\n }\n const timing = sampledProgress(record.duration, input.localTime);\n if (record.kind === 'custom') {\n const sampled = callback(record.debugName, () => record.sample(Object.freeze({\n initialValue: input.initialValue,\n localTime: timing.localTime,\n progress: timing.progress,\n })));\n return validateSampledValue(sampled, record.debugName);\n }\n if (record.kind === 'tween') {\n const from = record.hasFrom ? record.from as T : input.initialValue;\n return interpolate(\n from,\n record.to,\n easedProgress(record.easing, timing.progress, record.debugName),\n record.interpolate,\n record.debugName,\n );\n }\n\n keyframeSamples++;\n keyframeSampleDepth++;\n try {\n return sampleKeyframe(record, timing);\n } finally {\n keyframeSampleDepth--;\n }\n}\n\nfunction sampleKeyframe<T>(\n record: KeyframesDefinitionRecord<T>,\n timing: { readonly progress: number },\n): T {\n let segment = 0;\n for (let index = 1; index < record.offsets.length; index++) {\n if (record.offsets[index] <= timing.progress) segment = index;\n else break;\n }\n if (segment === record.values.length - 1) {\n return validateSampledValue(\n isolateStoredAnimationValue(record.values[segment], new WeakMap()),\n record.debugName,\n );\n }\n const start = record.offsets[segment];\n const end = record.offsets[segment + 1];\n return interpolate(\n record.values[segment],\n record.values[segment + 1],\n easedProgress(record.easings[segment], (timing.progress - start) / (end - start), record.debugName),\n record.interpolate,\n record.debugName,\n );\n}\n\n/**\n * @internal Resolves activation-dependent definition data exactly once for a\n * track instance. Stateful definitions use a separate playback-owned record.\n */\nexport function activateSeekableDefinition<T>(\n definition: PibblAnimationDefinition<T>,\n initialValue: T,\n seen: WeakMap<object, unknown> = new WeakMap(),\n): SeekableDefinitionActivation<T> {\n const definitionRecord = getDefinitionRecord(definition);\n if (definitionRecord.kind === 'stepper') {\n throw new TypeError(\n 'Stateful animation definitions require the stateful program evaluator.',\n );\n }\n const snapshot = snapshotAnimationActivationValue(initialValue, seen);\n const resolved = definitionRecord.kind === 'spring' ?\n resolveSpringStart(definitionRecord, snapshot as number) : definitionRecord;\n const activation = Object.freeze({\n duration: resolved.duration,\n initialValue: snapshot,\n }) as SeekableDefinitionActivation<T>;\n seekableActivationRecords.set(\n activation as SeekableDefinitionActivation<unknown>,\n Object.freeze({\n definition,\n definitionRecord: resolved,\n initialValue: snapshot,\n }) as SeekableDefinitionActivationRecord<unknown>,\n );\n return activation;\n}\n\n/** @internal Samples a definition from one retained activation record. */\nexport function sampleActivatedSeekableDefinition<T>(\n activation: SeekableDefinitionActivation<T>,\n localTime: number,\n): T {\n const activationRecord = seekableActivationRecords.get(\n activation as SeekableDefinitionActivation<unknown>,\n ) as SeekableDefinitionActivationRecord<T> | undefined;\n if (activationRecord === undefined) {\n throw new TypeError('Expected a seekable Pibbl animation definition activation.');\n }\n const record = activationRecord.definitionRecord;\n if (record.kind === 'spring') {\n const timing = sampledProgress(record.duration, localTime);\n return sampleSpring(record, timing.localTime / 1000).position as T;\n }\n return sampleSeekableDefinition(activationRecord.definition, {\n initialValue: activationRecord.initialValue,\n localTime,\n });\n}\n\n/**\n * @internal Returns a boundary value only when the normalized definition makes\n * it exact without invoking user easing, interpolation, or sampling callbacks.\n */\nexport function getSeekableDefinitionBoundaryValue<T>(\n activation: SeekableDefinitionActivation<T>,\n boundary: 'start' | 'end',\n): SeekableDefinitionBoundaryValue<T> {\n const activationRecord = seekableActivationRecords.get(\n activation as SeekableDefinitionActivation<unknown>,\n ) as SeekableDefinitionActivationRecord<T> | undefined;\n if (activationRecord === undefined) {\n throw new TypeError('Expected a seekable Pibbl animation definition activation.');\n }\n const record = activationRecord.definitionRecord;\n if (record.kind === 'spring') {\n return Object.freeze({\n kind: 'known' as const,\n value: (boundary === 'start' ? record.from : record.to) as T,\n });\n }\n if (record.kind === 'keyframes') {\n if (boundary === 'end') {\n return Object.freeze({ kind: 'known' as const, value: record.values.at(-1)! });\n }\n if (record.interpolate === undefined && record.easings[0] === easing.linear) {\n return Object.freeze({ kind: 'known' as const, value: record.values[0]! });\n }\n return Object.freeze({ kind: 'unknown' as const });\n }\n if (record.kind === 'tween' && record.interpolate === undefined &&\n record.easing === easing.linear) {\n return Object.freeze({\n kind: 'known' as const,\n value: boundary === 'start' ?\n (record.hasFrom ? record.from as T : activationRecord.initialValue) : record.to,\n });\n }\n return Object.freeze({ kind: 'unknown' as const });\n}\n\n/**\n * @internal Returns a callback-free boundary that does not depend on a track's\n * activation value. This lets discovery recover known terminal state after an\n * earlier opaque custom value.\n */\nexport function getStaticSeekableDefinitionBoundaryValue<T>(\n definition: PibblAnimationDefinition<T>,\n boundary: 'start' | 'end',\n): SeekableDefinitionBoundaryValue<T> {\n const record = getDefinitionRecord(definition);\n if (record.kind === 'spring' && record.hasFrom) {\n return Object.freeze({\n kind: 'known' as const,\n value: (boundary === 'start' ? record.from : record.to) as T,\n });\n }\n if (record.kind === 'keyframes') {\n if (boundary === 'end') {\n return Object.freeze({ kind: 'known' as const, value: record.values.at(-1)! });\n }\n if (record.interpolate === undefined && record.easings[0] === easing.linear) {\n return Object.freeze({ kind: 'known' as const, value: record.values[0]! });\n }\n }\n if (record.kind === 'tween' && record.interpolate === undefined &&\n record.easing === easing.linear) {\n if (boundary === 'end') {\n return Object.freeze({ kind: 'known' as const, value: record.to });\n }\n if (record.hasFrom) {\n return Object.freeze({ kind: 'known' as const, value: record.from as T });\n }\n }\n return Object.freeze({ kind: 'unknown' as const });\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { withSignalWriteForbidden } from '../signals/graph.js';\nimport { easing } from './easing.js';\nimport {\n createSpringRecord,\n resolveSpringStart,\n sampleSpring,\n type SpringDefinitionRecord,\n} from './spring.js';\nimport type {\n PibblAnimationDefinition,\n PibblAnimationTarget,\n PibblAnimationOptions,\n PibblAnimationSampleInput,\n PibblEasing,\n PibblInterpolator,\n PibblKeyframesOptions,\n PibblSpringOptions,\n PibblStepperOptions,\n PibblTweenOptions,\n} from './types.js';\n\ndeclare const seekableDefinitionActivationBrand: unique symbol;\n\ninterface BaseDefinitionRecord {\n readonly duration: number;\n readonly debugName: string | undefined;\n}\n\ninterface TweenDefinitionRecord<T> extends BaseDefinitionRecord {\n readonly kind: 'tween';\n readonly hasFrom: boolean;\n readonly from: T | undefined;\n readonly to: T;\n readonly easing: PibblEasing;\n readonly interpolate: PibblInterpolator<T> | undefined;\n}\n\ninterface KeyframesDefinitionRecord<T> extends BaseDefinitionRecord {\n readonly kind: 'keyframes';\n readonly values: readonly T[];\n readonly offsets: readonly number[];\n readonly easings: readonly PibblEasing[];\n readonly interpolate: PibblInterpolator<T> | undefined;\n}\n\ninterface CustomDefinitionRecord<T> extends BaseDefinitionRecord {\n readonly kind: 'custom';\n readonly sample: (input: PibblAnimationSampleInput<T>) => T;\n}\n\nexport interface StepperDefinitionRecord<T> extends BaseDefinitionRecord {\n readonly kind: 'stepper';\n readonly stepMilliseconds: number;\n readonly maxElapsedMilliseconds: number;\n readonly initial: (currentValue: T) => unknown;\n readonly step: (state: unknown, deltaMilliseconds: number) => unknown;\n readonly read: (state: unknown) => T;\n readonly done: ((state: unknown) => boolean) | undefined;\n}\n\nexport type DefinitionRecord<T> =\n | TweenDefinitionRecord<T>\n | KeyframesDefinitionRecord<T>\n | CustomDefinitionRecord<T>\n | StepperDefinitionRecord<T>\n | SpringDefinitionRecord;\n\n/** @internal Opaque activation-time state for one seekable track instance. */\nexport interface SeekableDefinitionActivation<T> {\n readonly [seekableDefinitionActivationBrand]: T;\n readonly duration: number;\n readonly initialValue: T;\n}\n\n/** @internal Callback-free knowledge about a seekable definition boundary. */\nexport type SeekableDefinitionBoundaryValue<T> =\n | { readonly kind: 'known'; readonly value: T }\n | { readonly kind: 'unknown' };\n\ninterface SeekableDefinitionActivationRecord<T> {\n readonly definition: PibblAnimationDefinition<T>;\n readonly definitionRecord: Exclude<DefinitionRecord<T>, StepperDefinitionRecord<T>>;\n readonly initialValue: T;\n}\n\nconst definitionRecords = new WeakMap<\n PibblAnimationDefinition<unknown>,\n DefinitionRecord<unknown>\n>();\n// Binding is carried by the definition, so the hook does not select algorithms.\nconst targetBindings = new WeakMap<object, {\n readonly unbound: boolean;\n readonly bind: (target: PibblAnimationTarget<any>) => PibblAnimationDefinition<any>;\n}>();\n\nfunction targetDefinition<T>(\n definition: PibblAnimationDefinition<T>,\n unbound: boolean,\n bind: (target: PibblAnimationTarget<T>) => PibblAnimationDefinition<T>,\n): PibblAnimationDefinition<T> {\n targetBindings.set(definition, { unbound, bind });\n return definition;\n}\n\n/** @internal Resolves hook-owned endpoints using the definition's implementation. */\nexport function bindAnimationTarget<T>(\n definition: PibblAnimationDefinition<T>,\n target: PibblAnimationTarget<T>,\n): PibblAnimationDefinition<T> {\n const binding = targetBindings.get(definition);\n if (binding) return binding.bind(target);\n getDefinitionRecord(definition);\n return definition;\n}\n\nconst seekableActivationRecords = new WeakMap<\n SeekableDefinitionActivation<unknown>,\n SeekableDefinitionActivationRecord<unknown>\n>();\nlet keyframeDefinitions = 0;\nlet keyframeStorageArrayAllocations = 0;\nlet keyframeSamples = 0;\nlet keyframeSampleArrayAllocations = 0;\nlet keyframeSampleDepth = 0;\n\nexport interface AnimationDefinitionPerformanceSnapshot {\n readonly keyframeDefinitions: number;\n readonly keyframeStorageArrayAllocations: number;\n readonly keyframeSamples: number;\n readonly keyframeSampleArrayAllocations: number;\n}\n\n/** @internal Deterministic structural counters for normalized keyframe sampling. */\nexport function animationDefinitionPerformanceSnapshot():\nAnimationDefinitionPerformanceSnapshot {\n return Object.freeze({\n keyframeDefinitions,\n keyframeStorageArrayAllocations,\n keyframeSamples,\n keyframeSampleArrayAllocations,\n });\n}\n\nfunction definitionLabel(debugName: string | undefined): string {\n return debugName === undefined ? 'Pibbl animation definition' :\n `Pibbl animation definition \"${debugName}\"`;\n}\n\nfunction assertDuration(duration: number, debugName: string | undefined): void {\n if (!Number.isFinite(duration) || duration < 0) {\n throw new RangeError(`${definitionLabel(debugName)} duration must be finite and nonnegative.`);\n }\n}\n\nfunction assertFiniteNumber(value: number, message: string): void {\n if (!Number.isFinite(value)) throw new RangeError(message);\n}\n\nconst MUTATING_MAP_METHODS = new Set<PropertyKey>(['set', 'delete', 'clear']);\nconst MUTATING_SET_METHODS = new Set<PropertyKey>(['add', 'delete', 'clear']);\nconst MUTATING_DATE_METHODS = new Set<PropertyKey>([\n 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', 'setMinutes',\n 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',\n 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth',\n 'setUTCSeconds', 'setYear',\n]);\n\nfunction immutableBuiltin<T extends object>(\n target: T,\n mutatingMethods: ReadonlySet<PropertyKey>,\n): T {\n return new Proxy(target, {\n get(current, key) {\n if (mutatingMethods.has(key)) {\n return (): never => {\n throw new TypeError('Cannot mutate an animation definition snapshot.');\n };\n }\n const member = Reflect.get(current, key, current);\n return typeof member === 'function' && key !== 'constructor' ?\n member.bind(current) : member;\n },\n set(): false {\n return false;\n },\n defineProperty(): false {\n return false;\n },\n deleteProperty(): false {\n return false;\n },\n });\n}\n\nfunction rememberIdentity<T extends object>(\n value: T,\n seen: WeakMap<object, unknown>,\n): T {\n seen.set(value, value);\n return value;\n}\n\nfunction hasOwnProperties(value: object, allowed: ReadonlySet<PropertyKey>): boolean {\n return Reflect.ownKeys(value).some(key => !allowed.has(key));\n}\n\nfunction hasOnlyDataProperties(value: object, allowed: ReadonlySet<PropertyKey>): boolean {\n return Reflect.ownKeys(value).every(key => {\n if (allowed.has(key)) return true;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return descriptor !== undefined && 'value' in descriptor;\n });\n}\n\nconst ARRAY_OWN_KEYS = new Set<PropertyKey>(['length']);\nconst REGEXP_OWN_KEYS = new Set<PropertyKey>(['lastIndex']);\nconst snapshotsRequiringIsolation = new WeakSet<object>();\n\nfunction requiresIsolation(value: unknown): value is object {\n return (typeof value === 'object' && value !== null || typeof value === 'function') &&\n snapshotsRequiringIsolation.has(value as object);\n}\n\nfunction propagateIsolation(snapshot: object, value: unknown): void {\n if (requiresIsolation(value)) snapshotsRequiringIsolation.add(snapshot);\n}\n\nfunction isArrayIndex(key: PropertyKey): boolean {\n return typeof key === 'string' && /^(?:0|[1-9]\\d*)$/u.test(key);\n}\n\nfunction cloneTypedArray(\n value: ArrayBufferView,\n buffer?: ArrayBuffer,\n): ArrayBufferView {\n if (value instanceof DataView) {\n if (buffer !== undefined) {\n return new DataView(buffer, value.byteOffset, value.byteLength);\n }\n const bytes = value.buffer.slice(value.byteOffset, value.byteOffset + value.byteLength);\n return new DataView(bytes);\n }\n const TypedArray = value.constructor as unknown as {\n new (source: ArrayBufferView): ArrayBufferView;\n new (buffer: ArrayBuffer, byteOffset: number, length: number): ArrayBufferView;\n };\n return buffer === undefined ? new TypedArray(value) :\n new TypedArray(\n buffer,\n value.byteOffset,\n (value as ArrayBufferView & { readonly length: number }).length,\n );\n}\n\n/**\n * Definitions retain values after their caller has moved on. The context is\n * shared across one definition so aliases and cycles remain aliases and cycles\n * in its immutable snapshot. Only categories with stable, inspectable cloning\n * semantics are copied. Reconstructable values that cannot themselves be\n * frozen are marked so only the containing paths are rematerialized before a\n * callback or terminal return. Functions, classes, accessors, and opaque host\n * values (notably WeakMap, WeakSet, Promise, and host handles) remain usable\n * identity values because cloning them can manufacture an invalid receiver or\n * change their behavior; an absolute snapshot guarantee for those values\n * requires an explicit public clone contract that Pibbl does not currently\n * provide.\n */\nfunction snapshotAnimationValue<T>(\n value: T,\n seen: WeakMap<object, unknown>,\n isolateStoredValue = false,\n): T {\n if (value === null || typeof value === 'function' || typeof value !== 'object') {\n return value;\n }\n const existing = seen.get(value);\n if (existing !== undefined) return existing as T;\n if (isolateStoredValue && !requiresIsolation(value)) {\n seen.set(value, value);\n return value;\n }\n\n if (value instanceof Date) {\n if (hasOwnProperties(value, new Set())) return rememberIdentity(value, seen) as T;\n const snapshot = immutableBuiltin(new Date(value.getTime()), MUTATING_DATE_METHODS);\n seen.set(value, snapshot);\n return snapshot as T;\n }\n if (value instanceof Map) {\n if (hasOwnProperties(value, new Set())) return rememberIdentity(value, seen) as T;\n const target = new Map();\n const snapshot = immutableBuiltin(target, MUTATING_MAP_METHODS);\n seen.set(value, snapshot);\n for (const [key, entry] of value) {\n const keySnapshot = snapshotAnimationValue(key, seen, isolateStoredValue);\n const entrySnapshot = snapshotAnimationValue(entry, seen, isolateStoredValue);\n target.set(keySnapshot, entrySnapshot);\n propagateIsolation(snapshot, keySnapshot);\n propagateIsolation(snapshot, entrySnapshot);\n }\n return snapshot as T;\n }\n if (value instanceof Set) {\n if (hasOwnProperties(value, new Set())) return rememberIdentity(value, seen) as T;\n const target = new Set();\n const snapshot = immutableBuiltin(target, MUTATING_SET_METHODS);\n seen.set(value, snapshot);\n for (const entry of value) {\n const entrySnapshot = snapshotAnimationValue(entry, seen, isolateStoredValue);\n target.add(entrySnapshot);\n propagateIsolation(snapshot, entrySnapshot);\n }\n return snapshot as T;\n }\n if (Array.isArray(value)) {\n const ownKeys = Reflect.ownKeys(value);\n if (Object.getPrototypeOf(value) !== Array.prototype ||\n ownKeys.some(key => !ARRAY_OWN_KEYS.has(key) && !isArrayIndex(key)) ||\n !hasOnlyDataProperties(value, ARRAY_OWN_KEYS)) {\n return rememberIdentity(value, seen) as T;\n }\n const snapshot: unknown[] = new Array(value.length);\n if (keyframeSampleDepth > 0) keyframeSampleArrayAllocations++;\n seen.set(value, snapshot);\n for (const key of ownKeys) {\n if (ARRAY_OWN_KEYS.has(key)) continue;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !('value' in descriptor)) continue;\n const itemSnapshot = snapshotAnimationValue(\n descriptor.value,\n seen,\n isolateStoredValue,\n );\n Object.defineProperty(snapshot, key, {\n configurable: false,\n enumerable: descriptor.enumerable,\n writable: false,\n value: itemSnapshot,\n });\n propagateIsolation(snapshot, itemSnapshot);\n }\n return Object.freeze(snapshot) as T;\n }\n\n if (value instanceof RegExp) {\n if (hasOwnProperties(value, REGEXP_OWN_KEYS)) return rememberIdentity(value, seen) as T;\n const snapshot = new RegExp(value.source, value.flags);\n snapshot.lastIndex = value.lastIndex;\n seen.set(value, snapshot);\n snapshotsRequiringIsolation.add(snapshot);\n return snapshot as T;\n }\n\n if (ArrayBuffer.isView(value)) {\n const ownKeys = Reflect.ownKeys(value);\n if (ownKeys.some(key => !isArrayIndex(key))) return rememberIdentity(value, seen) as T;\n const buffer = value.buffer instanceof ArrayBuffer ?\n snapshotAnimationValue(value.buffer, seen, isolateStoredValue) : undefined;\n const snapshot = cloneTypedArray(value, buffer);\n seen.set(value, snapshot);\n snapshotsRequiringIsolation.add(snapshot);\n return snapshot as T;\n }\n\n if (value instanceof ArrayBuffer) {\n const snapshot = value.slice(0);\n seen.set(value, snapshot);\n snapshotsRequiringIsolation.add(snapshot);\n return snapshot as T;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null ||\n !hasOnlyDataProperties(value, new Set())) {\n return rememberIdentity(value, seen) as T;\n }\n const snapshot = Object.create(prototype) as Record<PropertyKey, unknown>;\n seen.set(value, snapshot);\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined) continue;\n const propertySnapshot = snapshotAnimationValue(\n descriptor.value,\n seen,\n isolateStoredValue,\n );\n Object.defineProperty(snapshot, key, {\n configurable: false,\n enumerable: descriptor.enumerable,\n writable: false,\n value: propertySnapshot,\n });\n propagateIsolation(snapshot, propertySnapshot);\n }\n return Object.freeze(snapshot) as T;\n}\n\nfunction isolateStoredAnimationValue<T>(\n value: T,\n seen: WeakMap<object, unknown>,\n): T {\n return snapshotAnimationValue(value, seen, true);\n}\n\n/** @internal Captures a committed output value for a playback activation. */\nexport function snapshotAnimationActivationValue<T>(\n value: T,\n seen: WeakMap<object, unknown> = new WeakMap(),\n): T {\n return snapshotAnimationValue(value, seen);\n}\n\nfunction validateSampledValue<T>(sampled: T, debugName: string | undefined): T {\n if (typeof sampled === 'number' && !Number.isFinite(sampled)) {\n throw new RangeError(`${definitionLabel(debugName)} sampled value must be finite.`);\n }\n return sampled;\n}\n\nfunction createDefinition<T>(record: DefinitionRecord<T>): PibblAnimationDefinition<T> {\n const definition = Object.freeze({}) as PibblAnimationDefinition<T>;\n definitionRecords.set(\n definition as PibblAnimationDefinition<unknown>,\n Object.freeze(record) as DefinitionRecord<unknown>,\n );\n return definition;\n}\n\nfunction hasOwn(object: object, key: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction callback<T>(\n debugName: string | undefined,\n callback: () => T,\n): T {\n return withSignalWriteForbidden(\n `${definitionLabel(debugName)} callbacks cannot write to signals.`,\n callback,\n );\n}\n\nfunction sampledProgress(duration: number, localTime: number): {\n readonly localTime: number;\n readonly progress: number;\n} {\n assertFiniteNumber(localTime, 'Pibbl animation sample localTime must be finite.');\n if (duration === 0) return Object.freeze({ localTime: 0, progress: 1 });\n const normalizedLocalTime = Math.min(duration, Math.max(0, localTime));\n return Object.freeze({\n localTime: normalizedLocalTime,\n progress: normalizedLocalTime / duration,\n });\n}\n\nfunction interpolate<T>(\n from: T,\n to: T,\n progress: number,\n custom: PibblInterpolator<T> | undefined,\n debugName: string | undefined,\n): T {\n if (custom === undefined && (typeof from !== 'number' || typeof to !== 'number')) {\n throw new TypeError(`${definitionLabel(debugName)} requires an explicit interpolator for nonnumeric values.`);\n }\n let sampled: T;\n if (custom === undefined) {\n sampled = ((from as unknown as number) +\n ((to as unknown as number) - (from as unknown as number)) * progress) as T;\n } else {\n const isolated = new WeakMap<object, unknown>();\n const isolatedFrom = isolateStoredAnimationValue(from, isolated);\n const isolatedTo = isolateStoredAnimationValue(to, isolated);\n sampled = callback(debugName, () => custom(isolatedFrom, isolatedTo, progress));\n }\n return validateSampledValue(sampled, debugName);\n}\n\nfunction easedProgress(\n ease: PibblEasing,\n progress: number,\n debugName: string | undefined,\n): number {\n const eased = callback(debugName, () => ease(progress));\n if (!Number.isFinite(eased)) {\n throw new RangeError(`${definitionLabel(debugName)} easing result must be finite.`);\n }\n return eased;\n}\n\nfunction normalizeOffsets(\n values: readonly unknown[],\n offsets: readonly number[] | undefined,\n debugName: string | undefined,\n): readonly number[] {\n if (offsets === undefined) {\n return Object.freeze(values.map((_, index) => index / (values.length - 1)));\n }\n if (offsets.length !== values.length) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must match the values length.`);\n }\n const snapshot = [...offsets];\n for (const offset of snapshot) {\n if (!Number.isFinite(offset) || offset < 0 || offset > 1) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must be finite values within [0, 1].`);\n }\n }\n if (snapshot[0] !== 0) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must start at 0.`);\n }\n if (snapshot.at(-1) !== 1) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must end at 1.`);\n }\n for (let index = 1; index < snapshot.length; index++) {\n if (snapshot[index] < snapshot[index - 1]) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe offsets must be nondecreasing.`);\n }\n }\n return Object.freeze(snapshot);\n}\n\nfunction normalizeEasings(\n easingOption: PibblEasing | readonly PibblEasing[] | undefined,\n segmentCount: number,\n debugName: string | undefined,\n): readonly PibblEasing[] {\n if (Array.isArray(easingOption)) {\n if (easingOption.length !== segmentCount) {\n throw new RangeError(`${definitionLabel(debugName)} keyframe easing list must have one entry per segment.`);\n }\n if (easingOption.some(ease => typeof ease !== 'function')) {\n throw new TypeError(`${definitionLabel(debugName)} keyframe easings must be functions.`);\n }\n return Object.freeze([...easingOption]);\n }\n const ease = easingOption ?? easing.linear;\n if (typeof ease !== 'function') {\n throw new TypeError(`${definitionLabel(debugName)} easing must be a function.`);\n }\n return Object.freeze(Array.from({ length: segmentCount }, () => ease));\n}\n\n/**\n * Returns an opaque immutable tween definition.\n *\n * @param options - Start and end values, duration, easing, and interpolation settings. See\n * {@link PibblTweenOptions} .\n * @returns An immutable tween definition. See {@link PibblAnimationDefinition}.\n *\n * @see {@link PibblTweenOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function tween<T = number>(options: Readonly<PibblTweenOptions<T>>): PibblAnimationDefinition<T> {\n assertDuration(options.duration, options.debugName);\n if (typeof options.easing !== 'undefined' && typeof options.easing !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} easing must be a function.`);\n }\n if (typeof options.interpolate !== 'undefined' && typeof options.interpolate !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} interpolator must be a function.`);\n }\n const hasFrom = hasOwn(options, 'from');\n const snapshots = new WeakMap<object, unknown>();\n const record: TweenDefinitionRecord<T> = {\n kind: 'tween',\n duration: options.duration,\n debugName: options.debugName,\n hasFrom,\n from: hasFrom ? snapshotAnimationValue(options.from as T, snapshots) : undefined,\n to: snapshotAnimationValue(options.to as T, snapshots),\n easing: options.easing ?? easing.linear,\n interpolate: options.interpolate,\n };\n return targetDefinition(createDefinition(record), !hasOwn(options, 'to'), ({ from, to }) =>\n tween({ from, to, duration: record.duration, easing: record.easing,\n interpolate: record.interpolate, debugName: record.debugName }));\n}\n\n/**\n * Returns an opaque immutable keyframe definition.\n *\n * @param options - Keyframe values, timing, easing, and interpolation settings. See\n * {@link PibblKeyframesOptions} .\n * @returns An immutable animation definition sampling the keyframes. See\n * {@link PibblAnimationDefinition} .\n *\n * @see {@link PibblKeyframesOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function keyframes<T>(\n options: Readonly<PibblKeyframesOptions<T>>,\n): PibblAnimationDefinition<T> {\n assertDuration(options.duration, options.debugName);\n if (options.values.length < 2) {\n throw new RangeError(`${definitionLabel(options.debugName)} keyframes require at least two values.`);\n }\n if (typeof options.interpolate !== 'undefined' && typeof options.interpolate !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} interpolator must be a function.`);\n }\n const snapshots = new WeakMap<object, unknown>();\n const values = Object.freeze(options.values.map(value => snapshotAnimationValue(value, snapshots)));\n const offsets = normalizeOffsets(values, options.offsets, options.debugName);\n const easings = normalizeEasings(options.easing, values.length - 1, options.debugName);\n keyframeDefinitions++;\n keyframeStorageArrayAllocations += 3;\n return createDefinition({\n kind: 'keyframes',\n duration: options.duration,\n debugName: options.debugName,\n values,\n offsets,\n easings,\n interpolate: options.interpolate,\n });\n}\n\n/**\n * Returns an opaque immutable analytic one-dimensional spring definition.\n *\n * @param options - Target, initial conditions, and spring parameters. See {@link PibblSpringOptions}\n * .\n * @returns An analytic numeric spring definition. See {@link PibblAnimationDefinition}.\n *\n * @see {@link PibblSpringOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function spring(\n options: Readonly<PibblSpringOptions> = {},\n): PibblAnimationDefinition<number> {\n const unbound = !hasOwn(options, 'to');\n const record = createSpringRecord({ ...options, to: unbound ? 0 : options.to as number });\n return targetDefinition(createDefinition<number>(record), unbound, ({ from, to, velocity }) =>\n spring({ ...record, from, to, initialVelocity: velocity ?? record.initialVelocity }));\n}\n\n/**\n * Returns an opaque immutable definition from a custom seekable sampler.\n *\n * @param options - Duration and pure sampling callback for the animation. See\n * {@link PibblAnimationOptions} .\n * @returns An immutable, seekable animation definition. See {@link PibblAnimationDefinition}.\n *\n * @see {@link PibblAnimationOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function defineAnimation<T>(\n options: Readonly<PibblAnimationOptions<T>>,\n): PibblAnimationDefinition<T> {\n assertDuration(options.duration, options.debugName);\n if (typeof options.sample !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} sample must be a function.`);\n }\n return createDefinition({\n kind: 'custom',\n duration: options.duration,\n debugName: options.debugName,\n sample: options.sample,\n });\n}\n\n/**\n * Returns an opaque immutable stepper definition. Steppers are evaluated by\n * the playback engine, not by the seekable sampler.\n *\n * @param options - Initial state, fixed-step integration, value reader, and completion predicate.\n * See {@link PibblStepperOptions} .\n * @returns A stateful animation definition advanced by fixed simulation steps. See\n * {@link PibblAnimationDefinition} .\n *\n * @see {@link PibblStepperOptions}\n * @see {@link PibblAnimationDefinition}\n */\nexport function stepper<State, T>(\n options: Readonly<PibblStepperOptions<State, T>>,\n): PibblAnimationDefinition<T> {\n if (typeof options.initial !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} stepper initial must be a function.`);\n }\n if (typeof options.step !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} stepper step must be a function.`);\n }\n if (typeof options.read !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} stepper read must be a function.`);\n }\n if (typeof options.done !== 'undefined' && typeof options.done !== 'function') {\n throw new TypeError(`${definitionLabel(options.debugName)} stepper done must be a function.`);\n }\n if (!Number.isFinite(options.stepMilliseconds) || options.stepMilliseconds <= 0) {\n throw new RangeError(`${definitionLabel(options.debugName)} stepper stepMilliseconds must be finite and positive.`);\n }\n const maxElapsedMilliseconds = options.maxElapsedMilliseconds ?? 100;\n if (!Number.isFinite(maxElapsedMilliseconds) || maxElapsedMilliseconds <= 0) {\n throw new RangeError(`${definitionLabel(options.debugName)} stepper maxElapsedMilliseconds must be finite and positive.`);\n }\n return createDefinition({\n kind: 'stepper',\n duration: Number.POSITIVE_INFINITY,\n debugName: options.debugName,\n stepMilliseconds: options.stepMilliseconds,\n maxElapsedMilliseconds,\n initial: options.initial as (currentValue: T) => unknown,\n step: options.step as (state: unknown, deltaMilliseconds: number) => unknown,\n read: options.read as (state: unknown) => T,\n done: options.done as ((state: unknown) => boolean) | undefined,\n });\n}\n\n/** @internal Returns the private immutable record associated with a definition. */\nexport function getDefinitionRecord<T>(\n definition: PibblAnimationDefinition<T>,\n): DefinitionRecord<T> {\n if (targetBindings.get(definition)?.unbound) {\n throw new TypeError('Animation definition needs a target: supply to for drive(), or pass it to useAnimatedValue().');\n }\n const record = definitionRecords.get(definition as PibblAnimationDefinition<unknown>);\n if (record === undefined) throw new TypeError('Expected a Pibbl animation definition.');\n return record as DefinitionRecord<T>;\n}\n\n/** @internal Samples a non-stepper definition from its activation snapshot. */\nexport function sampleSeekableDefinition<T>(\n definition: PibblAnimationDefinition<T>,\n input: Readonly<Pick<PibblAnimationSampleInput<T>, 'initialValue' | 'localTime'>>,\n): T {\n const record = getDefinitionRecord(definition);\n if (record.kind === 'stepper') {\n throw new TypeError(\n `${definitionLabel(record.debugName)} is stateful and requires the stateful program evaluator.`,\n );\n }\n if (record.kind === 'spring') {\n const resolved = resolveSpringStart(record, input.initialValue as number);\n const timing = sampledProgress(resolved.duration, input.localTime);\n return sampleSpring(resolved, timing.localTime / 1000).position as T;\n }\n const timing = sampledProgress(record.duration, input.localTime);\n if (record.kind === 'custom') {\n const sampled = callback(record.debugName, () => record.sample(Object.freeze({\n initialValue: input.initialValue,\n localTime: timing.localTime,\n progress: timing.progress,\n })));\n return validateSampledValue(sampled, record.debugName);\n }\n if (record.kind === 'tween') {\n const from = record.hasFrom ? record.from as T : input.initialValue;\n return interpolate(\n from,\n record.to,\n easedProgress(record.easing, timing.progress, record.debugName),\n record.interpolate,\n record.debugName,\n );\n }\n\n keyframeSamples++;\n keyframeSampleDepth++;\n try {\n return sampleKeyframe(record, timing);\n } finally {\n keyframeSampleDepth--;\n }\n}\n\nfunction sampleKeyframe<T>(\n record: KeyframesDefinitionRecord<T>,\n timing: { readonly progress: number },\n): T {\n let segment = 0;\n for (let index = 1; index < record.offsets.length; index++) {\n if (record.offsets[index] <= timing.progress) segment = index;\n else break;\n }\n if (segment === record.values.length - 1) {\n return validateSampledValue(\n isolateStoredAnimationValue(record.values[segment], new WeakMap()),\n record.debugName,\n );\n }\n const start = record.offsets[segment];\n const end = record.offsets[segment + 1];\n return interpolate(\n record.values[segment],\n record.values[segment + 1],\n easedProgress(record.easings[segment], (timing.progress - start) / (end - start), record.debugName),\n record.interpolate,\n record.debugName,\n );\n}\n\n/**\n * @internal Resolves activation-dependent definition data exactly once for a\n * track instance. Stateful definitions use a separate playback-owned record.\n */\nexport function activateSeekableDefinition<T>(\n definition: PibblAnimationDefinition<T>,\n initialValue: T,\n seen: WeakMap<object, unknown> = new WeakMap(),\n): SeekableDefinitionActivation<T> {\n const definitionRecord = getDefinitionRecord(definition);\n if (definitionRecord.kind === 'stepper') {\n throw new TypeError(\n 'Stateful animation definitions require the stateful program evaluator.',\n );\n }\n const snapshot = snapshotAnimationActivationValue(initialValue, seen);\n const resolved = definitionRecord.kind === 'spring' ?\n resolveSpringStart(definitionRecord, snapshot as number) : definitionRecord;\n const activation = Object.freeze({\n duration: resolved.duration,\n initialValue: snapshot,\n }) as SeekableDefinitionActivation<T>;\n seekableActivationRecords.set(\n activation as SeekableDefinitionActivation<unknown>,\n Object.freeze({\n definition,\n definitionRecord: resolved,\n initialValue: snapshot,\n }) as SeekableDefinitionActivationRecord<unknown>,\n );\n return activation;\n}\n\n/** @internal Samples a definition from one retained activation record. */\nexport function sampleActivatedSeekableDefinition<T>(\n activation: SeekableDefinitionActivation<T>,\n localTime: number,\n): T {\n const activationRecord = seekableActivationRecords.get(\n activation as SeekableDefinitionActivation<unknown>,\n ) as SeekableDefinitionActivationRecord<T> | undefined;\n if (activationRecord === undefined) {\n throw new TypeError('Expected a seekable Pibbl animation definition activation.');\n }\n const record = activationRecord.definitionRecord;\n if (record.kind === 'spring') {\n const timing = sampledProgress(record.duration, localTime);\n return sampleSpring(record, timing.localTime / 1000).position as T;\n }\n return sampleSeekableDefinition(activationRecord.definition, {\n initialValue: activationRecord.initialValue,\n localTime,\n });\n}\n\n/**\n * @internal Returns a boundary value only when the normalized definition makes\n * it exact without invoking user easing, interpolation, or sampling callbacks.\n */\nexport function getSeekableDefinitionBoundaryValue<T>(\n activation: SeekableDefinitionActivation<T>,\n boundary: 'start' | 'end',\n): SeekableDefinitionBoundaryValue<T> {\n const activationRecord = seekableActivationRecords.get(\n activation as SeekableDefinitionActivation<unknown>,\n ) as SeekableDefinitionActivationRecord<T> | undefined;\n if (activationRecord === undefined) {\n throw new TypeError('Expected a seekable Pibbl animation definition activation.');\n }\n const record = activationRecord.definitionRecord;\n if (record.kind === 'spring') {\n return Object.freeze({\n kind: 'known' as const,\n value: (boundary === 'start' ? record.from : record.to) as T,\n });\n }\n if (record.kind === 'keyframes') {\n if (boundary === 'end') {\n return Object.freeze({ kind: 'known' as const, value: record.values.at(-1)! });\n }\n if (record.interpolate === undefined && record.easings[0] === easing.linear) {\n return Object.freeze({ kind: 'known' as const, value: record.values[0]! });\n }\n return Object.freeze({ kind: 'unknown' as const });\n }\n if (record.kind === 'tween' && record.interpolate === undefined &&\n record.easing === easing.linear) {\n return Object.freeze({\n kind: 'known' as const,\n value: boundary === 'start' ?\n (record.hasFrom ? record.from as T : activationRecord.initialValue) : record.to,\n });\n }\n return Object.freeze({ kind: 'unknown' as const });\n}\n\n/**\n * @internal Returns a callback-free boundary that does not depend on a track's\n * activation value. This lets discovery recover known terminal state after an\n * earlier opaque custom value.\n */\nexport function getStaticSeekableDefinitionBoundaryValue<T>(\n definition: PibblAnimationDefinition<T>,\n boundary: 'start' | 'end',\n): SeekableDefinitionBoundaryValue<T> {\n const record = getDefinitionRecord(definition);\n if (record.kind === 'spring' && record.hasFrom) {\n return Object.freeze({\n kind: 'known' as const,\n value: (boundary === 'start' ? record.from : record.to) as T,\n });\n }\n if (record.kind === 'keyframes') {\n if (boundary === 'end') {\n return Object.freeze({ kind: 'known' as const, value: record.values.at(-1)! });\n }\n if (record.interpolate === undefined && record.easings[0] === easing.linear) {\n return Object.freeze({ kind: 'known' as const, value: record.values[0]! });\n }\n }\n if (record.kind === 'tween' && record.interpolate === undefined &&\n record.easing === easing.linear) {\n if (boundary === 'end') {\n return Object.freeze({ kind: 'known' as const, value: record.to });\n }\n if (record.hasFrom) {\n return Object.freeze({ kind: 'known' as const, value: record.from as T });\n }\n }\n return Object.freeze({ kind: 'unknown' as const });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["snapshot", "callback", "ease", "timing"]
|
|
7
7
|
}
|
|
@@ -8,11 +8,18 @@ export interface AnimationPlaybackSnapshot {
|
|
|
8
8
|
readonly queuedMilestones: number;
|
|
9
9
|
readonly outputStageAttempts: number;
|
|
10
10
|
}
|
|
11
|
+
/** Internal root lifetime used to revoke a deferred disposal publication. */
|
|
12
|
+
interface DeferredStatusCommandOwner {
|
|
13
|
+
add(teardown: () => void): void;
|
|
14
|
+
remove(teardown: () => void): void;
|
|
15
|
+
}
|
|
11
16
|
export interface AnimationPlaybackController {
|
|
12
17
|
readonly handle: PibblPlayback;
|
|
13
18
|
adopt(program: PibblAnimationProgram, options?: PibblPlaybackOptions): void;
|
|
14
19
|
committedSpringSnapshot(): SpringSample | undefined;
|
|
15
20
|
retarget(program: PibblAnimationProgram, options?: PibblPlaybackOptions): void;
|
|
21
|
+
/** @internal Associates render-phase disposal work with the owning root. */
|
|
22
|
+
setDeferredStatusCommandOwner(owner: DeferredStatusCommandOwner): void;
|
|
16
23
|
dispose(): void;
|
|
17
24
|
}
|
|
18
25
|
export interface AnimationPlaybackCandidate {
|
|
@@ -28,3 +35,4 @@ export declare function normalizeAnimationPlaybackCandidate(program: PibblAnimat
|
|
|
28
35
|
* usePlayback in the following implementation task.
|
|
29
36
|
*/
|
|
30
37
|
export declare function createAnimationPlaybackController(initialProgram: PibblAnimationProgram, initialOptions?: PibblPlaybackOptions): AnimationPlaybackController;
|
|
38
|
+
export {};
|
|
@@ -123,6 +123,7 @@ function createAnimationPlaybackController(initialProgram, initialOptions = {})
|
|
|
123
123
|
let storedPlaybackRate = 1;
|
|
124
124
|
let delivery;
|
|
125
125
|
let pendingRetarget;
|
|
126
|
+
let deferredStatusCommandOwner;
|
|
126
127
|
const pendingCommands = /* @__PURE__ */ new Set();
|
|
127
128
|
const metadataWriter = Object.freeze({ name: "Pibbl playback metadata" });
|
|
128
129
|
const status = signal("idle", {
|
|
@@ -706,6 +707,34 @@ function createAnimationPlaybackController(initialProgram, initialOptions = {})
|
|
|
706
707
|
pendingCommands.add(commandHandle);
|
|
707
708
|
return commandHandle;
|
|
708
709
|
}
|
|
710
|
+
function stageDisposedAfterRender() {
|
|
711
|
+
let command;
|
|
712
|
+
let revokeFromOwner;
|
|
713
|
+
command = queueBeginCommand((snapshot, batch) => {
|
|
714
|
+
try {
|
|
715
|
+
batch.stage(status, "disposed", metadataWriter);
|
|
716
|
+
recordSchedulerTrace({
|
|
717
|
+
kind: "animation-write",
|
|
718
|
+
frameId: snapshot.frameId,
|
|
719
|
+
logicalTime: snapshot.logicalTime,
|
|
720
|
+
debugName: debugName(),
|
|
721
|
+
target: "status",
|
|
722
|
+
outcome: "staged"
|
|
723
|
+
});
|
|
724
|
+
} finally {
|
|
725
|
+
revokeFromOwner?.();
|
|
726
|
+
}
|
|
727
|
+
});
|
|
728
|
+
const owner = deferredStatusCommandOwner;
|
|
729
|
+
if (owner === void 0) return;
|
|
730
|
+
const revoke = () => {
|
|
731
|
+
command.cancel();
|
|
732
|
+
const phase = snapshotRealmScheduler().phase;
|
|
733
|
+
if (phase !== "advance" && phase !== "render") status.set("disposed");
|
|
734
|
+
};
|
|
735
|
+
revokeFromOwner = () => owner.remove(revoke);
|
|
736
|
+
owner.add(revoke);
|
|
737
|
+
}
|
|
709
738
|
function acceptCommandWithoutTrace(command, generation, snapshot, batch, argument) {
|
|
710
739
|
if (command === "play") {
|
|
711
740
|
acceptPlay(generation, argument, snapshot, batch);
|
|
@@ -888,6 +917,9 @@ function createAnimationPlaybackController(initialProgram, initialOptions = {})
|
|
|
888
917
|
const generation = ++queuedGeneration;
|
|
889
918
|
pendingRetarget = enqueue("play", generation, "replace");
|
|
890
919
|
},
|
|
920
|
+
setDeferredStatusCommandOwner(owner) {
|
|
921
|
+
deferredStatusCommandOwner = owner;
|
|
922
|
+
},
|
|
891
923
|
dispose() {
|
|
892
924
|
if (disposed) return;
|
|
893
925
|
disposed = true;
|
|
@@ -909,17 +941,7 @@ function createAnimationPlaybackController(initialProgram, initialOptions = {})
|
|
|
909
941
|
if (schedulerPhase !== "advance" && schedulerPhase !== "render") {
|
|
910
942
|
status.set("disposed");
|
|
911
943
|
} else {
|
|
912
|
-
|
|
913
|
-
batch.stage(status, "disposed", metadataWriter);
|
|
914
|
-
recordSchedulerTrace({
|
|
915
|
-
kind: "animation-write",
|
|
916
|
-
frameId: snapshot.frameId,
|
|
917
|
-
logicalTime: snapshot.logicalTime,
|
|
918
|
-
debugName: debugName(),
|
|
919
|
-
target: "status",
|
|
920
|
-
outcome: "staged"
|
|
921
|
-
});
|
|
922
|
-
});
|
|
944
|
+
stageDisposedAfterRender();
|
|
923
945
|
}
|
|
924
946
|
}
|
|
925
947
|
});
|