@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/layout/grid.ts"],
|
|
4
|
-
"sourcesContent": ["import { preparedStyleValue, preparedStyleQuery } from '../style/responsive.js';\nimport { definePrimitive } from '../define-primitive.js';\nimport { clonePibblElement } from '../element/create-element.js';\nimport { getChildPrimitiveReceiverToken } from '../element/metadata.js';\nimport type { PibblElement } from '../element/types.js';\nimport { GLOBAL_STATE } from '../global-state.js';\nimport { layoutDiagnostic } from '../style/diagnostics.js';\nimport {\n type PibblStructuralEventProps,\n wireStructuralEvents,\n} from '../components/structural-events.js';\nimport { normalizeEdges } from '../style/normalize.js';\nimport { resolveLength } from '../style/resolve-length.js';\nimport { setPreNormalizedStyle } from '../style/resolve-dispatch.js';\nimport type {\n BoxStyle,\n GridItemStyle,\n LayoutItemStyle,\n ResolvedBoxStyle,\n} from '../style/types.js';\nimport type {\n CanvasMeasurementService,\n PibblNodeInput,\n MeasureInput,\n MeasureResult,\n RenderingContext2D,\n SystemStyle,\n} from '../types.js';\nimport {\n childWithUsedSize,\n prepareDirectChildStyle,\n materializeLayoutChildren,\n placeDirectChildren,\n prepareLayoutChildren,\n resolveContainerBox,\n resolveDirectChildBox,\n} from './absolute.js';\nimport { pushLayoutBox } from './context.js';\nimport { recordLayoutEvaluation } from './diagnostics.js';\nimport { assertSupportedChildPosition } from './positioning-diagnostics.js';\nimport { measureElement } from './measure.js';\nimport type { Constraints, LayoutBox } from './types.js';\n\n/**\n * A fixed logical size, percentage of available space, or fractional share of remaining grid space.\n *\n * @see {@link GridStyle}\n */\nexport type GridTrack = number | `${number}%` | `${number}fr`;\ntype GridAlignment = 'stretch' | 'start' | 'center' | 'end';\ntype ParsedGridTrack =\n | Readonly<{ kind: 'fixed'; value: number }>\n | Readonly<{ kind: 'percentage'; factor: number }>\n | Readonly<{ kind: 'fraction'; factor: number }>;\n\n/**\n * Supported geometry and presentation properties for Grid.\n *\n * @see {@link BoxStyle}\n * @see {@link LayoutItemStyle}\n * @see {@link GridTrack}\n * @see {@link Grid}\n */\nexport interface GridStyle extends BoxStyle, LayoutItemStyle {\n /** Explicit grid column track definitions. See {@link GridTrack}. */\n gridTemplateColumns: readonly GridTrack[];\n /** Explicit grid row track definitions. See {@link GridTrack}. */\n gridTemplateRows: readonly GridTrack[];\n /** Default inline-axis alignment of grid or overlay children. See {@link GridAlignment}. */\n justifyItems?: GridAlignment;\n /** Default alignment of children on the cross or block axis. See {@link GridAlignment}. */\n alignItems?: GridAlignment;\n /** Spacing between adjacent items. See {@link GridStyle}. */\n gap?: number;\n /** Space between adjacent rows or items on the row axis. See {@link GridStyle}. */\n rowGap?: number;\n /** Space between adjacent columns or items on the column axis. See {@link GridStyle}. */\n columnGap?: number;\n}\n\n/**\n * Authored inputs for Grid, including the declared data and presentation options.\n *\n * @see {@link PibblNodeInput}\n * @see {@link Grid}\n */\nexport interface GridProps extends PibblStructuralEventProps {\n /** Descendant content or the callback that supplies it. See {@link PibblNodeInput}. */\n children: PibblNodeInput;\n}\n\nexport interface GridMeasurementInput {\n service: CanvasMeasurementService;\n measureElement(\n element: PibblElement<any>,\n constraints: Readonly<Constraints>,\n ): MeasureResult;\n}\n\ninterface ResolvedGridStyle extends SystemStyle {\n box: ResolvedBoxStyle;\n overflow: 'visible' | 'clip';\n columns: readonly ParsedGridTrack[];\n rows: readonly ParsedGridTrack[];\n justifyItems: GridAlignment;\n alignItems: GridAlignment;\n rowGap: number;\n columnGap: number;\n}\n\ninterface GridPlacement {\n box: LayoutBox;\n element: PibblElement<any>;\n}\n\nfunction renderGrid(\n props: GridProps,\n style: Readonly<ResolvedGridStyle>,\n ctx: RenderingContext2D,\n) {\n wireStructuralEvents(props);\n const children = prepareLayoutChildren(props.children, 'Grid');\n recordLayoutEvaluation();\n const content = style.box.contentBox;\n ctx.translate(content.x, content.y);\n const localContent = Object.freeze({\n x: 0,\n y: 0,\n width: content.width,\n height: content.height,\n });\n const releaseLayout = pushLayoutBox(localContent);\n GLOBAL_STATE.componentRefs!.onAfterRender = releaseLayout;\n const service = {\n measureText(value: string, font: string) {\n ctx.save();\n try {\n ctx.font = font;\n return ctx.measureText(value);\n } finally {\n ctx.restore();\n }\n },\n };\n const placements = resolveGridPlacements(\n localContent,\n children,\n style,\n {\n service,\n measureElement: (element, constraints) =>\n measureElement(element, constraints, service),\n },\n );\n let index = 0;\n return placeDirectChildren(\n children,\n localContent,\n () => placements[index++],\n style.overflow,\n );\n}\n\n/**\n * Describes explicit Grid layout for JSX or createElement authoring.\n *\n * @param props - Authored component inputs, supplied through JSX or createElement. See the linked\n * props and style types.\n * @throws When called directly; Pibbl mounts this component through JSX or createElement.\n *\n * @see {@link GridProps}\n * @see {@link GridStyle}\n */\nexport const Grid = definePrimitive<\n GridProps,\n GridStyle,\n GridStyle,\n ResolvedGridStyle\n>(renderGrid, {\n childInput: 'structural',\n resolveStyle: (style, context) => ({\n box: resolveContainerBox(style, context, 'Grid', 'grid'),\n overflow: style.overflow ?? 'visible',\n ...normalizeGridOptions(style, context.allocation),\n }),\n measure: (input) => measureGrid(input),\n});\n\nexport function layoutGrid(\n container: Readonly<LayoutBox>,\n children: PibblNodeInput,\n style: Readonly<GridStyle>,\n measurement: GridMeasurementInput,\n): LayoutBox[] {\n const prepared = materializeLayoutChildren(children, 'Grid');\n const options = normalizeGridOptions(style, container);\n return resolveGridPlacements(container, prepared, options, measurement)\n .map((placement) => placement.box);\n}\n\nfunction resolveGridPlacements(\n container: Readonly<LayoutBox>,\n children: readonly PibblElement<any>[],\n options: Readonly<ReturnType<typeof normalizeGridOptions>>,\n measurement: GridMeasurementInput,\n): GridPlacement[] {\n assertFiniteContainer(container);\n const columns = resolveParsedGridTracks(\n options.columns,\n container.width,\n options.columnGap,\n 'columns',\n container,\n );\n const rows = resolveParsedGridTracks(\n options.rows,\n container.height,\n options.rowGap,\n 'rows',\n container,\n );\n const placements: GridPlacement[] = [];\n\n for (const child of children) {\n const receiverToken = getChildPrimitiveReceiverToken(\n GLOBAL_STATE.renderTransaction,\n GLOBAL_STATE.primitiveReceiverToken,\n placements.length,\n );\n const prepared = prepareDirectChildStyle(child, receiverToken, container);\n const normalized = preparedStyleValue(prepared) as Readonly<\n BoxStyle & GridItemStyle & LayoutItemStyle & Record<string, unknown>\n >;\n assertSupportedChildPosition('Grid', child, normalized);\n rejectUnsupportedItemFields(child, normalized, container);\n const columnStart = placementInteger(\n normalized.gridColumnStart,\n 'gridColumnStart',\n child,\n container,\n true,\n );\n const rowStart = placementInteger(\n normalized.gridRowStart,\n 'gridRowStart',\n child,\n container,\n true,\n );\n const columnSpan = placementInteger(\n normalized.gridColumnSpan ?? 1,\n 'gridColumnSpan',\n child,\n container,\n false,\n );\n const rowSpan = placementInteger(\n normalized.gridRowSpan ?? 1,\n 'gridRowSpan',\n child,\n container,\n false,\n );\n validateStart(\n columnStart,\n columns.length,\n 'gridColumnStart',\n child,\n container,\n );\n validateStart(\n rowStart,\n rows.length,\n 'gridRowStart',\n child,\n container,\n );\n validateSpan(\n columnStart,\n columnSpan,\n columns.length,\n 'gridColumnSpan',\n child,\n container,\n );\n validateSpan(\n rowStart,\n rowSpan,\n rows.length,\n 'gridRowSpan',\n child,\n container,\n );\n const area = {\n x: container.x + trackOffset(columns, columnStart - 1, options.columnGap),\n y: container.y + trackOffset(rows, rowStart - 1, options.rowGap),\n width: trackSpan(columns, columnStart - 1, columnSpan, options.columnGap),\n height: trackSpan(rows, rowStart - 1, rowSpan, options.rowGap),\n };\n const widthAuto =\n normalized.width === undefined || normalized.width === 'auto';\n const heightAuto =\n normalized.height === undefined || normalized.height === 'auto';\n const justify = itemAlignment(\n normalized.justifySelf,\n options.justifyItems,\n 'justifySelf',\n child,\n container,\n );\n const align = itemAlignment(\n normalized.alignSelf,\n options.alignItems,\n 'alignSelf',\n child,\n container,\n );\n let measured: MeasureResult | undefined;\n if (\n (widthAuto && justify !== 'stretch') ||\n (heightAuto && align !== 'stretch')\n ) {\n const measurementChild = clonePibblElement(child);\n setPreNormalizedStyle(\n measurementChild,\n normalized,\n child,\n receiverToken,\n preparedStyleQuery(prepared),\n );\n measured = measurement.measureElement(measurementChild, {\n minWidth: 0,\n maxWidth: area.width,\n minHeight: 0,\n maxHeight: area.height,\n });\n if (measured.status === 'unsupported') {\n throw childDiagnostic(\n child,\n widthAuto && justify !== 'stretch' ? 'width' : 'height',\n 'auto',\n container,\n `measurement is required but unsupported: ${measured.reason}`,\n );\n }\n }\n const padding = normalizeEdges(\n normalized.padding,\n 'padding',\n childContext(child, container),\n );\n const usedStyle = {\n ...normalized,\n width: widthAuto\n ? justify === 'stretch'\n ? Math.max(0, area.width - padding.left - padding.right)\n : measured!.status === 'measured'\n ? measured!.size.width\n : 0\n : normalized.width,\n height: heightAuto\n ? align === 'stretch'\n ? Math.max(0, area.height - padding.top - padding.bottom)\n : measured!.status === 'measured'\n ? measured!.size.height\n : 0\n : normalized.height,\n };\n const resolved = resolveDirectChildBox(area, child, 'grid', usedStyle);\n const border = resolved.borderBox;\n const box = {\n x: area.x + alignmentOffset(area.width, border.width, justify),\n y: area.y + alignmentOffset(area.height, border.height, align),\n width: border.width,\n height: border.height,\n };\n placements.push({\n box,\n element: childWithUsedSize(\n child,\n normalized,\n resolved.contentBox.width,\n resolved.contentBox.height,\n receiverToken,\n preparedStyleQuery(prepared),\n ),\n });\n }\n return placements;\n}\n\nexport function resolveGridTracks(\n tracks: readonly GridTrack[],\n bound: number,\n gap: number,\n axis: 'columns' | 'rows',\n): number[] {\n const container = {\n x: 0,\n y: 0,\n width: axis === 'columns' ? bound : 0,\n height: axis === 'rows' ? bound : 0,\n };\n const parsed = parseGridTracks(tracks, axis, container);\n return resolveParsedGridTracks(parsed, bound, gap, axis, container);\n}\n\nfunction resolveParsedGridTracks(\n tracks: readonly ParsedGridTrack[],\n bound: number,\n gap: number,\n axis: 'columns' | 'rows',\n container: Readonly<LayoutBox>,\n): number[] {\n if (!Number.isFinite(bound) || bound < 0) {\n throw optionDiagnostic(\n axis,\n bound,\n container,\n 'requires a finite nonnegative track bound',\n );\n }\n const resolved = new Array<number>(tracks.length).fill(0);\n const fractions: { index: number; factor: number }[] = [];\n let allocated =\n Math.max(0, tracks.length - 1) * nonnegativeOption(gap, 'gap', container);\n for (let index = 0; index < tracks.length; index++) {\n const track = tracks[index];\n if (track.kind === 'fixed') {\n resolved[index] = track.value;\n allocated += track.value;\n } else if (track.kind === 'percentage') {\n const size = (bound * track.factor) / 100;\n if (!Number.isFinite(size)) throw trackDiagnostic(track, axis, container);\n resolved[index] = size;\n allocated += size;\n } else {\n fractions.push({ index, factor: track.factor });\n }\n }\n const totalFr = fractions.reduce((total, track) => total + track.factor, 0);\n if (!Number.isFinite(allocated) || !Number.isFinite(totalFr)) {\n throw trackDiagnostic(tracks, axis, container);\n }\n const remaining = Math.max(0, bound - allocated);\n const unit = remaining / Math.max(1, totalFr);\n for (const track of fractions) resolved[track.index] = unit * track.factor;\n if (resolved.some((value) => !Number.isFinite(value) || value < 0)) {\n throw trackDiagnostic(tracks, axis, container);\n }\n return resolved;\n}\n\nfunction parseGridTracks(\n tracks: readonly GridTrack[],\n axis: 'columns' | 'rows',\n container: Readonly<LayoutBox>,\n): readonly ParsedGridTrack[] {\n if (!Array.isArray(tracks) || tracks.length === 0) {\n throw optionDiagnostic(\n axis === 'columns' ? 'gridTemplateColumns' : 'gridTemplateRows',\n tracks,\n container,\n `requires a nonempty explicit ${axis} list`,\n );\n }\n return tracks.map(track => {\n if (typeof track === 'number') {\n if (!Number.isFinite(track) || track < 0) {\n throw trackDiagnostic(track, axis, container);\n }\n return Object.freeze({ kind: 'fixed', value: track });\n }\n if (typeof track !== 'string') {\n throw trackDiagnostic(track, axis, container);\n }\n const match = /^(?:\\d+(?:\\.\\d+)?|\\.\\d+)(%|fr)$/.exec(track);\n if (!match) throw trackDiagnostic(track, axis, container);\n const factor = Number.parseFloat(track);\n if (!Number.isFinite(factor) || factor < 0) {\n throw trackDiagnostic(track, axis, container);\n }\n return Object.freeze(match[1] === '%' ?\n { kind: 'percentage', factor } :\n { kind: 'fraction', factor });\n });\n}\n\nfunction measureGrid(input: MeasureInput<GridProps, GridStyle>): MeasureResult {\n prepareLayoutChildren(input.props.children, 'Grid');\n const diagnosticBox = {\n x: 0,\n y: 0,\n width: Number.isFinite(input.constraints.maxWidth)\n ? input.constraints.maxWidth\n : 0,\n height: Number.isFinite(input.constraints.maxHeight)\n ? input.constraints.maxHeight\n : 0,\n };\n const options = normalizeGridOptions(input.style, diagnosticBox);\n const widthDefinite =\n input.style.width !== undefined && input.style.width !== 'auto';\n const heightDefinite =\n input.style.height !== undefined && input.style.height !== 'auto';\n if (!widthDefinite) {\n const unsupported = intrinsicTrackReason(\n options.columns,\n 'columns',\n );\n if (unsupported) return { status: 'unsupported', reason: unsupported };\n }\n if (!heightDefinite) {\n const unsupported = intrinsicTrackReason(options.rows, 'rows');\n if (unsupported) return { status: 'unsupported', reason: unsupported };\n }\n const width = widthDefinite\n ? measuredLength(\n input.style.width!,\n input.constraints.maxWidth,\n 'width',\n input.constraints,\n )\n : intrinsicTrackSize(\n options.columns,\n options.columnGap,\n 'columns',\n );\n const height = heightDefinite\n ? measuredLength(\n input.style.height!,\n input.constraints.maxHeight,\n 'height',\n input.constraints,\n )\n : intrinsicTrackSize(options.rows, options.rowGap, 'rows');\n return { status: 'measured', size: { width, height } };\n}\n\nfunction intrinsicTrackSize(\n tracks: readonly ParsedGridTrack[],\n gap: number,\n axis: 'columns' | 'rows',\n): number {\n const size =\n tracks.reduce((total, track) => total +\n (track.kind === 'fixed' ? track.value : 0), 0) +\n Math.max(0, tracks.length - 1) * gap;\n if (!Number.isFinite(size))\n throw trackDiagnostic(tracks, axis, { x: 0, y: 0, width: 0, height: 0 });\n return size;\n}\n\nfunction intrinsicTrackReason(\n tracks: readonly ParsedGridTrack[],\n axis: 'columns' | 'rows',\n): string | undefined {\n if (tracks.every(track => track.kind === 'fixed')) return undefined;\n const kind = tracks.some(track => track.kind === 'fraction')\n ? 'fractional'\n : 'percentage';\n return `Grid ${kind} intrinsic measurement for ${axis} is unsupported because it is allocation-dependent`;\n}\n\nfunction measuredLength(\n value: Exclude<BoxStyle['width'], undefined>,\n reference: number,\n property: string,\n constraints: Readonly<Constraints>,\n): number {\n const resolved = resolveLength(value, reference, property, {\n component: 'Grid',\n algorithm: 'measurement',\n constraints,\n });\n if (resolved === undefined || resolved < 0) {\n throw layoutDiagnostic({\n component: 'Grid',\n property,\n value,\n algorithm: 'measurement',\n constraints,\n reason: 'requires a definite nonnegative container size',\n });\n }\n return resolved;\n}\n\nfunction normalizeGridOptions(\n style: Readonly<GridStyle>,\n container: Readonly<LayoutBox>,\n) {\n if (\n !Array.isArray(style.gridTemplateColumns) ||\n style.gridTemplateColumns.length === 0\n ) {\n throw optionDiagnostic(\n 'gridTemplateColumns',\n style.gridTemplateColumns,\n container,\n 'requires a nonempty explicit columns list',\n );\n }\n if (\n !Array.isArray(style.gridTemplateRows) ||\n style.gridTemplateRows.length === 0\n ) {\n throw optionDiagnostic(\n 'gridTemplateRows',\n style.gridTemplateRows,\n container,\n 'requires a nonempty explicit rows list',\n );\n }\n const justifyItems = containerAlignment(\n style.justifyItems ?? 'stretch',\n 'justifyItems',\n container,\n );\n const alignItems = containerAlignment(\n style.alignItems ?? 'stretch',\n 'alignItems',\n container,\n );\n const gap = nonnegativeOption(style.gap ?? 0, 'gap', container);\n return {\n columns: parseGridTracks(\n style.gridTemplateColumns,\n 'columns',\n container,\n ),\n rows: parseGridTracks(style.gridTemplateRows, 'rows', container),\n justifyItems,\n alignItems,\n rowGap: nonnegativeOption(style.rowGap ?? gap, 'rowGap', container),\n columnGap: nonnegativeOption(\n style.columnGap ?? gap,\n 'columnGap',\n container,\n ),\n };\n}\n\nfunction containerAlignment(\n value: unknown,\n property: string,\n container: Readonly<LayoutBox>,\n): GridAlignment {\n if (\n value === 'stretch' ||\n value === 'start' ||\n value === 'center' ||\n value === 'end'\n )\n return value;\n throw optionDiagnostic(\n property,\n value,\n container,\n 'uses an unsupported grid alignment',\n );\n}\n\nfunction itemAlignment(\n value: unknown,\n fallback: GridAlignment,\n property: string,\n child: PibblElement<any>,\n container: Readonly<LayoutBox>,\n): GridAlignment {\n if (value === undefined || value === 'auto') return fallback;\n if (\n value === 'stretch' ||\n value === 'start' ||\n value === 'center' ||\n value === 'end'\n )\n return value;\n throw childDiagnostic(\n child,\n property,\n value,\n container,\n 'uses an unsupported grid alignment',\n );\n}\n\nfunction placementInteger(\n value: unknown,\n property: string,\n child: PibblElement<any>,\n container: Readonly<LayoutBox>,\n required: boolean,\n): number {\n if (value === undefined && required) {\n throw childDiagnostic(\n child,\n property,\n value,\n container,\n 'is required for explicit grid placement',\n );\n }\n if (typeof value !== 'number' || !Number.isInteger(value) || value <= 0) {\n throw childDiagnostic(\n child,\n property,\n value,\n container,\n 'must be a positive integer',\n );\n }\n return value;\n}\n\nfunction validateSpan(\n start: number,\n span: number,\n trackCount: number,\n property: string,\n child: PibblElement<any>,\n container: Readonly<LayoutBox>,\n): void {\n if (start - 1 + span > trackCount) {\n throw childDiagnostic(\n child,\n property,\n span,\n container,\n `grid area start ${start} plus span ${span} exceeds the explicit ${trackCount}-track list`,\n );\n }\n}\n\nfunction validateStart(\n start: number,\n trackCount: number,\n property: string,\n child: PibblElement<any>,\n container: Readonly<LayoutBox>,\n): void {\n if (start > trackCount) {\n throw childDiagnostic(\n child,\n property,\n start,\n container,\n `must reference the explicit ${trackCount}-track list`,\n );\n }\n}\n\nfunction trackOffset(\n tracks: readonly number[],\n index: number,\n gap: number,\n): number {\n return (\n tracks.slice(0, index).reduce((total, size) => total + size, 0) +\n index * gap\n );\n}\n\nfunction trackSpan(\n tracks: readonly number[],\n index: number,\n span: number,\n gap: number,\n): number {\n return (\n tracks.slice(index, index + span).reduce((total, size) => total + size, 0) +\n Math.max(0, span - 1) * gap\n );\n}\n\nfunction alignmentOffset(\n area: number,\n item: number,\n alignment: GridAlignment,\n): number {\n if (alignment === 'center') return (area - item) / 2;\n if (alignment === 'end') return area - item;\n return 0;\n}\n\nfunction nonnegativeOption(\n value: number,\n property: string,\n container: Readonly<LayoutBox>,\n): number {\n if (!Number.isFinite(value) || value < 0) {\n throw optionDiagnostic(\n property,\n value,\n container,\n 'requires a finite nonnegative number',\n );\n }\n return value;\n}\n\nfunction assertFiniteContainer(container: Readonly<LayoutBox>): void {\n for (const [property, value] of Object.entries(container)) {\n if (\n !Number.isFinite(value) ||\n ((property === 'width' || property === 'height') && value < 0)\n ) {\n throw optionDiagnostic(\n property,\n value,\n container,\n 'requires finite nonnegative container geometry',\n );\n }\n }\n}\n\nfunction rejectUnsupportedItemFields(\n child: PibblElement<any>,\n style: Readonly<Record<string, unknown>>,\n container: Readonly<LayoutBox>,\n): void {\n for (const property of ['gridColumnEnd', 'gridRowEnd', 'gridArea', 'order']) {\n if (style[property] !== undefined) {\n throw childDiagnostic(\n child,\n property,\n style[property],\n container,\n 'is outside the explicit Grid subset',\n );\n }\n }\n}\n\nfunction trackDiagnostic(\n value: unknown,\n axis: string,\n container: Readonly<LayoutBox>,\n) {\n return optionDiagnostic(\n axis === 'columns' ? 'gridTemplateColumns' : 'gridTemplateRows',\n value,\n container,\n 'contains an unsupported track; use finite numbers, exact decimal percentages, or decimal fr units',\n );\n}\n\nfunction optionDiagnostic(\n property: string,\n value: unknown,\n container: Readonly<LayoutBox>,\n reason: string,\n) {\n return layoutDiagnostic({\n component: 'Grid',\n property,\n value,\n algorithm: 'grid',\n constraints: constraintsFor(container),\n reason,\n });\n}\n\nfunction childDiagnostic(\n child: PibblElement<any>,\n property: string,\n value: unknown,\n container: Readonly<LayoutBox>,\n reason: string,\n) {\n return layoutDiagnostic({\n component: child.type.name || 'Anonymous',\n property,\n value,\n algorithm: 'grid',\n constraints: constraintsFor(container),\n reason,\n });\n}\n\nfunction childContext(child: PibblElement<any>, container: Readonly<LayoutBox>) {\n return {\n component: child.type.name || 'Anonymous',\n algorithm: 'grid',\n constraints: constraintsFor(container),\n };\n}\n\nfunction constraintsFor(container: Readonly<LayoutBox>) {\n return {\n minWidth: 0,\n maxWidth: container.width,\n minHeight: 0,\n maxHeight: container.height,\n };\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import { withAllocationCheckpoint } from './allocation-checkpoint.js';\nimport { contentBoxStyle } from './box-sizing.js';\nimport { canvasMeasurementService } from './canvas-measurement.js';\nimport { nativeLayout, LayoutRegion, mountedLayoutRegion, recordWasmAllocationPass, recordWasmAllocationItem, recordWasmAllocationCacheHit } from './wasm/region.js';\nimport { prepareKnownLayoutDescendants, registerKnownLayoutPreflight, claimPreparedLayoutPlan, stagePreparedLayoutPlan, preparePlacedKnownLayout, type PreparedLayoutPlan } from './prepared-root.js';\nimport { getStyleMeasurementMode, preparedStyleValue, preparedStyleQuery } from '../style/responsive.js';\nimport { definePrimitive } from '../define-primitive.js';\nimport { clonePibblElement } from '../element/create-element.js';\nimport { getChildPrimitiveReceiverToken } from '../element/metadata.js';\nimport type { PibblElement } from '../element/types.js';\nimport { GLOBAL_STATE } from '../global-state.js';\nimport { layoutDiagnostic } from '../style/diagnostics.js';\nimport {\n type PibblStructuralEventProps,\n wireStructuralEvents,\n} from '../components/structural-events.js';\nimport { normalizeBoxInsets, hasPercentageBoxPadding, resolveAllocatedInsets } from './box-insets.js';\nimport { isFitContent, resolveScalarSizingLength, type FitContent, type SizingKeyword } from '../style/sizing-length.js';\nimport { setPreNormalizedStyle, registerOpaqueStyleProperties } from '../style/resolve-dispatch.js';\nimport type {\n BoxStyle,\n GridItemStyle,\n LayoutItemStyle,\n ResolvedBoxStyle,\n} from '../style/types.js';\nimport type {\n CanvasMeasurementService,\n PibblNodeInput,\n MeasureInput,\n MeasureResult,\n RenderingContext2D,\n SystemStyle,\n} from '../types.js';\nimport {\n childWithUsedSize,\n prepareDirectChildStyle,\n materializeLayoutChildren,\n placeDirectChildren,\n prepareLayoutChildren,\n resolveContainerBox,\n resolveDirectChildBox,\n} from './absolute.js';\nimport { getLayoutDirection, pushLayoutBox, resolvePositionedContainingBox } from './context.js';\nimport { recordLayoutEvaluation } from './diagnostics.js';\nimport { assertSupportedChildPosition } from './positioning-diagnostics.js';\nimport { measureElement, measureIntrinsicElement } from './measure.js';\nimport { resolveAbsoluteFlexPlacement } from './flex.js';\nimport { GRID_V2_TRACK_STRIDE } from './grid-kernel.js';\nimport type { Constraints, LayoutBox } from './types.js';\nconst unsupportedProperties = ['gridColumnEnd', 'gridRowEnd', 'gridArea', 'order'] as const;\n\n\n\n/** A scalar, fractional, or intrinsic breadth accepted by a Grid track.\n *\n * @see {@link GridTrack}\n */\nexport type GridTrackBreadth = number | `${number}%` | `${number}fr` | SizingKeyword | FitContent | 'auto';\n\n/** A bounded Grid track whose minimum and maximum are resolved by the Grid owner.\n *\n * @see {@link GridTrack}\n */\nexport interface GridMinMaxTrack {\n /** Identifies the bounded track definition. See {@link GridMinMaxTrack}. */\n readonly kind: 'minmax';\n /** Minimum track breadth. See {@link GridTrackBreadth}. */\n readonly min: GridTrackBreadth;\n /** Maximum track breadth. See {@link GridTrackBreadth}. */\n readonly max: GridTrackBreadth;\n}\n\n/** A repeated {@link GridTrack} list. `auto-fill` and `auto-fit` use the available axis size. */\nexport interface GridRepeatTrack {\n /** Identifies the repetition definition. See {@link GridRepeatTrack}. */\n readonly kind: 'repeat';\n /** Fixed count or automatic fill/fit policy. See {@link GridRepeatTrack}. */\n readonly count: number | 'auto-fill' | 'auto-fit';\n /** Ordered pattern to repeat. See {@link GridTrack}. */\n readonly tracks: readonly GridTrack[];\n}\n\n/** A fixed logical size, percentage, fraction, intrinsic breadth, minmax, or repeat track. See {@link GridTrackBreadth}, {@link GridMinMaxTrack}, {@link GridRepeatTrack}. */\nexport type GridTrack = GridTrackBreadth | GridMinMaxTrack | GridRepeatTrack;\n\n/** Creates an immutable bounded Grid track.\n * @param options - The minimum and maximum breadths.\n * @returns An immutable `minmax` track definition.\n * @see {@link GridTrack}\n */\nexport function minmax(options: Readonly<{ min: GridTrackBreadth; max: GridTrackBreadth }>): GridMinMaxTrack {\n return Object.freeze({ kind: 'minmax' as const, min: options.min, max: options.max });\n}\n\n/** Repeats Grid tracks a fixed number of times.\n * @param tracks - The track sequence to repeat.\n * @param options - The repeat count.\n * @returns An immutable repeated track definition.\n * @see {@link GridTrack}\n */\nexport function repeatTracks(tracks: readonly GridTrack[], options: Readonly<{ count: number }>): GridRepeatTrack {\n return Object.freeze({ kind: 'repeat' as const, count: options.count, tracks: Object.freeze([...tracks]) });\n}\n\n/** Repeats Grid tracks to fill the available axis.\n * @param tracks - The track sequence to repeat.\n * @returns An immutable auto-fill track definition.\n * @see {@link GridTrack}\n */\nexport function autoFillTracks(...tracks: readonly GridTrack[]): GridRepeatTrack {\n return Object.freeze({ kind: 'repeat' as const, count: 'auto-fill' as const, tracks: Object.freeze([...tracks]) });\n}\n\n/** Repeats Grid tracks to fit occupied cells in the available axis.\n * @param tracks - The track sequence to repeat.\n * @returns An immutable auto-fit track definition.\n * @see {@link GridTrack}\n */\nexport function autoFitTracks(...tracks: readonly GridTrack[]): GridRepeatTrack {\n return Object.freeze({ kind: 'repeat' as const, count: 'auto-fit' as const, tracks: Object.freeze([...tracks]) });\n}\n\ntype GridAlignment = 'stretch' | 'start' | 'center' | 'end';\ntype ParsedGridTrack = (\n | Readonly<{ kind: 'fixed'; value: number }>\n | Readonly<{ kind: 'percentage'; factor: number }>\n | Readonly<{ kind: 'fraction'; factor: number }>\n | Readonly<{ kind: 'intrinsic'; value: 'auto' | SizingKeyword | FitContent }>\n | Readonly<{ kind: 'minmax'; min: ParsedGridTrack; max: ParsedGridTrack }>) & { readonly autoFit?: boolean };\n\n/**\n * Supported geometry and presentation properties for Grid.\n *\n * @see {@link BoxStyle}\n * @see {@link LayoutItemStyle}\n * @see {@link GridTrack}\n * @see {@link Grid}\n */\nexport interface GridStyle extends BoxStyle, LayoutItemStyle {\n /** Explicit grid column track definitions. See {@link GridTrack}. */\n gridTemplateColumns: readonly GridTrack[];\n /** Explicit grid row track definitions. See {@link GridTrack}. */\n gridTemplateRows: readonly GridTrack[];\n /** Default inline-axis alignment of grid or overlay children. See {@link GridAlignment}. */\n justifyItems?: GridAlignment;\n /** Default alignment of children on the cross or block axis. See {@link GridAlignment}. */\n alignItems?: GridAlignment;\n /** Placement direction and dense-packing policy for automatically placed children. */\n gridAutoFlow?: 'row' | 'column' | 'row dense' | 'column dense';\n /** Track used when automatic placement creates an implicit column. */\n gridAutoColumns?: GridTrack;\n /** Track used when automatic placement creates an implicit row. */\n gridAutoRows?: GridTrack;\n /** Spacing between adjacent items. See {@link GridStyle}. */\n gap?: number;\n /** Space between adjacent rows or items on the row axis. See {@link GridStyle}. */\n rowGap?: number;\n /** Space between adjacent columns or items on the column axis. See {@link GridStyle}. */\n columnGap?: number;\n}\n\n/**\n * Authored inputs for Grid, including the declared data and presentation options.\n *\n * @see {@link PibblNodeInput}\n * @see {@link Grid}\n */\nexport interface GridProps extends PibblStructuralEventProps {\n /** Descendant content or the callback that supplies it. See {@link PibblNodeInput}. */\n children: PibblNodeInput;\n}\n\nexport interface GridMeasurementInput {\n service: CanvasMeasurementService;\n measureElement(\n element: PibblElement<any>,\n constraints: Readonly<Constraints>,\n ): MeasureResult;\n}\n\n// Parent input is private metadata, not a recursively validated resolved value.\nconst GRID_CONTAINING_BOX_STYLE = Symbol('pibbl.grid-containing-box-style');\n\ninterface ResolvedGridStyle extends SystemStyle {\n box: ResolvedBoxStyle;\n [GRID_CONTAINING_BOX_STYLE]: Readonly<GridStyle>;\n overflow: 'visible' | 'clip';\n columns: readonly ParsedGridTrack[];\n rows: readonly ParsedGridTrack[];\n justifyItems: GridAlignment;\n alignItems: GridAlignment;\n rowGap: number;\n columnGap: number;\n gridAutoFlow: NonNullable<GridStyle['gridAutoFlow']>;\n autoColumn: ParsedGridTrack;\n autoRow: ParsedGridTrack;\n autoFitColumns: boolean;\n autoFitRows: boolean;\n layoutDirection: 'ltr' | 'rtl';\n}\n\ninterface GridPlacement {\n usedWidth: number; usedHeight: number;\n box: LayoutBox;\n element: PibblElement<any>;\n}\n\ntype GridChildStyle = Readonly<\n BoxStyle & GridItemStyle & LayoutItemStyle & Record<string, unknown>\n>;\n\ninterface GridCell {\n readonly child: PibblElement<any>;\n readonly prepared: ReturnType<typeof prepareDirectChildStyle>;\n readonly normalized: GridChildStyle;\n readonly receiverToken: object;\n columnStart: number;\n readonly columnSpan: number;\n rowStart: number;\n readonly rowSpan: number;\n}\n\nfunction renderGrid(\n props: GridProps,\n style: Readonly<ResolvedGridStyle>,\n ctx: RenderingContext2D,\n) {\n wireStructuralEvents(props);\n recordLayoutEvaluation();\n const content = style.box.contentBox;\n ctx.translate(content.x, content.y);\n const localContent = Object.freeze({\n x: 0,\n y: 0,\n width: content.width,\n height: content.height,\n });\n const releaseLayout = pushLayoutBox(localContent, {\n logicalOffset: content,\n containingBlock: resolvePositionedContainingBox(\n style[GRID_CONTAINING_BOX_STYLE],\n localContent,\n 'Grid',\n ),\n });\n GLOBAL_STATE.componentRefs!.onAfterRender = releaseLayout;\n const prepared = nativeLayout ? claimPreparedLayoutPlan(GLOBAL_STATE.componentRefs!.element, localContent) : undefined;\n const children = prepared?.children ?? prepareLayoutChildren(props.children, 'Grid');\n const service = canvasMeasurementService(ctx);\n const nativeRegion = prepared?.region ?? (nativeLayout ? mountedLayoutRegion() : undefined);\n if (nativeLayout && !nativeRegion) throw new Error('Experimental Grid requires its mounted native region.');\n const placements = prepared?.placements ?? withAllocationCheckpoint(nativeRegion, { children, content: localContent, settings: style, onHit: recordWasmAllocationCacheHit, calculate: () => resolveGridPlacements(\n localContent,\n children,\n style,\n {\n service,\n measureElement: (element, constraints) =>\n measureElement(element, constraints, service),\n },\n nativeRegion,\n ) });\n let index = 0;\n return placeDirectChildren(\n children,\n localContent,\n (_child, occurrence) => {\n const placement = placements[index++];\n if (nativeLayout && !prepared) preparePlacedKnownLayout(placement.element, occurrence);\n return placement;\n },\n style.overflow,\n );\n}\n\n/**\n * Describes explicit Grid layout for JSX or createElement authoring.\n *\n * @param props - Authored component inputs, supplied through JSX or createElement. See the linked\n * props and style types.\n * @throws When called directly; Pibbl mounts this component through JSX or createElement.\n *\n * @see {@link GridProps}\n * @see {@link GridStyle}\n */\nexport const Grid = definePrimitive<\n GridProps,\n GridStyle,\n GridStyle,\n ResolvedGridStyle\n>(renderGrid, {\n childInput: 'structural',\n resolveStyle: (style, context) => {\n if (nativeLayout && hasPercentageBoxPadding(style)) {\n style = resolveAllocatedInsets(style, { width: context.percentageBasis.width,\n context: { ...context, component: 'Grid', algorithm: 'grid' } });\n }\n return {\n box: resolveContainerBox(style, context, 'Grid', 'grid'),\n [GRID_CONTAINING_BOX_STYLE]: style,\n overflow: style.overflow ?? 'visible',\n ...normalizeGridOptions(style, context.allocation),\n };\n },\n measure: (input) => measureGrid(input),\n measureIntrinsic: (input) => measureGridIntrinsic(input),\n});\n\nregisterOpaqueStyleProperties(Grid, [\n 'columns', 'rows', 'autoColumn', 'autoRow', 'gridAutoColumns', 'gridAutoRows',\n]);\n\nif (nativeLayout) registerKnownLayoutPreflight(Grid, (element, style, content, receiver, slot) => {\n const previous = GLOBAL_STATE.primitiveReceiverToken;\n GLOBAL_STATE.primitiveReceiverToken = receiver;\n const releaseLayout = pushLayoutBox(content, {\n containingBlock: resolvePositionedContainingBox(\n style as Readonly<GridStyle>,\n content,\n 'Grid',\n ),\n });\n try {\n const children = prepareLayoutChildren(element.props.children, 'Grid');\n const options = normalizeGridOptions(style as Readonly<GridStyle>, content);\n const ctx = GLOBAL_STATE.renderContext;\n if (!ctx) throw new Error('Known Grid preparation requires a Canvas measurement context.');\n const service = canvasMeasurementService(ctx);\n const region = slot.acquire();\n const placements = withAllocationCheckpoint(region, { children, content, settings: options, onHit: recordWasmAllocationCacheHit, calculate: () => resolveGridPlacements(content, children, options, { service, measureElement: (child, constraints) => measureElement(child, constraints, service) }, region) });\n const plan: PreparedLayoutPlan = { region, content, children, placements };\n prepareKnownLayoutDescendants(plan, slot);\n stagePreparedLayoutPlan(slot, plan);\n } finally {\n releaseLayout();\n GLOBAL_STATE.primitiveReceiverToken = previous;\n }\n});\n\nexport function layoutGrid(\n container: Readonly<LayoutBox>,\n children: PibblNodeInput,\n style: Readonly<GridStyle>,\n measurement: GridMeasurementInput,\n): LayoutBox[] {\n const prepared = materializeLayoutChildren(children, 'Grid');\n const options = normalizeGridOptions(style, container);\n const region = nativeLayout ? new LayoutRegion() : undefined;\n try { return resolveGridPlacements(container, prepared, options, measurement, region).map((placement) => placement.box); }\n finally { region?.dispose(); }\n}\n\nfunction resolveGridPlacements(\n container: Readonly<LayoutBox>,\n children: readonly PibblElement<any>[],\n options: Readonly<ReturnType<typeof normalizeGridOptions>>,\n measurement: GridMeasurementInput,\n nativeRegion?: LayoutRegion,\n assignedCells?: GridCell[],\n): GridPlacement[] {\n if (nativeRegion) recordWasmAllocationPass();\n assertFiniteContainer(container);\n // Selected-width measurement can supply single-use cells already prepared\n // and assigned for these exact children, container and options.\n const cells = assignedCells ?? (nativeRegion ? prepareGridCells(children, container) : prepareExplicitGridCells(children, container, options.columns.length, options.rows.length));\n const flowCells = cells.filter((cell) => cell.normalized.position !== 'absolute');\n if (nativeRegion && !assignedCells) { const assigned = nativeRegion.gridV2Region().assign(flowCells, options.columns.length, options.rows.length, gridFlowCode(options.gridAutoFlow)).cells; for (let index = 0; index < flowCells.length; index++) { flowCells[index]!.columnStart = assigned[index]!.columnStart; flowCells[index]!.rowStart = assigned[index]!.rowStart; } }\n let expandedColumns = appendImplicitTracks(options.columns, options.autoColumn, maxGridExtent(flowCells, 'column'));\n let expandedRows = appendImplicitTracks(options.rows, options.autoRow, maxGridExtent(flowCells, 'row'));\n if (nativeRegion && options.autoFitColumns) expandedColumns = collapseParsedAutoFit(expandedColumns, flowCells, 'column');\n if (nativeRegion && options.autoFitRows) expandedRows = collapseParsedAutoFit(expandedRows, flowCells, 'row');\n let columns = nativeRegion ? resolveNativeGridTracks(nativeRegion, expandedColumns, container.width, options.columnGap, 'columns', container) : resolveParsedGridTracks(\n expandedColumns,\n container.width,\n options.columnGap,\n 'columns',\n container,\n );\n if (nativeRegion) {\n nativeRegion.applyGridV2Contributions(\n gatherGridIntrinsicContributions(expandedColumns, cells, measurement, container, 'columns'),\n options.columnGap,\n 0,\n );\n // Contributions mutate native records in place. Row measurement must use the\n // resulting column areas, not the initial host snapshot.\n columns = nativeRegion.snapshotGridV2Tracks(0) as number[];\n }\n let rows = nativeRegion ? resolveNativeGridTracks(nativeRegion, expandedRows, container.height, options.rowGap, 'rows', container) : resolveParsedGridTracks(\n expandedRows,\n container.height,\n options.rowGap,\n 'rows',\n container,\n );\n if (nativeRegion) {\n nativeRegion.applyGridV2Contributions(\n gatherGridIntrinsicContributions(\n expandedRows,\n cells,\n measurement,\n container,\n 'rows',\n columns,\n options.columnGap,\n ),\n options.rowGap,\n 1,\n );\n rows = nativeRegion.snapshotGridV2Tracks(1) as number[];\n }\n if (!nativeRegion && options.autoFitColumns) columns = collapseAutoFitTracks(columns, cells, 'column');\n if (!nativeRegion && options.autoFitRows) rows = collapseAutoFitTracks(rows, cells, 'row');\n const nativeItems = cells;\n const nativeBoxes = nativeRegion ? nativeRegion.placeGridV2Cells(flowCells, gridFlowCode(options.gridAutoFlow), options.columnGap, options.rowGap) : undefined;\n const placements: GridPlacement[] = [];\n\n let flowIndex = 0;\n for (const child of children) {\n const item = nativeItems[placements.length]!;\n const { prepared, receiverToken, columnStart, columnSpan, rowStart, rowSpan } = item;\n let normalized = item.normalized;\n if (normalized.position === 'absolute') {\n const needsNaturalMeasurement =\n normalized.width === undefined || normalized.width === 'auto' ||\n normalized.height === undefined || normalized.height === 'auto';\n const absolute = resolveAbsoluteFlexPlacement(container, child, normalized, receiverToken, preparedStyleQuery(prepared), container, {\n flexDirection: 'row', flexWrap: 'nowrap', justifyContent: 'flex-start', alignItems: options.alignItems === 'start' ? 'flex-start' : options.alignItems === 'end' ? 'flex-end' : options.alignItems, layoutDirection: options.layoutDirection,\n }, needsNaturalMeasurement ? measurement : undefined);\n placements.push({ usedWidth: absolute.usedWidth, usedHeight: absolute.usedHeight, box: absolute.box, element: absolute.element });\n continue;\n }\n const nativeBox = nativeBoxes?.[flowIndex++];\n const area = nativeBox ? { x: container.x + nativeBox.x, y: container.y + nativeBox.y, width: nativeBox.width, height: nativeBox.height } : {\n x: container.x + trackOffset(columns, columnStart - 1, options.columnGap),\n y: container.y + trackOffset(rows, rowStart - 1, options.rowGap),\n width: trackSpan(columns, columnStart - 1, columnSpan, options.columnGap),\n height: trackSpan(rows, rowStart - 1, rowSpan, options.rowGap),\n };\n if (nativeLayout && GLOBAL_STATE.currentPibblInstance && getStyleMeasurementMode() === undefined && hasPercentageBoxPadding(normalized)) {\n normalized = resolveAllocatedInsets(normalized, { width: area.width, context: childContext(child, area) });\n }\n if (normalized.boxSizing !== undefined) normalized = contentBoxStyle(normalized, { width: area.width, height: area.height, context: childContext(child, area) });\n const widthAuto =\n normalized.width === undefined || normalized.width === 'auto';\n const heightAuto =\n normalized.height === undefined || normalized.height === 'auto';\n const justify = itemAlignment(\n normalized.justifySelf,\n options.justifyItems,\n 'justifySelf',\n child,\n container,\n );\n const align = itemAlignment(\n normalized.alignSelf,\n options.alignItems,\n 'alignSelf',\n child,\n container,\n );\n let measured: MeasureResult | undefined;\n if (\n (widthAuto && justify !== 'stretch') ||\n (heightAuto && align !== 'stretch')\n ) {\n const measurementChild = clonePibblElement(child);\n setPreNormalizedStyle(\n measurementChild,\n normalized,\n child,\n receiverToken,\n preparedStyleQuery(prepared),\n );\n measured = measurement.measureElement(measurementChild, {\n minWidth: 0,\n maxWidth: area.width,\n minHeight: 0,\n maxHeight: area.height,\n });\n if (measured.status === 'unsupported') {\n throw childDiagnostic(\n child,\n widthAuto && justify !== 'stretch' ? 'width' : 'height',\n 'auto',\n container,\n `measurement is required but unsupported: ${measured.reason}`,\n );\n }\n }\n const padding = normalizeBoxInsets(normalized, childContext(child, container));\n const usedStyle = {\n ...normalized,\n width: widthAuto\n ? justify === 'stretch'\n ? Math.max(0, area.width - padding.left - padding.right)\n : measured!.status === 'measured'\n ? measured!.size.width\n : 0\n : normalized.width,\n height: heightAuto\n ? align === 'stretch'\n ? Math.max(0, area.height - padding.top - padding.bottom)\n : measured!.status === 'measured'\n ? measured!.size.height\n : 0\n : normalized.height,\n };\n const resolved = resolveDirectChildBox(area, child, 'grid', usedStyle, measurement.service, receiverToken);\n const border = resolved.borderBox;\n const box = {\n x: area.x + alignmentOffset(area.width, border.width, justify),\n y: area.y + alignmentOffset(area.height, border.height, align),\n width: border.width,\n height: border.height,\n };\n placements.push({\n usedWidth: resolved.contentBox.width, usedHeight: resolved.contentBox.height,\n box,\n element: childWithUsedSize(\n child,\n normalized,\n resolved.contentBox.width,\n resolved.contentBox.height,\n receiverToken,\n preparedStyleQuery(prepared),\n ),\n });\n }\n return placements;\n}\n\nexport function resolveGridTracks(\n tracks: readonly GridTrack[],\n bound: number,\n gap: number,\n axis: 'columns' | 'rows',\n): number[] {\n const container = {\n x: 0,\n y: 0,\n width: axis === 'columns' ? bound : 0,\n height: axis === 'rows' ? bound : 0,\n };\n const parsed = parseGridTracks(tracks, axis, container, gap);\n return resolveParsedGridTracks(parsed, bound, gap, axis, container);\n}\n\n\nfunction assignGridCells(children: readonly PibblElement<any>[], container: Readonly<LayoutBox>, columns: number, rows: number, options: Readonly<ReturnType<typeof normalizeGridOptions>>): GridCell[] {\n const cells = prepareGridCells(children, container);\n const flow = cells.filter(cell => cell.normalized.position !== 'absolute');\n const region = new LayoutRegion();\n try {\n const assigned = region.gridV2Region().assign(flow, columns, rows, gridFlowCode(options.gridAutoFlow)).cells;\n for (let index = 0; index < flow.length; index++) {\n flow[index]!.columnStart = assigned[index]!.columnStart;\n flow[index]!.rowStart = assigned[index]!.rowStart;\n }\n return cells;\n } finally { region.dispose(); }\n}\n\nfunction prepareExplicitGridCells(children: readonly PibblElement<any>[], container: Readonly<LayoutBox>, columns: number, rows: number): GridCell[] {\n const cells = prepareGridCells(children, container);\n for (let index = 0; index < cells.length; index++) {\n const cell = cells[index]!;\n assertSupportedChildPosition('Grid', cell.child, cell.normalized);\n cell.columnStart = placementInteger(cell.normalized.gridColumnStart, 'gridColumnStart', cell.child, container, true);\n cell.rowStart = placementInteger(cell.normalized.gridRowStart, 'gridRowStart', cell.child, container, true);\n if (cell.columnStart > columns) throw childDiagnostic(cell.child, 'gridColumnStart', cell.columnStart, container, `must reference one of the explicit ${columns} columns`);\n if (cell.rowStart > rows) throw childDiagnostic(cell.child, 'gridRowStart', cell.rowStart, container, `must reference one of the explicit ${rows} rows`);\n if (cell.columnStart + cell.columnSpan - 1 > columns) throw childDiagnostic(cell.child, 'gridColumnSpan', cell.columnSpan, container, `start ${cell.columnStart} plus span ${cell.columnSpan} must remain inside the explicit column tracks`);\n if (cell.rowStart + cell.rowSpan - 1 > rows) throw childDiagnostic(cell.child, 'gridRowSpan', cell.rowSpan, container, `start ${cell.rowStart} plus span ${cell.rowSpan} must remain inside the explicit row tracks`);\n }\n return cells;\n}\n\nfunction prepareGridCells(children: readonly PibblElement<any>[], container: Readonly<LayoutBox>): GridCell[] {\n const result: GridCell[] = [];\n for (let index = 0; index < children.length; index++) {\n recordWasmAllocationItem();\n const child = children[index]!;\n const receiverToken = getChildPrimitiveReceiverToken(GLOBAL_STATE.renderTransaction, GLOBAL_STATE.primitiveReceiverToken, index);\n const prepared = prepareDirectChildStyle(child, receiverToken, container);\n const normalized = preparedStyleValue(prepared) as GridChildStyle;\n if (normalized.position !== 'absolute') assertSupportedChildPosition('Grid', child, normalized); rejectUnsupportedItemFields(child, normalized, container);\n const columnSpan = placementInteger(normalized.gridColumnSpan ?? 1, 'gridColumnSpan', child, container, false);\n const rowSpan = placementInteger(normalized.gridRowSpan ?? 1, 'gridRowSpan', child, container, false);\n const columnStart = normalized.gridColumnStart === undefined ? 0 : placementInteger(normalized.gridColumnStart, 'gridColumnStart', child, container, false);\n const rowStart = normalized.gridRowStart === undefined ? 0 : placementInteger(normalized.gridRowStart, 'gridRowStart', child, container, false);\n result.push({ child, prepared, normalized, receiverToken, columnStart, columnSpan, rowStart, rowSpan });\n }\n return result;\n}\n\nfunction maxGridExtent(cells: readonly { columnStart: number; columnSpan: number; rowStart: number; rowSpan: number }[], axis: 'column' | 'row'): number {\n let extent = 0;\n for (let index = 0; index < cells.length; index++) {\n const cell = cells[index]!;\n extent = Math.max(extent, axis === 'column' ? cell.columnStart + cell.columnSpan - 1 : cell.rowStart + cell.rowSpan - 1);\n }\n return extent;\n}\nfunction collapseAutoFitTracks(tracks: readonly number[], cells: readonly GridCell[], axis: 'column' | 'row'): number[] { const out=tracks.slice(); for(let index=0;index<out.length;index++){let used=false;for(let cellIndex=0;cellIndex<cells.length;cellIndex++){const cell=cells[cellIndex]!;const start=axis==='column'?cell.columnStart:cell.rowStart,span=axis==='column'?cell.columnSpan:cell.rowSpan;if(start<=index+1&&index+1<start+span){used=true;break}}if(!used)out[index]=0;}return out; }\n\nfunction containsAutoFit(tracks: readonly GridTrack[]): boolean {\n for (const track of tracks) if (typeof track === 'object' && track !== null && 'kind' in track && track.kind === 'repeat' &&\n (track.count === 'auto-fit' || containsAutoFit(track.tracks))) return true;\n return false;\n}\n\n/** Collapse only automatic-fit tracks; fixed siblings and implicit tracks remain. */\nfunction collapseParsedAutoFit(tracks: readonly ParsedGridTrack[], cells: GridCell[], axis: 'column' | 'row'): readonly ParsedGridTrack[] {\n const occupied = new Int32Array(tracks.length + 1);\n for (const cell of cells) {\n const start = (axis === 'column' ? cell.columnStart : cell.rowStart) - 1;\n const span = axis === 'column' ? cell.columnSpan : cell.rowSpan;\n occupied[start]++; occupied[start + span]--;\n }\n const offsets = new Uint32Array(tracks.length + 1), kept: ParsedGridTrack[] = [];\n let count = 0;\n for (let index = 0; index < tracks.length; index++) {\n count += occupied[index]!;\n if (!tracks[index]!.autoFit || count > 0) kept.push(tracks[index]!);\n offsets[index + 1] = kept.length;\n }\n for (const cell of cells) {\n if (axis === 'column') cell.columnStart = offsets[cell.columnStart - 1]! + 1;\n else cell.rowStart = offsets[cell.rowStart - 1]! + 1;\n }\n return kept;\n}\n\nfunction appendImplicitTracks(explicit: readonly ParsedGridTrack[], automatic: ParsedGridTrack, extent: number): readonly ParsedGridTrack[] {\n if (extent <= explicit.length) return explicit;\n const tracks = explicit.slice();\n while (tracks.length < extent) tracks.push(automatic);\n return tracks;\n}\n\nfunction gatherGridIntrinsicContributions(\n tracks: readonly ParsedGridTrack[],\n cells: readonly GridCell[],\n measurement: GridMeasurementInput,\n container: Readonly<LayoutBox>,\n axis: 'columns' | 'rows',\n selectedColumns?: readonly number[],\n columnGap = 0,\n): number[] {\n const records: number[] = [];\n for (let index = 0; index < cells.length; index++) {\n const cell = cells[index]!;\n if (cell.normalized.position === 'absolute') continue;\n const start = axis === 'columns' ? cell.columnStart : cell.rowStart;\n const span = axis === 'columns' ? cell.columnSpan : cell.rowSpan;\n if (start < 1 || start + span - 1 > tracks.length) continue;\n let needed = false;\n for (let track = start - 1; track < start - 1 + span; track++) {\n if (trackNeedsIntrinsic(tracks[track]!)) needed = true;\n }\n if (!needed) continue;\n if (axis === 'rows') {\n if (!selectedColumns) throw new Error('Grid row contributions require resolved column tracks.');\n const width = trackSpan(selectedColumns, cell.columnStart - 1, cell.columnSpan, columnGap);\n const height = measureGridCellAtSelectedWidth(cell, width, measurement, container);\n records.push(start, span, height, height);\n continue;\n }\n const contributionChild = clonePibblElement(cell.child);\n setPreNormalizedStyle(contributionChild, cell.normalized, cell.child, cell.receiverToken, preparedStyleQuery(cell.prepared));\n const result = measureIntrinsicElement(\n contributionChild,\n {\n minWidth: 0,\n maxWidth: container.width,\n minHeight: 0,\n maxHeight: container.height,\n },\n measurement.service,\n );\n if (result.status !== 'measured') {\n throw childDiagnostic(\n cell.child,\n 'measureIntrinsic',\n 'unsupported',\n container,\n `intrinsic grid track contribution requires a declared intrinsic measurement: ${result.reason}`,\n );\n }\n records.push(start, span, result.minContent.width, result.maxContent.width);\n }\n return records;\n}\n\n/** Measures a row contribution at its selected final column span. */\nfunction measureGridCellAtSelectedWidth(\n cell: Readonly<GridCell>,\n width: number,\n measurement: GridMeasurementInput,\n container: Readonly<LayoutBox>,\n): number {\n const area = { x: 0, y: 0, width, height: container.height };\n let normalized = cell.normalized;\n if (\n nativeLayout &&\n GLOBAL_STATE.currentPibblInstance &&\n getStyleMeasurementMode() === undefined &&\n hasPercentageBoxPadding(normalized)\n ) {\n normalized = resolveAllocatedInsets(normalized, {\n width,\n context: childContext(cell.child, area),\n });\n }\n if (normalized.boxSizing !== undefined) {\n normalized = contentBoxStyle(normalized, {\n width,\n height: container.height,\n context: childContext(cell.child, area),\n });\n }\n const child = clonePibblElement(cell.child);\n setPreNormalizedStyle(\n child,\n normalized,\n cell.child,\n cell.receiverToken,\n preparedStyleQuery(cell.prepared),\n );\n const result = measurement.measureElement(child, {\n minWidth: width,\n maxWidth: width,\n minHeight: 0,\n maxHeight: container.height,\n });\n if (result.status !== 'measured') {\n throw childDiagnostic(\n cell.child,\n 'height',\n 'auto',\n container,\n `selected Grid column width requires measurement: ${result.reason}`,\n );\n }\n return result.size.height;\n}\n\nfunction trackNeedsIntrinsic(track: ParsedGridTrack): boolean { return track.kind === 'intrinsic' || track.kind === 'minmax' && (trackNeedsIntrinsic(track.min) || trackNeedsIntrinsic(track.max)); }\nfunction resolveNativeGridTracks(region: LayoutRegion, tracks: readonly ParsedGridTrack[], bound: number, gap: number, axis: 'columns' | 'rows', container: Readonly<LayoutBox>): number[] {\n try { return region.resolveGridV2Tracks(gridTrackRecords(tracks, bound), { bound, gap, axis: axis === 'columns' ? 0 : 1 }) as number[]; }\n catch (error) { if (error instanceof RangeError) throw trackDiagnostic(tracks, axis, container); throw error; }\n}\n\nfunction gridTrackRecords(tracks: readonly ParsedGridTrack[], bound: number): number[] {\n const records = new Array<number>(tracks.length * GRID_V2_TRACK_STRIDE).fill(0);\n for (let index = 0; index < tracks.length; index++) {\n const track = tracks[index]!, offset = index * GRID_V2_TRACK_STRIDE;\n if (track.kind === 'fixed') { records[offset] = 0; records[offset + 1] = track.value; }\n else if (track.kind === 'percentage') { records[offset] = 1; records[offset + 1] = track.factor; }\n else if (track.kind === 'fraction') { records[offset] = 2; records[offset + 1] = track.factor; }\n else if (track.kind === 'intrinsic') { writeGridBreadth(records, offset, track, bound); }\n else { records[offset] = 6; writeGridBreadth(records, offset + 2, track.min, bound); writeGridBreadth(records, offset + 4, track.max, bound); }\n }\n return records;\n}\n\nfunction writeGridBreadth(records: number[], offset: number, track: ParsedGridTrack, bound: number): void {\n if (track.kind === 'fixed') { records[offset] = 0; records[offset + 1] = track.value; }\n else if (track.kind === 'percentage') { records[offset] = 1; records[offset + 1] = track.factor; }\n else if (track.kind === 'fraction') { records[offset] = 2; records[offset + 1] = track.factor; }\n else if (track.kind === 'minmax') writeGridBreadth(records, offset, track.min, bound);\n else if (track.value === 'min-content') records[offset] = 3;\n else if (track.value === 'max-content') records[offset] = 4;\n else if (track.value === 'auto') records[offset] = 5;\n else if (isFitContent(track.value)) { records[offset]=7; records[offset+1]=typeof track.value.limit==='number'?track.value.limit:bound*Number.parseFloat(track.value.limit)/100; }\n}\n\nfunction gridFlowCode(flow: NonNullable<GridStyle['gridAutoFlow']>): 0 | 1 | 2 | 3 {\n return flow === 'row' ? 0 : flow === 'column' ? 1 : flow === 'row dense' ? 2 : 3;\n}\n\nfunction resolveParsedGridTracks(\n tracks: readonly ParsedGridTrack[],\n bound: number,\n gap: number,\n axis: 'columns' | 'rows',\n container: Readonly<LayoutBox>,\n): number[] {\n if (!Number.isFinite(bound) || bound < 0) {\n throw optionDiagnostic(\n axis,\n bound,\n container,\n 'requires a finite nonnegative track bound',\n );\n }\n const resolved = new Array<number>(tracks.length).fill(0);\n const fractions: { index: number; factor: number }[] = [];\n let allocated =\n Math.max(0, tracks.length - 1) * nonnegativeOption(gap, 'gap', container);\n for (let index = 0; index < tracks.length; index++) {\n const track = tracks[index];\n if (track.kind === 'fixed') {\n resolved[index] = track.value;\n allocated += track.value;\n } else if (track.kind === 'percentage') {\n const size = (bound * track.factor) / 100;\n if (!Number.isFinite(size)) throw trackDiagnostic(track, axis, container);\n resolved[index] = size;\n allocated += size;\n } else if (track.kind === 'fraction') {\n fractions.push({ index, factor: track.factor });\n } else if (track.kind === 'minmax') {\n const min = resolvedTrackMinimum(track.min, bound, axis, container);\n const max = resolvedTrackMaximum(track.max, bound, axis, container);\n if (max < min) throw trackDiagnostic(track, axis, container);\n resolved[index] = min;\n allocated += min;\n } else {\n /* Intrinsic tracks begin at zero; their contribution is supplied by\n * known primitive measurement in the containing Grid pass. */\n resolved[index] = 0;\n }\n }\n const totalFr = fractions.reduce((total, track) => total + track.factor, 0);\n if (!Number.isFinite(allocated) || !Number.isFinite(totalFr)) {\n throw trackDiagnostic(tracks, axis, container);\n }\n const remaining = Math.max(0, bound - allocated);\n const unit = remaining / Math.max(1, totalFr);\n for (const track of fractions) resolved[track.index] = unit * track.factor;\n if (resolved.some((value) => !Number.isFinite(value) || value < 0)) {\n throw trackDiagnostic(tracks, axis, container);\n }\n return resolved;\n}\n\nfunction parseGridTracks(\n tracks: readonly GridTrack[],\n axis: 'columns' | 'rows',\n container: Readonly<LayoutBox>,\n gap = 0,\n): readonly ParsedGridTrack[] {\n if (!Array.isArray(tracks) || tracks.length === 0) {\n throw optionDiagnostic(\n axis === 'columns' ? 'gridTemplateColumns' : 'gridTemplateRows',\n tracks,\n container,\n `requires a nonempty explicit ${axis} list`,\n );\n }\n if (!nativeLayout) for (let index = 0; index < tracks.length; index++) {\n const track = tracks[index]!;\n if (typeof track === 'object' || track === 'auto' || track === 'min-content' || track === 'max-content') throw trackDiagnostic(track, axis, container);\n }\n let autoRepeatIndex = -1;\n for (let index = 0; index < tracks.length; index++) {\n const track = tracks[index]!;\n if (!isAutoRepeatTrack(track)) continue;\n if (autoRepeatIndex !== -1) throw trackDiagnostic(tracks, axis, container);\n autoRepeatIndex = index;\n }\n const autoRepeatCount = autoRepeatIndex === -1\n ? undefined\n : resolveAutoRepeatCount(\n tracks,\n autoRepeatIndex,\n axis,\n container,\n gap,\n );\n const expanded: GridTrack[] = [];\n const autoFit = autoRepeatIndex !== -1 && (tracks[autoRepeatIndex] as GridRepeatTrack).count === 'auto-fit' ? new Set<number>() : undefined;\n for (let index = 0; index < tracks.length; index++) {\n expandGridTrack(\n tracks[index]!,\n axis,\n container,\n expanded,\n index === autoRepeatIndex ? autoRepeatCount : undefined,\n autoFit,\n );\n }\n if (!expanded.length) throw trackDiagnostic(tracks, axis, container);\n const parsed: ParsedGridTrack[] = expanded.map(track => {\n if (typeof track === 'number') {\n if (!Number.isFinite(track) || track < 0) {\n throw trackDiagnostic(track, axis, container);\n }\n return Object.freeze({ kind: 'fixed', value: track });\n }\n if (isFitContent(track)) return Object.freeze({ kind: 'intrinsic' as const, value: track });\n if (typeof track === 'object' && track !== null && 'kind' in track && track.kind === 'minmax') {\n const min = parseSingleGridTrack((track as GridMinMaxTrack).min, axis, container);\n const max = parseSingleGridTrack((track as GridMinMaxTrack).max, axis, container);\n return Object.freeze({ kind: 'minmax' as const, min, max });\n }\n if (typeof track !== 'string') throw trackDiagnostic(track, axis, container);\n if (track === 'auto' || track === 'min-content' || track === 'max-content') return Object.freeze({ kind: 'intrinsic' as const, value: track });\n const match = /^(?:\\d+(?:\\.\\d+)?|\\.\\d+)(%|fr)$/.exec(track);\n if (!match) throw trackDiagnostic(track, axis, container);\n const factor = Number.parseFloat(track);\n if (!Number.isFinite(factor) || factor < 0) {\n throw trackDiagnostic(track, axis, container);\n }\n return Object.freeze(match[1] === '%' ?\n { kind: 'percentage', factor } :\n { kind: 'fraction', factor });\n });\n return autoFit ? parsed.map((track, index) => autoFit.has(index) ? Object.freeze({ ...track, autoFit: true }) : track) : parsed;\n}\n\nfunction parseSingleGridTrack(track: GridTrackBreadth, axis: 'columns' | 'rows', container: Readonly<LayoutBox>): ParsedGridTrack {\n const parsed = parseGridTracks([track], axis, container);\n return parsed[0]!;\n}\n\nfunction expandGridTrack(\n track: GridTrack,\n axis: 'columns' | 'rows',\n container: Readonly<LayoutBox>,\n into: GridTrack[],\n resolvedAutoRepeatCount?: number,\n autoFit?: Set<number>,\n inheritedAutoFit = false,\n): void {\n if (typeof track === 'object' && track !== null && 'kind' in track && track.kind === 'repeat') {\n if (!Array.isArray(track.tracks) || !track.tracks.length) throw trackDiagnostic(track, axis, container);\n let count = track.count;\n if (count === 'auto-fill' || count === 'auto-fit') {\n if (resolvedAutoRepeatCount === undefined) throw trackDiagnostic(track, axis, container);\n count = resolvedAutoRepeatCount;\n }\n if (!Number.isInteger(count) || count < 0) throw trackDiagnostic(track, axis, container);\n for (let repeat = 0; repeat < count; repeat++) for (let index = 0; index < track.tracks.length; index++) expandGridTrack(track.tracks[index]!, axis, container, into, undefined, autoFit, inheritedAutoFit || track.count === 'auto-fit');\n return;\n }\n if (inheritedAutoFit) autoFit?.add(into.length);\n into.push(track);\n}\n\nfunction isAutoRepeatTrack(track: GridTrack): track is GridRepeatTrack {\n return typeof track === 'object' && track !== null && 'kind' in track &&\n track.kind === 'repeat' &&\n (track.count === 'auto-fill' || track.count === 'auto-fit');\n}\n\nfunction resolveAutoRepeatCount(\n tracks: readonly GridTrack[],\n autoRepeatIndex: number,\n axis: 'columns' | 'rows',\n container: Readonly<LayoutBox>,\n gap: number,\n): number {\n const autoRepeat = tracks[autoRepeatIndex]! as GridRepeatTrack;\n const repeated = trackListMetrics(autoRepeat.tracks, axis, container);\n let fixedBreadth = 0;\n let fixedCount = 0;\n for (let index = 0; index < tracks.length; index++) {\n if (index === autoRepeatIndex) continue;\n const metrics = trackMetrics(tracks[index]!, axis, container);\n fixedBreadth += metrics.breadth;\n fixedCount += metrics.count;\n }\n const bound = axis === 'columns' ? container.width : container.height;\n // The repeat group owns one gap per repeated track; fixed siblings own\n // only the gaps between fixed tracks. With no fixed sibling, the leading\n // gap is absent; with one, it is already represented by the group.\n const available = bound - fixedBreadth - (fixedCount - 1) * gap;\n const repeatedBreadth = repeated.breadth + repeated.count * gap;\n return Math.max(1, Math.floor(available / Math.max(1, repeatedBreadth)));\n}\n\nfunction trackListMetrics(\n tracks: readonly GridTrack[],\n axis: 'columns' | 'rows',\n container: Readonly<LayoutBox>,\n): Readonly<{ breadth: number; count: number }> {\n let breadth = 0;\n let count = 0;\n for (let index = 0; index < tracks.length; index++) {\n const metrics = trackMetrics(tracks[index]!, axis, container);\n breadth += metrics.breadth;\n count += metrics.count;\n }\n return { breadth, count };\n}\n\nfunction trackMetrics(\n track: GridTrack,\n axis: 'columns' | 'rows',\n container: Readonly<LayoutBox>,\n): Readonly<{ breadth: number; count: number }> {\n if (typeof track === 'object' && track !== null && 'kind' in track && track.kind === 'repeat') {\n if (!Array.isArray(track.tracks) || !track.tracks.length || typeof track.count !== 'number' || !Number.isInteger(track.count) || track.count < 0) {\n throw trackDiagnostic(track, axis, container);\n }\n let breadth = 0;\n let count = 0;\n for (let index = 0; index < track.tracks.length; index++) {\n const metrics = trackMetrics(track.tracks[index]!, axis, container);\n breadth += metrics.breadth * track.count;\n count += metrics.count * track.count;\n }\n return { breadth, count };\n }\n return {\n breadth: minimumRepeatBreadth([track], axis, container),\n count: 1,\n };\n}\n\nfunction minimumRepeatBreadth(tracks: readonly GridTrack[], axis: 'columns' | 'rows', container: Readonly<LayoutBox>): number {\n let size = 0;\n for (let index = 0; index < tracks.length; index++) {\n const parsed = parseSingleGridTrack(tracks[index]! as GridTrackBreadth, axis, container);\n size += resolvedTrackMinimum(parsed, axis === 'columns' ? container.width : container.height, axis, container);\n }\n return size;\n}\n\nfunction resolvedTrackMinimum(track: ParsedGridTrack, bound: number, axis: string, container: Readonly<LayoutBox>): number {\n if (track.kind === 'fixed') return track.value;\n if (track.kind === 'percentage') return bound * track.factor / 100;\n if (track.kind === 'minmax') return resolvedTrackMinimum(track.min, bound, axis, container);\n return 0;\n}\n\nfunction resolvedTrackMaximum(track: ParsedGridTrack, bound: number, axis: string, container: Readonly<LayoutBox>): number {\n if (track.kind === 'fixed') return track.value;\n if (track.kind === 'percentage') return bound * track.factor / 100;\n if (track.kind === 'fraction' || track.kind === 'intrinsic') return Number.POSITIVE_INFINITY;\n return resolvedTrackMaximum(track.max, bound, axis, container);\n}\n\nfunction measureGrid(input: MeasureInput<GridProps, GridStyle>): MeasureResult {\n prepareLayoutChildren(input.props.children, 'Grid');\n const diagnosticBox = {\n x: 0,\n y: 0,\n width: Number.isFinite(input.constraints.maxWidth)\n ? input.constraints.maxWidth\n : 0,\n height: Number.isFinite(input.constraints.maxHeight)\n ? input.constraints.maxHeight\n : 0,\n };\n const options = normalizeGridOptions(input.style, diagnosticBox);\n const widthDefinite =\n input.style.width !== undefined && input.style.width !== 'auto';\n const heightDefinite =\n input.style.height !== undefined && input.style.height !== 'auto';\n if (widthDefinite && !heightDefinite) {\n const width = measuredLength(\n input.style.width!,\n input.constraints.maxWidth,\n 'width',\n input.constraints,\n );\n const selected = measureGridRowsAtSelectedWidth(\n input.props.children,\n input.style,\n input.service,\n (element, constraints) => input.measureElement(element, constraints),\n input.constraints,\n width,\n );\n if (selected.status === 'unsupported') return selected;\n return { status: 'measured', size: { width, height: selected.height } };\n }\n const intrinsic = (!widthDefinite && !fixedIntrinsicAxis(options.columns)) || (!heightDefinite && !fixedIntrinsicAxis(options.rows))\n ? measureGridIntrinsic({\n props: input.props,\n style: input.style,\n constraints: {\n width: { kind: 'bounded', min: input.constraints.minWidth, max: input.constraints.maxWidth },\n height: { kind: 'bounded', min: input.constraints.minHeight, max: input.constraints.maxHeight },\n },\n service: input.service,\n })\n : undefined;\n if (intrinsic?.status === 'unsupported') return intrinsic;\n const width = widthDefinite\n ? measuredLength(\n input.style.width!,\n input.constraints.maxWidth,\n 'width',\n input.constraints,\n )\n : fixedIntrinsicAxis(options.columns) ? intrinsicTrackSize(options.columns, options.columnGap) : intrinsic!.maxContent.width;\n const height = heightDefinite\n ? measuredLength(\n input.style.height!,\n input.constraints.maxHeight,\n 'height',\n input.constraints,\n )\n : fixedIntrinsicAxis(options.rows) ? intrinsicTrackSize(options.rows, options.rowGap) : intrinsic!.maxContent.height;\n return { status: 'measured', size: { width, height } };\n}\n\n/**\n * Resolves intrinsic row tracks only after their column areas are known. A\n * paired provider's height is defined at that selected width, so its width-pair\n * height cannot be used as a row contribution.\n */\nfunction measureGridRowsAtSelectedWidth(\n childInput: PibblNodeInput,\n style: Readonly<GridStyle>,\n service: CanvasMeasurementService,\n measure: GridMeasurementInput['measureElement'],\n constraints: Readonly<Constraints>,\n width: number,\n): Readonly<{ status: 'measured'; height: number }> | Readonly<{ status: 'unsupported'; reason: string }> {\n if (!Number.isFinite(width) || width < 0 || !Number.isFinite(constraints.maxHeight)) {\n return { status: 'unsupported', reason: 'Grid selected-width row measurement requires finite owner constraints' };\n }\n const allocatedHeight = typeof style.height === 'number'\n ? measuredLength(style.height, constraints.maxHeight, 'height', constraints)\n : undefined;\n const container = { x: 0, y: 0, width, height: allocatedHeight ?? constraints.maxHeight };\n const options = normalizeGridOptions(style, container);\n // The width is selected, but maxHeight remains only an upper bound. Row\n // fractions, percentages and automatic repetition need an allocated height.\n if (allocatedHeight === undefined && (style.gridTemplateRows.some(isAutoRepeatTrack) || options.rows.some(trackNeedsAllocatedAxis))) {\n return { status: 'unsupported', reason: 'Grid intrinsic row measurement is allocation-dependent' };\n }\n const children = materializeLayoutChildren(childInput, 'Grid');\n const dependentImplicitRows = allocatedHeight === undefined &&\n (trackNeedsAllocatedAxis(options.autoRow) || style.gridAutoRows !== undefined && isAutoRepeatTrack(style.gridAutoRows));\n const canSumRows = fixedIntrinsicAxis(options.rows) && !options.autoFitRows;\n let assignedCells: GridCell[] | undefined;\n if (dependentImplicitRows || canSumRows) {\n assignedCells = assignGridCells(children, container, options.columns.length, options.rows.length, options);\n const extent = maxGridExtent(assignedCells.filter(cell => cell.normalized.position !== 'absolute'), 'row');\n if (dependentImplicitRows && extent > options.rows.length) {\n return { status: 'unsupported', reason: 'Grid intrinsic implicit-row measurement is allocation-dependent' };\n }\n const rows = appendImplicitTracks(options.rows, options.autoRow, extent);\n if (canSumRows && fixedIntrinsicAxis(rows)) {\n return { status: 'measured', height: intrinsicTrackSize(rows, options.rowGap) };\n }\n }\n const region = new LayoutRegion();\n try {\n // Measurement and rendering use one track/occupancy algorithm. In particular,\n // a minmax fractional maximum must settle before width-dependent row queries.\n resolveGridPlacements(container, children, options, { service, measureElement: measure }, region, assignedCells);\n const rows = region.snapshotGridV2Tracks(1);\n let height = Math.max(0, rows.length - 1) * options.rowGap;\n for (let index = 0; index < rows.length; index++) height += rows[index]!;\n return { status: 'measured', height };\n } finally { region.dispose(); }\n}\n\nfunction trackNeedsAllocatedAxis(track: ParsedGridTrack): boolean {\n if (track.kind === 'percentage' || track.kind === 'fraction') return true;\n if (track.kind === 'minmax') return trackNeedsAllocatedAxis(track.min) || trackNeedsAllocatedAxis(track.max);\n return track.kind === 'intrinsic' && isFitContent(track.value) && typeof track.value.limit === 'string';\n}\n\nfunction fixedIntrinsicAxis(tracks: readonly ParsedGridTrack[]): boolean {\n return tracks.every(track => track.kind === 'fixed');\n}\n\nfunction intrinsicTrackSize(tracks: readonly ParsedGridTrack[], gap: number): number {\n return tracks.reduce((total, track) => total + (track.kind === 'fixed' ? track.value : 0), Math.max(0, tracks.length - 1) * gap);\n}\n\nfunction measureGridIntrinsic(input: import('../types.js').IntrinsicMeasureInput<GridProps, GridStyle>): import('../types.js').IntrinsicSizesResult {\n const selected = intrinsicGridSelectedWidth(input);\n if (selected !== undefined) {\n const rows = measureGridRowsAtSelectedWidth(\n input.props.children,\n input.style,\n input.service,\n (element, constraints) => measureElement(element, constraints, input.service),\n selected.constraints,\n selected.width,\n );\n if (rows.status === 'unsupported') return rows;\n return {\n status: 'measured',\n minContent: { width: selected.width, height: rows.height },\n maxContent: { width: selected.width, height: rows.height },\n };\n }\n if (containsFractionTrack(input.style.gridTemplateColumns) || containsFractionTrack(input.style.gridTemplateRows)) {\n return { status: 'unsupported', reason: 'Grid fractional intrinsic measurement is allocation-dependent' };\n }\n const width = input.constraints.width.kind === 'bounded' ? input.constraints.width.max : Number.POSITIVE_INFINITY;\n const height = input.constraints.height.kind === 'bounded' ? input.constraints.height.max : Number.POSITIVE_INFINITY;\n if (!Number.isFinite(width) || !Number.isFinite(height)) {\n return { status: 'unsupported', reason: 'Grid intrinsic measurement requires finite owner constraints' };\n }\n const container = { x: 0, y: 0, width, height };\n const options = normalizeGridOptions(input.style, container);\n if (options.columns.some(track => track.kind === 'percentage') || options.rows.some(track => track.kind === 'percentage')) {\n return { status: 'unsupported', reason: 'Grid percentage intrinsic measurement is allocation-dependent' };\n }\n const children = materializeLayoutChildren(input.props.children, 'Grid');\n const cells = assignGridCells(children, container, options.columns.length, options.rows.length, options);\n const columns = intrinsicGridAxis(appendImplicitTracks(options.columns, options.autoColumn, maxGridExtent(cells.filter(cell => cell.normalized.position !== 'absolute'), 'column')), cells, 'columns', options.columnGap, container, input.service);\n if (columns.status === 'unsupported') return columns;\n const rows = intrinsicGridAxis(appendImplicitTracks(options.rows, options.autoRow, maxGridExtent(cells.filter(cell => cell.normalized.position !== 'absolute'), 'row')), cells, 'rows', options.rowGap, container, input.service);\n if (rows.status === 'unsupported') return rows;\n return {\n status: 'measured',\n minContent: { width: columns.min, height: rows.min },\n maxContent: { width: columns.max, height: rows.max },\n };\n}\n\n/** A declared finite Grid width selects the row-height query width. */\nfunction intrinsicGridSelectedWidth(\n input: import('../types.js').IntrinsicMeasureInput<GridProps, GridStyle>,\n): Readonly<{ width: number; constraints: Constraints }> | undefined {\n const widthConstraint = input.constraints.width;\n const heightConstraint = input.constraints.height;\n if (\n input.style.width === undefined ||\n input.style.width === 'auto' ||\n widthConstraint.kind !== 'bounded' ||\n heightConstraint.kind !== 'bounded'\n ) {\n return undefined;\n }\n const constraints: Constraints = {\n minWidth: widthConstraint.min,\n maxWidth: widthConstraint.max,\n minHeight: heightConstraint.min,\n maxHeight: heightConstraint.max,\n };\n const width = resolveScalarSizingLength(input.style.width, widthConstraint.max, 'width', {\n component: 'Grid',\n algorithm: 'intrinsic measurement',\n constraints,\n });\n return width === undefined || width < 0 ? undefined : { width, constraints };\n}\n\nfunction containsFractionTrack(tracks: readonly GridTrack[]): boolean {\n for (const track of tracks) {\n if (typeof track === 'string' && track.endsWith('fr')) return true;\n if (typeof track === 'object' && track !== null && 'kind' in track) {\n if (track.kind === 'minmax' && (typeof track.min === 'string' && track.min.endsWith('fr') || typeof track.max === 'string' && track.max.endsWith('fr'))) return true;\n if (track.kind === 'repeat' && containsFractionTrack(track.tracks)) return true;\n }\n }\n return false;\n}\n\nfunction intrinsicGridAxis(\n tracks: readonly ParsedGridTrack[],\n cells: readonly GridCell[],\n axis: 'columns' | 'rows',\n gap: number,\n container: Readonly<LayoutBox>,\n service: CanvasMeasurementService,\n): Readonly<{ status: 'measured'; min: number; max: number }> | Readonly<{ status: 'unsupported'; reason: string }> {\n const minimum = new Array<number>(tracks.length).fill(0);\n const maximum = new Array<number>(tracks.length).fill(0);\n for (let index = 0; index < tracks.length; index++) {\n const track = tracks[index]!;\n if (track.kind === 'fixed') minimum[index] = maximum[index] = track.value;\n else if (track.kind === 'fraction') return { status: 'unsupported', reason: `Grid fractional intrinsic measurement for ${axis} is allocation-dependent` };\n else if (track.kind === 'minmax' && track.max.kind === 'fraction') return { status: 'unsupported', reason: `Grid fractional intrinsic measurement for ${axis} is allocation-dependent` };\n }\n for (const cell of cells) {\n if (cell.normalized.position === 'absolute') continue;\n const start = axis === 'columns' ? cell.columnStart : cell.rowStart;\n const span = axis === 'columns' ? cell.columnSpan : cell.rowSpan;\n if (start < 1 || start + span - 1 > tracks.length) continue;\n const measured = measureIntrinsicElement(cell.child, { minWidth: 0, maxWidth: container.width, minHeight: 0, maxHeight: container.height }, service);\n if (measured.status === 'unsupported') return measured;\n const min = axis === 'columns' ? measured.minContent.width : measured.minContent.height;\n const max = axis === 'columns' ? measured.maxContent.width : measured.maxContent.height;\n let fixed = Math.max(0, span - 1) * gap;\n const eligible: number[] = [];\n for (let index = start - 1; index < start - 1 + span; index++) {\n if (trackNeedsIntrinsic(tracks[index]!)) eligible.push(index);\n else fixed += minimum[index]!;\n }\n if (eligible.length) {\n const minimumContribution = Math.max(0, min - fixed) / eligible.length;\n const maximumContribution = Math.max(0, max - fixed) / eligible.length;\n for (const index of eligible) {\n minimum[index] = Math.max(minimum[index]!, minimumContribution);\n maximum[index] = Math.max(maximum[index]!, maximumContribution);\n }\n }\n }\n const gaps = Math.max(0, tracks.length - 1) * gap;\n return { status: 'measured', min: minimum.reduce((total, value) => total + value, gaps), max: maximum.reduce((total, value) => total + value, gaps) };\n}\n\nfunction measuredLength(\n value: Exclude<BoxStyle['width'], undefined>,\n reference: number,\n property: string,\n constraints: Readonly<Constraints>,\n): number {\n const resolved = resolveScalarSizingLength(value, reference, property, {\n component: 'Grid',\n algorithm: 'measurement',\n constraints,\n });\n if (resolved === undefined || resolved < 0) {\n throw layoutDiagnostic({\n component: 'Grid',\n property,\n value,\n algorithm: 'measurement',\n constraints,\n reason: 'requires a definite nonnegative container size',\n });\n }\n return resolved;\n}\n\nfunction normalizeGridOptions(\n style: Readonly<GridStyle>,\n container: Readonly<LayoutBox>,\n) {\n if (\n !Array.isArray(style.gridTemplateColumns) ||\n style.gridTemplateColumns.length === 0\n ) {\n throw optionDiagnostic(\n 'gridTemplateColumns',\n style.gridTemplateColumns,\n container,\n 'requires a nonempty explicit columns list',\n );\n }\n if (\n !Array.isArray(style.gridTemplateRows) ||\n style.gridTemplateRows.length === 0\n ) {\n throw optionDiagnostic(\n 'gridTemplateRows',\n style.gridTemplateRows,\n container,\n 'requires a nonempty explicit rows list',\n );\n }\n const justifyItems = containerAlignment(\n style.justifyItems ?? 'stretch',\n 'justifyItems',\n container,\n );\n const alignItems = containerAlignment(\n style.alignItems ?? 'stretch',\n 'alignItems',\n container,\n );\n const gap = nonnegativeOption(style.gap ?? 0, 'gap', container);\n const rowGap = nonnegativeOption(style.rowGap ?? gap, 'rowGap', container);\n const columnGap = nonnegativeOption(\n style.columnGap ?? gap,\n 'columnGap',\n container,\n );\n if (!nativeLayout && (style.gridAutoFlow !== undefined || style.gridAutoColumns !== undefined || style.gridAutoRows !== undefined)) throw optionDiagnostic('gridAutoFlow', style.gridAutoFlow, container, 'requires the native layout engine');\n const gridAutoFlow = style.gridAutoFlow ?? 'row';\n return {\n gridAutoFlow,\n columns: parseGridTracks(\n style.gridTemplateColumns,\n 'columns',\n container,\n columnGap,\n ),\n rows: parseGridTracks(style.gridTemplateRows, 'rows', container, rowGap),\n autoColumn: nativeLayout ? parseGridTracks([style.gridAutoColumns ?? 'auto'], 'columns', container)[0]! : { kind: 'fixed' as const, value: 0 },\n autoRow: nativeLayout ? parseGridTracks([style.gridAutoRows ?? 'auto'], 'rows', container)[0]! : { kind: 'fixed' as const, value: 0 },\n autoFitColumns: containsAutoFit(style.gridTemplateColumns),\n autoFitRows: containsAutoFit(style.gridTemplateRows),\n layoutDirection: getLayoutDirection(),\n justifyItems,\n alignItems,\n rowGap,\n columnGap,\n };\n}\n\nfunction containerAlignment(\n value: unknown,\n property: string,\n container: Readonly<LayoutBox>,\n): GridAlignment {\n if (\n value === 'stretch' ||\n value === 'start' ||\n value === 'center' ||\n value === 'end'\n )\n return value;\n throw optionDiagnostic(\n property,\n value,\n container,\n 'uses an unsupported grid alignment',\n );\n}\n\nfunction itemAlignment(\n value: unknown,\n fallback: GridAlignment,\n property: string,\n child: PibblElement<any>,\n container: Readonly<LayoutBox>,\n): GridAlignment {\n if (value === undefined || value === 'auto') return fallback;\n if (\n value === 'stretch' ||\n value === 'start' ||\n value === 'center' ||\n value === 'end'\n )\n return value;\n throw childDiagnostic(\n child,\n property,\n value,\n container,\n 'uses an unsupported grid alignment',\n );\n}\n\nfunction placementInteger(\n value: unknown,\n property: string,\n child: PibblElement<any>,\n container: Readonly<LayoutBox>,\n required: boolean,\n): number {\n if (value === undefined && required) {\n throw childDiagnostic(\n child,\n property,\n value,\n container,\n 'is required for explicit grid placement',\n );\n }\n if (typeof value !== 'number' || !Number.isInteger(value) || value <= 0) {\n throw childDiagnostic(\n child,\n property,\n value,\n container,\n 'must be a positive integer',\n );\n }\n return value;\n}\n\nfunction trackOffset(\n tracks: readonly number[],\n index: number,\n gap: number,\n): number {\n return (\n tracks.slice(0, index).reduce((total, size) => total + size, 0) +\n index * gap\n );\n}\n\nfunction trackSpan(\n tracks: readonly number[],\n index: number,\n span: number,\n gap: number,\n): number {\n return (\n tracks.slice(index, index + span).reduce((total, size) => total + size, 0) +\n Math.max(0, span - 1) * gap\n );\n}\n\nfunction alignmentOffset(\n area: number,\n item: number,\n alignment: GridAlignment,\n): number {\n if (alignment === 'center') return (area - item) / 2;\n if (alignment === 'end') return area - item;\n return 0;\n}\n\nfunction nonnegativeOption(\n value: number,\n property: string,\n container: Readonly<LayoutBox>,\n): number {\n if (!Number.isFinite(value) || value < 0) {\n throw optionDiagnostic(\n property,\n value,\n container,\n 'requires a finite nonnegative number',\n );\n }\n return value;\n}\n\nfunction assertFiniteContainer(container: Readonly<LayoutBox>): void {\n for (const [property, value] of Object.entries(container)) {\n if (\n !Number.isFinite(value) ||\n ((property === 'width' || property === 'height') && value < 0)\n ) {\n throw optionDiagnostic(\n property,\n value,\n container,\n 'requires finite nonnegative container geometry',\n );\n }\n }\n}\n\nfunction rejectUnsupportedItemFields(\n child: PibblElement<any>,\n style: Readonly<Record<string, unknown>>,\n container: Readonly<LayoutBox>,\n): void {\n for (let propertyIndex = 0; propertyIndex < unsupportedProperties.length; propertyIndex++) {\n const property = unsupportedProperties[propertyIndex];\n if (style[property] !== undefined) {\n throw childDiagnostic(\n child,\n property,\n style[property],\n container,\n 'is outside the explicit Grid subset',\n );\n }\n }\n}\n\nfunction trackDiagnostic(\n value: unknown,\n axis: string,\n container: Readonly<LayoutBox>,\n) {\n return optionDiagnostic(\n axis === 'columns' ? 'gridTemplateColumns' : 'gridTemplateRows',\n value,\n container,\n 'contains an unsupported track; use finite numbers, exact decimal percentages, or decimal fr units',\n );\n}\n\nfunction optionDiagnostic(\n property: string,\n value: unknown,\n container: Readonly<LayoutBox>,\n reason: string,\n) {\n return layoutDiagnostic({\n component: 'Grid',\n property,\n value,\n algorithm: 'grid',\n constraints: constraintsFor(container),\n reason,\n });\n}\n\nfunction childDiagnostic(\n child: PibblElement<any>,\n property: string,\n value: unknown,\n container: Readonly<LayoutBox>,\n reason: string,\n) {\n return layoutDiagnostic({\n component: child.type.name || 'Anonymous',\n property,\n value,\n algorithm: 'grid',\n constraints: constraintsFor(container),\n reason,\n });\n}\n\nfunction childContext(child: PibblElement<any>, container: Readonly<LayoutBox>) {\n return {\n component: child.type.name || 'Anonymous',\n algorithm: 'grid',\n constraints: constraintsFor(container),\n };\n}\n\nfunction constraintsFor(container: Readonly<LayoutBox>) {\n return {\n minWidth: 0,\n maxWidth: container.width,\n minHeight: 0,\n maxHeight: container.height,\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["width", "rows"]
|
|
7
7
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type ReceiverInputProvisionReceipt } from '../signals/input-provision.js';
|
|
2
|
+
import type { CanvasMeasurementService, MeasureResult, IntrinsicSizesResult, BaselinesResult } from '../types.js';
|
|
2
3
|
import type { PibblElement } from '../element/types.js';
|
|
3
|
-
import type { Constraints } from './types.js';
|
|
4
|
+
import type { Constraints, LayoutBox } from './types.js';
|
|
5
|
+
import { type SignalNode } from '../signals/graph.js';
|
|
4
6
|
export type { CanvasMeasurementService, MeasureInput, MeasureResult, } from '../types.js';
|
|
5
7
|
/**
|
|
6
|
-
* Measures an element against
|
|
8
|
+
* Measures an element against logical size constraints using the supplied Canvas measurement service.
|
|
7
9
|
*
|
|
8
10
|
* @param element - Element whose declared measurement capability is used. See {@link PibblElement}.
|
|
9
11
|
* @param constraints - Available size constraints in logical units. See {@link Constraints}.
|
|
@@ -17,3 +19,53 @@ export type { CanvasMeasurementService, MeasureInput, MeasureResult, } from '../
|
|
|
17
19
|
* @see {@link MeasureResult}
|
|
18
20
|
*/
|
|
19
21
|
export declare function measureElement(element: PibblElement<any>, constraints: Readonly<Constraints>, service: CanvasMeasurementService): MeasureResult;
|
|
22
|
+
/** @internal Passive snapshot owned and released by one layout region. */
|
|
23
|
+
export interface PrimitiveMeasurementEntry {
|
|
24
|
+
readonly props: object;
|
|
25
|
+
readonly key: string;
|
|
26
|
+
readonly result: IntrinsicSizesResult | MeasureResult | BaselinesResult;
|
|
27
|
+
readonly mode: 'intrinsic' | 'finite' | 'baseline';
|
|
28
|
+
readonly dependencies: readonly SignalNode<unknown>[];
|
|
29
|
+
readonly receiverDependencies?: readonly SignalNode<unknown>[];
|
|
30
|
+
readonly dependencyVersions?: readonly number[];
|
|
31
|
+
readonly inputSnapshot: readonly unknown[] | undefined;
|
|
32
|
+
readonly receiverReceipts?: readonly ConstrainedMeasurementReceipt[];
|
|
33
|
+
}
|
|
34
|
+
interface PrimitiveMeasurementCache {
|
|
35
|
+
readPrimitiveMeasurement(token: object, key: string): PrimitiveMeasurementEntry | undefined;
|
|
36
|
+
writePrimitiveMeasurement(token: object, entry: PrimitiveMeasurementEntry): void;
|
|
37
|
+
}
|
|
38
|
+
interface PrimitiveMeasurementOptions {
|
|
39
|
+
cache: PrimitiveMeasurementCache;
|
|
40
|
+
token: object;
|
|
41
|
+
key: string;
|
|
42
|
+
recordMeasurement: () => void;
|
|
43
|
+
}
|
|
44
|
+
/** @internal Paired content contributions through the existing pure receiver transaction. */
|
|
45
|
+
export declare function measureIntrinsicElement(element: PibblElement<any>, constraints: Readonly<Constraints>, service: CanvasMeasurementService, options?: PrimitiveMeasurementOptions): IntrinsicSizesResult;
|
|
46
|
+
/** @internal Finite custom measurement through the same receiver transaction and cache. */
|
|
47
|
+
export declare function measureConstrainedIntrinsicElement(element: PibblElement<any>, constraints: Readonly<Constraints>, service: CanvasMeasurementService, options?: PrimitiveMeasurementOptions): MeasureResult;
|
|
48
|
+
/** @internal Parent-owned prepared row result with fresh receiver paths per query. */
|
|
49
|
+
export declare function measurePreparedLayoutElement(element: PibblElement<any>, constraints: Readonly<Constraints>, service: CanvasMeasurementService, options: PrimitiveMeasurementOptions, snapshot: readonly unknown[], receivers: readonly object[]): MeasureResult;
|
|
50
|
+
/** @internal One-shot proof of a direct child's current finite Flex selection. */
|
|
51
|
+
export declare function setPreparedBaselineOwner(element: PibblElement<any>, owner: Readonly<LayoutBox>): void;
|
|
52
|
+
/** @internal Cache identity for a transparent, currently prepared primitive root. */
|
|
53
|
+
export interface BaselineMeasurementOptions extends PrimitiveMeasurementOptions {
|
|
54
|
+
source?: PibblElement<any>;
|
|
55
|
+
}
|
|
56
|
+
/** @internal Pure first/last baseline query at one final content allocation. */
|
|
57
|
+
export declare function measureBaselineElement(element: PibblElement<any>, allocation: Readonly<LayoutBox>, service: CanvasMeasurementService, options?: BaselineMeasurementOptions): BaselinesResult;
|
|
58
|
+
interface ConstrainedMeasurementReceipt {
|
|
59
|
+
readonly childIndex: number;
|
|
60
|
+
readonly receipt: ReceiverInputProvisionReceipt;
|
|
61
|
+
}
|
|
62
|
+
export interface ConstrainedMeasurementTrace {
|
|
63
|
+
cacheable: boolean;
|
|
64
|
+
readonly receipts: ConstrainedMeasurementReceipt[];
|
|
65
|
+
readonly receivers: readonly object[];
|
|
66
|
+
}
|
|
67
|
+
/** @internal Binds one direct known-row provider trace without retaining receiver tokens. */
|
|
68
|
+
export declare function withConstrainedMeasurementTrace<T>(trace: ConstrainedMeasurementTrace, work: () => T): T;
|
|
69
|
+
export declare function measureConstrainedLayoutChild(element: PibblElement<any>, constraints: Readonly<Constraints>, childIndex?: number): MeasureResult;
|
|
70
|
+
/** @internal Shared pure measurement preparation; never lends a mounted render context. */
|
|
71
|
+
export declare function withIsolatedRenderState<T>(work: () => T): T;
|