@pibbl/core 0.0.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/LICENSE.txt +19 -0
- package/README.md +76 -0
- package/THIRD_PARTY_NOTICES.txt +205 -0
- package/dist/features/particles/index.d.ts +7 -0
- package/dist/features/particles/index.js +26 -0
- package/dist/features/particles/index.js.map +7 -0
- package/dist/features/particles/index.mjs +1 -0
- package/dist/features/particles/lib/canvas/birth-ledger.d.ts +69 -0
- package/dist/features/particles/lib/canvas/birth-ledger.js +752 -0
- package/dist/features/particles/lib/canvas/birth-ledger.js.map +7 -0
- package/dist/features/particles/lib/canvas/component.d.ts +14 -0
- package/dist/features/particles/lib/canvas/component.js +249 -0
- package/dist/features/particles/lib/canvas/component.js.map +7 -0
- package/dist/features/particles/lib/canvas/executor.d.ts +31 -0
- package/dist/features/particles/lib/canvas/executor.js +537 -0
- package/dist/features/particles/lib/canvas/executor.js.map +7 -0
- package/dist/features/particles/lib/canvas/primitive.d.ts +14 -0
- package/dist/features/particles/lib/canvas/primitive.js +50 -0
- package/dist/features/particles/lib/canvas/primitive.js.map +7 -0
- package/dist/features/particles/lib/canvas/raster-cache.d.ts +13 -0
- package/dist/features/particles/lib/canvas/raster-cache.js +106 -0
- package/dist/features/particles/lib/canvas/raster-cache.js.map +7 -0
- package/dist/features/particles/lib/color.d.ts +7 -0
- package/dist/features/particles/lib/color.js +159 -0
- package/dist/features/particles/lib/color.js.map +7 -0
- package/dist/features/particles/lib/compiler.d.ts +134 -0
- package/dist/features/particles/lib/compiler.js +443 -0
- package/dist/features/particles/lib/compiler.js.map +7 -0
- package/dist/features/particles/lib/curve.d.ts +19 -0
- package/dist/features/particles/lib/curve.js +129 -0
- package/dist/features/particles/lib/curve.js.map +7 -0
- package/dist/features/particles/lib/definition-records.d.ts +58 -0
- package/dist/features/particles/lib/definition-records.js +500 -0
- package/dist/features/particles/lib/definition-records.js.map +7 -0
- package/dist/features/particles/lib/definition.d.ts +18 -0
- package/dist/features/particles/lib/definition.js +602 -0
- package/dist/features/particles/lib/definition.js.map +7 -0
- package/dist/features/particles/lib/emission.d.ts +54 -0
- package/dist/features/particles/lib/emission.js +184 -0
- package/dist/features/particles/lib/emission.js.map +7 -0
- package/dist/features/particles/lib/flow/field.d.ts +81 -0
- package/dist/features/particles/lib/flow/field.js +585 -0
- package/dist/features/particles/lib/flow/field.js.map +7 -0
- package/dist/features/particles/lib/flow/hook.d.ts +158 -0
- package/dist/features/particles/lib/flow/hook.js +215 -0
- package/dist/features/particles/lib/flow/hook.js.map +7 -0
- package/dist/features/particles/lib/flow/population.d.ts +25 -0
- package/dist/features/particles/lib/flow/population.js +104 -0
- package/dist/features/particles/lib/flow/population.js.map +7 -0
- package/dist/features/particles/lib/particle.d.ts +113 -0
- package/dist/features/particles/lib/particle.js +192 -0
- package/dist/features/particles/lib/particle.js.map +7 -0
- package/dist/features/particles/lib/random.d.ts +16 -0
- package/dist/features/particles/lib/random.js +61 -0
- package/dist/features/particles/lib/random.js.map +7 -0
- package/dist/features/particles/lib/sample.d.ts +32 -0
- package/dist/features/particles/lib/sample.js +397 -0
- package/dist/features/particles/lib/sample.js.map +7 -0
- package/dist/features/particles/lib/signal-inputs.d.ts +6 -0
- package/dist/features/particles/lib/signal-inputs.js +41 -0
- package/dist/features/particles/lib/signal-inputs.js.map +7 -0
- package/dist/features/particles/lib/system/binding.d.ts +59 -0
- package/dist/features/particles/lib/system/binding.js +122 -0
- package/dist/features/particles/lib/system/binding.js.map +7 -0
- package/dist/features/particles/lib/system/controller.d.ts +58 -0
- package/dist/features/particles/lib/system/controller.js +1446 -0
- package/dist/features/particles/lib/system/controller.js.map +7 -0
- package/dist/features/particles/lib/system/hook.d.ts +13 -0
- package/dist/features/particles/lib/system/hook.js +52 -0
- package/dist/features/particles/lib/system/hook.js.map +7 -0
- package/dist/features/particles/lib/system/ownership.d.ts +26 -0
- package/dist/features/particles/lib/system/ownership.js +128 -0
- package/dist/features/particles/lib/system/ownership.js.map +7 -0
- package/dist/features/particles/lib/types.d.ts +983 -0
- package/dist/features/physics/2d-geometry.d.ts +216 -0
- package/dist/features/physics/2d-geometry.js +59 -0
- package/dist/features/physics/2d-geometry.js.map +7 -0
- package/dist/features/physics/2d-geometry.mjs +1 -0
- package/dist/features/physics/2d-testing.d.ts +80 -0
- package/dist/features/physics/2d-testing.js +141 -0
- package/dist/features/physics/2d-testing.js.map +7 -0
- package/dist/features/physics/2d-testing.mjs +1 -0
- package/dist/features/physics/2d.d.ts +165 -0
- package/dist/features/physics/2d.js +119 -0
- package/dist/features/physics/2d.js.map +7 -0
- package/dist/features/physics/2d.mjs +1 -0
- package/dist/features/physics/lib/2d/canvas/components.d.ts +46 -0
- package/dist/features/physics/lib/2d/canvas/components.js +212 -0
- package/dist/features/physics/lib/2d/canvas/components.js.map +7 -0
- package/dist/features/physics/lib/2d/canvas/custom.d.ts +24 -0
- package/dist/features/physics/lib/2d/canvas/custom.js +45 -0
- package/dist/features/physics/lib/2d/canvas/custom.js.map +7 -0
- package/dist/features/physics/lib/2d/canvas/debug.d.ts +23 -0
- package/dist/features/physics/lib/2d/canvas/debug.js +53 -0
- package/dist/features/physics/lib/2d/canvas/debug.js.map +7 -0
- package/dist/features/physics/lib/2d/canvas/inference.d.ts +9 -0
- package/dist/features/physics/lib/2d/canvas/inference.js +704 -0
- package/dist/features/physics/lib/2d/canvas/inference.js.map +7 -0
- package/dist/features/physics/lib/2d/canvas/presentation.d.ts +11 -0
- package/dist/features/physics/lib/2d/canvas/presentation.js +169 -0
- package/dist/features/physics/lib/2d/canvas/presentation.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/analytic.d.ts +15 -0
- package/dist/features/physics/lib/2d/collision/analytic.js +151 -0
- package/dist/features/physics/lib/2d/collision/analytic.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/casts.d.ts +37 -0
- package/dist/features/physics/lib/2d/collision/casts.js +631 -0
- package/dist/features/physics/lib/2d/collision/casts.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/epa.d.ts +21 -0
- package/dist/features/physics/lib/2d/collision/epa.js +102 -0
- package/dist/features/physics/lib/2d/collision/epa.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/gjk.d.ts +28 -0
- package/dist/features/physics/lib/2d/collision/gjk.js +233 -0
- package/dist/features/physics/lib/2d/collision/gjk.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/manifold.d.ts +35 -0
- package/dist/features/physics/lib/2d/collision/manifold.js +238 -0
- package/dist/features/physics/lib/2d/collision/manifold.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/pairs.d.ts +10 -0
- package/dist/features/physics/lib/2d/collision/pairs.js +285 -0
- package/dist/features/physics/lib/2d/collision/pairs.js.map +7 -0
- package/dist/features/physics/lib/2d/collision/support.d.ts +20 -0
- package/dist/features/physics/lib/2d/collision/support.js +155 -0
- package/dist/features/physics/lib/2d/collision/support.js.map +7 -0
- package/dist/features/physics/lib/2d/inspection-types.d.ts +159 -0
- package/dist/features/physics/lib/2d/math.d.ts +27 -0
- package/dist/features/physics/lib/2d/math.js +314 -0
- package/dist/features/physics/lib/2d/math.js.map +7 -0
- package/dist/features/physics/lib/2d/numeric-policy.d.ts +24 -0
- package/dist/features/physics/lib/2d/numeric-policy.js +51 -0
- package/dist/features/physics/lib/2d/numeric-policy.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/body-handle.d.ts +148 -0
- package/dist/features/physics/lib/2d/runtime/body-handle.js +305 -0
- package/dist/features/physics/lib/2d/runtime/body-handle.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/context.d.ts +9 -0
- package/dist/features/physics/lib/2d/runtime/context.js +57 -0
- package/dist/features/physics/lib/2d/runtime/context.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/controller.d.ts +106 -0
- package/dist/features/physics/lib/2d/runtime/controller.js +1317 -0
- package/dist/features/physics/lib/2d/runtime/controller.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/descriptors.d.ts +153 -0
- package/dist/features/physics/lib/2d/runtime/descriptors.js +526 -0
- package/dist/features/physics/lib/2d/runtime/descriptors.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/events.d.ts +56 -0
- package/dist/features/physics/lib/2d/runtime/events.js +153 -0
- package/dist/features/physics/lib/2d/runtime/events.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/obstacles.d.ts +22 -0
- package/dist/features/physics/lib/2d/runtime/obstacles.js +192 -0
- package/dist/features/physics/lib/2d/runtime/obstacles.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/ownership.d.ts +41 -0
- package/dist/features/physics/lib/2d/runtime/ownership.js +46 -0
- package/dist/features/physics/lib/2d/runtime/ownership.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/trace.d.ts +32 -0
- package/dist/features/physics/lib/2d/runtime/trace.js +22 -0
- package/dist/features/physics/lib/2d/runtime/trace.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/world-component.d.ts +18 -0
- package/dist/features/physics/lib/2d/runtime/world-component.js +41 -0
- package/dist/features/physics/lib/2d/runtime/world-component.js.map +7 -0
- package/dist/features/physics/lib/2d/runtime/world-props.d.ts +16 -0
- package/dist/features/physics/lib/2d/shape-records.d.ts +60 -0
- package/dist/features/physics/lib/2d/shape-records.js +26 -0
- package/dist/features/physics/lib/2d/shape-records.js.map +7 -0
- package/dist/features/physics/lib/2d/shapes.d.ts +191 -0
- package/dist/features/physics/lib/2d/shapes.js +543 -0
- package/dist/features/physics/lib/2d/shapes.js.map +7 -0
- package/dist/features/physics/lib/2d/types.d.ts +713 -0
- package/dist/features/physics/lib/2d/types.js +1 -0
- package/dist/features/physics/lib/2d/types.js.map +7 -0
- package/dist/features/physics/lib/2d/world/broad-phase.d.ts +77 -0
- package/dist/features/physics/lib/2d/world/broad-phase.js +762 -0
- package/dist/features/physics/lib/2d/world/broad-phase.js.map +7 -0
- package/dist/features/physics/lib/2d/world/ccd.d.ts +19 -0
- package/dist/features/physics/lib/2d/world/ccd.js +265 -0
- package/dist/features/physics/lib/2d/world/ccd.js.map +7 -0
- package/dist/features/physics/lib/2d/world/contact-cache.d.ts +81 -0
- package/dist/features/physics/lib/2d/world/contact-cache.js +497 -0
- package/dist/features/physics/lib/2d/world/contact-cache.js.map +7 -0
- package/dist/features/physics/lib/2d/world/integrator.d.ts +11 -0
- package/dist/features/physics/lib/2d/world/integrator.js +99 -0
- package/dist/features/physics/lib/2d/world/integrator.js.map +7 -0
- package/dist/features/physics/lib/2d/world/queries.d.ts +62 -0
- package/dist/features/physics/lib/2d/world/queries.js +424 -0
- package/dist/features/physics/lib/2d/world/queries.js.map +7 -0
- package/dist/features/physics/lib/2d/world/rapier-engine.js +7054 -0
- package/dist/features/physics/lib/2d/world/rapier-engine.js.map +7 -0
- package/dist/features/physics/lib/2d/world/rapier.d.ts +50 -0
- package/dist/features/physics/lib/2d/world/rapier.js +655 -0
- package/dist/features/physics/lib/2d/world/rapier.js.map +7 -0
- package/dist/features/physics/lib/2d/world/solver.d.ts +58 -0
- package/dist/features/physics/lib/2d/world/solver.js +660 -0
- package/dist/features/physics/lib/2d/world/solver.js.map +7 -0
- package/dist/features/physics/lib/2d/world/storage.d.ts +96 -0
- package/dist/features/physics/lib/2d/world/storage.js +371 -0
- package/dist/features/physics/lib/2d/world/storage.js.map +7 -0
- package/dist/features/physics/lib/2d/world/world.d.ts +265 -0
- package/dist/features/physics/lib/2d/world/world.js +1713 -0
- package/dist/features/physics/lib/2d/world/world.js.map +7 -0
- package/dist/features/physics/lib/shared/signal-inputs.d.ts +5 -0
- package/dist/features/physics/lib/shared/signal-inputs.js +20 -0
- package/dist/features/physics/lib/shared/signal-inputs.js.map +7 -0
- package/dist/features/physics/lib/shared/validation.d.ts +5 -0
- package/dist/features/physics/lib/shared/validation.js +48 -0
- package/dist/features/physics/lib/shared/validation.js.map +7 -0
- package/dist/features/sprites/formats/aseprite.js +23 -0
- package/dist/features/sprites/formats/aseprite.js.map +7 -0
- package/dist/features/sprites/formats/aseprite.mjs +1 -0
- package/dist/features/sprites/formats/texture-packer.js +14 -0
- package/dist/features/sprites/formats/texture-packer.js.map +7 -0
- package/dist/features/sprites/formats/texture-packer.mjs +1 -0
- package/dist/features/sprites/index.js +9 -0
- package/dist/features/sprites/index.js.map +7 -0
- package/dist/features/sprites/index.mjs +1 -0
- package/dist/features/sprites/loader.js +63 -0
- package/dist/features/sprites/loader.js.map +7 -0
- package/dist/features/sprites/model.js +64 -0
- package/dist/features/sprites/model.js.map +7 -0
- package/dist/features/sprites/sprite.js +31 -0
- package/dist/features/sprites/sprite.js.map +7 -0
- package/dist/features/textures/index.d.ts +22 -0
- package/dist/features/textures/index.js +31 -0
- package/dist/features/textures/index.js.map +7 -0
- package/dist/features/textures/index.mjs +1 -0
- package/dist/features/textures/lib/definitions.d.ts +117 -0
- package/dist/features/textures/lib/definitions.js +179 -0
- package/dist/features/textures/lib/definitions.js.map +7 -0
- package/dist/features/textures/lib/electric-boundary.d.ts +3 -0
- package/dist/features/textures/lib/electric-boundary.js +11 -0
- package/dist/features/textures/lib/electric-boundary.js.map +7 -0
- package/dist/features/textures/lib/electric-shared.d.ts +69 -0
- package/dist/features/textures/lib/electric-shared.js +43 -0
- package/dist/features/textures/lib/electric-shared.js.map +7 -0
- package/dist/features/textures/lib/electric-sources.d.ts +50 -0
- package/dist/features/textures/lib/electric-sources.js +43 -0
- package/dist/features/textures/lib/electric-sources.js.map +7 -0
- package/dist/features/textures/lib/lightning.d.ts +72 -0
- package/dist/features/textures/lib/lightning.js +139 -0
- package/dist/features/textures/lib/lightning.js.map +7 -0
- package/dist/features/textures/lib/material-field.d.ts +12 -0
- package/dist/features/textures/lib/material-field.js +31 -0
- package/dist/features/textures/lib/material-field.js.map +7 -0
- package/dist/features/textures/lib/palette.d.ts +45 -0
- package/dist/features/textures/lib/palette.js +52 -0
- package/dist/features/textures/lib/palette.js.map +7 -0
- package/dist/features/textures/lib/presentation.d.ts +54 -0
- package/dist/features/textures/lib/presentation.js +83 -0
- package/dist/features/textures/lib/presentation.js.map +7 -0
- package/dist/features/textures/lib/procedural-texture.d.ts +44 -0
- package/dist/features/textures/lib/procedural-texture.js +110 -0
- package/dist/features/textures/lib/procedural-texture.js.map +7 -0
- package/dist/features/textures/lib/rain-drops.d.ts +96 -0
- package/dist/features/textures/lib/rain-drops.js +322 -0
- package/dist/features/textures/lib/rain-drops.js.map +7 -0
- package/dist/features/textures/lib/reaction-diffusion.d.ts +67 -0
- package/dist/features/textures/lib/reaction-diffusion.js +210 -0
- package/dist/features/textures/lib/reaction-diffusion.js.map +7 -0
- package/dist/features/textures/lib/simulation.d.ts +16 -0
- package/dist/features/textures/lib/simulation.js +85 -0
- package/dist/features/textures/lib/simulation.js.map +7 -0
- package/dist/features/textures/lib/tendrils.d.ts +57 -0
- package/dist/features/textures/lib/tendrils.js +216 -0
- package/dist/features/textures/lib/tendrils.js.map +7 -0
- package/dist/features/textures/lib/wasm/cellular-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/cellular-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/cellular-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/electric.d.ts +88 -0
- package/dist/features/textures/lib/wasm/electric.js +299 -0
- package/dist/features/textures/lib/wasm/electric.js.map +7 -0
- package/dist/features/textures/lib/wasm/ink-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/ink-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/ink-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/lightning-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/lightning-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/lightning-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/marble-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/marble-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/marble-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/memory.d.ts +31 -0
- package/dist/features/textures/lib/wasm/memory.js +103 -0
- package/dist/features/textures/lib/wasm/memory.js.map +7 -0
- package/dist/features/textures/lib/wasm/paper-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/paper-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/paper-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/tendrils-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/tendrils-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/tendrils-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/water-surface-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/water-surface-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/water-surface-bytes.js.map +7 -0
- package/dist/features/textures/lib/wasm/water-waves-bytes.d.ts +1 -0
- package/dist/features/textures/lib/wasm/water-waves-bytes.js +5 -0
- package/dist/features/textures/lib/wasm/water-waves-bytes.js.map +7 -0
- package/dist/features/textures/lib/water-surface.d.ts +92 -0
- package/dist/features/textures/lib/water-surface.js +378 -0
- package/dist/features/textures/lib/water-surface.js.map +7 -0
- package/dist/features/textures/lib/water-waves.d.ts +60 -0
- package/dist/features/textures/lib/water-waves.js +154 -0
- package/dist/features/textures/lib/water-waves.js.map +7 -0
- package/dist/features/viz/index.d.ts +28 -0
- package/dist/features/viz/index.js +45 -0
- package/dist/features/viz/index.js.map +7 -0
- package/dist/features/viz/index.mjs +1 -0
- package/dist/features/viz/lib/anchored-layout.d.ts +104 -0
- package/dist/features/viz/lib/anchored-layout.js +166 -0
- package/dist/features/viz/lib/anchored-layout.js.map +7 -0
- package/dist/features/viz/lib/axis.d.ts +10 -0
- package/dist/features/viz/lib/axis.js +116 -0
- package/dist/features/viz/lib/axis.js.map +7 -0
- package/dist/features/viz/lib/band-scale.d.ts +3 -0
- package/dist/features/viz/lib/band-scale.js +57 -0
- package/dist/features/viz/lib/band-scale.js.map +7 -0
- package/dist/features/viz/lib/bar-fill.d.ts +16 -0
- package/dist/features/viz/lib/bar-fill.js +53 -0
- package/dist/features/viz/lib/bar-fill.js.map +7 -0
- package/dist/features/viz/lib/bar-series.d.ts +150 -0
- package/dist/features/viz/lib/bar-series.js +152 -0
- package/dist/features/viz/lib/bar-series.js.map +7 -0
- package/dist/features/viz/lib/hover-card.d.ts +92 -0
- package/dist/features/viz/lib/hover-card.js +146 -0
- package/dist/features/viz/lib/hover-card.js.map +7 -0
- package/dist/features/viz/lib/hover-data.d.ts +12 -0
- package/dist/features/viz/lib/hover-data.js +50 -0
- package/dist/features/viz/lib/hover-data.js.map +7 -0
- package/dist/features/viz/lib/hover-placement.d.ts +46 -0
- package/dist/features/viz/lib/hover-placement.js +51 -0
- package/dist/features/viz/lib/hover-placement.js.map +7 -0
- package/dist/features/viz/lib/hover-queries.d.ts +60 -0
- package/dist/features/viz/lib/hover-queries.js +185 -0
- package/dist/features/viz/lib/hover-queries.js.map +7 -0
- package/dist/features/viz/lib/hover-types.d.ts +277 -0
- package/dist/features/viz/lib/layout-pie.d.ts +13 -0
- package/dist/features/viz/lib/layout-pie.js +159 -0
- package/dist/features/viz/lib/layout-pie.js.map +7 -0
- package/dist/features/viz/lib/line-series.d.ts +11 -0
- package/dist/features/viz/lib/line-series.js +89 -0
- package/dist/features/viz/lib/line-series.js.map +7 -0
- package/dist/features/viz/lib/linear-scale.d.ts +3 -0
- package/dist/features/viz/lib/linear-scale.js +70 -0
- package/dist/features/viz/lib/linear-scale.js.map +7 -0
- package/dist/features/viz/lib/nearest.d.ts +82 -0
- package/dist/features/viz/lib/nearest.js +51 -0
- package/dist/features/viz/lib/nearest.js.map +7 -0
- package/dist/features/viz/lib/paint.d.ts +2 -0
- package/dist/features/viz/lib/paint.js +17 -0
- package/dist/features/viz/lib/paint.js.map +7 -0
- package/dist/features/viz/lib/pie-layout.d.ts +31 -0
- package/dist/features/viz/lib/pie-layout.js +324 -0
- package/dist/features/viz/lib/pie-layout.js.map +7 -0
- package/dist/features/viz/lib/pie-slices.d.ts +51 -0
- package/dist/features/viz/lib/pie-slices.js +50 -0
- package/dist/features/viz/lib/pie-slices.js.map +7 -0
- package/dist/features/viz/lib/pie-types.d.ts +215 -0
- package/dist/features/viz/lib/plot-series.d.ts +13 -0
- package/dist/features/viz/lib/plot-series.js +53 -0
- package/dist/features/viz/lib/plot-series.js.map +7 -0
- package/dist/features/viz/lib/plot-types.d.ts +63 -0
- package/dist/features/viz/lib/point-data.d.ts +5 -0
- package/dist/features/viz/lib/point-data.js +17 -0
- package/dist/features/viz/lib/point-data.js.map +7 -0
- package/dist/features/viz/lib/point-geometry.d.ts +2 -0
- package/dist/features/viz/lib/point-geometry.js +24 -0
- package/dist/features/viz/lib/point-geometry.js.map +7 -0
- package/dist/features/viz/lib/point-series.d.ts +11 -0
- package/dist/features/viz/lib/point-series.js +118 -0
- package/dist/features/viz/lib/point-series.js.map +7 -0
- package/dist/features/viz/lib/point-types.d.ts +94 -0
- package/dist/features/viz/lib/scale-adjust.d.ts +11 -0
- package/dist/features/viz/lib/scale-adjust.js +25 -0
- package/dist/features/viz/lib/scale-adjust.js.map +7 -0
- package/dist/features/viz/lib/scale-context.d.ts +8 -0
- package/dist/features/viz/lib/scale-context.js +61 -0
- package/dist/features/viz/lib/scale-context.js.map +7 -0
- package/dist/features/viz/lib/scale.d.ts +11 -0
- package/dist/features/viz/lib/scale.js +80 -0
- package/dist/features/viz/lib/scale.js.map +7 -0
- package/dist/features/viz/lib/types.d.ts +414 -0
- package/dist/features/viz/lib/use-scale.d.ts +20 -0
- package/dist/features/viz/lib/use-scale.js +10 -0
- package/dist/features/viz/lib/use-scale.js.map +7 -0
- package/dist/filters/displacement-gpu.d.ts +38 -0
- package/dist/filters/displacement-gpu.js +243 -0
- package/dist/filters/displacement-gpu.js.map +7 -0
- package/dist/filters/displacement-math.d.ts +5 -0
- package/dist/filters/displacement-math.js +22 -0
- package/dist/filters/displacement-math.js.map +7 -0
- package/dist/filters/displacement.d.ts +13 -0
- package/dist/filters/displacement.js +65 -0
- package/dist/filters/displacement.js.map +7 -0
- package/dist/filters/filter-executor.d.ts +21 -0
- package/dist/filters/filter-executor.js +120 -0
- package/dist/filters/filter-executor.js.map +7 -0
- package/dist/filters/native-canvas-filter.d.ts +4 -0
- package/dist/filters/native-canvas-filter.js +105 -0
- package/dist/filters/native-canvas-filter.js.map +7 -0
- package/dist/filters/native-color.d.ts +2 -0
- package/dist/filters/native-color.js +200 -0
- package/dist/filters/native-color.js.map +7 -0
- package/dist/filters/native-operations.d.ts +8 -0
- package/dist/filters/native-operations.js +7 -0
- package/dist/filters/native-operations.js.map +7 -0
- package/dist/filters/native.d.ts +113 -0
- package/dist/filters/native.js +115 -0
- package/dist/filters/native.js.map +7 -0
- package/dist/filters/reflected-light.d.ts +12 -0
- package/dist/filters/reflected-light.js +93 -0
- package/dist/filters/reflected-light.js.map +7 -0
- package/dist/filters/reflection-gpu.d.ts +58 -0
- package/dist/filters/reflection-gpu.js +266 -0
- package/dist/filters/reflection-gpu.js.map +7 -0
- package/dist/filters/render-displacement-boundary.d.ts +12 -0
- package/dist/filters/render-displacement-boundary.js +116 -0
- package/dist/filters/render-displacement-boundary.js.map +7 -0
- package/dist/filters/render-reflection-boundary.d.ts +15 -0
- package/dist/filters/render-reflection-boundary.js +127 -0
- package/dist/filters/render-reflection-boundary.js.map +7 -0
- package/dist/filters.d.ts +5 -0
- package/dist/filters.js +29 -0
- package/dist/filters.js.map +7 -0
- package/dist/filters.mjs +1 -0
- package/dist/index.d.ts +111 -0
- package/dist/index.js +300 -0
- package/dist/index.js.map +7 -0
- package/dist/index.mjs +1 -0
- package/dist/internal.d.ts +160 -0
- package/dist/internal.js +320 -0
- package/dist/internal.js.map +7 -0
- package/dist/internal.mjs +1 -0
- package/dist/jsx-dev-runtime.d.ts +35 -0
- package/dist/jsx-dev-runtime.js +6 -0
- package/dist/jsx-dev-runtime.js.map +7 -0
- package/dist/jsx-dev-runtime.mjs +1 -0
- package/dist/jsx-runtime.d.ts +35 -0
- package/dist/jsx-runtime.js +7 -0
- package/dist/jsx-runtime.js.map +7 -0
- package/dist/jsx-runtime.mjs +1 -0
- package/dist/lib/animation/definition.d.ts +140 -0
- package/dist/lib/animation/definition.js +605 -0
- package/dist/lib/animation/definition.js.map +7 -0
- package/dist/lib/animation/easing.d.ts +55 -0
- package/dist/lib/animation/easing.js +112 -0
- package/dist/lib/animation/easing.js.map +7 -0
- package/dist/lib/animation/evaluate.d.ts +118 -0
- package/dist/lib/animation/evaluate.js +2398 -0
- package/dist/lib/animation/evaluate.js.map +7 -0
- package/dist/lib/animation/playback.d.ts +30 -0
- package/dist/lib/animation/playback.js +932 -0
- package/dist/lib/animation/playback.js.map +7 -0
- package/dist/lib/animation/program.d.ts +145 -0
- package/dist/lib/animation/program.js +741 -0
- package/dist/lib/animation/program.js.map +7 -0
- package/dist/lib/animation/spring.d.ts +30 -0
- package/dist/lib/animation/spring.js +324 -0
- package/dist/lib/animation/spring.js.map +7 -0
- package/dist/lib/animation/types.d.ts +418 -0
- package/dist/lib/animation/writer-leases.d.ts +47 -0
- package/dist/lib/animation/writer-leases.js +314 -0
- package/dist/lib/animation/writer-leases.js.map +7 -0
- package/dist/lib/backend/canvas-2d-backend.d.ts +4 -0
- package/dist/lib/backend/canvas-2d-backend.js +97 -0
- package/dist/lib/backend/canvas-2d-backend.js.map +7 -0
- package/dist/lib/backend/types.d.ts +309 -0
- package/dist/lib/backend/types.js +26 -0
- package/dist/lib/backend/types.js.map +7 -0
- package/dist/lib/components/arc-geometry.d.ts +4 -0
- package/dist/lib/components/arc-geometry.js +46 -0
- package/dist/lib/components/arc-geometry.js.map +7 -0
- package/dist/lib/components/arc.d.ts +55 -0
- package/dist/lib/components/arc.js +91 -0
- package/dist/lib/components/arc.js.map +7 -0
- package/dist/lib/components/circle.d.ts +49 -0
- package/dist/lib/components/circle.js +46 -0
- package/dist/lib/components/circle.js.map +7 -0
- package/dist/lib/components/clip.d.ts +43 -0
- package/dist/lib/components/clip.js +24 -0
- package/dist/lib/components/clip.js.map +7 -0
- package/dist/lib/components/ellipse.d.ts +53 -0
- package/dist/lib/components/ellipse.js +59 -0
- package/dist/lib/components/ellipse.js.map +7 -0
- package/dist/lib/components/g.d.ts +56 -0
- package/dist/lib/components/g.js +24 -0
- package/dist/lib/components/g.js.map +7 -0
- package/dist/lib/components/horizontal-line.d.ts +56 -0
- package/dist/lib/components/horizontal-line.js +71 -0
- package/dist/lib/components/horizontal-line.js.map +7 -0
- package/dist/lib/components/html-box.d.ts +16 -0
- package/dist/lib/components/html-box.js +57 -0
- package/dist/lib/components/html-box.js.map +7 -0
- package/dist/lib/components/img.d.ts +24 -0
- package/dist/lib/components/img.js +150 -0
- package/dist/lib/components/img.js.map +7 -0
- package/dist/lib/components/layer-node-equality.d.ts +65 -0
- package/dist/lib/components/layer-node-equality.js +91 -0
- package/dist/lib/components/layer-node-equality.js.map +7 -0
- package/dist/lib/components/layer.d.ts +34 -0
- package/dist/lib/components/layer.js +172 -0
- package/dist/lib/components/layer.js.map +7 -0
- package/dist/lib/components/line.d.ts +51 -0
- package/dist/lib/components/line.js +76 -0
- package/dist/lib/components/line.js.map +7 -0
- package/dist/lib/components/path.d.ts +28 -0
- package/dist/lib/components/path.js +47 -0
- package/dist/lib/components/path.js.map +7 -0
- package/dist/lib/components/polygon.d.ts +45 -0
- package/dist/lib/components/polygon.js +93 -0
- package/dist/lib/components/polygon.js.map +7 -0
- package/dist/lib/components/rect.d.ts +24 -0
- package/dist/lib/components/rect.js +83 -0
- package/dist/lib/components/rect.js.map +7 -0
- package/dist/lib/components/regular-polygon.d.ts +102 -0
- package/dist/lib/components/regular-polygon.js +112 -0
- package/dist/lib/components/regular-polygon.js.map +7 -0
- package/dist/lib/components/rounded-corner-style.d.ts +7 -0
- package/dist/lib/components/rounded-corner-style.js +40 -0
- package/dist/lib/components/rounded-corner-style.js.map +7 -0
- package/dist/lib/components/shape-style.d.ts +7 -0
- package/dist/lib/components/shape-style.js +52 -0
- package/dist/lib/components/shape-style.js.map +7 -0
- package/dist/lib/components/star.d.ts +56 -0
- package/dist/lib/components/star.js +98 -0
- package/dist/lib/components/star.js.map +7 -0
- package/dist/lib/components/structural-events.d.ts +10 -0
- package/dist/lib/components/structural-events.js +8 -0
- package/dist/lib/components/structural-events.js.map +7 -0
- package/dist/lib/components/svg-path.d.ts +23 -0
- package/dist/lib/components/svg-path.js +25 -0
- package/dist/lib/components/svg-path.js.map +7 -0
- package/dist/lib/components/text-layout.d.ts +31 -0
- package/dist/lib/components/text-layout.js +139 -0
- package/dist/lib/components/text-layout.js.map +7 -0
- package/dist/lib/components/text.d.ts +29 -0
- package/dist/lib/components/text.js +174 -0
- package/dist/lib/components/text.js.map +7 -0
- package/dist/lib/components/vertical-line.d.ts +57 -0
- package/dist/lib/components/vertical-line.js +71 -0
- package/dist/lib/components/vertical-line.js.map +7 -0
- package/dist/lib/components/wedge.d.ts +55 -0
- package/dist/lib/components/wedge.js +93 -0
- package/dist/lib/components/wedge.js.map +7 -0
- package/dist/lib/define-primitive.d.ts +82 -0
- package/dist/lib/define-primitive.js +85 -0
- package/dist/lib/define-primitive.js.map +7 -0
- package/dist/lib/development.d.ts +2 -0
- package/dist/lib/development.js +5 -0
- package/dist/lib/development.js.map +7 -0
- package/dist/lib/element/children.d.ts +16 -0
- package/dist/lib/element/children.js +333 -0
- package/dist/lib/element/children.js.map +7 -0
- package/dist/lib/element/create-element.d.ts +34 -0
- package/dist/lib/element/create-element.js +75 -0
- package/dist/lib/element/create-element.js.map +7 -0
- package/dist/lib/element/fragment.d.ts +15 -0
- package/dist/lib/element/fragment.js +11 -0
- package/dist/lib/element/fragment.js.map +7 -0
- package/dist/lib/element/jsx-runtime.d.ts +48 -0
- package/dist/lib/element/jsx-runtime.js +16 -0
- package/dist/lib/element/jsx-runtime.js.map +7 -0
- package/dist/lib/element/metadata.d.ts +96 -0
- package/dist/lib/element/metadata.js +160 -0
- package/dist/lib/element/metadata.js.map +7 -0
- package/dist/lib/element/resolve-primitive-inputs.d.ts +12 -0
- package/dist/lib/element/resolve-primitive-inputs.js +83 -0
- package/dist/lib/element/resolve-primitive-inputs.js.map +7 -0
- package/dist/lib/element/types.d.ts +123 -0
- package/dist/lib/element-enhancers.d.ts +134 -0
- package/dist/lib/element-enhancers.js +193 -0
- package/dist/lib/element-enhancers.js.map +7 -0
- package/dist/lib/events/adapters/clipboard.d.ts +9 -0
- package/dist/lib/events/adapters/clipboard.js +23 -0
- package/dist/lib/events/adapters/clipboard.js.map +7 -0
- package/dist/lib/events/adapters/drag.d.ts +12 -0
- package/dist/lib/events/adapters/drag.js +29 -0
- package/dist/lib/events/adapters/drag.js.map +7 -0
- package/dist/lib/events/adapters/editing.d.ts +15 -0
- package/dist/lib/events/adapters/editing.js +41 -0
- package/dist/lib/events/adapters/editing.js.map +7 -0
- package/dist/lib/events/adapters/keyboard-focus.d.ts +12 -0
- package/dist/lib/events/adapters/keyboard-focus.js +36 -0
- package/dist/lib/events/adapters/keyboard-focus.js.map +7 -0
- package/dist/lib/events/adapters/mouse.d.ts +17 -0
- package/dist/lib/events/adapters/mouse.js +32 -0
- package/dist/lib/events/adapters/mouse.js.map +7 -0
- package/dist/lib/events/adapters/pointer.d.ts +19 -0
- package/dist/lib/events/adapters/pointer.js +40 -0
- package/dist/lib/events/adapters/pointer.js.map +7 -0
- package/dist/lib/events/adapters/touch.d.ts +16 -0
- package/dist/lib/events/adapters/touch.js +36 -0
- package/dist/lib/events/adapters/touch.js.map +7 -0
- package/dist/lib/events/adapters/wheel.d.ts +10 -0
- package/dist/lib/events/adapters/wheel.js +16 -0
- package/dist/lib/events/adapters/wheel.js.map +7 -0
- package/dist/lib/events/boundary-transitions.d.ts +9 -0
- package/dist/lib/events/boundary-transitions.js +16 -0
- package/dist/lib/events/boundary-transitions.js.map +7 -0
- package/dist/lib/events/dispatch.d.ts +21 -0
- package/dist/lib/events/dispatch.js +1078 -0
- package/dist/lib/events/dispatch.js.map +7 -0
- package/dist/lib/events/event-definitions.d.ts +23 -0
- package/dist/lib/events/event-definitions.js +74 -0
- package/dist/lib/events/event-definitions.js.map +7 -0
- package/dist/lib/events/event-facade.d.ts +19 -0
- package/dist/lib/events/event-facade.js +188 -0
- package/dist/lib/events/event-facade.js.map +7 -0
- package/dist/lib/events/event-path.d.ts +3 -0
- package/dist/lib/events/event-path.js +43 -0
- package/dist/lib/events/event-path.js.map +7 -0
- package/dist/lib/events/hit-test.d.ts +13 -0
- package/dist/lib/events/hit-test.js +135 -0
- package/dist/lib/events/hit-test.js.map +7 -0
- package/dist/lib/events/native-listener-hub.d.ts +10 -0
- package/dist/lib/events/native-listener-hub.js +72 -0
- package/dist/lib/events/native-listener-hub.js.map +7 -0
- package/dist/lib/events/paint-entry.d.ts +66 -0
- package/dist/lib/events/paint-entry.js +30 -0
- package/dist/lib/events/paint-entry.js.map +7 -0
- package/dist/lib/events/pointer-capture.d.ts +23 -0
- package/dist/lib/events/pointer-capture.js +339 -0
- package/dist/lib/events/pointer-capture.js.map +7 -0
- package/dist/lib/events/propagation.d.ts +7 -0
- package/dist/lib/events/propagation.js +56 -0
- package/dist/lib/events/propagation.js.map +7 -0
- package/dist/lib/events/registrations.d.ts +120 -0
- package/dist/lib/events/registrations.js +397 -0
- package/dist/lib/events/registrations.js.map +7 -0
- package/dist/lib/events/resolver-input.d.ts +25 -0
- package/dist/lib/events/resolver-input.js +62 -0
- package/dist/lib/events/resolver-input.js.map +7 -0
- package/dist/lib/events/types.d.ts +596 -0
- package/dist/lib/execute-render.d.ts +9 -0
- package/dist/lib/execute-render.js +195 -0
- package/dist/lib/execute-render.js.map +7 -0
- package/dist/lib/filter/canvas-state.d.ts +2 -0
- package/dist/lib/filter/canvas-state.js +31 -0
- package/dist/lib/filter/canvas-state.js.map +7 -0
- package/dist/lib/filter/filter-region.d.ts +33 -0
- package/dist/lib/filter/filter-region.js +291 -0
- package/dist/lib/filter/filter-region.js.map +7 -0
- package/dist/lib/filter/filter-surface-pool.d.ts +38 -0
- package/dist/lib/filter/filter-surface-pool.js +252 -0
- package/dist/lib/filter/filter-surface-pool.js.map +7 -0
- package/dist/lib/filter/render-filter-boundary.d.ts +14 -0
- package/dist/lib/filter/render-filter-boundary.js +211 -0
- package/dist/lib/filter/render-filter-boundary.js.map +7 -0
- package/dist/lib/focus/directional-navigation.d.ts +12 -0
- package/dist/lib/focus/directional-navigation.js +86 -0
- package/dist/lib/focus/directional-navigation.js.map +7 -0
- package/dist/lib/focus/dom-focus-host.d.ts +13 -0
- package/dist/lib/focus/dom-focus-host.js +352 -0
- package/dist/lib/focus/dom-focus-host.js.map +7 -0
- package/dist/lib/focus/dom-tab-stops.d.ts +3 -0
- package/dist/lib/focus/dom-tab-stops.js +71 -0
- package/dist/lib/focus/dom-tab-stops.js.map +7 -0
- package/dist/lib/focus/focus-events.d.ts +4 -0
- package/dist/lib/focus/focus-events.js +78 -0
- package/dist/lib/focus/focus-events.js.map +7 -0
- package/dist/lib/focus/focus-manager.d.ts +121 -0
- package/dist/lib/focus/focus-manager.js +1131 -0
- package/dist/lib/focus/focus-manager.js.map +7 -0
- package/dist/lib/focus/geometry.d.ts +4 -0
- package/dist/lib/focus/geometry.js +64 -0
- package/dist/lib/focus/geometry.js.map +7 -0
- package/dist/lib/focus/html-focus-region.d.ts +27 -0
- package/dist/lib/focus/keyboard-defaults.d.ts +7 -0
- package/dist/lib/focus/keyboard-defaults.js +110 -0
- package/dist/lib/focus/keyboard-defaults.js.map +7 -0
- package/dist/lib/focus/policy-components.d.ts +45 -0
- package/dist/lib/focus/policy-components.js +94 -0
- package/dist/lib/focus/policy-components.js.map +7 -0
- package/dist/lib/focus/types.d.ts +37 -0
- package/dist/lib/focus/types.js +7 -0
- package/dist/lib/focus/types.js.map +7 -0
- package/dist/lib/geometry/circle.d.ts +22 -0
- package/dist/lib/geometry/circle.js +13 -0
- package/dist/lib/geometry/circle.js.map +7 -0
- package/dist/lib/geometry/circular-sweep.d.ts +54 -0
- package/dist/lib/geometry/circular-sweep.js +95 -0
- package/dist/lib/geometry/circular-sweep.js.map +7 -0
- package/dist/lib/geometry/ellipse.d.ts +26 -0
- package/dist/lib/geometry/ellipse.js +17 -0
- package/dist/lib/geometry/ellipse.js.map +7 -0
- package/dist/lib/geometry/line.d.ts +20 -0
- package/dist/lib/geometry/line.js +15 -0
- package/dist/lib/geometry/line.js.map +7 -0
- package/dist/lib/geometry/path-arc.d.ts +25 -0
- package/dist/lib/geometry/path-arc.js +57 -0
- package/dist/lib/geometry/path-arc.js.map +7 -0
- package/dist/lib/geometry/path-bend-guide.d.ts +31 -0
- package/dist/lib/geometry/path-bend-guide.js +282 -0
- package/dist/lib/geometry/path-bend-guide.js.map +7 -0
- package/dist/lib/geometry/path-bend-spans.d.ts +31 -0
- package/dist/lib/geometry/path-bend-spans.js +109 -0
- package/dist/lib/geometry/path-bend-spans.js.map +7 -0
- package/dist/lib/geometry/path-bending.d.ts +90 -0
- package/dist/lib/geometry/path-bending.js +202 -0
- package/dist/lib/geometry/path-bending.js.map +7 -0
- package/dist/lib/geometry/path-conversion.d.ts +19 -0
- package/dist/lib/geometry/path-conversion.js +114 -0
- package/dist/lib/geometry/path-conversion.js.map +7 -0
- package/dist/lib/geometry/path-geometry.d.ts +218 -0
- package/dist/lib/geometry/path-geometry.js +557 -0
- package/dist/lib/geometry/path-geometry.js.map +7 -0
- package/dist/lib/geometry/path-radial.d.ts +15 -0
- package/dist/lib/geometry/path-radial.js +107 -0
- package/dist/lib/geometry/path-radial.js.map +7 -0
- package/dist/lib/geometry/path-transforms.d.ts +233 -0
- package/dist/lib/geometry/path-transforms.js +478 -0
- package/dist/lib/geometry/path-transforms.js.map +7 -0
- package/dist/lib/geometry/path-utilities.d.ts +78 -0
- package/dist/lib/geometry/path-utilities.js +341 -0
- package/dist/lib/geometry/path-utilities.js.map +7 -0
- package/dist/lib/geometry/path-wang.d.ts +18 -0
- package/dist/lib/geometry/path-wang.js +136 -0
- package/dist/lib/geometry/path-wang.js.map +7 -0
- package/dist/lib/geometry/path-warp-bezier.d.ts +17 -0
- package/dist/lib/geometry/path-warp-bezier.js +109 -0
- package/dist/lib/geometry/path-warp-bezier.js.map +7 -0
- package/dist/lib/geometry/path-warp.d.ts +27 -0
- package/dist/lib/geometry/path-warp.js +165 -0
- package/dist/lib/geometry/path-warp.js.map +7 -0
- package/dist/lib/geometry/polygon.d.ts +21 -0
- package/dist/lib/geometry/polygon.js +12 -0
- package/dist/lib/geometry/polygon.js.map +7 -0
- package/dist/lib/geometry/rectangle.d.ts +38 -0
- package/dist/lib/geometry/rectangle.js +22 -0
- package/dist/lib/geometry/rectangle.js.map +7 -0
- package/dist/lib/geometry/regular-polygon.d.ts +88 -0
- package/dist/lib/geometry/regular-polygon.js +67 -0
- package/dist/lib/geometry/regular-polygon.js.map +7 -0
- package/dist/lib/geometry/resolve-path.d.ts +4 -0
- package/dist/lib/geometry/resolve-path.js +16 -0
- package/dist/lib/geometry/resolve-path.js.map +7 -0
- package/dist/lib/geometry/rounded-corners.d.ts +28 -0
- package/dist/lib/geometry/rounded-corners.js +118 -0
- package/dist/lib/geometry/rounded-corners.js.map +7 -0
- package/dist/lib/geometry/star.d.ts +39 -0
- package/dist/lib/geometry/star.js +90 -0
- package/dist/lib/geometry/star.js.map +7 -0
- package/dist/lib/geometry/svg-path.d.ts +21 -0
- package/dist/lib/geometry/svg-path.js +7 -0
- package/dist/lib/geometry/svg-path.js.map +7 -0
- package/dist/lib/geometry/transform-bend.d.ts +46 -0
- package/dist/lib/geometry/transform-bend.js +219 -0
- package/dist/lib/geometry/transform-bend.js.map +7 -0
- package/dist/lib/geometry/transform-guide.d.ts +57 -0
- package/dist/lib/geometry/transform-guide.js +157 -0
- package/dist/lib/geometry/transform-guide.js.map +7 -0
- package/dist/lib/geometry/transform-math.d.ts +21 -0
- package/dist/lib/geometry/transform-math.js +91 -0
- package/dist/lib/geometry/transform-math.js.map +7 -0
- package/dist/lib/geometry/transform-mesh.d.ts +39 -0
- package/dist/lib/geometry/transform-mesh.js +129 -0
- package/dist/lib/geometry/transform-mesh.js.map +7 -0
- package/dist/lib/geometry/validation.d.ts +6 -0
- package/dist/lib/geometry/validation.js +42 -0
- package/dist/lib/geometry/validation.js.map +7 -0
- package/dist/lib/global-state.d.ts +63 -0
- package/dist/lib/global-state.js +176 -0
- package/dist/lib/global-state.js.map +7 -0
- package/dist/lib/hooks/hook-slot.d.ts +30 -0
- package/dist/lib/hooks/hook-slot.js +66 -0
- package/dist/lib/hooks/hook-slot.js.map +7 -0
- package/dist/lib/hooks/use-animated-value.d.ts +24 -0
- package/dist/lib/hooks/use-animated-value.js +169 -0
- package/dist/lib/hooks/use-animated-value.js.map +7 -0
- package/dist/lib/hooks/use-canvas-context.d.ts +10 -0
- package/dist/lib/hooks/use-canvas-context.js +13 -0
- package/dist/lib/hooks/use-canvas-context.js.map +7 -0
- package/dist/lib/hooks/use-computed.d.ts +13 -0
- package/dist/lib/hooks/use-computed.js +91 -0
- package/dist/lib/hooks/use-computed.js.map +7 -0
- package/dist/lib/hooks/use-const.d.ts +10 -0
- package/dist/lib/hooks/use-const.js +15 -0
- package/dist/lib/hooks/use-const.js.map +7 -0
- package/dist/lib/hooks/use-cursor.d.ts +16 -0
- package/dist/lib/hooks/use-cursor.js +51 -0
- package/dist/lib/hooks/use-cursor.js.map +7 -0
- package/dist/lib/hooks/use-event-listener.d.ts +10 -0
- package/dist/lib/hooks/use-event-listener.js +24 -0
- package/dist/lib/hooks/use-event-listener.js.map +7 -0
- package/dist/lib/hooks/use-event-target.d.ts +14 -0
- package/dist/lib/hooks/use-event-target.js +30 -0
- package/dist/lib/hooks/use-event-target.js.map +7 -0
- package/dist/lib/hooks/use-layout-box.d.ts +9 -0
- package/dist/lib/hooks/use-layout-box.js +8 -0
- package/dist/lib/hooks/use-layout-box.js.map +7 -0
- package/dist/lib/hooks/use-line-path.d.ts +14 -0
- package/dist/lib/hooks/use-line-path.js +13 -0
- package/dist/lib/hooks/use-line-path.js.map +7 -0
- package/dist/lib/hooks/use-paint-target.d.ts +3 -0
- package/dist/lib/hooks/use-paint-target.js +34 -0
- package/dist/lib/hooks/use-paint-target.js.map +7 -0
- package/dist/lib/hooks/use-playback.d.ts +21 -0
- package/dist/lib/hooks/use-playback.js +87 -0
- package/dist/lib/hooks/use-playback.js.map +7 -0
- package/dist/lib/hooks/use-reaction.d.ts +19 -0
- package/dist/lib/hooks/use-reaction.js +245 -0
- package/dist/lib/hooks/use-reaction.js.map +7 -0
- package/dist/lib/hooks/use-rect-path.d.ts +20 -0
- package/dist/lib/hooks/use-rect-path.js +25 -0
- package/dist/lib/hooks/use-rect-path.js.map +7 -0
- package/dist/lib/hooks/use-ref.d.ts +17 -0
- package/dist/lib/hooks/use-ref.js +8 -0
- package/dist/lib/hooks/use-ref.js.map +7 -0
- package/dist/lib/hooks/use-region.d.ts +11 -0
- package/dist/lib/hooks/use-region.js +34 -0
- package/dist/lib/hooks/use-region.js.map +7 -0
- package/dist/lib/hooks/use-signal.d.ts +12 -0
- package/dist/lib/hooks/use-signal.js +12 -0
- package/dist/lib/hooks/use-signal.js.map +7 -0
- package/dist/lib/hooks/use-svg-path.d.ts +11 -0
- package/dist/lib/hooks/use-svg-path.js +13 -0
- package/dist/lib/hooks/use-svg-path.js.map +7 -0
- package/dist/lib/hooks/use-value-memo-slot.d.ts +12 -0
- package/dist/lib/hooks/use-value-memo-slot.js +45 -0
- package/dist/lib/hooks/use-value-memo-slot.js.map +7 -0
- package/dist/lib/hooks/use-visibility-transition.d.ts +103 -0
- package/dist/lib/hooks/use-visibility-transition.js +195 -0
- package/dist/lib/hooks/use-visibility-transition.js.map +7 -0
- package/dist/lib/html/html-service.d.ts +30 -0
- package/dist/lib/html/html-service.js +281 -0
- package/dist/lib/html/html-service.js.map +7 -0
- package/dist/lib/html/overlay-config.d.ts +3 -0
- package/dist/lib/html/overlay-config.js +37 -0
- package/dist/lib/html/overlay-config.js.map +7 -0
- package/dist/lib/html/portable-clips.d.ts +4 -0
- package/dist/lib/html/portable-clips.js +20 -0
- package/dist/lib/html/portable-clips.js.map +7 -0
- package/dist/lib/html/types.d.ts +110 -0
- package/dist/lib/layout/absolute.d.ts +57 -0
- package/dist/lib/layout/absolute.js +348 -0
- package/dist/lib/layout/absolute.js.map +7 -0
- package/dist/lib/layout/box.d.ts +19 -0
- package/dist/lib/layout/box.js +209 -0
- package/dist/lib/layout/box.js.map +7 -0
- package/dist/lib/layout/context.d.ts +13 -0
- package/dist/lib/layout/context.js +42 -0
- package/dist/lib/layout/context.js.map +7 -0
- package/dist/lib/layout/diagnostics.d.ts +15 -0
- package/dist/lib/layout/diagnostics.js +30 -0
- package/dist/lib/layout/diagnostics.js.map +7 -0
- package/dist/lib/layout/flex.d.ts +64 -0
- package/dist/lib/layout/flex.js +803 -0
- package/dist/lib/layout/flex.js.map +7 -0
- package/dist/lib/layout/flow.d.ts +53 -0
- package/dist/lib/layout/flow.js +400 -0
- package/dist/lib/layout/flow.js.map +7 -0
- package/dist/lib/layout/grid.d.ts +64 -0
- package/dist/lib/layout/grid.js +597 -0
- package/dist/lib/layout/grid.js.map +7 -0
- package/dist/lib/layout/measure.d.ts +19 -0
- package/dist/lib/layout/measure.js +144 -0
- package/dist/lib/layout/measure.js.map +7 -0
- package/dist/lib/layout/overlay.d.ts +42 -0
- package/dist/lib/layout/overlay.js +151 -0
- package/dist/lib/layout/overlay.js.map +7 -0
- package/dist/lib/layout/place-child.d.ts +12 -0
- package/dist/lib/layout/place-child.js +72 -0
- package/dist/lib/layout/place-child.js.map +7 -0
- package/dist/lib/layout/positioning-diagnostics.d.ts +3 -0
- package/dist/lib/layout/positioning-diagnostics.js +15 -0
- package/dist/lib/layout/positioning-diagnostics.js.map +7 -0
- package/dist/lib/layout/types.d.ts +78 -0
- package/dist/lib/manipulation/controller-types.d.ts +299 -0
- package/dist/lib/manipulation/controller.d.ts +57 -0
- package/dist/lib/manipulation/controller.js +464 -0
- package/dist/lib/manipulation/controller.js.map +7 -0
- package/dist/lib/manipulation/coordinates.d.ts +9 -0
- package/dist/lib/manipulation/coordinates.js +55 -0
- package/dist/lib/manipulation/coordinates.js.map +7 -0
- package/dist/lib/manipulation/degrees.d.ts +10 -0
- package/dist/lib/manipulation/degrees.js +9 -0
- package/dist/lib/manipulation/degrees.js.map +7 -0
- package/dist/lib/manipulation/frame.d.ts +24 -0
- package/dist/lib/manipulation/frame.js +101 -0
- package/dist/lib/manipulation/frame.js.map +7 -0
- package/dist/lib/manipulation/geometry.d.ts +4 -0
- package/dist/lib/manipulation/geometry.js +26 -0
- package/dist/lib/manipulation/geometry.js.map +7 -0
- package/dist/lib/manipulation/handles.d.ts +298 -0
- package/dist/lib/manipulation/handles.js +598 -0
- package/dist/lib/manipulation/handles.js.map +7 -0
- package/dist/lib/manipulation/manipulable.d.ts +65 -0
- package/dist/lib/manipulation/manipulable.js +47 -0
- package/dist/lib/manipulation/manipulable.js.map +7 -0
- package/dist/lib/manipulation/ownership.d.ts +15 -0
- package/dist/lib/manipulation/ownership.js +80 -0
- package/dist/lib/manipulation/ownership.js.map +7 -0
- package/dist/lib/manipulation/snap.d.ts +6 -0
- package/dist/lib/manipulation/snap.js +40 -0
- package/dist/lib/manipulation/snap.js.map +7 -0
- package/dist/lib/manipulation/solve.d.ts +2 -0
- package/dist/lib/manipulation/solve.js +563 -0
- package/dist/lib/manipulation/solve.js.map +7 -0
- package/dist/lib/manipulation/types.d.ts +178 -0
- package/dist/lib/mount-pibbl.d.ts +25 -0
- package/dist/lib/mount-pibbl.js +278 -0
- package/dist/lib/mount-pibbl.js.map +7 -0
- package/dist/lib/optional-services.d.ts +8 -0
- package/dist/lib/optional-services.js +11 -0
- package/dist/lib/optional-services.js.map +7 -0
- package/dist/lib/pibbl.d.ts +17 -0
- package/dist/lib/pibbl.js +21 -0
- package/dist/lib/pibbl.js.map +7 -0
- package/dist/lib/primitive-presentation.d.ts +24 -0
- package/dist/lib/primitive-presentation.js +102 -0
- package/dist/lib/primitive-presentation.js.map +7 -0
- package/dist/lib/render-layer/controller.d.ts +67 -0
- package/dist/lib/render-layer/controller.js +603 -0
- package/dist/lib/render-layer/controller.js.map +7 -0
- package/dist/lib/render-layer/define-render-layer.d.ts +17 -0
- package/dist/lib/render-layer/define-render-layer.js +90 -0
- package/dist/lib/render-layer/define-render-layer.js.map +7 -0
- package/dist/lib/render-layer/types.d.ts +315 -0
- package/dist/lib/render-target.d.ts +27 -0
- package/dist/lib/render-target.js +118 -0
- package/dist/lib/render-target.js.map +7 -0
- package/dist/lib/render-transaction.d.ts +10 -0
- package/dist/lib/render-transaction.js +46 -0
- package/dist/lib/render-transaction.js.map +7 -0
- package/dist/lib/render.d.ts +3 -0
- package/dist/lib/render.js +385 -0
- package/dist/lib/render.js.map +7 -0
- package/dist/lib/scheduler/realm-scheduler.d.ts +52 -0
- package/dist/lib/scheduler/realm-scheduler.js +964 -0
- package/dist/lib/scheduler/realm-scheduler.js.map +7 -0
- package/dist/lib/scheduler/renderer-participant.d.ts +257 -0
- package/dist/lib/scheduler/renderer-participant.js +216 -0
- package/dist/lib/scheduler/renderer-participant.js.map +7 -0
- package/dist/lib/scheduler/simulation-participant.d.ts +103 -0
- package/dist/lib/scheduler/simulation-participant.js +229 -0
- package/dist/lib/scheduler/simulation-participant.js.map +7 -0
- package/dist/lib/scheduler/testing.d.ts +56 -0
- package/dist/lib/scheduler/testing.js +71 -0
- package/dist/lib/scheduler/testing.js.map +7 -0
- package/dist/lib/scheduler/types.d.ts +103 -0
- package/dist/lib/signals/edge.d.ts +44 -0
- package/dist/lib/signals/edge.js +245 -0
- package/dist/lib/signals/edge.js.map +7 -0
- package/dist/lib/signals/graph.d.ts +220 -0
- package/dist/lib/signals/graph.js +1035 -0
- package/dist/lib/signals/graph.js.map +7 -0
- package/dist/lib/signals/input-provision.d.ts +3 -0
- package/dist/lib/signals/input-provision.js +67 -0
- package/dist/lib/signals/input-provision.js.map +7 -0
- package/dist/lib/signals/render-consumer.d.ts +21 -0
- package/dist/lib/signals/render-consumer.js +218 -0
- package/dist/lib/signals/render-consumer.js.map +7 -0
- package/dist/lib/signals/resolve-signal-value.d.ts +10 -0
- package/dist/lib/signals/resolve-signal-value.js +17 -0
- package/dist/lib/signals/resolve-signal-value.js.map +7 -0
- package/dist/lib/signals/types.d.ts +80 -0
- package/dist/lib/style/diagnostics.d.ts +83 -0
- package/dist/lib/style/diagnostics.js +63 -0
- package/dist/lib/style/diagnostics.js.map +7 -0
- package/dist/lib/style/empty-style.d.ts +3 -0
- package/dist/lib/style/empty-style.js +5 -0
- package/dist/lib/style/empty-style.js.map +7 -0
- package/dist/lib/style/filter-types.d.ts +243 -0
- package/dist/lib/style/filter-types.js +5 -0
- package/dist/lib/style/filter-types.js.map +7 -0
- package/dist/lib/style/filter.d.ts +7 -0
- package/dist/lib/style/filter.js +50 -0
- package/dist/lib/style/filter.js.map +7 -0
- package/dist/lib/style/normalize.d.ts +18 -0
- package/dist/lib/style/normalize.js +50 -0
- package/dist/lib/style/normalize.js.map +7 -0
- package/dist/lib/style/positioning.d.ts +32 -0
- package/dist/lib/style/positioning.js +81 -0
- package/dist/lib/style/positioning.js.map +7 -0
- package/dist/lib/style/resolve-built-in.d.ts +6 -0
- package/dist/lib/style/resolve-built-in.js +58 -0
- package/dist/lib/style/resolve-built-in.js.map +7 -0
- package/dist/lib/style/resolve-dispatch.d.ts +20 -0
- package/dist/lib/style/resolve-dispatch.js +167 -0
- package/dist/lib/style/resolve-dispatch.js.map +7 -0
- package/dist/lib/style/resolve-length.d.ts +16 -0
- package/dist/lib/style/resolve-length.js +54 -0
- package/dist/lib/style/resolve-length.js.map +7 -0
- package/dist/lib/style/responsive.d.ts +31 -0
- package/dist/lib/style/responsive.js +172 -0
- package/dist/lib/style/responsive.js.map +7 -0
- package/dist/lib/style/types.d.ts +338 -0
- package/dist/lib/surface/resolve-surface.d.ts +4 -0
- package/dist/lib/surface/resolve-surface.js +184 -0
- package/dist/lib/surface/resolve-surface.js.map +7 -0
- package/dist/lib/surface/root-surface.d.ts +7 -0
- package/dist/lib/surface/root-surface.js +171 -0
- package/dist/lib/surface/root-surface.js.map +7 -0
- package/dist/lib/surface/transform.d.ts +4 -0
- package/dist/lib/surface/transform.js +16 -0
- package/dist/lib/surface/transform.js.map +7 -0
- package/dist/lib/surface/types.d.ts +132 -0
- package/dist/lib/teardowns.d.ts +14 -0
- package/dist/lib/teardowns.js +50 -0
- package/dist/lib/teardowns.js.map +7 -0
- package/dist/lib/textures/texture-protocol.d.ts +124 -0
- package/dist/lib/textures/texture-protocol.js +40 -0
- package/dist/lib/textures/texture-protocol.js.map +7 -0
- package/dist/lib/textures/texture.d.ts +170 -0
- package/dist/lib/textures/texture.js +385 -0
- package/dist/lib/textures/texture.js.map +7 -0
- package/dist/lib/transitions/bifrost.d.ts +47 -0
- package/dist/lib/transitions/bifrost.js +91 -0
- package/dist/lib/transitions/bifrost.js.map +7 -0
- package/dist/lib/transitions/binding.d.ts +14 -0
- package/dist/lib/transitions/binding.js +35 -0
- package/dist/lib/transitions/binding.js.map +7 -0
- package/dist/lib/transitions/capture.d.ts +21 -0
- package/dist/lib/transitions/capture.js +91 -0
- package/dist/lib/transitions/capture.js.map +7 -0
- package/dist/lib/transitions/common.d.ts +130 -0
- package/dist/lib/transitions/common.js +57 -0
- package/dist/lib/transitions/common.js.map +7 -0
- package/dist/lib/transitions/define-transition.d.ts +64 -0
- package/dist/lib/transitions/define-transition.js +31 -0
- package/dist/lib/transitions/define-transition.js.map +7 -0
- package/dist/lib/transitions/embers-physics.d.ts +114 -0
- package/dist/lib/transitions/embers-physics.js +161 -0
- package/dist/lib/transitions/embers-physics.js.map +7 -0
- package/dist/lib/transitions/embers.d.ts +67 -0
- package/dist/lib/transitions/embers.js +196 -0
- package/dist/lib/transitions/embers.js.map +7 -0
- package/dist/lib/transitions/fade.d.ts +41 -0
- package/dist/lib/transitions/fade.js +31 -0
- package/dist/lib/transitions/fade.js.map +7 -0
- package/dist/lib/transitions/hologram.d.ts +47 -0
- package/dist/lib/transitions/hologram.js +94 -0
- package/dist/lib/transitions/hologram.js.map +7 -0
- package/dist/lib/transitions/wasm/bifrost-bytes.d.ts +1 -0
- package/dist/lib/transitions/wasm/bifrost-bytes.js +5 -0
- package/dist/lib/transitions/wasm/bifrost-bytes.js.map +7 -0
- package/dist/lib/transitions/wasm/bifrost-kernel.d.ts +1 -0
- package/dist/lib/transitions/wasm/bifrost-kernel.js +27 -0
- package/dist/lib/transitions/wasm/bifrost-kernel.js.map +7 -0
- package/dist/lib/transitions/wasm/embers-bytes.d.ts +1 -0
- package/dist/lib/transitions/wasm/embers-bytes.js +5 -0
- package/dist/lib/transitions/wasm/embers-bytes.js.map +7 -0
- package/dist/lib/transitions/wasm/hologram-bytes.d.ts +1 -0
- package/dist/lib/transitions/wasm/hologram-bytes.js +5 -0
- package/dist/lib/transitions/wasm/hologram-bytes.js.map +7 -0
- package/dist/lib/transitions/wasm/kernel.d.ts +7 -0
- package/dist/lib/transitions/wasm/kernel.js +26 -0
- package/dist/lib/transitions/wasm/kernel.js.map +7 -0
- package/dist/lib/types.d.ts +570 -0
- package/dist/lib/update.d.ts +8 -0
- package/dist/lib/update.js +20 -0
- package/dist/lib/update.js.map +7 -0
- package/dist/lib/util/get-2d-context.d.ts +2 -0
- package/dist/lib/util/get-2d-context.js +11 -0
- package/dist/lib/util/get-2d-context.js.map +7 -0
- package/dist/lib/util/get-mouse-coordinates.d.ts +2 -0
- package/dist/lib/util/get-mouse-coordinates.js +32 -0
- package/dist/lib/util/get-mouse-coordinates.js.map +7 -0
- package/dist/lib/util/is-hit.d.ts +11 -0
- package/dist/lib/util/is-hit.js +52 -0
- package/dist/lib/util/is-hit.js.map +7 -0
- package/dist/lib/util/is-transparent.d.ts +1 -0
- package/dist/lib/util/is-transparent.js +8 -0
- package/dist/lib/util/is-transparent.js.map +7 -0
- package/dist/lib/util/pixel-grid-adjustments.d.ts +8 -0
- package/dist/lib/util/pixel-grid-adjustments.js +28 -0
- package/dist/lib/util/pixel-grid-adjustments.js.map +7 -0
- package/dist/lib/util/push-clipping-path.d.ts +6 -0
- package/dist/lib/util/push-clipping-path.js +28 -0
- package/dist/lib/util/push-clipping-path.js.map +7 -0
- package/dist/lib/util/wire-common-events.d.ts +2 -0
- package/dist/lib/util/wire-common-events.js +15 -0
- package/dist/lib/util/wire-common-events.js.map +7 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +7 -0
- package/dist/types.mjs +1 -0
- package/package.json +149 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/features/particles/lib/flow/field.ts"],
|
|
4
|
+
"sourcesContent": ["export interface FlowSource2D {\n readonly x: number;\n readonly y: number;\n readonly radius: number;\n readonly acceleration?: readonly [number, number];\n /** Normalized heat injected per second; carried and dissipated by the field. */\n readonly heat?: number;\n}\nconst EMPTY_GEOMETRY = new Float64Array(0);\nexport interface FlowObstacleGeometry2D {\n readonly boxes?: Float64Array;\n readonly ellipses?: Float64Array;\n /** count, vx, vy, omega, COM x/y, followed by interleaved world vertices. */\n readonly polygons?: Float64Array;\n}\nconst NO_SOURCES: readonly FlowSource2D[] = Object.freeze([]);\n\n/**\n * Renderer-independent MAC grid. Velocities are logical units/second; pressure\n * stores the velocity potential (dt / density folded in). Open domain edges\n * use zero pressure. Solids prescribe face-normal velocity (free slip).\n * All numerical storage is allocated once; advancement and sampling allocate\n * no per-cell or per-particle objects. This kernel owns no clock or WASM memory.\n */\nexport class FlowFieldKernel2D {\n private u: Float32Array;\n private v: Float32Array;\n private nextU: Float32Array;\n private nextV: Float32Array;\n private readonly solid: Uint8Array;\n private readonly wallU: Float32Array;\n private readonly wallV: Float32Array;\n private readonly fixedU: Uint8Array;\n private readonly fixedV: Uint8Array;\n private readonly pressure: Float32Array;\n private readonly divergence: Float32Array;\n private readonly neighbors: Uint32Array;\n private readonly inverseWeight: Float64Array;\n private readonly solveOrder: Uint32Array;\n private solveCount = 0;\n private readonly cellVX: Float32Array;\n private readonly cellVY: Float32Array;\n private temperature: Float32Array;\n private nextTemperature: Float32Array;\n readonly dx: number;\n readonly dy: number;\n projectionIterations = 0;\n projectionResidual = 0;\n\n constructor(\n readonly columns: number,\n readonly rows: number,\n readonly width: number,\n readonly height: number,\n ) {\n if (\n !Number.isInteger(columns) ||\n !Number.isInteger(rows) ||\n columns < 4 ||\n rows < 4 ||\n columns * rows > 1_048_576 ||\n !Number.isFinite(width) ||\n !Number.isFinite(height) ||\n width <= 0 ||\n height <= 0\n ) {\n throw new RangeError(\n \"Flow grid requires finite positive bounds and 4+ cells per axis (at most 1048576 cells).\",\n );\n }\n this.dx = width / columns;\n this.dy = height / rows;\n const cells = columns * rows;\n this.u = new Float32Array((columns + 1) * rows);\n this.v = new Float32Array(columns * (rows + 1));\n this.nextU = new Float32Array(this.u.length);\n this.nextV = new Float32Array(this.v.length);\n this.wallU = new Float32Array(this.u.length);\n this.wallV = new Float32Array(this.v.length);\n this.fixedU = new Uint8Array(this.u.length);\n this.fixedV = new Uint8Array(this.v.length);\n this.solid = new Uint8Array(cells);\n this.pressure = new Float32Array(cells + 1); // final entry is the zero-pressure sentinel\n this.neighbors = new Uint32Array(cells * 4);\n this.inverseWeight = new Float64Array(cells);\n this.solveOrder = new Uint32Array(cells);\n this.divergence = new Float32Array(cells);\n this.cellVX = new Float32Array(cells);\n this.cellVY = new Float32Array(cells);\n this.temperature = new Float32Array(cells);\n this.nextTemperature = new Float32Array(cells);\n this.rebuildStencil();\n }\n\n /** Copy committed state into a reusable candidate before a transactional frame. */\n copyFrom(other: FlowFieldKernel2D): void {\n if (\n this.columns !== other.columns ||\n this.rows !== other.rows ||\n this.width !== other.width ||\n this.height !== other.height\n ) {\n throw new RangeError(\"Cannot copy differently sized flow fields.\");\n }\n this.u.set(other.u);\n this.v.set(other.v);\n this.solid.set(other.solid);\n this.wallU.set(other.wallU);\n this.wallV.set(other.wallV);\n this.fixedU.set(other.fixedU);\n this.fixedV.set(other.fixedV);\n this.pressure.set(other.pressure);\n this.neighbors.set(other.neighbors);\n this.inverseWeight.set(other.inverseWeight);\n this.solveOrder.set(other.solveOrder);\n this.solveCount = other.solveCount;\n this.cellVX.set(other.cellVX);\n this.cellVY.set(other.cellVY);\n this.temperature.set(other.temperature);\n this.projectionIterations = other.projectionIterations;\n this.projectionResidual = other.projectionResidual;\n }\n\n get byteLength(): number {\n return (\n this.u.byteLength +\n this.v.byteLength +\n this.nextU.byteLength +\n this.nextV.byteLength +\n this.wallU.byteLength +\n this.wallV.byteLength +\n this.fixedU.byteLength +\n this.fixedV.byteLength +\n this.solid.byteLength +\n this.pressure.byteLength +\n this.divergence.byteLength +\n this.neighbors.byteLength +\n this.inverseWeight.byteLength +\n this.solveOrder.byteLength +\n this.cellVX.byteLength +\n this.cellVY.byteLength +\n this.temperature.byteLength +\n this.nextTemperature.byteLength\n );\n }\n\n /** Packed boxes: cx, cy, hx, hy, angle radians, vx, vy, omega, COM x, COM y.\n * Copies into grid storage; the caller retains and may reuse its own buffer.\n * Overlapping solids resolve in batch order, with the last solid owning motion.\n */\n setBoxes(boxes: Float64Array): void {\n this.setObstacles({ boxes });\n }\n\n setObstacles(geometry: FlowObstacleGeometry2D): void {\n const boxes = geometry.boxes ?? EMPTY_GEOMETRY;\n const ellipses = geometry.ellipses ?? EMPTY_GEOMETRY;\n const polygons = geometry.polygons ?? EMPTY_GEOMETRY;\n for (let kind = 0; kind < 2; kind++) {\n const packed = kind === 0 ? boxes : ellipses;\n if (packed.length % 10 !== 0)\n throw new RangeError(\"Malformed flow obstacle batch.\");\n for (let i = 0; i < packed.length; i++) {\n if (!Number.isFinite(packed[i]))\n throw new RangeError(\"Flow obstacle values must be finite.\");\n if ((i % 10 === 2 || i % 10 === 3) && packed[i]! <= 0)\n throw new RangeError(\"Flow obstacle extents must be positive.\");\n }\n }\n for (let at = 0; at < polygons.length;) {\n const count = polygons[at]!;\n const end = at + 6 + count * 2;\n if (!Number.isInteger(count) || count < 3 || end > polygons.length)\n throw new RangeError(\"Malformed flow polygon batch.\");\n for (let i = at; i < end; i++)\n if (!Number.isFinite(polygons[i]))\n throw new RangeError(\"Flow polygon values must be finite.\");\n at = end;\n }\n const { columns: nx, rows: ny, dx, dy } = this;\n this.solid.fill(0);\n this.cellVX.fill(0);\n this.cellVY.fill(0);\n for (let kind = 0; kind < 2; kind++) {\n const packed = kind === 0 ? boxes : ellipses;\n for (let b = 0; b < packed.length; b += 10) {\n const cx = packed[b]!,\n cy = packed[b + 1]!;\n const hx = packed[b + 2]!,\n hy = packed[b + 3]!;\n const c = Math.cos(packed[b + 4]!),\n s = Math.sin(packed[b + 4]!);\n const ex = Math.abs(c) * hx + Math.abs(s) * hy;\n const ey = Math.abs(s) * hx + Math.abs(c) * hy;\n const x0 = Math.max(0, Math.floor((cx - ex) / dx));\n const x1 = Math.min(nx - 1, Math.floor((cx + ex) / dx));\n const y0 = Math.max(0, Math.floor((cy - ey) / dy));\n const y1 = Math.min(ny - 1, Math.floor((cy + ey) / dy));\n for (let y = y0; y <= y1; y++) {\n for (let x = x0; x <= x1; x++) {\n const px = (x + 0.5) * dx,\n py = (y + 0.5) * dy;\n const rx = px - cx,\n ry = py - cy;\n const localX = (c * rx + s * ry) / hx,\n localY = (-s * rx + c * ry) / hy;\n if (\n kind === 0\n ? Math.abs(localX) > 1 || Math.abs(localY) > 1\n : localX * localX + localY * localY > 1\n )\n continue;\n const i = y * nx + x;\n this.solid[i] = 1;\n // At u faces y equals the cell-center y; at v faces x equals\n // cell-center x, so these are exact normal rigid velocities.\n this.cellVX[i] =\n packed[b + 5]! - packed[b + 7]! * (py - packed[b + 9]!);\n this.cellVY[i] =\n packed[b + 6]! + packed[b + 7]! * (px - packed[b + 8]!);\n }\n }\n }\n }\n for (let at = 0; at < polygons.length;) {\n const count = polygons[at]!,\n first = at + 6,\n end = first + count * 2;\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n for (let v = first; v < end; v += 2) {\n minX = Math.min(minX, polygons[v]!);\n maxX = Math.max(maxX, polygons[v]!);\n minY = Math.min(minY, polygons[v + 1]!);\n maxY = Math.max(maxY, polygons[v + 1]!);\n }\n const x0 = Math.max(0, Math.floor(minX / dx)),\n x1 = Math.min(nx - 1, Math.floor(maxX / dx));\n const y0 = Math.max(0, Math.floor(minY / dy)),\n y1 = Math.min(ny - 1, Math.floor(maxY / dy));\n for (let y = y0; y <= y1; y++)\n for (let x = x0; x <= x1; x++) {\n const px = (x + 0.5) * dx,\n py = (y + 0.5) * dy;\n let inside = false;\n for (\n let v = first, previous = end - 2;\n v < end;\n previous = v, v += 2\n ) {\n const ax = polygons[v]!,\n ay = polygons[v + 1]!,\n bx = polygons[previous]!,\n by = polygons[previous + 1]!;\n if (\n ay > py !== by > py &&\n px < ((bx - ax) * (py - ay)) / (by - ay) + ax\n )\n inside = !inside;\n }\n if (!inside) continue;\n const i = y * nx + x;\n this.solid[i] = 1;\n this.cellVX[i] =\n polygons[at + 1]! - polygons[at + 3]! * (py - polygons[at + 5]!);\n this.cellVY[i] =\n polygons[at + 2]! + polygons[at + 3]! * (px - polygons[at + 4]!);\n }\n at = end;\n }\n for (let y = 0; y < ny; y++) {\n for (let x = 0; x <= nx; x++) {\n const face = y * (nx + 1) + x;\n const left = y * nx + x - 1,\n right = left + 1;\n const cell =\n x > 0 && this.solid[left]\n ? left\n : x < nx && this.solid[right]\n ? right\n : -1;\n // A newly uncovered face starts at its last boundary velocity.\n this.fixedU[face] = cell >= 0 ? 1 : 0;\n this.wallU[face] = cell >= 0 ? this.cellVX[cell]! : 0;\n }\n }\n for (let y = 0; y <= ny; y++) {\n for (let x = 0; x < nx; x++) {\n const face = y * nx + x;\n const above = face - nx,\n below = face;\n const cell =\n y > 0 && this.solid[above]\n ? above\n : y < ny && this.solid[below]\n ? below\n : -1;\n this.fixedV[face] = cell >= 0 ? 1 : 0;\n this.wallV[face] = cell >= 0 ? this.cellVY[cell]! : 0;\n }\n }\n this.enforceWalls();\n this.rebuildStencil();\n // Geometry changes invalidate the previous pressure initial guess.\n this.pressure.fill(0);\n }\n\n isSolid(x: number, y: number): boolean {\n const ix = Math.floor(x / this.dx),\n iy = Math.floor(y / this.dy);\n return (\n ix >= 0 &&\n ix < this.columns &&\n iy >= 0 &&\n iy < this.rows &&\n this.solid[iy * this.columns + ix] === 1\n );\n }\n\n private interpolate(\n data: Float32Array,\n nx: number,\n ny: number,\n x: number,\n y: number,\n ): number {\n x = Math.max(0, Math.min(nx - 1, x));\n y = Math.max(0, Math.min(ny - 1, y));\n const ix = Math.floor(x),\n iy = Math.floor(y);\n const jx = Math.min(nx - 1, ix + 1),\n jy = Math.min(ny - 1, iy + 1);\n const fx = x - ix,\n fy = y - iy;\n const a = data[iy * nx + ix]!,\n b = data[iy * nx + jx]!;\n const c = data[jy * nx + ix]!,\n d = data[jy * nx + jx]!;\n return (a + (b - a) * fx) * (1 - fy) + (c + (d - c) * fx) * fy;\n }\n\n private velocityX(x: number, y: number): number {\n return this.interpolate(\n this.u,\n this.columns + 1,\n this.rows,\n x / this.dx,\n y / this.dy - 0.5,\n );\n }\n\n private velocityY(x: number, y: number): number {\n return this.interpolate(\n this.v,\n this.columns,\n this.rows + 1,\n x / this.dx - 0.5,\n y / this.dy,\n );\n }\n\n sampleBatch(\n positions: Float32Array,\n velocities: Float32Array,\n count: number,\n ): void {\n if (\n !Number.isInteger(count) ||\n count < 0 ||\n count * 2 > positions.length ||\n count * 2 > velocities.length\n ) {\n throw new RangeError(\"Flow sample batch exceeds buffer bounds.\");\n }\n for (let i = 0; i < count * 2; i += 2) {\n const x = positions[i]!,\n y = positions[i + 1]!;\n velocities[i] = this.velocityX(x, y);\n velocities[i + 1] = this.velocityY(x, y);\n }\n }\n\n /** Swept grid traversal, O(cells crossed), independent of obstacle count.\n * A particle already covered by a moved solid is left for the population's\n * explicit retire/reseed policy. Domain edges are open.\n */\n moveBatch(\n positions: Float32Array,\n velocities: Float32Array,\n count: number,\n seconds: number,\n ): void {\n if (\n !Number.isInteger(count) ||\n count < 0 ||\n count * 2 > positions.length ||\n count * 2 > velocities.length ||\n !Number.isFinite(seconds) ||\n seconds < 0\n ) {\n throw new RangeError(\"Invalid flow movement batch.\");\n }\n for (let i = 0; i < count * 2; i += 2) {\n const x = positions[i]!,\n y = positions[i + 1]!;\n const sx = velocities[i]! * seconds,\n sy = velocities[i + 1]! * seconds;\n const fraction = this.sweepFraction(x, y, sx, sy);\n positions[i] = x + sx * fraction;\n positions[i + 1] = y + sy * fraction;\n }\n }\n\n private sweepFraction(x: number, y: number, sx: number, sy: number): number {\n if (sx === 0 && sy === 0) return 1;\n // Clip the traversal to the field, including segments starting outside it.\n let enter = 0,\n exit = 1;\n if (sx === 0) {\n if (x < 0 || x >= this.width) return 1;\n } else {\n const a = -x / sx,\n b = (this.width - x) / sx;\n enter = Math.max(enter, Math.min(a, b));\n exit = Math.min(exit, Math.max(a, b));\n }\n if (sy === 0) {\n if (y < 0 || y >= this.height) return 1;\n } else {\n const a = -y / sy,\n b = (this.height - y) / sy;\n enter = Math.max(enter, Math.min(a, b));\n exit = Math.min(exit, Math.max(a, b));\n }\n if (enter > exit) return 1;\n const nx = this.columns,\n ny = this.rows;\n const stepX = sx > 0 ? 1 : -1,\n stepY = sy > 0 ? 1 : -1;\n let cx = Math.min(\n nx - 1,\n Math.max(0, Math.floor((x + sx * enter) / this.dx)),\n );\n let cy = Math.min(\n ny - 1,\n Math.max(0, Math.floor((y + sy * enter) / this.dy)),\n );\n if (this.solid[cy * nx + cx]) return enter;\n let tx = sx === 0 ? Infinity : ((cx + (sx > 0 ? 1 : 0)) * this.dx - x) / sx;\n let ty = sy === 0 ? Infinity : ((cy + (sy > 0 ? 1 : 0)) * this.dy - y) / sy;\n const deltaX = sx === 0 ? Infinity : this.dx / Math.abs(sx);\n const deltaY = sy === 0 ? Infinity : this.dy / Math.abs(sy);\n const clearance =\n (Math.min(this.dx, this.dy) * 0.0001) /\n Math.max(Math.abs(sx), Math.abs(sy));\n while (Math.min(tx, ty) <= exit) {\n const t = Math.min(tx, ty);\n const crossX = tx <= ty,\n crossY = ty <= tx;\n // At a corner, check both side neighbors as well as the diagonal.\n if (crossX) {\n const neighbor = cx + stepX;\n if (neighbor >= 0 && neighbor < nx && this.solid[cy * nx + neighbor])\n return Math.max(0, t - clearance);\n }\n if (crossY) {\n const neighbor = cy + stepY;\n if (neighbor >= 0 && neighbor < ny && this.solid[neighbor * nx + cx])\n return Math.max(0, t - clearance);\n }\n if (crossX) {\n cx += stepX;\n tx += deltaX;\n }\n if (crossY) {\n cy += stepY;\n ty += deltaY;\n }\n if (cx < 0 || cx >= nx || cy < 0 || cy >= ny) return 1;\n if (this.solid[cy * nx + cx]) return Math.max(0, t - clearance);\n }\n return 1;\n }\n\n /** One accepted fixed step. Sources touch only their bounded footprints. */\n advance(\n seconds: number,\n sources: readonly FlowSource2D[] = NO_SOURCES,\n buoyancy = -300,\n ): void {\n if (\n !Number.isFinite(seconds) ||\n seconds <= 0 ||\n seconds > 0.1 ||\n !Number.isFinite(buoyancy)\n ) {\n throw new RangeError(\n \"Flow step and buoyancy must be finite and bounded.\",\n );\n }\n // Preflight every source before touching simulation storage.\n for (const source of sources) {\n if (\n !Number.isFinite(source.x) ||\n !Number.isFinite(source.y) ||\n !Number.isFinite(source.radius) ||\n source.radius <= 0 ||\n !Number.isFinite(source.acceleration?.[0] ?? 0) ||\n !Number.isFinite(source.acceleration?.[1] ?? 0) ||\n !Number.isFinite(source.heat ?? 0) ||\n (source.heat ?? 0) < 0\n ) {\n throw new RangeError(\n \"Flow source must have finite coordinates, positive radius and nonnegative heat.\",\n );\n }\n }\n const { columns: nx, rows: ny, dx, dy } = this;\n const damping = Math.exp(-0.15 * seconds);\n const cooling = Math.exp(-0.3 * seconds);\n for (let y = 0; y < ny; y++) {\n for (let x = 0; x < nx; x++) {\n const i = y * nx + x;\n if (this.solid[i]) {\n this.nextTemperature[i] = 0;\n continue;\n }\n const px = (x + 0.5) * dx,\n py = (y + 0.5) * dy;\n const bx = px - seconds * this.velocityX(px, py);\n const by = py - seconds * this.velocityY(px, py);\n this.nextTemperature[i] =\n bx < 0 ||\n by < 0 ||\n bx >= this.width ||\n by >= this.height ||\n this.isSolid(bx, by)\n ? 0\n : this.interpolate(\n this.temperature,\n nx,\n ny,\n bx / dx - 0.5,\n by / dy - 0.5,\n ) * cooling;\n }\n }\n for (const source of sources) {\n if (!source.heat) continue;\n const inverseRadiusSquared = 1 / (source.radius * source.radius);\n const x0 = Math.max(0, Math.floor((source.x - source.radius) / dx));\n const x1 = Math.min(nx - 1, Math.floor((source.x + source.radius) / dx));\n const y0 = Math.max(0, Math.floor((source.y - source.radius) / dy));\n const y1 = Math.min(ny - 1, Math.floor((source.y + source.radius) / dy));\n for (let y = y0; y <= y1; y++) {\n for (let x = x0; x <= x1; x++) {\n const i = y * nx + x;\n if (this.solid[i]) continue;\n const rx = (x + 0.5) * dx - source.x,\n ry = (y + 0.5) * dy - source.y;\n const falloff = Math.max(\n 0,\n 1 - (rx * rx + ry * ry) * inverseRadiusSquared,\n );\n this.nextTemperature[i] = Math.min(\n 1,\n this.nextTemperature[i]! +\n source.heat * seconds * falloff * falloff,\n );\n }\n }\n }\n const oldTemperature = this.temperature;\n this.temperature = this.nextTemperature;\n this.nextTemperature = oldTemperature;\n for (let y = 0; y < ny; y++) {\n for (let x = 0; x <= nx; x++) {\n const i = y * (nx + 1) + x;\n if (this.fixedU[i]) {\n this.nextU[i] = this.wallU[i]!;\n continue;\n }\n const px = x * dx,\n py = (y + 0.5) * dy;\n const vx = this.u[i]!,\n vy = this.velocityY(px, py);\n const bx = px - seconds * vx,\n by = py - seconds * vy;\n this.nextU[i] =\n (this.isSolid(bx, by) ? vx : this.velocityX(bx, by)) * damping;\n }\n }\n for (let y = 0; y <= ny; y++) {\n for (let x = 0; x < nx; x++) {\n const i = y * nx + x;\n if (this.fixedV[i]) {\n this.nextV[i] = this.wallV[i]!;\n continue;\n }\n const px = (x + 0.5) * dx,\n py = y * dy;\n const vx = this.velocityX(px, py),\n vy = this.v[i]!;\n const bx = px - seconds * vx,\n by = py - seconds * vy;\n // At a face, average only adjacent fluid-cell temperatures.\n const above =\n y > 0 && !this.solid[i - nx] ? this.temperature[i - nx]! : 0;\n const below = y < ny && !this.solid[i] ? this.temperature[i]! : 0;\n this.nextV[i] =\n (this.isSolid(bx, by) ? vy : this.velocityY(bx, by)) * damping +\n seconds * buoyancy * (above + below) * 0.5;\n }\n }\n for (const source of sources) {\n const ax = source.acceleration?.[0] ?? 0,\n ay = source.acceleration?.[1] ?? 0;\n if (ax === 0 && ay === 0) continue;\n const inverseRadiusSquared = 1 / (source.radius * source.radius);\n const x0 = Math.max(0, Math.floor((source.x - source.radius) / dx));\n const x1 = Math.min(nx, Math.ceil((source.x + source.radius) / dx));\n const y0 = Math.max(0, Math.floor((source.y - source.radius) / dy));\n const y1 = Math.min(ny, Math.ceil((source.y + source.radius) / dy));\n for (let y = y0; y <= y1; y++) {\n for (let x = x0; x <= x1; x++) {\n if (ax !== 0 && y < ny) {\n const i = y * (nx + 1) + x;\n if (!this.fixedU[i]) {\n const rx = x * dx - source.x,\n ry = (y + 0.5) * dy - source.y;\n const falloff = Math.max(\n 0,\n 1 - (rx * rx + ry * ry) * inverseRadiusSquared,\n );\n this.nextU[i] += seconds * ax * falloff * falloff;\n }\n }\n if (ay !== 0 && x < nx) {\n const i = y * nx + x;\n if (!this.fixedV[i]) {\n const rx = (x + 0.5) * dx - source.x,\n ry = y * dy - source.y;\n const falloff = Math.max(\n 0,\n 1 - (rx * rx + ry * ry) * inverseRadiusSquared,\n );\n this.nextV[i] += seconds * ay * falloff * falloff;\n }\n }\n }\n }\n }\n const oldU = this.u,\n oldV = this.v;\n this.u = this.nextU;\n this.v = this.nextV;\n this.nextU = oldU;\n this.nextV = oldV;\n this.project();\n }\n\n private enforceWalls(): void {\n for (let i = 0; i < this.u.length; i++)\n if (this.fixedU[i]) this.u[i] = this.wallU[i]!;\n for (let i = 0; i < this.v.length; i++)\n if (this.fixedV[i]) this.v[i] = this.wallV[i]!;\n }\n\n /** Cache the Poisson stencil in red/black order once per obstacle update. */\n private rebuildStencil(): void {\n const {\n columns: nx,\n rows: ny,\n solid,\n neighbors,\n inverseWeight,\n solveOrder,\n } = this;\n const sentinel = nx * ny,\n wx = 1 / (this.dx * this.dx),\n wy = 1 / (this.dy * this.dy);\n let count = 0;\n for (let parity = 0; parity < 2; parity++) {\n for (let y = 0; y < ny; y++) {\n for (let x = (y + parity) & 1; x < nx; x += 2) {\n const i = y * nx + x;\n if (solid[i]) continue;\n let weight = 0;\n const left = x > 0 && !solid[i - 1];\n const right = x < nx - 1 && !solid[i + 1];\n const above = y > 0 && !solid[i - nx];\n const below = y < ny - 1 && !solid[i + nx];\n if (x === 0 || left) weight += wx;\n if (x === nx - 1 || right) weight += wx;\n if (y === 0 || above) weight += wy;\n if (y === ny - 1 || below) weight += wy;\n if (weight === 0) continue;\n neighbors[i * 4] = left ? i - 1 : sentinel;\n neighbors[i * 4 + 1] = right ? i + 1 : sentinel;\n neighbors[i * 4 + 2] = above ? i - nx : sentinel;\n neighbors[i * 4 + 3] = below ? i + nx : sentinel;\n inverseWeight[i] = 1 / weight;\n solveOrder[count++] = i;\n }\n }\n }\n this.solveCount = count;\n }\n\n private project(): void {\n const { columns: nx, rows: ny, dx, dy, pressure: p } = this;\n const wx = 1 / (dx * dx),\n wy = 1 / (dy * dy);\n for (let y = 0; y < ny; y++) {\n for (let x = 0; x < nx; x++) {\n const i = y * nx + x;\n this.divergence[i] =\n (this.u[y * (nx + 1) + x + 1]! - this.u[y * (nx + 1) + x]!) / dx +\n (this.v[i + nx]! - this.v[i]!) / dy;\n }\n }\n // Warm-start red/black SOR. Residual checks avoid burning the full budget\n // on quiet fields; a hard budget keeps worst-case frame work bounded.\n // Free boundaries use p=0; solid neighbors impose Neumann conditions.\n this.projectionIterations = 0;\n for (let iteration = 0; iteration < 80; iteration++) {\n for (let entry = 0; entry < this.solveCount; entry++) {\n const i = this.solveOrder[entry]!,\n offset = i * 4;\n const sum =\n wx * p[this.neighbors[offset]!]! +\n wx * p[this.neighbors[offset + 1]!]! +\n wy * p[this.neighbors[offset + 2]!]! +\n wy * p[this.neighbors[offset + 3]!]!;\n p[i] +=\n 1.7 * ((sum - this.divergence[i]!) * this.inverseWeight[i]! - p[i]!);\n }\n this.projectionIterations = iteration + 1;\n if ((iteration & 7) === 7) {\n this.projectionResidual = this.pressureResidual();\n if (this.projectionResidual <= 0.001) break;\n }\n }\n for (let y = 0; y < ny; y++) {\n for (let x = 0; x <= nx; x++) {\n const i = y * (nx + 1) + x;\n if (this.fixedU[i]) continue;\n this.u[i] -=\n ((x < nx ? p[y * nx + x]! : 0) - (x > 0 ? p[y * nx + x - 1]! : 0)) /\n dx;\n }\n }\n for (let y = 0; y <= ny; y++) {\n for (let x = 0; x < nx; x++) {\n const i = y * nx + x;\n if (this.fixedV[i]) continue;\n this.v[i] -= ((y < ny ? p[i]! : 0) - (y > 0 ? p[i - nx]! : 0)) / dy;\n }\n }\n }\n\n private pressureResidual(): number {\n const { columns: nx, rows: ny, pressure: p, solid } = this;\n const wx = 1 / (this.dx * this.dx),\n wy = 1 / (this.dy * this.dy);\n let maximum = 0;\n for (let y = 0; y < ny; y++) {\n for (let x = 0; x < nx; x++) {\n const i = y * nx + x;\n if (solid[i]) continue;\n const center = p[i]!;\n let laplacian = 0;\n if (x === 0) laplacian -= wx * center;\n else if (!solid[i - 1]) laplacian += wx * (p[i - 1]! - center);\n if (x === nx - 1) laplacian -= wx * center;\n else if (!solid[i + 1]) laplacian += wx * (p[i + 1]! - center);\n if (y === 0) laplacian -= wy * center;\n else if (!solid[i - nx]) laplacian += wy * (p[i - nx]! - center);\n if (y === ny - 1) laplacian -= wy * center;\n else if (!solid[i + nx]) laplacian += wy * (p[i + nx]! - center);\n maximum = Math.max(maximum, Math.abs(laplacian - this.divergence[i]!));\n }\n }\n return maximum;\n }\n\n /** Diagnostic scans; not used by normal advancement. */\n maximumSolidFluxError(): number {\n let error = 0;\n for (let i = 0; i < this.u.length; i++)\n if (this.fixedU[i])\n error = Math.max(error, Math.abs(this.u[i]! - this.wallU[i]!));\n for (let i = 0; i < this.v.length; i++)\n if (this.fixedV[i])\n error = Math.max(error, Math.abs(this.v[i]! - this.wallV[i]!));\n return error;\n }\n\n maximumDivergence(): number {\n let maximum = 0;\n const nx = this.columns;\n for (let y = 0; y < this.rows; y++) {\n for (let x = 0; x < nx; x++) {\n const i = y * nx + x;\n if (this.solid[i]) continue;\n const d =\n (this.u[y * (nx + 1) + x + 1]! - this.u[y * (nx + 1) + x]!) /\n this.dx +\n (this.v[i + nx]! - this.v[i]!) / this.dy;\n maximum = Math.max(maximum, Math.abs(d));\n }\n }\n return maximum;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { PibblParticleSystemOptions } from "../types.js";
|
|
2
|
+
import { type Signal, type SignalValue } from "@pibbl/core";
|
|
3
|
+
import { type PibblInternalSimulationOwner } from "@pibbl/core/internal";
|
|
4
|
+
import { FlowFieldKernel2D, type FlowSource2D } from "./field.js";
|
|
5
|
+
/**
|
|
6
|
+
* Committed obstacle geometry and motion packed into borrowed numeric buffers.
|
|
7
|
+
*
|
|
8
|
+
* @see {@link PibblFlowObstacleSource2D}
|
|
9
|
+
*/
|
|
10
|
+
export interface PibblFlowObstacleBatch2D {
|
|
11
|
+
/**
|
|
12
|
+
* Revision used to detect changes to the underlying state or geometry. See
|
|
13
|
+
* {@link PibblFlowObstacleBatch2D}.
|
|
14
|
+
*/
|
|
15
|
+
readonly revision: number;
|
|
16
|
+
/** cx, cy, halfWidth, halfHeight, radians, vx, vy, omega, COM x/y. */
|
|
17
|
+
readonly boxes: Float64Array;
|
|
18
|
+
/**
|
|
19
|
+
* Packed ellipse obstacle data consumed by the simulation. See {@link PibblFlowObstacleBatch2D}.
|
|
20
|
+
*/
|
|
21
|
+
readonly ellipses?: Float64Array;
|
|
22
|
+
/**
|
|
23
|
+
* Packed polygon obstacle data consumed by the simulation. See {@link PibblFlowObstacleBatch2D}.
|
|
24
|
+
*/
|
|
25
|
+
readonly polygons?: Float64Array;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Supplies committed obstacle batches to a flow field without transferring buffer ownership.
|
|
29
|
+
*
|
|
30
|
+
* @see {@link PibblFlowObstacleBatch2D}
|
|
31
|
+
* @see {@link PibblFlowFieldOptions2D}
|
|
32
|
+
*/
|
|
33
|
+
export interface PibblFlowObstacleSource2D {
|
|
34
|
+
/**
|
|
35
|
+
* Returns committed simulation state. Buffers are borrowed for this call only.
|
|
36
|
+
* @returns The current obstacle revision and packed obstacle geometry. See
|
|
37
|
+
* {@link PibblFlowObstacleBatch2D} .
|
|
38
|
+
*/
|
|
39
|
+
read(): PibblFlowObstacleBatch2D;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Logical bounds, grid resolution, obstacle source, and buoyancy for a flow field.
|
|
43
|
+
*
|
|
44
|
+
* @see {@link PibblFlowObstacleSource2D}
|
|
45
|
+
* @see {@link useFlowField2D}
|
|
46
|
+
*/
|
|
47
|
+
export interface PibblFlowFieldOptions2D {
|
|
48
|
+
/** Logical region constraining the content or query. See {@link PibblFlowFieldOptions2D}. */
|
|
49
|
+
readonly bounds: Readonly<{
|
|
50
|
+
/**
|
|
51
|
+
* Horizontal extent in the units of the containing geometry or surface. See
|
|
52
|
+
* {@link PibblFlowFieldOptions2D}.
|
|
53
|
+
*/
|
|
54
|
+
width: number;
|
|
55
|
+
/**
|
|
56
|
+
* Vertical extent in the units of the containing geometry or surface. See
|
|
57
|
+
* {@link PibblFlowFieldOptions2D}.
|
|
58
|
+
*/
|
|
59
|
+
height: number;
|
|
60
|
+
}>;
|
|
61
|
+
/** Dimensions of the simulation or raster grid. See {@link PibblFlowFieldOptions2D}. */
|
|
62
|
+
readonly resolution: readonly [columns: number, rows: number];
|
|
63
|
+
/**
|
|
64
|
+
* Obstacle geometry used by the flow or water simulation. See {@link PibblFlowObstacleSource2D}.
|
|
65
|
+
*/
|
|
66
|
+
readonly obstacles?: PibblFlowObstacleSource2D;
|
|
67
|
+
/** Strength of heat-driven upward motion in the flow field. See {@link PibblFlowFieldOptions2D}. */
|
|
68
|
+
readonly buoyancy?: number;
|
|
69
|
+
}
|
|
70
|
+
declare const flowBrand: unique symbol;
|
|
71
|
+
/**
|
|
72
|
+
* A mount-owned flow field with revision tracking and batched velocity sampling.
|
|
73
|
+
*
|
|
74
|
+
* @see {@link Signal}
|
|
75
|
+
* @see {@link useFlowField2D}
|
|
76
|
+
* @see {@link useFlowSource2D}
|
|
77
|
+
* @see {@link PibblParticleSystemOptions}
|
|
78
|
+
*/
|
|
79
|
+
export interface PibblFlowField2D {
|
|
80
|
+
readonly [flowBrand]: true;
|
|
81
|
+
/** Revision used to detect changes to the underlying state or geometry. See {@link Signal}. */
|
|
82
|
+
readonly revision: Signal<number>;
|
|
83
|
+
/**
|
|
84
|
+
* Samples velocities for packed position pairs into caller-provided output storage. See
|
|
85
|
+
* {@link PibblFlowField2D}.
|
|
86
|
+
* @param positions - Packed input positions, with two floats per particle.
|
|
87
|
+
* @param velocities - Output buffer receiving sampled velocities, with two floats per particle.
|
|
88
|
+
* @param count - Number of position pairs to sample.
|
|
89
|
+
*/
|
|
90
|
+
sampleBatch(positions: Float32Array, velocities: Float32Array, count: number): void;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Reactive position, radius, acceleration, heat, and enablement of a flow source.
|
|
94
|
+
*
|
|
95
|
+
* @see {@link SignalValue}
|
|
96
|
+
* @see {@link useFlowSource2D}
|
|
97
|
+
*/
|
|
98
|
+
export interface PibblFlowSourceOptions2D {
|
|
99
|
+
/** Position of the geometry, source, or selected resize handle. See {@link SignalValue}. */
|
|
100
|
+
readonly position: SignalValue<readonly [number, number]>;
|
|
101
|
+
/** Radius in the coordinate system of this geometry or effect. See {@link SignalValue}. */
|
|
102
|
+
readonly radius: SignalValue<number>;
|
|
103
|
+
/** Acceleration injected by this flow source. See {@link SignalValue}. */
|
|
104
|
+
readonly acceleration?: SignalValue<readonly [number, number]>;
|
|
105
|
+
/** Heat injected by this flow source. See {@link SignalValue}. */
|
|
106
|
+
readonly heat?: SignalValue<number>;
|
|
107
|
+
/** Whether this operation or resource participates in updates. See {@link SignalValue}. */
|
|
108
|
+
readonly enabled?: SignalValue<boolean>;
|
|
109
|
+
}
|
|
110
|
+
/** Private coupling point; ordinary callers see only the read-only field handle. */
|
|
111
|
+
export declare function getFlowController2D(handle: PibblFlowField2D): FlowController2D;
|
|
112
|
+
export declare class FlowController2D {
|
|
113
|
+
private readonly owner;
|
|
114
|
+
readonly handle: PibblFlowField2D;
|
|
115
|
+
private committed;
|
|
116
|
+
private candidate;
|
|
117
|
+
private readonly revision;
|
|
118
|
+
private readonly sources;
|
|
119
|
+
private sourceList;
|
|
120
|
+
private unregister;
|
|
121
|
+
private lastTime;
|
|
122
|
+
private remainder;
|
|
123
|
+
private obstacleRevision;
|
|
124
|
+
private obstacleSourceChanged;
|
|
125
|
+
private options;
|
|
126
|
+
private consumers;
|
|
127
|
+
constructor(owner: PibblInternalSimulationOwner, options: PibblFlowFieldOptions2D);
|
|
128
|
+
requireActive(): FlowFieldKernel2D;
|
|
129
|
+
validateOptions(options: PibblFlowFieldOptions2D): void;
|
|
130
|
+
adoptOptions(options: PibblFlowFieldOptions2D): void;
|
|
131
|
+
setSource(key: object, source: FlowSource2D | undefined): void;
|
|
132
|
+
retain(): () => void;
|
|
133
|
+
private synchronize;
|
|
134
|
+
dispose(): void;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Creates a mount-owned 2D flow field with configured bounds, resolution, and optional obstacles.
|
|
138
|
+
*
|
|
139
|
+
* @param options - Field dimensions, sampling, decay, and obstacle settings. See
|
|
140
|
+
* {@link PibblFlowFieldOptions2D} .
|
|
141
|
+
* @returns A mount-owned 2D flow field sampled by particle effects. See {@link PibblFlowField2D}.
|
|
142
|
+
*
|
|
143
|
+
* @see {@link PibblFlowFieldOptions2D}
|
|
144
|
+
* @see {@link PibblFlowField2D}
|
|
145
|
+
*/
|
|
146
|
+
export declare function useFlowField2D(options: PibblFlowFieldOptions2D): PibblFlowField2D;
|
|
147
|
+
/**
|
|
148
|
+
* Registers a mount-owned source of acceleration or heat in a flow field.
|
|
149
|
+
*
|
|
150
|
+
* @param field - Flow field receiving this source. See {@link PibblFlowField2D}.
|
|
151
|
+
* @param options - Source position, influence, and strength settings. See
|
|
152
|
+
* {@link PibblFlowSourceOptions2D} .
|
|
153
|
+
*
|
|
154
|
+
* @see {@link PibblFlowField2D}
|
|
155
|
+
* @see {@link PibblFlowSourceOptions2D}
|
|
156
|
+
*/
|
|
157
|
+
export declare function useFlowSource2D(field: PibblFlowField2D, options: PibblFlowSourceOptions2D): void;
|
|
158
|
+
export {};
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveSignalValue,
|
|
3
|
+
signal
|
|
4
|
+
} from "@pibbl/core";
|
|
5
|
+
import {
|
|
6
|
+
pibblInternalCurrentRenderOwner,
|
|
7
|
+
pibblInternalCurrentSimulationOwner,
|
|
8
|
+
pibblInternalOnRenderFinish,
|
|
9
|
+
pibblInternalQueueSimulationCommitAcknowledgement,
|
|
10
|
+
pibblInternalRegisterSimulationAdvance,
|
|
11
|
+
useInternalHookSlot
|
|
12
|
+
} from "@pibbl/core/internal";
|
|
13
|
+
import { FlowFieldKernel2D } from "./field.js";
|
|
14
|
+
const controllers = /* @__PURE__ */ new WeakMap();
|
|
15
|
+
const STEP = 1e3 / 60;
|
|
16
|
+
const EMPTY_OBSTACLES = Object.freeze({ boxes: new Float64Array(0) });
|
|
17
|
+
function getFlowController2D(handle) {
|
|
18
|
+
const controller = controllers.get(handle);
|
|
19
|
+
if (!controller) throw new TypeError("Expected a Pibbl flow field.");
|
|
20
|
+
controller.requireActive();
|
|
21
|
+
return controller;
|
|
22
|
+
}
|
|
23
|
+
class FlowController2D {
|
|
24
|
+
constructor(owner, options) {
|
|
25
|
+
this.owner = owner;
|
|
26
|
+
this.options = options;
|
|
27
|
+
const [columns, rows] = options.resolution;
|
|
28
|
+
this.committed = new FlowFieldKernel2D(
|
|
29
|
+
columns,
|
|
30
|
+
rows,
|
|
31
|
+
options.bounds.width,
|
|
32
|
+
options.bounds.height
|
|
33
|
+
);
|
|
34
|
+
this.candidate = new FlowFieldKernel2D(
|
|
35
|
+
columns,
|
|
36
|
+
rows,
|
|
37
|
+
options.bounds.width,
|
|
38
|
+
options.bounds.height
|
|
39
|
+
);
|
|
40
|
+
this.handle = Object.freeze({
|
|
41
|
+
revision: this.revision.asReadonly(),
|
|
42
|
+
sampleBatch: (positions, velocities, count) => {
|
|
43
|
+
this.requireActive().sampleBatch(positions, velocities, count);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
controllers.set(this.handle, this);
|
|
47
|
+
}
|
|
48
|
+
owner;
|
|
49
|
+
handle;
|
|
50
|
+
committed;
|
|
51
|
+
candidate;
|
|
52
|
+
revision = signal(0);
|
|
53
|
+
sources = /* @__PURE__ */ new Map();
|
|
54
|
+
sourceList = [];
|
|
55
|
+
unregister;
|
|
56
|
+
lastTime;
|
|
57
|
+
remainder = 0;
|
|
58
|
+
obstacleRevision;
|
|
59
|
+
obstacleSourceChanged = true;
|
|
60
|
+
options;
|
|
61
|
+
consumers = 0;
|
|
62
|
+
requireActive() {
|
|
63
|
+
if (!this.committed) throw new Error("Pibbl flow field is disposed.");
|
|
64
|
+
return this.committed;
|
|
65
|
+
}
|
|
66
|
+
validateOptions(options) {
|
|
67
|
+
const field = this.requireActive();
|
|
68
|
+
if (field.width !== options.bounds.width || field.height !== options.bounds.height || field.columns !== options.resolution[0] || field.rows !== options.resolution[1]) {
|
|
69
|
+
throw new Error(
|
|
70
|
+
"Flow bounds and resolution are mount-only; use a keyed remount to change them."
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
if (!Number.isFinite(options.buoyancy ?? -300))
|
|
74
|
+
throw new RangeError("Flow buoyancy must be finite.");
|
|
75
|
+
}
|
|
76
|
+
adoptOptions(options) {
|
|
77
|
+
if (!this.committed) return;
|
|
78
|
+
if (this.options.obstacles !== options.obstacles)
|
|
79
|
+
this.obstacleSourceChanged = true;
|
|
80
|
+
this.options = options;
|
|
81
|
+
}
|
|
82
|
+
setSource(key, source) {
|
|
83
|
+
if (!this.committed) return;
|
|
84
|
+
if (source) this.sources.set(key, source);
|
|
85
|
+
else this.sources.delete(key);
|
|
86
|
+
this.sourceList = Array.from(this.sources.values());
|
|
87
|
+
this.synchronize();
|
|
88
|
+
}
|
|
89
|
+
retain() {
|
|
90
|
+
this.requireActive();
|
|
91
|
+
this.consumers++;
|
|
92
|
+
this.synchronize();
|
|
93
|
+
let released = false;
|
|
94
|
+
return () => {
|
|
95
|
+
if (released) return;
|
|
96
|
+
released = true;
|
|
97
|
+
this.consumers--;
|
|
98
|
+
this.synchronize();
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
synchronize() {
|
|
102
|
+
const active = this.committed && (this.sources.size > 0 || this.consumers > 0);
|
|
103
|
+
if (active && !this.unregister) {
|
|
104
|
+
this.unregister = pibblInternalRegisterSimulationAdvance(
|
|
105
|
+
this.owner,
|
|
106
|
+
"physics",
|
|
107
|
+
(frame, batch) => {
|
|
108
|
+
const committed = this.requireActive();
|
|
109
|
+
const candidate = this.candidate;
|
|
110
|
+
const elapsed = this.lastTime === void 0 ? 0 : Math.max(0, frame.logicalTime - this.lastTime);
|
|
111
|
+
const accumulated = this.remainder + Math.min(elapsed, STEP * 4);
|
|
112
|
+
const steps = Math.min(4, Math.floor((accumulated + 1e-7) / STEP));
|
|
113
|
+
const remainder = Math.max(0, accumulated - steps * STEP);
|
|
114
|
+
candidate.copyFrom(committed);
|
|
115
|
+
const obstacles = this.options.obstacles?.read();
|
|
116
|
+
const nextObstacleRevision = obstacles?.revision;
|
|
117
|
+
const obstaclesChanged = this.obstacleSourceChanged || nextObstacleRevision !== this.obstacleRevision;
|
|
118
|
+
if (obstaclesChanged) {
|
|
119
|
+
candidate.setObstacles(obstacles ?? EMPTY_OBSTACLES);
|
|
120
|
+
}
|
|
121
|
+
for (let i = 0; i < steps; i++)
|
|
122
|
+
candidate.advance(
|
|
123
|
+
STEP / 1e3,
|
|
124
|
+
this.sourceList,
|
|
125
|
+
this.options.buoyancy ?? -300
|
|
126
|
+
);
|
|
127
|
+
if (steps > 0 || obstaclesChanged) {
|
|
128
|
+
batch.stage(this.revision, this.revision.get() + 1, this);
|
|
129
|
+
}
|
|
130
|
+
pibblInternalQueueSimulationCommitAcknowledgement(
|
|
131
|
+
this.owner,
|
|
132
|
+
(_frame, outcome) => {
|
|
133
|
+
if (!outcome.applied || !this.committed) return;
|
|
134
|
+
this.committed = candidate;
|
|
135
|
+
this.candidate = committed;
|
|
136
|
+
this.lastTime = frame.logicalTime;
|
|
137
|
+
this.remainder = remainder;
|
|
138
|
+
this.obstacleRevision = nextObstacleRevision;
|
|
139
|
+
this.obstacleSourceChanged = false;
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
} else if (!active && this.unregister) {
|
|
145
|
+
this.unregister();
|
|
146
|
+
this.unregister = void 0;
|
|
147
|
+
this.lastTime = void 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
dispose() {
|
|
151
|
+
this.unregister?.();
|
|
152
|
+
this.unregister = void 0;
|
|
153
|
+
this.sources.clear();
|
|
154
|
+
this.sourceList = [];
|
|
155
|
+
this.committed = void 0;
|
|
156
|
+
this.candidate = void 0;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function useFlowField2D(options) {
|
|
160
|
+
const simulationOwner = pibblInternalCurrentSimulationOwner();
|
|
161
|
+
const renderOwner = pibblInternalCurrentRenderOwner();
|
|
162
|
+
const controller = useInternalHookSlot("flow-field", (teardowns) => {
|
|
163
|
+
const value = new FlowController2D(simulationOwner, options);
|
|
164
|
+
teardowns.add(() => value.dispose());
|
|
165
|
+
return value;
|
|
166
|
+
}).value;
|
|
167
|
+
controller.validateOptions(options);
|
|
168
|
+
pibblInternalOnRenderFinish(renderOwner, (success) => {
|
|
169
|
+
if (success) controller.adoptOptions(options);
|
|
170
|
+
});
|
|
171
|
+
return controller.handle;
|
|
172
|
+
}
|
|
173
|
+
function useFlowSource2D(field, options) {
|
|
174
|
+
const controller = getFlowController2D(field);
|
|
175
|
+
const renderOwner = pibblInternalCurrentRenderOwner();
|
|
176
|
+
const position = resolveSignalValue(options.position);
|
|
177
|
+
const radius = resolveSignalValue(options.radius);
|
|
178
|
+
const acceleration = resolveSignalValue(
|
|
179
|
+
options.acceleration ?? [0, 0]
|
|
180
|
+
);
|
|
181
|
+
const heat = resolveSignalValue(options.heat ?? 0);
|
|
182
|
+
const enabled = resolveSignalValue(options.enabled ?? true);
|
|
183
|
+
if (!Number.isFinite(position[0]) || !Number.isFinite(position[1]) || !Number.isFinite(radius) || radius <= 0 || !Number.isFinite(acceleration[0]) || !Number.isFinite(acceleration[1]) || !Number.isFinite(heat) || heat < 0) {
|
|
184
|
+
throw new RangeError(
|
|
185
|
+
"Flow source requires finite values, positive radius and nonnegative heat."
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
const slot = useInternalHookSlot("flow-source", (teardowns) => {
|
|
189
|
+
const value = { key: {}, controller, revision: 0 };
|
|
190
|
+
teardowns.add(() => value.controller.setSource(value.key, void 0));
|
|
191
|
+
return value;
|
|
192
|
+
}).value;
|
|
193
|
+
const revision = ++slot.revision;
|
|
194
|
+
const source = enabled ? {
|
|
195
|
+
x: position[0],
|
|
196
|
+
y: position[1],
|
|
197
|
+
radius,
|
|
198
|
+
acceleration: [acceleration[0], acceleration[1]],
|
|
199
|
+
heat
|
|
200
|
+
} : void 0;
|
|
201
|
+
pibblInternalOnRenderFinish(renderOwner, (success) => {
|
|
202
|
+
if (!success || revision !== slot.revision) return;
|
|
203
|
+
if (slot.controller !== controller)
|
|
204
|
+
slot.controller.setSource(slot.key, void 0);
|
|
205
|
+
slot.controller = controller;
|
|
206
|
+
controller.setSource(slot.key, source);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
export {
|
|
210
|
+
FlowController2D,
|
|
211
|
+
getFlowController2D,
|
|
212
|
+
useFlowField2D,
|
|
213
|
+
useFlowSource2D
|
|
214
|
+
};
|
|
215
|
+
//# sourceMappingURL=hook.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/features/particles/lib/flow/hook.ts"],
|
|
4
|
+
"sourcesContent": ["import type { PibblParticleSystemOptions } from '../types.js';\nimport {\n resolveSignalValue,\n signal,\n type Signal,\n type SignalValue,\n} from \"@pibbl/core\";\nimport {\n pibblInternalCurrentRenderOwner,\n pibblInternalCurrentSimulationOwner,\n pibblInternalOnRenderFinish,\n pibblInternalQueueSimulationCommitAcknowledgement,\n pibblInternalRegisterSimulationAdvance,\n useInternalHookSlot,\n type PibblInternalSimulationOwner,\n} from \"@pibbl/core/internal\";\nimport { FlowFieldKernel2D, type FlowSource2D } from \"./field.js\";\n\n/**\n * Committed obstacle geometry and motion packed into borrowed numeric buffers.\n *\n * @see {@link PibblFlowObstacleSource2D}\n */\nexport interface PibblFlowObstacleBatch2D {\n /**\n * Revision used to detect changes to the underlying state or geometry. See\n * {@link PibblFlowObstacleBatch2D}.\n */\n readonly revision: number;\n /** cx, cy, halfWidth, halfHeight, radians, vx, vy, omega, COM x/y. */\n readonly boxes: Float64Array;\n /**\n * Packed ellipse obstacle data consumed by the simulation. See {@link PibblFlowObstacleBatch2D}.\n */\n readonly ellipses?: Float64Array;\n /**\n * Packed polygon obstacle data consumed by the simulation. See {@link PibblFlowObstacleBatch2D}.\n */\n readonly polygons?: Float64Array;\n}\n/**\n * Supplies committed obstacle batches to a flow field without transferring buffer ownership.\n *\n * @see {@link PibblFlowObstacleBatch2D}\n * @see {@link PibblFlowFieldOptions2D}\n */\nexport interface PibblFlowObstacleSource2D {\n /**\n * Returns committed simulation state. Buffers are borrowed for this call only.\n * @returns The current obstacle revision and packed obstacle geometry. See\n * {@link PibblFlowObstacleBatch2D} .\n */\n read(): PibblFlowObstacleBatch2D;\n}\n/**\n * Logical bounds, grid resolution, obstacle source, and buoyancy for a flow field.\n *\n * @see {@link PibblFlowObstacleSource2D}\n * @see {@link useFlowField2D}\n */\nexport interface PibblFlowFieldOptions2D {\n /** Logical region constraining the content or query. See {@link PibblFlowFieldOptions2D}. */\n readonly bounds: Readonly<{\n /**\n * Horizontal extent in the units of the containing geometry or surface. See\n * {@link PibblFlowFieldOptions2D}.\n */\n width: number;\n /**\n * Vertical extent in the units of the containing geometry or surface. See\n * {@link PibblFlowFieldOptions2D}.\n */\n height: number;\n }>;\n /** Dimensions of the simulation or raster grid. See {@link PibblFlowFieldOptions2D}. */\n readonly resolution: readonly [columns: number, rows: number];\n /**\n * Obstacle geometry used by the flow or water simulation. See {@link PibblFlowObstacleSource2D}.\n */\n readonly obstacles?: PibblFlowObstacleSource2D;\n /** Strength of heat-driven upward motion in the flow field. See {@link PibblFlowFieldOptions2D}. */\n readonly buoyancy?: number;\n}\ndeclare const flowBrand: unique symbol;\n/**\n * A mount-owned flow field with revision tracking and batched velocity sampling.\n *\n * @see {@link Signal}\n * @see {@link useFlowField2D}\n * @see {@link useFlowSource2D}\n * @see {@link PibblParticleSystemOptions}\n */\nexport interface PibblFlowField2D {\n readonly [flowBrand]: true;\n /** Revision used to detect changes to the underlying state or geometry. See {@link Signal}. */\n readonly revision: Signal<number>;\n /**\n * Samples velocities for packed position pairs into caller-provided output storage. See\n * {@link PibblFlowField2D}.\n * @param positions - Packed input positions, with two floats per particle.\n * @param velocities - Output buffer receiving sampled velocities, with two floats per particle.\n * @param count - Number of position pairs to sample.\n */\n sampleBatch(positions: Float32Array, velocities: Float32Array, count: number): void;\n}\n/**\n * Reactive position, radius, acceleration, heat, and enablement of a flow source.\n *\n * @see {@link SignalValue}\n * @see {@link useFlowSource2D}\n */\nexport interface PibblFlowSourceOptions2D {\n /** Position of the geometry, source, or selected resize handle. See {@link SignalValue}. */\n readonly position: SignalValue<readonly [number, number]>;\n /** Radius in the coordinate system of this geometry or effect. See {@link SignalValue}. */\n readonly radius: SignalValue<number>;\n /** Acceleration injected by this flow source. See {@link SignalValue}. */\n readonly acceleration?: SignalValue<readonly [number, number]>;\n /** Heat injected by this flow source. See {@link SignalValue}. */\n readonly heat?: SignalValue<number>;\n /** Whether this operation or resource participates in updates. See {@link SignalValue}. */\n readonly enabled?: SignalValue<boolean>;\n}\nconst controllers = new WeakMap<PibblFlowField2D, FlowController2D>();\nconst STEP = 1000 / 60;\nconst EMPTY_OBSTACLES = Object.freeze({ boxes: new Float64Array(0) });\n\n/** Private coupling point; ordinary callers see only the read-only field handle. */\nexport function getFlowController2D(handle: PibblFlowField2D): FlowController2D {\n const controller = controllers.get(handle);\n if (!controller) throw new TypeError(\"Expected a Pibbl flow field.\");\n controller.requireActive();\n return controller;\n}\n\nexport class FlowController2D {\n readonly handle: PibblFlowField2D;\n private committed: FlowFieldKernel2D | undefined;\n private candidate: FlowFieldKernel2D | undefined;\n private readonly revision = signal(0);\n private readonly sources = new Map<object, FlowSource2D>();\n private sourceList: readonly FlowSource2D[] = [];\n private unregister: (() => void) | undefined;\n private lastTime: number | undefined;\n private remainder = 0;\n private obstacleRevision: number | undefined;\n private obstacleSourceChanged = true;\n private options: PibblFlowFieldOptions2D;\n private consumers = 0;\n constructor(\n private readonly owner: PibblInternalSimulationOwner,\n options: PibblFlowFieldOptions2D,\n ) {\n this.options = options;\n const [columns, rows] = options.resolution;\n this.committed = new FlowFieldKernel2D(\n columns,\n rows,\n options.bounds.width,\n options.bounds.height,\n );\n this.candidate = new FlowFieldKernel2D(\n columns,\n rows,\n options.bounds.width,\n options.bounds.height,\n );\n this.handle = Object.freeze({\n revision: this.revision.asReadonly(),\n sampleBatch: (\n positions: Float32Array,\n velocities: Float32Array,\n count: number,\n ) => {\n this.requireActive().sampleBatch(positions, velocities, count);\n },\n }) as PibblFlowField2D;\n controllers.set(this.handle, this);\n }\n requireActive(): FlowFieldKernel2D {\n if (!this.committed) throw new Error(\"Pibbl flow field is disposed.\");\n return this.committed;\n }\n validateOptions(options: PibblFlowFieldOptions2D): void {\n const field = this.requireActive();\n if (\n field.width !== options.bounds.width ||\n field.height !== options.bounds.height ||\n field.columns !== options.resolution[0] ||\n field.rows !== options.resolution[1]\n ) {\n throw new Error(\n \"Flow bounds and resolution are mount-only; use a keyed remount to change them.\",\n );\n }\n if (!Number.isFinite(options.buoyancy ?? -300))\n throw new RangeError(\"Flow buoyancy must be finite.\");\n }\n adoptOptions(options: PibblFlowFieldOptions2D): void {\n if (!this.committed) return;\n if (this.options.obstacles !== options.obstacles)\n this.obstacleSourceChanged = true;\n this.options = options;\n }\n setSource(key: object, source: FlowSource2D | undefined): void {\n if (!this.committed) return;\n if (source) this.sources.set(key, source);\n else this.sources.delete(key);\n this.sourceList = Array.from(this.sources.values());\n this.synchronize();\n }\n retain(): () => void {\n this.requireActive();\n this.consumers++;\n this.synchronize();\n let released = false;\n return () => {\n if (released) return;\n released = true;\n this.consumers--;\n this.synchronize();\n };\n }\n private synchronize(): void {\n const active =\n this.committed && (this.sources.size > 0 || this.consumers > 0);\n if (active && !this.unregister) {\n this.unregister = pibblInternalRegisterSimulationAdvance(\n this.owner,\n \"physics\",\n (frame, batch) => {\n const committed = this.requireActive();\n const candidate = this.candidate!;\n const elapsed =\n this.lastTime === undefined\n ? 0\n : Math.max(0, frame.logicalTime - this.lastTime);\n const accumulated = this.remainder + Math.min(elapsed, STEP * 4);\n const steps = Math.min(4, Math.floor((accumulated + 1e-7) / STEP));\n const remainder = Math.max(0, accumulated - steps * STEP);\n candidate.copyFrom(committed);\n const obstacles = this.options.obstacles?.read();\n const nextObstacleRevision = obstacles?.revision;\n const obstaclesChanged =\n this.obstacleSourceChanged ||\n nextObstacleRevision !== this.obstacleRevision;\n if (obstaclesChanged) {\n candidate.setObstacles(obstacles ?? EMPTY_OBSTACLES);\n }\n for (let i = 0; i < steps; i++)\n candidate.advance(\n STEP / 1000,\n this.sourceList,\n this.options.buoyancy ?? -300,\n );\n if (steps > 0 || obstaclesChanged) {\n batch.stage(this.revision, this.revision.get() + 1, this);\n }\n pibblInternalQueueSimulationCommitAcknowledgement(\n this.owner,\n (_frame, outcome) => {\n if (!outcome.applied || !this.committed) return;\n this.committed = candidate;\n this.candidate = committed;\n this.lastTime = frame.logicalTime;\n this.remainder = remainder;\n this.obstacleRevision = nextObstacleRevision;\n this.obstacleSourceChanged = false;\n },\n );\n },\n );\n } else if (!active && this.unregister) {\n this.unregister();\n this.unregister = undefined;\n this.lastTime = undefined;\n }\n }\n dispose(): void {\n this.unregister?.();\n this.unregister = undefined;\n this.sources.clear();\n this.sourceList = [];\n this.committed = undefined;\n this.candidate = undefined;\n }\n}\n\n/**\n * Creates a mount-owned 2D flow field with configured bounds, resolution, and optional obstacles.\n *\n * @param options - Field dimensions, sampling, decay, and obstacle settings. See\n * {@link PibblFlowFieldOptions2D} .\n * @returns A mount-owned 2D flow field sampled by particle effects. See {@link PibblFlowField2D}.\n *\n * @see {@link PibblFlowFieldOptions2D}\n * @see {@link PibblFlowField2D}\n */\nexport function useFlowField2D(options: PibblFlowFieldOptions2D): PibblFlowField2D {\n const simulationOwner = pibblInternalCurrentSimulationOwner();\n const renderOwner = pibblInternalCurrentRenderOwner();\n const controller = useInternalHookSlot(\"flow-field\", (teardowns) => {\n const value = new FlowController2D(simulationOwner, options);\n teardowns.add(() => value.dispose());\n return value;\n }).value;\n controller.validateOptions(options);\n pibblInternalOnRenderFinish(renderOwner, (success) => {\n if (success) controller.adoptOptions(options);\n });\n return controller.handle;\n}\n\n/**\n * Registers a mount-owned source of acceleration or heat in a flow field.\n *\n * @param field - Flow field receiving this source. See {@link PibblFlowField2D}.\n * @param options - Source position, influence, and strength settings. See\n * {@link PibblFlowSourceOptions2D} .\n *\n * @see {@link PibblFlowField2D}\n * @see {@link PibblFlowSourceOptions2D}\n */\nexport function useFlowSource2D(\n field: PibblFlowField2D,\n options: PibblFlowSourceOptions2D,\n): void {\n const controller = getFlowController2D(field);\n const renderOwner = pibblInternalCurrentRenderOwner();\n const position = resolveSignalValue(options.position);\n const radius = resolveSignalValue(options.radius);\n const acceleration = resolveSignalValue(\n options.acceleration ?? ([0, 0] as const),\n );\n const heat = resolveSignalValue(options.heat ?? 0);\n const enabled = resolveSignalValue(options.enabled ?? true);\n if (\n !Number.isFinite(position[0]) ||\n !Number.isFinite(position[1]) ||\n !Number.isFinite(radius) ||\n radius <= 0 ||\n !Number.isFinite(acceleration[0]) ||\n !Number.isFinite(acceleration[1]) ||\n !Number.isFinite(heat) ||\n heat < 0\n ) {\n throw new RangeError(\n \"Flow source requires finite values, positive radius and nonnegative heat.\",\n );\n }\n const slot = useInternalHookSlot(\"flow-source\", (teardowns) => {\n const value = { key: {}, controller, revision: 0 };\n teardowns.add(() => value.controller.setSource(value.key, undefined));\n return value;\n }).value;\n const revision = ++slot.revision;\n const source: FlowSource2D | undefined = enabled\n ? {\n x: position[0],\n y: position[1],\n radius,\n acceleration: [acceleration[0], acceleration[1]],\n heat,\n }\n : undefined;\n pibblInternalOnRenderFinish(renderOwner, (success) => {\n if (!success || revision !== slot.revision) return;\n if (slot.controller !== controller)\n slot.controller.setSource(slot.key, undefined);\n slot.controller = controller;\n controller.setSource(slot.key, source);\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { FlowFieldKernel2D } from "./field.js";
|
|
2
|
+
/** Persistent particle positions, independent of Canvas and physics bodies.
|
|
3
|
+
* RK2 integration samples a shared field in bounded chunks. Birth identities
|
|
4
|
+
* let recycled ledger slots initialize without allocating particle objects.
|
|
5
|
+
*/
|
|
6
|
+
export declare class FlowParticlePopulation2D {
|
|
7
|
+
readonly capacity: number;
|
|
8
|
+
readonly positions: Float32Array;
|
|
9
|
+
private readonly retired;
|
|
10
|
+
private readonly identities;
|
|
11
|
+
private readonly times;
|
|
12
|
+
private readonly birthTimes;
|
|
13
|
+
private readonly slots;
|
|
14
|
+
private readonly points;
|
|
15
|
+
private readonly midpoints;
|
|
16
|
+
private readonly velocities;
|
|
17
|
+
private readonly durations;
|
|
18
|
+
constructor(capacity: number);
|
|
19
|
+
copyFrom(other: FlowParticlePopulation2D): void;
|
|
20
|
+
clear(): void;
|
|
21
|
+
isRetired(slot: number): boolean;
|
|
22
|
+
hasBirth(slot: number, identity: number, birthTime: number): boolean;
|
|
23
|
+
birth(slot: number, identity: number, time: number, x: number, y: number): void;
|
|
24
|
+
advance(field: FlowFieldKernel2D, firstSlot: number, ageOrder: Uint32Array, liveCount: number, time: number): void;
|
|
25
|
+
}
|