@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,161 @@
|
|
|
1
|
+
import { finite } from "./capture.js";
|
|
2
|
+
function resolveEmbersPhysics(options) {
|
|
3
|
+
const vector = (value, name) => Object.freeze([
|
|
4
|
+
finite(value[0], `${name}.x`),
|
|
5
|
+
finite(value[1], `${name}.y`)
|
|
6
|
+
]);
|
|
7
|
+
const restitution = finite(
|
|
8
|
+
options.restitution ?? 0.5,
|
|
9
|
+
"physics.restitution",
|
|
10
|
+
0
|
|
11
|
+
);
|
|
12
|
+
if (restitution > 1)
|
|
13
|
+
throw new RangeError("physics.restitution must be between zero and one.");
|
|
14
|
+
if (options.collide !== void 0 && typeof options.collide !== "function")
|
|
15
|
+
throw new TypeError("physics.collide must be a synchronous function.");
|
|
16
|
+
if (options.obstacles && (typeof options.obstacles.read !== "function" || options.collide))
|
|
17
|
+
throw new TypeError(
|
|
18
|
+
"physics.obstacles requires read() and cannot be combined with collide."
|
|
19
|
+
);
|
|
20
|
+
return Object.freeze({
|
|
21
|
+
obstacles: options.obstacles,
|
|
22
|
+
gravity: vector(options.gravity ?? [0, -60], "physics.gravity"),
|
|
23
|
+
wind: vector(options.wind ?? [0, -45], "physics.wind"),
|
|
24
|
+
drag: finite(options.drag ?? 4, "physics.drag", 0),
|
|
25
|
+
restitution,
|
|
26
|
+
collide: options.collide
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function emberSimulation(kernel, options, region, linger, burnWidth) {
|
|
30
|
+
let previous = 0, remainder = 0, needsReset = true, disposed = false;
|
|
31
|
+
const step = 1e3 / 60;
|
|
32
|
+
let obstacleRevision;
|
|
33
|
+
let boxLength = 0, ellipseLength = 0, polygonLength = 0;
|
|
34
|
+
return {
|
|
35
|
+
reset() {
|
|
36
|
+
previous = 0;
|
|
37
|
+
remainder = 0;
|
|
38
|
+
needsReset = true;
|
|
39
|
+
},
|
|
40
|
+
get disposed() {
|
|
41
|
+
return disposed;
|
|
42
|
+
},
|
|
43
|
+
dispose() {
|
|
44
|
+
disposed = true;
|
|
45
|
+
kernel.dispose();
|
|
46
|
+
},
|
|
47
|
+
advance(elapsed, progressAt) {
|
|
48
|
+
if (disposed || elapsed <= previous) return;
|
|
49
|
+
const { exports, values } = kernel();
|
|
50
|
+
if (needsReset) {
|
|
51
|
+
exports.resetPhysics();
|
|
52
|
+
needsReset = false;
|
|
53
|
+
}
|
|
54
|
+
remainder += Math.min(elapsed - previous, step * 4);
|
|
55
|
+
previous = elapsed;
|
|
56
|
+
if (remainder + 1e-8 >= step && options.obstacles) {
|
|
57
|
+
const batch = options.obstacles.read();
|
|
58
|
+
if (batch.revision !== obstacleRevision) {
|
|
59
|
+
const { boxes, ellipses, polygons } = batch;
|
|
60
|
+
if (!Number.isFinite(batch.revision) || boxes.length % 10 || ellipses.length % 10 || boxes.length + ellipses.length + polygons.length > 8192)
|
|
61
|
+
throw new RangeError(
|
|
62
|
+
"Invalid ember obstacle batch or capacity exceeded (8192 numbers)."
|
|
63
|
+
);
|
|
64
|
+
for (const packed of [boxes, ellipses, polygons])
|
|
65
|
+
for (const value of packed)
|
|
66
|
+
if (!Number.isFinite(value))
|
|
67
|
+
throw new RangeError("Ember obstacles must be finite.");
|
|
68
|
+
for (const packed of [boxes, ellipses])
|
|
69
|
+
for (let i = 0; i < packed.length; i += 10)
|
|
70
|
+
if (packed[i + 2] <= 0 || packed[i + 3] <= 0)
|
|
71
|
+
throw new RangeError(
|
|
72
|
+
"Ember obstacle extents must be positive."
|
|
73
|
+
);
|
|
74
|
+
for (let at = 0; at < polygons.length; ) {
|
|
75
|
+
const count = polygons[at];
|
|
76
|
+
if (!Number.isInteger(count) || count < 3 || at + 6 + count * 2 > polygons.length)
|
|
77
|
+
throw new RangeError("Invalid ember obstacle polygon.");
|
|
78
|
+
at += 6 + count * 2;
|
|
79
|
+
}
|
|
80
|
+
values.set(boxes, 22400);
|
|
81
|
+
values.set(ellipses, 22400 + boxes.length);
|
|
82
|
+
values.set(polygons, 22400 + boxes.length + ellipses.length);
|
|
83
|
+
boxLength = boxes.length;
|
|
84
|
+
ellipseLength = ellipses.length;
|
|
85
|
+
polygonLength = polygons.length;
|
|
86
|
+
obstacleRevision = batch.revision;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
while (remainder + 1e-8 >= step) {
|
|
90
|
+
const time = elapsed - remainder + step;
|
|
91
|
+
remainder = Math.max(0, remainder - step);
|
|
92
|
+
const q = progressAt(time);
|
|
93
|
+
exports.births(time, linger);
|
|
94
|
+
for (let i = 0; i < 1200; i++)
|
|
95
|
+
values[11166 + i] = progressAt(values[12366 + i]);
|
|
96
|
+
exports.sample(
|
|
97
|
+
q,
|
|
98
|
+
1,
|
|
99
|
+
time,
|
|
100
|
+
linger,
|
|
101
|
+
0,
|
|
102
|
+
burnWidth,
|
|
103
|
+
region.x,
|
|
104
|
+
region.y,
|
|
105
|
+
region.width,
|
|
106
|
+
region.height,
|
|
107
|
+
Math.min(512, Math.max(1, Math.ceil(region.width / 2)))
|
|
108
|
+
);
|
|
109
|
+
exports.stepPhysics(
|
|
110
|
+
time,
|
|
111
|
+
step / 1e3,
|
|
112
|
+
...options.gravity,
|
|
113
|
+
...options.wind,
|
|
114
|
+
options.drag,
|
|
115
|
+
linger
|
|
116
|
+
);
|
|
117
|
+
if (options.obstacles)
|
|
118
|
+
exports.collideObstacles(
|
|
119
|
+
boxLength,
|
|
120
|
+
ellipseLength,
|
|
121
|
+
polygonLength,
|
|
122
|
+
options.restitution
|
|
123
|
+
);
|
|
124
|
+
if (options.collide)
|
|
125
|
+
for (let i = 0; i < 1200; i++) {
|
|
126
|
+
const s = 14e3 + i * 7;
|
|
127
|
+
if (values[s + 4] < 0) continue;
|
|
128
|
+
const from = [values[s + 5], values[s + 6]], to = [values[s], values[s + 1]];
|
|
129
|
+
if (from[0] === to[0] && from[1] === to[1]) continue;
|
|
130
|
+
const hit = options.collide(from, to);
|
|
131
|
+
if (!hit) continue;
|
|
132
|
+
const fraction = finite(hit.fraction, "collision.fraction", 0);
|
|
133
|
+
const nx = finite(hit.normal?.[0], "collision.normal.x"), ny = finite(hit.normal?.[1], "collision.normal.y"), length = Math.hypot(nx, ny);
|
|
134
|
+
if (fraction > 1 || length < 1e-8)
|
|
135
|
+
throw new RangeError(
|
|
136
|
+
"Ember collision requires a fraction in [0, 1] and a nonzero normal."
|
|
137
|
+
);
|
|
138
|
+
exports.collidePhysics(
|
|
139
|
+
i,
|
|
140
|
+
fraction,
|
|
141
|
+
nx / length,
|
|
142
|
+
ny / length,
|
|
143
|
+
options.restitution
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
present() {
|
|
149
|
+
if (!needsReset && !disposed) kernel().exports.presentPhysics();
|
|
150
|
+
else {
|
|
151
|
+
const { values } = kernel();
|
|
152
|
+
for (let i = 0; i < 1200; i++) values[1566 + i * 8 + 5] = -1;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
export {
|
|
158
|
+
emberSimulation,
|
|
159
|
+
resolveEmbersPhysics
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=embers-physics.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/lib/transitions/embers-physics.ts"],
|
|
4
|
+
"sourcesContent": ["import type { PibblEmbersOptions } from './embers.js';\nimport { finite } from \"./capture.js\";\nimport type { lazyTransitionKernel } from \"./wasm/kernel.js\";\n/**\n * Collision information produced by an ember's physical interaction.\n *\n * @see {@link PibblEmbersPhysicsOptions}\n */\nexport interface PibblEmberCollision {\n /** Fraction of the swept segment at impact, from zero to one. */\n readonly fraction: number;\n /** Outward surface normal in the receiving primitive's local coordinates. */\n readonly normal: readonly [number, number];\n}\n/**\n * Collision and physical motion options for transition embers.\n *\n * @see {@link PibblEmberCollision}\n * @see {@link PibblEmbersOptions}\n */\nexport interface PibblEmbersPhysicsOptions {\n /** Local units/second\u00B2. Default [0, -60]. */\n readonly gravity?: readonly [number, number];\n /** Target air velocity in local units/second. Default [0, -45]. */\n readonly wind?: readonly [number, number];\n /** Velocity damping per second. Default 4. */\n readonly drag?: number;\n /** Bounce coefficient, zero to one. Default 0.5. */\n readonly restitution?: number;\n /** Packed committed solids in receiver-local coordinates (e.g. physicsObstacles2D).\n * Revision must change whenever data changes. Up to 8192 packed numbers.\n * Sweeps run as one WASM batch; mutually exclusive with collide.\n */\n readonly obstacles?: Readonly<{\n /**\n * Reads the current committed values required by this integration. See\n * {@link PibblEmbersPhysicsOptions}.\n * @returns The current obstacle revision and packed geometry arrays.\n */\n read(): Readonly<{\n /**\n * Revision used to detect changes to the underlying state or geometry. See\n * {@link PibblEmbersPhysicsOptions}.\n */\n revision: number;\n /** Packed box obstacle data consumed by the simulation. See {@link PibblEmbersPhysicsOptions}. */\n boxes: Float64Array;\n /**\n * Packed ellipse obstacle data consumed by the simulation. See\n * {@link PibblEmbersPhysicsOptions}.\n */\n ellipses: Float64Array;\n /**\n * Packed polygon obstacle data consumed by the simulation. See\n * {@link PibblEmbersPhysicsOptions}.\n */\n polygons: Float64Array;\n }>;\n }>;\n /**\n * Synchronous point sweep, called in Advance. Return the closest hit, if any.\n * @param from - Previous particle position.\n * @param to - Proposed particle position.\n * @returns Collision information, or undefined when motion is unobstructed. See\n * {@link PibblEmberCollision} .\n */\n readonly collide?: (\n from: readonly [number, number],\n to: readonly [number, number],\n ) => PibblEmberCollision | undefined;\n}\nexport function resolveEmbersPhysics(options: PibblEmbersPhysicsOptions) {\n const vector = (value: readonly [number, number], name: string) =>\n Object.freeze([\n finite(value[0], `${name}.x`),\n finite(value[1], `${name}.y`),\n ] as const);\n const restitution = finite(\n options.restitution ?? 0.5,\n \"physics.restitution\",\n 0,\n );\n if (restitution > 1)\n throw new RangeError(\"physics.restitution must be between zero and one.\");\n if (options.collide !== undefined && typeof options.collide !== \"function\")\n throw new TypeError(\"physics.collide must be a synchronous function.\");\n if (\n options.obstacles &&\n (typeof options.obstacles.read !== \"function\" || options.collide)\n )\n throw new TypeError(\n \"physics.obstacles requires read() and cannot be combined with collide.\",\n );\n return Object.freeze({\n obstacles: options.obstacles,\n gravity: vector(options.gravity ?? [0, -60], \"physics.gravity\"),\n wind: vector(options.wind ?? [0, -45], \"physics.wind\"),\n drag: finite(options.drag ?? 4, \"physics.drag\", 0),\n restitution,\n collide: options.collide,\n });\n}\ntype Kernel = ReturnType<ReturnType<typeof lazyTransitionKernel>>;\nexport function emberSimulation(\n kernel: Kernel,\n options: ReturnType<typeof resolveEmbersPhysics>,\n region: Readonly<{ x: number; y: number; width: number; height: number }>,\n linger: number,\n burnWidth: number,\n) {\n let previous = 0,\n remainder = 0,\n needsReset = true,\n disposed = false;\n const step = 1000 / 60;\n let obstacleRevision: number | undefined;\n let boxLength = 0,\n ellipseLength = 0,\n polygonLength = 0;\n return {\n reset() {\n previous = 0;\n remainder = 0;\n needsReset = true;\n },\n get disposed() {\n return disposed;\n },\n dispose() {\n disposed = true;\n kernel.dispose();\n },\n advance(elapsed: number, progressAt: (time: number) => number) {\n if (disposed || elapsed <= previous) return;\n const { exports, values } = kernel();\n if (needsReset) {\n exports.resetPhysics!();\n needsReset = false;\n }\n remainder += Math.min(elapsed - previous, step * 4);\n previous = elapsed;\n if (remainder + 1e-8 >= step && options.obstacles) {\n const batch = options.obstacles.read();\n if (batch.revision !== obstacleRevision) {\n const { boxes, ellipses, polygons } = batch;\n if (\n !Number.isFinite(batch.revision) ||\n boxes.length % 10 ||\n ellipses.length % 10 ||\n boxes.length + ellipses.length + polygons.length > 8192\n )\n throw new RangeError(\n \"Invalid ember obstacle batch or capacity exceeded (8192 numbers).\",\n );\n for (const packed of [boxes, ellipses, polygons])\n for (const value of packed)\n if (!Number.isFinite(value))\n throw new RangeError(\"Ember obstacles must be finite.\");\n for (const packed of [boxes, ellipses])\n for (let i = 0; i < packed.length; i += 10)\n if (packed[i + 2]! <= 0 || packed[i + 3]! <= 0)\n throw new RangeError(\n \"Ember obstacle extents must be positive.\",\n );\n for (let at = 0; at < polygons.length;) {\n const count = polygons[at]!;\n if (\n !Number.isInteger(count) ||\n count < 3 ||\n at + 6 + count * 2 > polygons.length\n )\n throw new RangeError(\"Invalid ember obstacle polygon.\");\n at += 6 + count * 2;\n }\n values.set(boxes, 22400);\n values.set(ellipses, 22400 + boxes.length);\n values.set(polygons, 22400 + boxes.length + ellipses.length);\n boxLength = boxes.length;\n ellipseLength = ellipses.length;\n polygonLength = polygons.length;\n obstacleRevision = batch.revision;\n }\n }\n while (remainder + 1e-8 >= step) {\n const time = elapsed - remainder + step;\n remainder = Math.max(0, remainder - step);\n const q = progressAt(time);\n exports.births!(time, linger);\n for (let i = 0; i < 1200; i++)\n values[11166 + i] = progressAt(values[12366 + i]!);\n exports.sample!(\n q,\n 1,\n time,\n linger,\n 0,\n burnWidth,\n region.x,\n region.y,\n region.width,\n region.height,\n Math.min(512, Math.max(1, Math.ceil(region.width / 2))),\n );\n exports.stepPhysics!(\n time,\n step / 1000,\n ...options.gravity,\n ...options.wind,\n options.drag,\n linger,\n );\n if (options.obstacles)\n exports.collideObstacles!(\n boxLength,\n ellipseLength,\n polygonLength,\n options.restitution,\n );\n if (options.collide)\n for (let i = 0; i < 1200; i++) {\n const s = 14000 + i * 7;\n if (values[s + 4]! < 0) continue;\n const from = [values[s + 5]!, values[s + 6]!] as const,\n to = [values[s]!, values[s + 1]!] as const;\n if (from[0] === to[0] && from[1] === to[1]) continue;\n const hit = options.collide(from, to);\n if (!hit) continue;\n const fraction = finite(hit.fraction, \"collision.fraction\", 0);\n const nx = finite(hit.normal?.[0], \"collision.normal.x\"),\n ny = finite(hit.normal?.[1], \"collision.normal.y\"),\n length = Math.hypot(nx, ny);\n if (fraction > 1 || length < 1e-8)\n throw new RangeError(\n \"Ember collision requires a fraction in [0, 1] and a nonzero normal.\",\n );\n exports.collidePhysics!(\n i,\n fraction,\n nx / length,\n ny / length,\n options.restitution,\n );\n }\n }\n },\n present() {\n if (!needsReset && !disposed) kernel().exports.presentPhysics!();\n else {\n const { values } = kernel();\n for (let i = 0; i < 1200; i++) values[1566 + i * 8 + 5] = -1;\n }\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type PibblEmbersPhysicsOptions } from './embers-physics.js';
|
|
2
|
+
import { type PibblTransitionEffect } from './fade.js';
|
|
3
|
+
/**
|
|
4
|
+
* Appearance, motion, and timing controls for an ember visibility transition.
|
|
5
|
+
*
|
|
6
|
+
* @see {@link PibblEmbersPhysicsOptions}
|
|
7
|
+
* @see {@link embers}
|
|
8
|
+
*/
|
|
9
|
+
export interface PibblEmbersOptions {
|
|
10
|
+
/** Local coordinates enclosing the subject; the burn travels upward through this area. */
|
|
11
|
+
readonly region: Readonly<{
|
|
12
|
+
/**
|
|
13
|
+
* Horizontal coordinate or displacement in the containing coordinate system. See
|
|
14
|
+
* {@link PibblEmbersOptions}.
|
|
15
|
+
*/
|
|
16
|
+
x: number;
|
|
17
|
+
/**
|
|
18
|
+
* Vertical coordinate or displacement in the containing coordinate system. See
|
|
19
|
+
* {@link PibblEmbersOptions}.
|
|
20
|
+
*/
|
|
21
|
+
y: number;
|
|
22
|
+
/**
|
|
23
|
+
* Horizontal extent in the units of the containing geometry or surface. See
|
|
24
|
+
* {@link PibblEmbersOptions}.
|
|
25
|
+
*/
|
|
26
|
+
width: number;
|
|
27
|
+
/**
|
|
28
|
+
* Vertical extent in the units of the containing geometry or surface. See
|
|
29
|
+
* {@link PibblEmbersOptions}.
|
|
30
|
+
*/
|
|
31
|
+
height: number;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Depth of the darkened char region along the ember transition boundary. See
|
|
35
|
+
* {@link PibblEmbersOptions}.
|
|
36
|
+
*/
|
|
37
|
+
readonly charDepth?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Width of the glowing burn region along the transition boundary. See {@link PibblEmbersOptions}.
|
|
40
|
+
*/
|
|
41
|
+
readonly burnWidth?: number;
|
|
42
|
+
/** Horizontal drift in local units; negative blows left. */
|
|
43
|
+
readonly wind?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Seed used for deterministic sampling or simulation initialization. See
|
|
46
|
+
* {@link PibblEmbersOptions}.
|
|
47
|
+
*/
|
|
48
|
+
readonly seed?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Maximum airborne particle lifetime in milliseconds; completion includes this tail. Default
|
|
51
|
+
* 700.
|
|
52
|
+
*/
|
|
53
|
+
readonly linger?: number;
|
|
54
|
+
/** Opt-in local force simulation and collision. Requires a positive linger. */
|
|
55
|
+
readonly physics?: PibblEmbersPhysicsOptions;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A seeded burn/char front over one captured subtree, with outward drifting fragments.
|
|
59
|
+
*
|
|
60
|
+
* @param options - Ember emission, motion, appearance, and optional collision settings. See
|
|
61
|
+
* {@link PibblEmbersOptions} .
|
|
62
|
+
* @returns An ember transition effect. See {@link PibblTransitionEffect}.
|
|
63
|
+
*
|
|
64
|
+
* @see {@link PibblEmbersOptions}
|
|
65
|
+
* @see {@link PibblTransitionEffect}
|
|
66
|
+
*/
|
|
67
|
+
export declare function embers(options: PibblEmbersOptions): PibblTransitionEffect;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { emberSimulation, resolveEmbersPhysics } from "./embers-physics.js";
|
|
2
|
+
import { lazyTransitionKernel } from "./wasm/kernel.js";
|
|
3
|
+
import { bytes } from "./wasm/embers-bytes.js";
|
|
4
|
+
const createKernel = lazyTransitionKernel(bytes, 2);
|
|
5
|
+
const createPhysicsKernel = lazyTransitionKernel(bytes, 4);
|
|
6
|
+
import { opacity } from "../../filters/native.js";
|
|
7
|
+
import { filterBoundaryExecutor } from "../../filters/filter-executor.js";
|
|
8
|
+
import { GLOBAL_STATE } from "../global-state.js";
|
|
9
|
+
import { getOptionalService } from "../optional-services.js";
|
|
10
|
+
import { PIBBL_FILTER_EXECUTOR } from "../style/filter-types.js";
|
|
11
|
+
import { defineTransitionEffect } from "./fade.js";
|
|
12
|
+
const SCRATCH = /* @__PURE__ */ Symbol("pibbl.transition.embers");
|
|
13
|
+
class EmberSurfaces {
|
|
14
|
+
constructor(instance) {
|
|
15
|
+
this.instance = instance;
|
|
16
|
+
}
|
|
17
|
+
instance;
|
|
18
|
+
surfaces = [];
|
|
19
|
+
used = false;
|
|
20
|
+
committed = false;
|
|
21
|
+
beginRender() {
|
|
22
|
+
this.used = false;
|
|
23
|
+
}
|
|
24
|
+
endRender(success) {
|
|
25
|
+
if (success && this.used) {
|
|
26
|
+
this.committed = true;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (success || !this.committed) this.dispose();
|
|
30
|
+
}
|
|
31
|
+
context(index, width, height) {
|
|
32
|
+
const canvas = this.surfaces[index] ??= new OffscreenCanvas(width, height);
|
|
33
|
+
if (canvas.width !== width) canvas.width = width;
|
|
34
|
+
if (canvas.height !== height) canvas.height = height;
|
|
35
|
+
const context = canvas.getContext("2d");
|
|
36
|
+
if (!context) throw new Error("Embers requires a Canvas 2D surface.");
|
|
37
|
+
context.reset();
|
|
38
|
+
return context;
|
|
39
|
+
}
|
|
40
|
+
dispose() {
|
|
41
|
+
for (const surface of this.surfaces) {
|
|
42
|
+
surface.width = 0;
|
|
43
|
+
surface.height = 0;
|
|
44
|
+
}
|
|
45
|
+
this.surfaces = [];
|
|
46
|
+
this.instance.optionalServices.delete(SCRATCH);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const clamp = (value) => Math.max(0, Math.min(1, value));
|
|
50
|
+
function embers(options) {
|
|
51
|
+
const region = Object.freeze({ ...options.region });
|
|
52
|
+
const charDepth = options.charDepth ?? 65, burnWidth = options.burnWidth ?? 12;
|
|
53
|
+
const wind = options.wind ?? 110, seed = options.seed ?? 0, linger = options.linger ?? 700;
|
|
54
|
+
for (const [name, value] of Object.entries({ ...region, charDepth, burnWidth, wind, seed, linger })) {
|
|
55
|
+
if (!Number.isFinite(value)) throw new RangeError(`embers ${name} must be finite.`);
|
|
56
|
+
}
|
|
57
|
+
if (!(region.width > 0 && region.height > 0) || charDepth < 0 || burnWidth < 0 || linger < 0) throw new RangeError("embers requires a positive region and nonnegative charDepth/burnWidth/linger.");
|
|
58
|
+
const physics = options.physics === void 0 ? void 0 : resolveEmbersPhysics(options.physics);
|
|
59
|
+
if (physics && linger === 0) throw new RangeError("Ember physics requires a positive linger.");
|
|
60
|
+
const sampler = (kernel, simulation) => (q, phase, frame) => {
|
|
61
|
+
if (simulation?.disposed) return [opacity({ amount: 0 })];
|
|
62
|
+
if ((!frame.active || !linger) && q === 1) return [];
|
|
63
|
+
if ((!frame.active || !linger) && q === 0) return [opacity({ amount: 0 })];
|
|
64
|
+
const executor = {
|
|
65
|
+
render: filterBoundaryExecutor.render,
|
|
66
|
+
prepare() {
|
|
67
|
+
return {
|
|
68
|
+
executor: filterBoundaryExecutor,
|
|
69
|
+
reverseInfluence: (output) => ({ ...output }),
|
|
70
|
+
process(source, windows) {
|
|
71
|
+
const instance = GLOBAL_STATE.currentPibblInstance;
|
|
72
|
+
if (!instance) throw new Error("Embers requires an active Pibbl instance.");
|
|
73
|
+
const scratch = getOptionalService(instance, SCRATCH, () => new EmberSurfaces(instance));
|
|
74
|
+
scratch.used = true;
|
|
75
|
+
const c = scratch.context(0, source.width, source.height);
|
|
76
|
+
const tint = scratch.context(1, source.width, source.height);
|
|
77
|
+
const matrix = windows.source.renderTransform;
|
|
78
|
+
const roughness = Math.min(5, region.height * 0.015);
|
|
79
|
+
const front = region.y + region.height + roughness * 2 - q * (region.height + roughness * 4);
|
|
80
|
+
const segments = Math.min(512, Math.max(1, Math.ceil(region.width / 2)));
|
|
81
|
+
const { exports, values } = kernel();
|
|
82
|
+
exports.births(frame.elapsed, linger);
|
|
83
|
+
if (linger) for (let i = 0; i < 1200; i++) values[11166 + i] = frame.progressAt(values[12366 + i]);
|
|
84
|
+
exports.sample(q, phase === "enter" ? 1 : 0, frame.elapsed, linger, wind, burnWidth, region.x, region.y, region.width, region.height, segments);
|
|
85
|
+
simulation?.present();
|
|
86
|
+
const bandPath = (depth) => {
|
|
87
|
+
c.beginPath();
|
|
88
|
+
for (let i = 0; i <= segments; i++) c.lineTo(values[i * 2], values[i * 2 + 1]);
|
|
89
|
+
for (let i = segments; i >= 0; i--) c.lineTo(values[i * 2], values[i * 2 + 1] + depth);
|
|
90
|
+
c.closePath();
|
|
91
|
+
};
|
|
92
|
+
const path = (depth) => {
|
|
93
|
+
c.beginPath();
|
|
94
|
+
c.moveTo(region.x, region.y + region.height + charDepth + 40);
|
|
95
|
+
for (let i = 0; i <= segments; i++) c.lineTo(values[i * 2], values[i * 2 + 1] + depth);
|
|
96
|
+
c.lineTo(region.x + region.width, values[segments * 2 + 1] + depth);
|
|
97
|
+
c.lineTo(region.x + region.width, region.y + region.height + charDepth + 40);
|
|
98
|
+
c.closePath();
|
|
99
|
+
};
|
|
100
|
+
if (q > 0) {
|
|
101
|
+
c.save();
|
|
102
|
+
c.setTransform(matrix);
|
|
103
|
+
path(0);
|
|
104
|
+
c.clip();
|
|
105
|
+
c.setTransform(1, 0, 0, 1, 0, 0);
|
|
106
|
+
c.drawImage(source, 0, 0);
|
|
107
|
+
c.restore();
|
|
108
|
+
c.setTransform(matrix);
|
|
109
|
+
c.globalCompositeOperation = "source-atop";
|
|
110
|
+
const strength = clamp((1 - q) / 0.12);
|
|
111
|
+
for (let band = 48; band > 0 && charDepth > 0; band--) {
|
|
112
|
+
const depth = charDepth * band / 48;
|
|
113
|
+
c.save();
|
|
114
|
+
bandPath(depth);
|
|
115
|
+
c.clip();
|
|
116
|
+
c.fillStyle = `rgba(27,16,12,${0.12 * strength})`;
|
|
117
|
+
c.fillRect(region.x, front - roughness * 2, region.width, depth + roughness * 4);
|
|
118
|
+
c.restore();
|
|
119
|
+
}
|
|
120
|
+
if (burnWidth > 0) {
|
|
121
|
+
c.save();
|
|
122
|
+
c.globalAlpha = strength;
|
|
123
|
+
c.filter = `blur(${Math.min(3, burnWidth * 0.16) * windows.density}px)`;
|
|
124
|
+
bandPath(burnWidth * 1.45);
|
|
125
|
+
c.fillStyle = "#8d2a0c";
|
|
126
|
+
c.fill();
|
|
127
|
+
c.filter = "none";
|
|
128
|
+
bandPath(burnWidth * 0.85);
|
|
129
|
+
c.fillStyle = "#d9510c";
|
|
130
|
+
c.fill();
|
|
131
|
+
bandPath(burnWidth * 0.48);
|
|
132
|
+
c.fillStyle = "#ff942c";
|
|
133
|
+
c.fill();
|
|
134
|
+
bandPath(burnWidth * 0.2);
|
|
135
|
+
c.fillStyle = "#ffd27c";
|
|
136
|
+
c.fill();
|
|
137
|
+
c.restore();
|
|
138
|
+
}
|
|
139
|
+
for (let i = 0; i < 180; i++) {
|
|
140
|
+
const offset = 1026 + i * 3;
|
|
141
|
+
const x = values[offset], y = values[offset + 1], r = values[offset + 2];
|
|
142
|
+
const heat = c.createRadialGradient(x, y, 0, x, y, r);
|
|
143
|
+
heat.addColorStop(0, `rgba(255,222,145,${strength * 0.5})`);
|
|
144
|
+
heat.addColorStop(0.3, `rgba(247,92,15,${strength * 0.4})`);
|
|
145
|
+
heat.addColorStop(1, "rgba(100,20,0,0)");
|
|
146
|
+
c.fillStyle = heat;
|
|
147
|
+
c.fillRect(x - r, y - r, r * 2, r * 2);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
c.setTransform(matrix);
|
|
151
|
+
tint.drawImage(source, 0, 0);
|
|
152
|
+
tint.globalCompositeOperation = "source-in";
|
|
153
|
+
tint.fillStyle = "#fff4cf";
|
|
154
|
+
tint.fillRect(0, 0, source.width, source.height);
|
|
155
|
+
const ash = scratch.context(2, source.width, source.height);
|
|
156
|
+
ash.drawImage(source, 0, 0);
|
|
157
|
+
ash.globalCompositeOperation = "source-in";
|
|
158
|
+
ash.fillStyle = "#766b60";
|
|
159
|
+
ash.fillRect(0, 0, source.width, source.height);
|
|
160
|
+
c.globalCompositeOperation = "source-over";
|
|
161
|
+
for (let i = 0; i < 1200; i++) {
|
|
162
|
+
const offset = 1566 + i * 8, alpha = values[offset + 5];
|
|
163
|
+
if (alpha < 0) continue;
|
|
164
|
+
const x = values[offset], y = values[offset + 1], size = values[offset + 2];
|
|
165
|
+
const sample = new DOMPoint(x, y).matrixTransform(matrix);
|
|
166
|
+
const dx = values[offset + 3], dy = values[offset + 4], age = values[offset + 7];
|
|
167
|
+
c.save();
|
|
168
|
+
c.globalAlpha = alpha;
|
|
169
|
+
c.translate(x + dx, y + dy);
|
|
170
|
+
c.rotate(values[offset + 6]);
|
|
171
|
+
const cooling = clamp((age - 0.2) / 0.8);
|
|
172
|
+
c.globalAlpha = alpha * (1 - cooling);
|
|
173
|
+
c.drawImage(tint.canvas, sample.x, sample.y, size * windows.density, size * windows.density, -size / 2, -size / 2, size, size);
|
|
174
|
+
if (cooling > 0) {
|
|
175
|
+
c.globalAlpha = alpha * cooling;
|
|
176
|
+
c.drawImage(ash.canvas, sample.x, sample.y, size * windows.density, size * windows.density, -size / 2, -size / 2, size, size);
|
|
177
|
+
}
|
|
178
|
+
c.restore();
|
|
179
|
+
}
|
|
180
|
+
return c.canvas.transferToImageBitmap();
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
return [Object.freeze({ [PIBBL_FILTER_EXECUTOR]: executor })];
|
|
186
|
+
};
|
|
187
|
+
return defineTransitionEffect(sampler(createKernel(seed)), linger, physics ? () => {
|
|
188
|
+
const kernel = createPhysicsKernel(seed);
|
|
189
|
+
const simulation = emberSimulation(kernel, physics, region, linger, burnWidth);
|
|
190
|
+
return { sample: sampler(kernel, simulation), advance: simulation.advance, reset: simulation.reset, dispose: simulation.dispose };
|
|
191
|
+
} : void 0);
|
|
192
|
+
}
|
|
193
|
+
export {
|
|
194
|
+
embers
|
|
195
|
+
};
|
|
196
|
+
//# sourceMappingURL=embers.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/lib/transitions/embers.ts"],
|
|
4
|
+
"sourcesContent": ["import { emberSimulation, resolveEmbersPhysics, type PibblEmbersPhysicsOptions } from './embers-physics.js';\nimport { lazyTransitionKernel } from './wasm/kernel.js';\nimport { bytes } from './wasm/embers-bytes.js';\nconst createKernel = lazyTransitionKernel(bytes, 2);\nconst createPhysicsKernel = lazyTransitionKernel(bytes, 4);\nimport { opacity } from '../../filters/native.js';\nimport { filterBoundaryExecutor, type CustomPreparedFilter } from '../../filters/filter-executor.js';\nimport { GLOBAL_STATE } from '../global-state.js';\nimport { getOptionalService } from '../optional-services.js';\nimport { PIBBL_FILTER_EXECUTOR, type PibblFilterExecutor } from '../style/filter-types.js';\nimport type { PibblInstance } from '../types.js';\nimport { defineTransitionEffect, type PibblTransitionEffect } from './fade.js';\n\n/**\n * Appearance, motion, and timing controls for an ember visibility transition.\n *\n * @see {@link PibblEmbersPhysicsOptions}\n * @see {@link embers}\n */\nexport interface PibblEmbersOptions {\n /** Local coordinates enclosing the subject; the burn travels upward through this area. */\n readonly region: Readonly<{\n /**\n * Horizontal coordinate or displacement in the containing coordinate system. See\n * {@link PibblEmbersOptions}.\n */\n x: number;\n /**\n * Vertical coordinate or displacement in the containing coordinate system. See\n * {@link PibblEmbersOptions}.\n */\n y: number;\n /**\n * Horizontal extent in the units of the containing geometry or surface. See\n * {@link PibblEmbersOptions}.\n */\n width: number;\n /**\n * Vertical extent in the units of the containing geometry or surface. See\n * {@link PibblEmbersOptions}.\n */\n height: number;\n }>;\n /**\n * Depth of the darkened char region along the ember transition boundary. See\n * {@link PibblEmbersOptions}.\n */\n readonly charDepth?: number;\n /**\n * Width of the glowing burn region along the transition boundary. See {@link PibblEmbersOptions}.\n */\n readonly burnWidth?: number;\n /** Horizontal drift in local units; negative blows left. */\n readonly wind?: number;\n /**\n * Seed used for deterministic sampling or simulation initialization. See\n * {@link PibblEmbersOptions}.\n */\n readonly seed?: number;\n /**\n * Maximum airborne particle lifetime in milliseconds; completion includes this tail. Default\n * 700.\n */\n readonly linger?: number;\n /** Opt-in local force simulation and collision. Requires a positive linger. */\n readonly physics?: PibblEmbersPhysicsOptions;\n}\nconst SCRATCH = Symbol('pibbl.transition.embers');\nclass EmberSurfaces {\n private surfaces: OffscreenCanvas[] = [];\n used = false;\n private committed = false;\n constructor(private readonly instance: PibblInstance) {}\n beginRender(): void { this.used = false; }\n endRender(success: boolean): void {\n if (success && this.used) { this.committed = true; return; }\n if (success || !this.committed) this.dispose();\n }\n context(index: number, width: number, height: number): OffscreenCanvasRenderingContext2D {\n const canvas = this.surfaces[index] ??= new OffscreenCanvas(width, height);\n if (canvas.width !== width) canvas.width = width;\n if (canvas.height !== height) canvas.height = height;\n const context = canvas.getContext('2d');\n if (!context) throw new Error('Embers requires a Canvas 2D surface.');\n context.reset();\n return context;\n }\n dispose(): void {\n for (const surface of this.surfaces) { surface.width = 0; surface.height = 0; }\n this.surfaces = [];\n this.instance.optionalServices.delete(SCRATCH);\n }\n}\nconst clamp = (value: number) => Math.max(0, Math.min(1, value));\n\n/**\n * A seeded burn/char front over one captured subtree, with outward drifting fragments.\n *\n * @param options - Ember emission, motion, appearance, and optional collision settings. See\n * {@link PibblEmbersOptions} .\n * @returns An ember transition effect. See {@link PibblTransitionEffect}.\n *\n * @see {@link PibblEmbersOptions}\n * @see {@link PibblTransitionEffect}\n */\nexport function embers(options: PibblEmbersOptions): PibblTransitionEffect {\n const region = Object.freeze({ ...options.region });\n const charDepth = options.charDepth ?? 65, burnWidth = options.burnWidth ?? 12;\n const wind = options.wind ?? 110, seed = options.seed ?? 0, linger = options.linger ?? 700;\n for (const [name, value] of Object.entries({ ...region, charDepth, burnWidth, wind, seed, linger })) {\n if (!Number.isFinite(value)) throw new RangeError(`embers ${name} must be finite.`);\n }\n if (!(region.width > 0 && region.height > 0) || charDepth < 0 || burnWidth < 0 || linger < 0) throw new RangeError('embers requires a positive region and nonnegative charDepth/burnWidth/linger.');\n const physics = options.physics === undefined ? undefined : resolveEmbersPhysics(options.physics);\n if (physics && linger === 0) throw new RangeError('Ember physics requires a positive linger.');\n const sampler = (kernel: ReturnType<typeof createKernel>, simulation?: ReturnType<typeof emberSimulation>): import('./fade.js').TransitionSampler => (q, phase, frame) => {\n if (simulation?.disposed) return [opacity({ amount: 0 })];\n if ((!frame.active || !linger) && q === 1) return [];\n if ((!frame.active || !linger) && q === 0) return [opacity({ amount: 0 })];\n const executor: PibblFilterExecutor = {\n render: filterBoundaryExecutor.render,\n prepare(): CustomPreparedFilter {\n return {\n executor: filterBoundaryExecutor,\n reverseInfluence: output => ({ ...output }),\n process(source, windows) {\n const instance = GLOBAL_STATE.currentPibblInstance;\n if (!instance) throw new Error('Embers requires an active Pibbl instance.');\n const scratch = getOptionalService(instance, SCRATCH, () => new EmberSurfaces(instance));\n scratch.used = true;\n const c = scratch.context(0, source.width, source.height);\n const tint = scratch.context(1, source.width, source.height);\n const matrix = windows.source.renderTransform;\n const roughness = Math.min(5, region.height * .015);\n const front = region.y + region.height + roughness * 2 - q * (region.height + roughness * 4);\n const segments = Math.min(512, Math.max(1, Math.ceil(region.width / 2)));\n const { exports, values } = kernel();\n exports.births!(frame.elapsed, linger);\n // The controller remains the source of truth for reversal history.\n if (linger) for (let i = 0; i < 1200; i++) values[11166 + i] = frame.progressAt(values[12366 + i]!);\n exports.sample!(q, phase === 'enter' ? 1 : 0, frame.elapsed, linger, wind, burnWidth, region.x, region.y, region.width, region.height, segments);\n simulation?.present();\n const bandPath = (depth: number) => {\n c.beginPath();\n for (let i = 0; i <= segments; i++) c.lineTo(values[i * 2]!, values[i * 2 + 1]!);\n for (let i = segments; i >= 0; i--) c.lineTo(values[i * 2]!, values[i * 2 + 1]! + depth);\n c.closePath();\n };\n const path = (depth: number) => {\n c.beginPath(); c.moveTo(region.x, region.y + region.height + charDepth + 40);\n for (let i = 0; i <= segments; i++) c.lineTo(values[i * 2]!, values[i * 2 + 1]! + depth);\n c.lineTo(region.x + region.width, values[segments * 2 + 1]! + depth);\n c.lineTo(region.x + region.width, region.y + region.height + charDepth + 40); c.closePath();\n };\n if (q > 0) {\n c.save(); c.setTransform(matrix); path(0); c.clip();\n c.setTransform(1, 0, 0, 1, 0, 0); c.drawImage(source, 0, 0); c.restore();\n c.setTransform(matrix); c.globalCompositeOperation = 'source-atop';\n const strength = clamp((1 - q) / .12);\n // Continuous overlapping contour bands avoid vertical striping at the hot edge.\n for (let band = 48; band > 0 && charDepth > 0; band--) {\n const depth = charDepth * band / 48;\n c.save();\n bandPath(depth); c.clip();\n c.fillStyle = `rgba(27,16,12,${.12 * strength})`;\n c.fillRect(region.x, front - roughness * 2, region.width, depth + roughness * 4);\n c.restore();\n }\n // A connected thermal front carries the light; individual coals only\n // add texture. Source-atop preserves holes in the captured silhouette.\n if (burnWidth > 0) {\n c.save(); c.globalAlpha = strength;\n c.filter = `blur(${Math.min(3, burnWidth * .16) * windows.density}px)`;\n bandPath(burnWidth * 1.45); c.fillStyle = '#8d2a0c'; c.fill();\n c.filter = 'none';\n bandPath(burnWidth * .85); c.fillStyle = '#d9510c'; c.fill();\n bandPath(burnWidth * .48); c.fillStyle = '#ff942c'; c.fill();\n bandPath(burnWidth * .2); c.fillStyle = '#ffd27c'; c.fill();\n c.restore();\n }\n for (let i = 0; i < 180; i++) {\n const offset = 1026 + i * 3;\n const x = values[offset]!, y = values[offset + 1]!, r = values[offset + 2]!;\n const heat = c.createRadialGradient(x, y, 0, x, y, r);\n heat.addColorStop(0, `rgba(255,222,145,${strength * .5})`);\n heat.addColorStop(.3, `rgba(247,92,15,${strength * .4})`);\n heat.addColorStop(1, 'rgba(100,20,0,0)');\n c.fillStyle = heat; c.fillRect(x - r, y - r, r * 2, r * 2);\n }\n }\n c.setTransform(matrix);\n // Tint a copy of the subject once. Sampling small patches means transparent\n // gaps cannot emit particles, without reading pixels back from the canvas.\n tint.drawImage(source, 0, 0); tint.globalCompositeOperation = 'source-in';\n tint.fillStyle = '#fff4cf'; tint.fillRect(0, 0, source.width, source.height);\n const ash = scratch.context(2, source.width, source.height);\n ash.drawImage(source, 0, 0); ash.globalCompositeOperation = 'source-in';\n ash.fillStyle = '#766b60'; ash.fillRect(0, 0, source.width, source.height);\n c.globalCompositeOperation = 'source-over';\n for (let i = 0; i < 1200; i++) {\n const offset = 1566 + i * 8, alpha = values[offset + 5]!;\n if (alpha < 0) continue;\n const x = values[offset]!, y = values[offset + 1]!, size = values[offset + 2]!;\n const sample = new DOMPoint(x, y).matrixTransform(matrix);\n const dx = values[offset + 3]!, dy = values[offset + 4]!, age = values[offset + 7]!;\n c.save(); c.globalAlpha = alpha;\n c.translate(x + dx, y + dy); c.rotate(values[offset + 6]!);\n // Hot fragments cool continuously into dim ash rather than switching off.\n const cooling = clamp((age - .2) / .8);\n c.globalAlpha = alpha * (1 - cooling);\n c.drawImage(tint.canvas, sample.x, sample.y, size * windows.density, size * windows.density, -size / 2, -size / 2, size, size);\n if (cooling > 0) {\n c.globalAlpha = alpha * cooling;\n c.drawImage(ash.canvas, sample.x, sample.y, size * windows.density, size * windows.density, -size / 2, -size / 2, size, size);\n }\n c.restore();\n }\n return c.canvas.transferToImageBitmap();\n },\n };\n },\n };\n return [Object.freeze({ [PIBBL_FILTER_EXECUTOR]: executor })];\n };\n return defineTransitionEffect(sampler(createKernel(seed)), linger, physics ? () => {\n const kernel = createPhysicsKernel(seed);\n const simulation = emberSimulation(kernel, physics, region, linger, burnWidth);\n return { sample: sampler(kernel, simulation), advance: simulation.advance, reset: simulation.reset, dispose: simulation.dispose };\n } : undefined);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { PibblVisibilityTransitionOptions } from "../hooks/use-visibility-transition.js";
|
|
2
|
+
import type { embers } from "./embers.js";
|
|
3
|
+
import type { PibblFilter } from '../style/filter-types.js';
|
|
4
|
+
declare const effectBrand: unique symbol;
|
|
5
|
+
/**
|
|
6
|
+
* Immutable, inert visual definition; mounted state belongs to its controller.
|
|
7
|
+
*
|
|
8
|
+
* @see {@link fade}
|
|
9
|
+
* @see {@link PibblVisibilityTransitionOptions}
|
|
10
|
+
* @see {@link embers}
|
|
11
|
+
*/
|
|
12
|
+
export interface PibblTransitionEffect {
|
|
13
|
+
readonly [effectBrand]: true;
|
|
14
|
+
}
|
|
15
|
+
export interface TransitionFrame {
|
|
16
|
+
readonly active: boolean;
|
|
17
|
+
readonly elapsed: number;
|
|
18
|
+
readonly progressAt: (elapsed: number) => number;
|
|
19
|
+
}
|
|
20
|
+
export type TransitionSampler = (progress: number, phase: 'enter' | 'exit', frame: TransitionFrame) => readonly PibblFilter[];
|
|
21
|
+
/**
|
|
22
|
+
* A uniform fade of the receiving primitive and all of its descendants together.
|
|
23
|
+
*
|
|
24
|
+
* @returns A fade effect to use with a visibility transition. See {@link PibblTransitionEffect}.
|
|
25
|
+
*
|
|
26
|
+
* @see {@link PibblTransitionEffect}
|
|
27
|
+
*/
|
|
28
|
+
export declare function fade(): PibblTransitionEffect;
|
|
29
|
+
export declare function transitionEffectSampler(definition: PibblTransitionEffect): TransitionSampler;
|
|
30
|
+
/** @internal Shared registration for first-party definitions. */
|
|
31
|
+
export declare function defineTransitionEffect(sample: TransitionSampler, tail?: number, create?: () => TransitionRuntime): PibblTransitionEffect;
|
|
32
|
+
export declare function transitionEffectTail(definition: PibblTransitionEffect): number;
|
|
33
|
+
/** Private controller-owned state for effects that simulate during Advance. */
|
|
34
|
+
export interface TransitionRuntime {
|
|
35
|
+
readonly sample: TransitionSampler;
|
|
36
|
+
advance?(elapsed: number, progressAt: (time: number) => number): void;
|
|
37
|
+
reset?(): void;
|
|
38
|
+
dispose?(): void;
|
|
39
|
+
}
|
|
40
|
+
export declare function createTransitionRuntime(effect: PibblTransitionEffect): TransitionRuntime;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { opacity } from "../../filters/native.js";
|
|
2
|
+
const definitions = /* @__PURE__ */ new WeakMap();
|
|
3
|
+
function fade() {
|
|
4
|
+
return defineTransitionEffect((progress) => progress === 1 ? [] : [opacity({ amount: progress })]);
|
|
5
|
+
}
|
|
6
|
+
function transitionEffectSampler(definition) {
|
|
7
|
+
const record = definitions.get(definition);
|
|
8
|
+
if (!record) throw new TypeError("Expected a Pibbl transition effect definition.");
|
|
9
|
+
return record.sample;
|
|
10
|
+
}
|
|
11
|
+
function defineTransitionEffect(sample, tail = 0, create) {
|
|
12
|
+
const definition = Object.freeze({});
|
|
13
|
+
definitions.set(definition, { sample, tail, create });
|
|
14
|
+
return definition;
|
|
15
|
+
}
|
|
16
|
+
function transitionEffectTail(definition) {
|
|
17
|
+
transitionEffectSampler(definition);
|
|
18
|
+
return definitions.get(definition).tail;
|
|
19
|
+
}
|
|
20
|
+
function createTransitionRuntime(effect) {
|
|
21
|
+
const sample = transitionEffectSampler(effect);
|
|
22
|
+
return definitions.get(effect).create?.() ?? { sample };
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
createTransitionRuntime,
|
|
26
|
+
defineTransitionEffect,
|
|
27
|
+
fade,
|
|
28
|
+
transitionEffectSampler,
|
|
29
|
+
transitionEffectTail
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=fade.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/lib/transitions/fade.ts"],
|
|
4
|
+
"sourcesContent": ["import type { PibblVisibilityTransitionOptions } from '../hooks/use-visibility-transition.js';\nimport type { embers } from './embers.js';\nimport { opacity } from '../../filters/native.js';\nimport type { PibblFilter } from '../style/filter-types.js';\n\ndeclare const effectBrand: unique symbol;\n/**\n * Immutable, inert visual definition; mounted state belongs to its controller.\n *\n * @see {@link fade}\n * @see {@link PibblVisibilityTransitionOptions}\n * @see {@link embers}\n */\nexport interface PibblTransitionEffect { readonly [effectBrand]: true }\nexport interface TransitionFrame {\n readonly active: boolean;\n readonly elapsed: number;\n readonly progressAt: (elapsed: number) => number;\n}\nexport type TransitionSampler = (progress: number, phase: 'enter' | 'exit', frame: TransitionFrame) => readonly PibblFilter[];\nconst definitions = new WeakMap<PibblTransitionEffect, { sample: TransitionSampler; tail: number; create?: () => TransitionRuntime }>();\n/**\n * A uniform fade of the receiving primitive and all of its descendants together.\n *\n * @returns A fade effect to use with a visibility transition. See {@link PibblTransitionEffect}.\n *\n * @see {@link PibblTransitionEffect}\n */\nexport function fade(): PibblTransitionEffect {\n return defineTransitionEffect(progress => progress === 1 ? [] : [opacity({ amount: progress })]);\n}\nexport function transitionEffectSampler(definition: PibblTransitionEffect): TransitionSampler {\n const record = definitions.get(definition);\n if (!record) throw new TypeError('Expected a Pibbl transition effect definition.');\n return record.sample;\n}\n\n/** @internal Shared registration for first-party definitions. */\nexport function defineTransitionEffect(sample: TransitionSampler, tail = 0, create?: () => TransitionRuntime): PibblTransitionEffect {\n const definition = Object.freeze({}) as PibblTransitionEffect;\n definitions.set(definition, { sample, tail, create });\n return definition;\n}\n\nexport function transitionEffectTail(definition: PibblTransitionEffect): number {\n transitionEffectSampler(definition);\n return definitions.get(definition)!.tail;\n}\n\n/** Private controller-owned state for effects that simulate during Advance. */\nexport interface TransitionRuntime {\n readonly sample: TransitionSampler;\n advance?(elapsed: number, progressAt: (time: number) => number): void;\n reset?(): void;\n dispose?(): void;\n}\nexport function createTransitionRuntime(effect: PibblTransitionEffect): TransitionRuntime {\n const sample = transitionEffectSampler(effect);\n return definitions.get(effect)!.create?.() ?? { sample };\n}\n"],
|
|
5
|
+
"mappings": "AAEA,SAAS,eAAe;AAkBxB,MAAM,cAAc,oBAAI,QAA8G;AAQ/H,SAAS,OAA8B;AAC5C,SAAO,uBAAuB,cAAY,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,SAAS,CAAC,CAAC,CAAC;AACjG;AACO,SAAS,wBAAwB,YAAsD;AAC5F,QAAM,SAAS,YAAY,IAAI,UAAU;AACzC,MAAI,CAAC,OAAQ,OAAM,IAAI,UAAU,gDAAgD;AACjF,SAAO,OAAO;AAChB;AAGO,SAAS,uBAAuB,QAA2B,OAAO,GAAG,QAAyD;AACnI,QAAM,aAAa,OAAO,OAAO,CAAC,CAAC;AACnC,cAAY,IAAI,YAAY,EAAE,QAAQ,MAAM,OAAO,CAAC;AACpD,SAAO;AACT;AAEO,SAAS,qBAAqB,YAA2C;AAC9E,0BAAwB,UAAU;AAClC,SAAO,YAAY,IAAI,UAAU,EAAG;AACtC;AASO,SAAS,wBAAwB,QAAkD;AACxF,QAAM,SAAS,wBAAwB,MAAM;AAC7C,SAAO,YAAY,IAAI,MAAM,EAAG,SAAS,KAAK,EAAE,OAAO;AACzD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type PibblTransitionEffect } from './fade.js';
|
|
2
|
+
import { type TransitionRegion } from './capture.js';
|
|
3
|
+
/**
|
|
4
|
+
* Color, scanning, and distortion controls for a hologram visibility transition.
|
|
5
|
+
*
|
|
6
|
+
* @see {@link hologram}
|
|
7
|
+
*/
|
|
8
|
+
export interface PibblHologramOptions {
|
|
9
|
+
/** Logical region over which the effect is evaluated. See {@link TransitionRegion}. */
|
|
10
|
+
readonly region: TransitionRegion;
|
|
11
|
+
/** Entry location or direction used by the transition. See {@link PibblHologramOptions}. */
|
|
12
|
+
readonly entry?: Readonly<{
|
|
13
|
+
/**
|
|
14
|
+
* Horizontal coordinate or displacement in the containing coordinate system. See
|
|
15
|
+
* {@link PibblHologramOptions}.
|
|
16
|
+
*/
|
|
17
|
+
x: number;
|
|
18
|
+
/**
|
|
19
|
+
* Vertical coordinate or displacement in the containing coordinate system. See
|
|
20
|
+
* {@link PibblHologramOptions}.
|
|
21
|
+
*/
|
|
22
|
+
y: number;
|
|
23
|
+
}>;
|
|
24
|
+
/** Hue control for the transition's emitted color. See {@link PibblHologramOptions}. */
|
|
25
|
+
readonly hue?: number;
|
|
26
|
+
/** Brightness control for the transition effect. See {@link PibblHologramOptions}. */
|
|
27
|
+
readonly brightness?: number;
|
|
28
|
+
/** Fog intensity used by the hologram effect. See {@link PibblHologramOptions}. */
|
|
29
|
+
readonly fog?: number;
|
|
30
|
+
/** Distortion intensity used by the hologram effect. See {@link PibblHologramOptions}. */
|
|
31
|
+
readonly glitch?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Seed used for deterministic sampling or simulation initialization. See
|
|
34
|
+
* {@link PibblHologramOptions}.
|
|
35
|
+
*/
|
|
36
|
+
readonly seed?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A diffuse scan reconstructs the captured subject while interference settles.
|
|
40
|
+
*
|
|
41
|
+
* @param options - Hologram appearance and animation settings. See {@link PibblHologramOptions}.
|
|
42
|
+
* @returns A hologram transition effect. See {@link PibblTransitionEffect}.
|
|
43
|
+
*
|
|
44
|
+
* @see {@link PibblHologramOptions}
|
|
45
|
+
* @see {@link PibblTransitionEffect}
|
|
46
|
+
*/
|
|
47
|
+
export declare function hologram(options: PibblHologramOptions): PibblTransitionEffect;
|