@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,385 @@
|
|
|
1
|
+
import { GLOBAL_STATE } from "../global-state.js";
|
|
2
|
+
import {
|
|
3
|
+
requireHookContext,
|
|
4
|
+
useHookSlot,
|
|
5
|
+
withHooksForbidden
|
|
6
|
+
} from "../hooks/hook-slot.js";
|
|
7
|
+
import { registerAdvanceParticipant } from "../scheduler/realm-scheduler.js";
|
|
8
|
+
import { signal } from "../signals/graph.js";
|
|
9
|
+
import {
|
|
10
|
+
registerTexturePaint
|
|
11
|
+
} from "./texture-protocol.js";
|
|
12
|
+
const recipes = /* @__PURE__ */ new WeakMap();
|
|
13
|
+
function defineTexture(definition) {
|
|
14
|
+
const stable = Object.freeze({ ...definition });
|
|
15
|
+
return (config) => {
|
|
16
|
+
const recipe = Object.freeze({});
|
|
17
|
+
recipes.set(recipe, {
|
|
18
|
+
definition: stable,
|
|
19
|
+
config: structuredClone(config)
|
|
20
|
+
});
|
|
21
|
+
return recipe;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function placement(value = {}) {
|
|
25
|
+
if (value.mode !== void 0 && value.mode !== "repeat" && value.mode !== "stretch")
|
|
26
|
+
throw new TypeError("Unknown texture placement mode.");
|
|
27
|
+
for (const key of [
|
|
28
|
+
"tileWidth",
|
|
29
|
+
"tileHeight",
|
|
30
|
+
"offsetX",
|
|
31
|
+
"offsetY",
|
|
32
|
+
"rotation"
|
|
33
|
+
]) {
|
|
34
|
+
const n = value[key];
|
|
35
|
+
if (n !== void 0 && (!Number.isFinite(n) || (key === "tileWidth" || key === "tileHeight") && n <= 0))
|
|
36
|
+
throw new RangeError(`Invalid texture placement ${key}.`);
|
|
37
|
+
}
|
|
38
|
+
return Object.freeze({ ...value });
|
|
39
|
+
}
|
|
40
|
+
function dimensions(options) {
|
|
41
|
+
const width = options.resolution?.width ?? 256, height = options.resolution?.height ?? 160;
|
|
42
|
+
if (![width, height].every((n) => Number.isInteger(n) && n >= 8 && n <= 1024) || width * height > 262144)
|
|
43
|
+
throw new RangeError(
|
|
44
|
+
"Texture resolution must be 8..1024 cells per axis, at most 262144 cells."
|
|
45
|
+
);
|
|
46
|
+
return [width, height];
|
|
47
|
+
}
|
|
48
|
+
class Resource {
|
|
49
|
+
constructor(owner, recipe, options) {
|
|
50
|
+
this.owner = owner;
|
|
51
|
+
const [width, height] = dimensions(options);
|
|
52
|
+
this.optionsKey = JSON.stringify(options);
|
|
53
|
+
this.palette = options.palette && Object.freeze([...options.palette]);
|
|
54
|
+
this.canvas = new OffscreenCanvas(width, height);
|
|
55
|
+
this.definition = recipe.definition;
|
|
56
|
+
const self = this;
|
|
57
|
+
this.context = Object.freeze({
|
|
58
|
+
canvas: this.canvas,
|
|
59
|
+
get palette() {
|
|
60
|
+
return self.palette;
|
|
61
|
+
},
|
|
62
|
+
invalidate() {
|
|
63
|
+
if (!self.disposed) {
|
|
64
|
+
self.dirty = true;
|
|
65
|
+
if (!self.initializing) self.schedule();
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
requestFrame() {
|
|
69
|
+
if (!self.disposed) {
|
|
70
|
+
self.continuing = true;
|
|
71
|
+
self.schedule();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
const registerPaint = (value, placement2) => registerTexturePaint(value, {
|
|
76
|
+
resolvePaint: (ctx, bounds) => this.resolvePaint(ctx, bounds, placement2),
|
|
77
|
+
validate: () => this.assertOwner(),
|
|
78
|
+
borrow: (callback) => callback(this.borrow(placement2))
|
|
79
|
+
});
|
|
80
|
+
this.handle = Object.freeze({
|
|
81
|
+
send: (message) => {
|
|
82
|
+
if (this.disposed) return;
|
|
83
|
+
if (GLOBAL_STATE.currentPibblInstance)
|
|
84
|
+
throw new Error("Texture.send cannot run during Pibbl evaluation.");
|
|
85
|
+
if (!this.definition.receive)
|
|
86
|
+
throw new Error("This texture does not accept messages.");
|
|
87
|
+
if (this.messages.length >= 8192)
|
|
88
|
+
throw new RangeError("Texture message queue is full.");
|
|
89
|
+
this.messages.push(structuredClone(message));
|
|
90
|
+
this.schedule();
|
|
91
|
+
},
|
|
92
|
+
paint: (value) => {
|
|
93
|
+
const paint = Object.freeze({});
|
|
94
|
+
registerPaint(paint, placement(value));
|
|
95
|
+
return paint;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
registerPaint(this.handle, placement(this.definition.defaultPlacement));
|
|
99
|
+
try {
|
|
100
|
+
this.state = this.call(
|
|
101
|
+
() => this.definition.create(this.context, recipe.config)
|
|
102
|
+
);
|
|
103
|
+
this.hasState = true;
|
|
104
|
+
this.publishInitial();
|
|
105
|
+
this.initializing = false;
|
|
106
|
+
} catch (error) {
|
|
107
|
+
try {
|
|
108
|
+
this.dispose();
|
|
109
|
+
} catch {
|
|
110
|
+
}
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
owner;
|
|
115
|
+
revision = signal(0);
|
|
116
|
+
canvas;
|
|
117
|
+
committed;
|
|
118
|
+
spare;
|
|
119
|
+
provisional;
|
|
120
|
+
context;
|
|
121
|
+
handle;
|
|
122
|
+
state;
|
|
123
|
+
definition;
|
|
124
|
+
disposed = false;
|
|
125
|
+
hasState = false;
|
|
126
|
+
dirty = true;
|
|
127
|
+
sequence = 0;
|
|
128
|
+
publicationCanvasesCreated = 0;
|
|
129
|
+
messages = [];
|
|
130
|
+
unregister;
|
|
131
|
+
continuing = false;
|
|
132
|
+
lastTime;
|
|
133
|
+
initializing = true;
|
|
134
|
+
retryScheduled = false;
|
|
135
|
+
palette;
|
|
136
|
+
optionsKey;
|
|
137
|
+
call(fn) {
|
|
138
|
+
return withHooksForbidden(
|
|
139
|
+
"Texture implementations cannot call Pibbl hooks.",
|
|
140
|
+
fn
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
update(recipe, options) {
|
|
144
|
+
if (this.disposed) return;
|
|
145
|
+
if (recipe.definition !== this.definition)
|
|
146
|
+
throw new Error(
|
|
147
|
+
"Changing a texture definition requires a new keyed owner."
|
|
148
|
+
);
|
|
149
|
+
const [width, height] = dimensions(options);
|
|
150
|
+
const nextKey = JSON.stringify(options);
|
|
151
|
+
if (nextKey !== this.optionsKey) {
|
|
152
|
+
this.palette = options.palette && Object.freeze([...options.palette]);
|
|
153
|
+
this.optionsKey = nextKey;
|
|
154
|
+
if (width !== this.canvas.width || height !== this.canvas.height) {
|
|
155
|
+
try {
|
|
156
|
+
this.disposeState();
|
|
157
|
+
this.canvas.width = width;
|
|
158
|
+
this.canvas.height = height;
|
|
159
|
+
this.messages.length = 0;
|
|
160
|
+
this.lastTime = void 0;
|
|
161
|
+
this.state = this.call(
|
|
162
|
+
() => this.definition.create(this.context, recipe.config)
|
|
163
|
+
);
|
|
164
|
+
this.hasState = true;
|
|
165
|
+
} catch (error) {
|
|
166
|
+
try {
|
|
167
|
+
this.dispose();
|
|
168
|
+
} catch {
|
|
169
|
+
}
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
this.context.invalidate();
|
|
174
|
+
}
|
|
175
|
+
this.call(
|
|
176
|
+
() => this.definition.update?.(this.state, recipe.config, this.context)
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
unschedule() {
|
|
180
|
+
this.unregister?.();
|
|
181
|
+
this.unregister = void 0;
|
|
182
|
+
}
|
|
183
|
+
schedule() {
|
|
184
|
+
if (this.unregister || this.disposed) return;
|
|
185
|
+
const participant = (frame, batch) => {
|
|
186
|
+
const retryAtEntry = this.retryScheduled;
|
|
187
|
+
this.unschedule();
|
|
188
|
+
const wasContinuing = this.continuing;
|
|
189
|
+
this.continuing = false;
|
|
190
|
+
try {
|
|
191
|
+
const messages = this.messages;
|
|
192
|
+
this.messages = [];
|
|
193
|
+
for (const message of messages)
|
|
194
|
+
this.call(
|
|
195
|
+
() => this.definition.receive?.(this.state, message, this.context)
|
|
196
|
+
);
|
|
197
|
+
if (wasContinuing)
|
|
198
|
+
this.call(
|
|
199
|
+
() => this.definition.advance?.(
|
|
200
|
+
this.state,
|
|
201
|
+
{
|
|
202
|
+
delta: this.lastTime === void 0 ? 0 : Math.max(0, frame.logicalTime - this.lastTime),
|
|
203
|
+
time: frame.logicalTime
|
|
204
|
+
},
|
|
205
|
+
this.context
|
|
206
|
+
)
|
|
207
|
+
);
|
|
208
|
+
this.lastTime = this.continuing ? frame.logicalTime : void 0;
|
|
209
|
+
if (this.dirty) {
|
|
210
|
+
const candidate = this.rasterizeCandidate();
|
|
211
|
+
let previous;
|
|
212
|
+
batch.stage(this.revision, ++this.sequence, participant);
|
|
213
|
+
batch.registerLifecycle(participant, {
|
|
214
|
+
apply: () => {
|
|
215
|
+
if (this.disposed) {
|
|
216
|
+
candidate.width = candidate.height = 0;
|
|
217
|
+
} else {
|
|
218
|
+
previous = this.committed;
|
|
219
|
+
this.committed = candidate;
|
|
220
|
+
this.spare = previous;
|
|
221
|
+
this.retryScheduled = false;
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
rollback: () => {
|
|
225
|
+
if (!this.disposed) {
|
|
226
|
+
this.committed = previous;
|
|
227
|
+
this.spare = candidate;
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
abort: () => {
|
|
231
|
+
this.spare = candidate;
|
|
232
|
+
if (!this.disposed) {
|
|
233
|
+
this.dirty = true;
|
|
234
|
+
this.schedule();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
if (!this.continuing && this.messages.length === 0) {
|
|
240
|
+
this.unschedule();
|
|
241
|
+
}
|
|
242
|
+
} catch (error) {
|
|
243
|
+
this.unschedule();
|
|
244
|
+
this.continuing = false;
|
|
245
|
+
if (this.retryScheduled && !retryAtEntry) this.schedule();
|
|
246
|
+
throw error;
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
this.unregister = registerAdvanceParticipant(participant);
|
|
250
|
+
}
|
|
251
|
+
rasterizeCandidate() {
|
|
252
|
+
const ctx = this.canvas.getContext("2d");
|
|
253
|
+
if (!ctx) throw new Error("Textures require OffscreenCanvas 2D.");
|
|
254
|
+
ctx.save();
|
|
255
|
+
try {
|
|
256
|
+
ctx.resetTransform();
|
|
257
|
+
ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
258
|
+
this.call(() => this.definition.rasterize(this.state, this.context));
|
|
259
|
+
this.dirty = false;
|
|
260
|
+
} finally {
|
|
261
|
+
ctx.restore();
|
|
262
|
+
}
|
|
263
|
+
const spare = this.spare;
|
|
264
|
+
this.spare = void 0;
|
|
265
|
+
const reusable = spare?.width === this.canvas.width && spare.height === this.canvas.height ? spare : void 0;
|
|
266
|
+
if (spare && spare !== reusable) spare.width = spare.height = 0;
|
|
267
|
+
let candidate;
|
|
268
|
+
try {
|
|
269
|
+
candidate = reusable ?? this.createPublicationCanvas();
|
|
270
|
+
const candidateContext = candidate.getContext("2d");
|
|
271
|
+
if (!candidateContext) throw new Error("Textures require OffscreenCanvas 2D.");
|
|
272
|
+
candidateContext.clearRect(0, 0, candidate.width, candidate.height);
|
|
273
|
+
candidateContext.drawImage(this.canvas, 0, 0);
|
|
274
|
+
return candidate;
|
|
275
|
+
} catch (error) {
|
|
276
|
+
if (candidate) candidate.width = candidate.height = 0;
|
|
277
|
+
this.dirty = true;
|
|
278
|
+
if (!this.retryScheduled) {
|
|
279
|
+
this.retryScheduled = true;
|
|
280
|
+
this.schedule();
|
|
281
|
+
}
|
|
282
|
+
throw error;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
createPublicationCanvas() {
|
|
286
|
+
this.publicationCanvasesCreated++;
|
|
287
|
+
return new OffscreenCanvas(this.canvas.width, this.canvas.height);
|
|
288
|
+
}
|
|
289
|
+
/** @internal Structural ownership evidence for texture publication tests. */
|
|
290
|
+
publicationSnapshot() {
|
|
291
|
+
return Object.freeze({ publicationCanvasesCreated: this.publicationCanvasesCreated, hasOwner: this.owner !== void 0 });
|
|
292
|
+
}
|
|
293
|
+
publishInitial() {
|
|
294
|
+
const candidate = this.rasterizeCandidate();
|
|
295
|
+
const transaction = GLOBAL_STATE.renderTransaction;
|
|
296
|
+
if (!transaction) {
|
|
297
|
+
this.committed = candidate;
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
this.provisional = { canvas: candidate, transaction };
|
|
301
|
+
transaction.onFinish((success) => {
|
|
302
|
+
if (this.provisional?.transaction !== transaction) return;
|
|
303
|
+
const provisional = this.provisional;
|
|
304
|
+
this.provisional = void 0;
|
|
305
|
+
if (success && !this.disposed) this.committed = provisional.canvas;
|
|
306
|
+
else provisional.canvas.width = provisional.canvas.height = 0;
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
assertOwner() {
|
|
310
|
+
if (this.disposed) throw new Error("Cannot paint with a disposed texture.");
|
|
311
|
+
let root = GLOBAL_STATE.currentPibblInstance;
|
|
312
|
+
while (root?.parent) root = GLOBAL_STATE.pibblInstances.get(root.parent);
|
|
313
|
+
let owner = this.owner;
|
|
314
|
+
while (owner?.parent) owner = GLOBAL_STATE.pibblInstances.get(owner.parent);
|
|
315
|
+
if (root !== owner) throw new Error("Textures may only be shared within their owning Pibbl tree.");
|
|
316
|
+
}
|
|
317
|
+
borrow(placement2) {
|
|
318
|
+
this.assertOwner();
|
|
319
|
+
const revision = this.revision.get();
|
|
320
|
+
const provisional = this.provisional;
|
|
321
|
+
const source = provisional !== void 0 && provisional.transaction === GLOBAL_STATE.renderTransaction ? provisional.canvas : this.committed;
|
|
322
|
+
if (!source) throw new Error("Texture pixels are not committed for this render transaction.");
|
|
323
|
+
return Object.freeze({ source, width: source.width, height: source.height, revision, resource: this, placement: placement2 });
|
|
324
|
+
}
|
|
325
|
+
resolvePaint(ctx, bounds, p) {
|
|
326
|
+
const borrowed = this.borrow(p);
|
|
327
|
+
const pattern = ctx.createPattern(borrowed.source, "repeat");
|
|
328
|
+
if (!pattern) throw new Error("Could not create texture paint.");
|
|
329
|
+
const stretch = p.mode === "stretch";
|
|
330
|
+
const width = stretch ? bounds.width : p.tileWidth ?? borrowed.width;
|
|
331
|
+
const height = stretch ? bounds.height : p.tileHeight ?? borrowed.height;
|
|
332
|
+
pattern.setTransform(new DOMMatrix().translate(bounds.x + (p.offsetX ?? 0), bounds.y + (p.offsetY ?? 0)).rotate(p.rotation ?? 0).scale(Math.max(1e-6, width) / borrowed.width, Math.max(1e-6, height) / borrowed.height));
|
|
333
|
+
return pattern;
|
|
334
|
+
}
|
|
335
|
+
dispose() {
|
|
336
|
+
if (this.disposed) return;
|
|
337
|
+
this.disposed = true;
|
|
338
|
+
this.unschedule();
|
|
339
|
+
this.messages.length = 0;
|
|
340
|
+
try {
|
|
341
|
+
this.disposeState();
|
|
342
|
+
} finally {
|
|
343
|
+
this.canvas.width = this.canvas.height = 0;
|
|
344
|
+
this.committed && (this.committed.width = this.committed.height = 0);
|
|
345
|
+
this.spare && (this.spare.width = this.spare.height = 0);
|
|
346
|
+
this.provisional && (this.provisional.canvas.width = this.provisional.canvas.height = 0);
|
|
347
|
+
this.state = void 0;
|
|
348
|
+
this.hasState = false;
|
|
349
|
+
this.committed = void 0;
|
|
350
|
+
this.spare = void 0;
|
|
351
|
+
this.provisional = void 0;
|
|
352
|
+
this.owner = void 0;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
disposeState() {
|
|
356
|
+
if (!this.hasState) return;
|
|
357
|
+
this.hasState = false;
|
|
358
|
+
const state = this.state;
|
|
359
|
+
this.state = void 0;
|
|
360
|
+
this.call(() => this.definition.dispose?.(state, this.context));
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function useTexture(input, options = {}) {
|
|
364
|
+
const recipe = recipes.get(input);
|
|
365
|
+
if (!recipe)
|
|
366
|
+
throw new TypeError("useTexture requires a defineTexture recipe.");
|
|
367
|
+
const { pibblInstance } = requireHookContext();
|
|
368
|
+
let created = false;
|
|
369
|
+
const resource = useHookSlot("texture", (teardowns) => {
|
|
370
|
+
created = true;
|
|
371
|
+
const value = new Resource(pibblInstance, recipe, options);
|
|
372
|
+
teardowns.add(() => value.dispose());
|
|
373
|
+
return value;
|
|
374
|
+
}).value;
|
|
375
|
+
if (!created)
|
|
376
|
+
GLOBAL_STATE.renderTransaction.onFinish((success) => {
|
|
377
|
+
if (success) resource.update(recipe, options);
|
|
378
|
+
});
|
|
379
|
+
return resource.handle;
|
|
380
|
+
}
|
|
381
|
+
export {
|
|
382
|
+
defineTexture,
|
|
383
|
+
useTexture
|
|
384
|
+
};
|
|
385
|
+
//# sourceMappingURL=texture.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/lib/textures/texture.ts"],
|
|
4
|
+
"sourcesContent": ["import { GLOBAL_STATE } from \"../global-state.js\";\nimport {\n requireHookContext,\n useHookSlot,\n withHooksForbidden,\n} from \"../hooks/hook-slot.js\";\nimport { registerAdvanceParticipant } from \"../scheduler/realm-scheduler.js\";\nimport { signal } from \"../signals/graph.js\";\nimport type { PibblInstance, RenderingContext2D } from \"../types.js\";\nimport {\n registerTexturePaint,\n type BorrowedTextureRaster,\n type TexturePaint,\n type TexturePlacement,\n} from \"./texture-protocol.js\";\n\nexport type { TexturePaint, TexturePlacement } from \"./texture-protocol.js\";\n\ndeclare const recipeBrand: unique symbol;\n/**\n * A mount-owned texture handle that provides paint and accepts recipe messages.\n *\n * @see {@link TexturePaint}\n * @see {@link TexturePlacement}\n * @see {@link useTexture}\n */\nexport interface Texture<Message = never> extends TexturePaint {\n /**\n * Delivers a typed message to the mounted recipe instance. See {@link Texture}.\n * @param message - Message delivered to the texture definition's receive callback.\n */\n send(message: Message): void;\n /**\n * Returns a paint view with the requested placement while retaining the same texture ownership.\n * See {@link TexturePaint}.\n * @param placement - Destination bounds and texture placement policy. See\n * {@link TexturePlacement} .\n * @returns A paint descriptor referencing this mounted texture. See {@link TexturePaint}.\n */\n paint(placement: TexturePlacement): TexturePaint;\n}\n/**\n * Resolution and runtime configuration for a mounted texture recipe.\n *\n * @see {@link useTexture}\n */\nexport interface TextureOptions {\n /** Dimensions of the simulation or raster grid. See {@link TextureOptions}. */\n readonly resolution?: {\n /**\n * Horizontal extent in the units of the containing geometry or surface. See\n * {@link TextureOptions}.\n */\n readonly width: number;\n /**\n * Vertical extent in the units of the containing geometry or surface. See\n * {@link TextureOptions}.\n */\n readonly height: number;\n };\n /** Ordered colors used to present texture intensity. See {@link TextureOptions}. */\n readonly palette?: readonly string[];\n}\n/**\n * Surface and invalidation facilities supplied to texture lifecycle callbacks.\n *\n * @see {@link TextureDefinition}\n */\nexport interface TextureContext {\n /** Canvas surface associated with this resource or mount. See {@link TextureContext}. */\n readonly canvas: OffscreenCanvas;\n /** Ordered colors used to present texture intensity. See {@link TextureContext}. */\n readonly palette: readonly string[] | undefined;\n /** Marks the source pixels dirty and requests a Pibbl update. */\n invalidate(): void;\n /** Requests another Pibbl frame; implementations stop by not requesting again. */\n requestFrame(): void;\n}\n/**\n * Shared logical time and elapsed milliseconds supplied while advancing a texture.\n *\n * @see {@link TextureDefinition}\n */\nexport interface TextureFrame {\n /** Elapsed time since the preceding texture frame, in milliseconds. See {@link TextureFrame}. */\n readonly delta: number;\n /** Current shared logical time, in milliseconds. See {@link TextureFrame}. */\n readonly time: number;\n}\n/**\n * Lifecycle callbacks for creating, updating, painting, and disposing texture resources.\n *\n * @see {@link TexturePlacement}\n * @see {@link TextureContext}\n * @see {@link TextureFrame}\n * @see {@link defineTexture}\n */\nexport interface TextureDefinition<Config, State, Message = never> {\n /**\n * Texture placement used when no paint-specific override is supplied. See\n * {@link TexturePlacement}.\n */\n readonly defaultPlacement?: TexturePlacement;\n /**\n * Allocates state for a mounted texture recipe. See {@link TextureDefinition}.\n * @param context - Texture-owned drawing surface and scheduling services. See\n * {@link TextureContext} .\n * @param config - Initial recipe configuration.\n * @returns State retained for this mounted texture lifetime.\n */\n create(context: TextureContext, config: Readonly<Config>): State;\n /**\n * Updates existing state when the recipe configuration changes. See {@link TextureDefinition}.\n * @param state - State returned by create.\n * @param config - Latest recipe configuration.\n * @param context - Texture-owned drawing surface and scheduling services. See\n * {@link TextureContext} .\n */\n update?(state: State, config: Readonly<Config>, context: TextureContext): void;\n /**\n * Handles a typed application message for this recipe instance. See {@link TextureDefinition}.\n * @param state - State returned by create.\n * @param message - Message sent through the mounted texture handle.\n * @param context - Texture-owned drawing surface and scheduling services. See\n * {@link TextureContext} .\n */\n receive?(state: State, message: Message, context: TextureContext): void;\n /**\n * Advances simulation using the shared Pibbl frame timing. See {@link TextureDefinition}.\n * @param state - State returned by create.\n * @param frame - Shared animation time and delta. See {@link TextureFrame}.\n * @param context - Texture-owned drawing surface and scheduling services. See\n * {@link TextureContext} .\n */\n advance?(state: State, frame: TextureFrame, context: TextureContext): void;\n /**\n * Draws current texture pixels into the owned offscreen surface. See {@link TextureDefinition}.\n * @param state - State returned by create.\n * @param context - Texture-owned drawing surface and scheduling services. See\n * {@link TextureContext} .\n */\n rasterize(state: State, context: TextureContext): void;\n /**\n * Releases state and resources when the mounted texture is disposed. See\n * {@link TextureDefinition}.\n * @param state - State returned by create.\n * @param context - Texture-owned drawing surface and scheduling services. See\n * {@link TextureContext} .\n */\n dispose?(state: State, context: TextureContext): void;\n}\n/**\n * A reusable texture definition together with the options used to instantiate it.\n *\n * @see {@link defineTexture}\n * @see {@link useTexture}\n */\nexport interface TextureRecipe<Message = never> {\n readonly [recipeBrand]: (message: Message) => Message;\n}\ntype Definition = TextureDefinition<any, any, any>;\ninterface Recipe {\n definition: Definition;\n config: any;\n}\nconst recipes = new WeakMap<object, Recipe>();\n\n/**\n * Defines a pure recipe factory; resource allocation starts at useTexture.\n *\n * @param definition - State creation, update, simulation, rasterization, and disposal callbacks.\n * See {@link TextureDefinition} .\n * @returns A configuration-to-recipe factory; resources are allocated when a recipe is mounted.\n * See {@link TextureRecipe} .\n *\n * @see {@link TextureDefinition}\n * @see {@link TextureRecipe}\n */\nexport function defineTexture<Config, State, Message = never>(\n definition: TextureDefinition<Config, State, Message>,\n): (config: Config) => TextureRecipe<Message> {\n const stable = Object.freeze({ ...definition });\n return (config) => {\n const recipe = Object.freeze({}) as TextureRecipe<Message>;\n recipes.set(recipe, {\n definition: stable,\n config: structuredClone(config),\n });\n return recipe;\n };\n}\nfunction placement(value: TexturePlacement = {}): Readonly<TexturePlacement> {\n if (\n value.mode !== undefined &&\n value.mode !== \"repeat\" &&\n value.mode !== \"stretch\"\n )\n throw new TypeError(\"Unknown texture placement mode.\");\n for (const key of [\n \"tileWidth\",\n \"tileHeight\",\n \"offsetX\",\n \"offsetY\",\n \"rotation\",\n ] as const) {\n const n = value[key];\n if (\n n !== undefined &&\n (!Number.isFinite(n) ||\n ((key === \"tileWidth\" || key === \"tileHeight\") && n <= 0))\n )\n throw new RangeError(`Invalid texture placement ${key}.`);\n }\n return Object.freeze({ ...value });\n}\nfunction dimensions(options: TextureOptions): [number, number] {\n const width = options.resolution?.width ?? 256,\n height = options.resolution?.height ?? 160;\n if (\n ![width, height].every((n) => Number.isInteger(n) && n >= 8 && n <= 1024) ||\n width * height > 262144\n )\n throw new RangeError(\n \"Texture resolution must be 8..1024 cells per axis, at most 262144 cells.\",\n );\n return [width, height];\n}\nclass Resource {\n readonly revision = signal(0);\n readonly canvas: OffscreenCanvas;\n private committed: OffscreenCanvas | undefined;\n private spare: OffscreenCanvas | undefined;\n private provisional: { canvas: OffscreenCanvas; transaction: NonNullable<typeof GLOBAL_STATE.renderTransaction> } | undefined;\n readonly context: TextureContext;\n readonly handle: Texture<any>;\n state: any;\n definition: Definition;\n disposed = false;\n private hasState = false;\n dirty = true;\n private sequence = 0;\n private publicationCanvasesCreated = 0;\n private messages: unknown[] = [];\n private unregister?: () => void;\n private continuing = false;\n private lastTime?: number;\n private initializing = true;\n private retryScheduled = false;\n private palette?: readonly string[];\n private optionsKey: string;\n constructor(\n private owner: PibblInstance | undefined,\n recipe: Recipe,\n options: TextureOptions,\n ) {\n const [width, height] = dimensions(options);\n this.optionsKey = JSON.stringify(options);\n this.palette = options.palette && Object.freeze([...options.palette]);\n this.canvas = new OffscreenCanvas(width, height);\n this.definition = recipe.definition;\n const self = this;\n this.context = Object.freeze({\n canvas: this.canvas,\n get palette() {\n return self.palette;\n },\n invalidate() {\n if (!self.disposed) {\n self.dirty = true;\n if (!self.initializing) self.schedule();\n }\n },\n requestFrame() {\n if (!self.disposed) {\n self.continuing = true;\n self.schedule();\n }\n },\n });\n const registerPaint = (value: TexturePaint, placement: Readonly<TexturePlacement>) =>\n registerTexturePaint(value, {\n resolvePaint: (ctx, bounds) => this.resolvePaint(ctx, bounds, placement),\n validate: () => this.assertOwner(),\n borrow: callback => callback(this.borrow(placement)),\n });\n this.handle = Object.freeze({\n send: (message: unknown) => {\n if (this.disposed) return;\n if (GLOBAL_STATE.currentPibblInstance)\n throw new Error(\"Texture.send cannot run during Pibbl evaluation.\");\n if (!this.definition.receive)\n throw new Error(\"This texture does not accept messages.\");\n if (this.messages.length >= 8192)\n throw new RangeError(\"Texture message queue is full.\");\n this.messages.push(structuredClone(message));\n this.schedule();\n },\n paint: (value: TexturePlacement) => {\n const paint = Object.freeze({}) as TexturePaint;\n registerPaint(paint, placement(value));\n return paint;\n },\n }) as Texture<any>;\n registerPaint(this.handle, placement(this.definition.defaultPlacement));\n try {\n this.state = this.call(() =>\n this.definition.create(this.context, recipe.config),\n );\n this.hasState = true;\n this.publishInitial();\n this.initializing = false;\n } catch (error) {\n try {\n this.dispose();\n } catch {\n // The initialization failure remains the actionable error.\n }\n throw error;\n }\n }\n private call<T>(fn: () => T): T {\n return withHooksForbidden(\n \"Texture implementations cannot call Pibbl hooks.\",\n fn,\n );\n }\n update(recipe: Recipe, options: TextureOptions) {\n if (this.disposed) return;\n if (recipe.definition !== this.definition)\n throw new Error(\n \"Changing a texture definition requires a new keyed owner.\",\n );\n const [width, height] = dimensions(options);\n const nextKey = JSON.stringify(options);\n if (nextKey !== this.optionsKey) {\n this.palette = options.palette && Object.freeze([...options.palette]);\n this.optionsKey = nextKey;\n if (width !== this.canvas.width || height !== this.canvas.height) {\n try {\n this.disposeState();\n this.canvas.width = width;\n this.canvas.height = height;\n this.messages.length = 0;\n this.lastTime = undefined;\n this.state = this.call(() =>\n this.definition.create(this.context, recipe.config),\n );\n this.hasState = true;\n } catch (error) {\n try { this.dispose(); } catch { /* Preserve the recreate failure. */ }\n throw error;\n }\n }\n this.context.invalidate();\n }\n this.call(() =>\n this.definition.update?.(this.state, recipe.config, this.context),\n );\n }\n private unschedule() {\n this.unregister?.();\n this.unregister = undefined;\n }\n private schedule() {\n if (this.unregister || this.disposed) return;\n const participant = (frame: { logicalTime: number }, batch: any) => {\n const retryAtEntry = this.retryScheduled;\n this.unschedule();\n const wasContinuing = this.continuing;\n this.continuing = false;\n try {\n const messages = this.messages;\n this.messages = [];\n for (const message of messages)\n this.call(() =>\n this.definition.receive?.(this.state, message, this.context),\n );\n if (wasContinuing)\n this.call(() =>\n this.definition.advance?.(\n this.state,\n {\n delta:\n this.lastTime === undefined\n ? 0\n : Math.max(0, frame.logicalTime - this.lastTime),\n time: frame.logicalTime,\n },\n this.context,\n ),\n );\n this.lastTime = this.continuing ? frame.logicalTime : undefined;\n if (this.dirty) {\n const candidate = this.rasterizeCandidate();\n let previous: OffscreenCanvas | undefined;\n batch.stage(this.revision, ++this.sequence, participant);\n batch.registerLifecycle(participant, {\n apply: () => {\n if (this.disposed) {\n candidate.width = candidate.height = 0;\n } else {\n previous = this.committed;\n this.committed = candidate;\n this.spare = previous;\n this.retryScheduled = false;\n }\n },\n rollback: () => {\n if (!this.disposed) {\n this.committed = previous;\n this.spare = candidate;\n }\n },\n abort: () => {\n this.spare = candidate;\n if (!this.disposed) {\n this.dirty = true;\n this.schedule();\n }\n },\n });\n }\n if (!this.continuing && this.messages.length === 0) {\n this.unschedule();\n }\n } catch (error) {\n this.unschedule();\n this.continuing = false;\n if (this.retryScheduled && !retryAtEntry) this.schedule();\n throw error;\n }\n };\n this.unregister = registerAdvanceParticipant(participant);\n }\n private rasterizeCandidate(): OffscreenCanvas {\n const ctx = this.canvas.getContext(\"2d\");\n if (!ctx) throw new Error(\"Textures require OffscreenCanvas 2D.\");\n ctx.save();\n try {\n ctx.resetTransform();\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.call(() => this.definition.rasterize(this.state, this.context));\n this.dirty = false;\n } finally {\n ctx.restore();\n }\n const spare = this.spare;\n this.spare = undefined;\n const reusable = spare?.width === this.canvas.width && spare.height === this.canvas.height ?\n spare : undefined;\n if (spare && spare !== reusable) spare.width = spare.height = 0;\n let candidate: OffscreenCanvas | undefined;\n try {\n candidate = reusable ?? this.createPublicationCanvas();\n const candidateContext = candidate.getContext(\"2d\");\n if (!candidateContext) throw new Error(\"Textures require OffscreenCanvas 2D.\");\n // Publication canvases are reused; transparent source pixels must erase old paint.\n candidateContext.clearRect(0, 0, candidate.width, candidate.height);\n candidateContext.drawImage(this.canvas, 0, 0);\n return candidate;\n } catch (error) {\n if (candidate) candidate.width = candidate.height = 0;\n this.dirty = true;\n if (!this.retryScheduled) {\n this.retryScheduled = true;\n this.schedule();\n }\n throw error;\n }\n }\n private createPublicationCanvas(): OffscreenCanvas {\n this.publicationCanvasesCreated++;\n return new OffscreenCanvas(this.canvas.width, this.canvas.height);\n }\n /** @internal Structural ownership evidence for texture publication tests. */\n publicationSnapshot(): Readonly<{ publicationCanvasesCreated: number; hasOwner: boolean }> {\n return Object.freeze({ publicationCanvasesCreated: this.publicationCanvasesCreated, hasOwner: this.owner !== undefined });\n }\n private publishInitial(): void {\n const candidate = this.rasterizeCandidate();\n const transaction = GLOBAL_STATE.renderTransaction;\n if (!transaction) {\n this.committed = candidate;\n return;\n }\n this.provisional = { canvas: candidate, transaction };\n transaction.onFinish(success => {\n if (this.provisional?.transaction !== transaction) return;\n const provisional = this.provisional;\n this.provisional = undefined;\n if (success && !this.disposed) this.committed = provisional.canvas;\n else provisional.canvas.width = provisional.canvas.height = 0;\n });\n }\n private assertOwner(): void {\n if (this.disposed) throw new Error(\"Cannot paint with a disposed texture.\");\n let root = GLOBAL_STATE.currentPibblInstance;\n while (root?.parent) root = GLOBAL_STATE.pibblInstances.get(root.parent);\n let owner = this.owner;\n while (owner?.parent) owner = GLOBAL_STATE.pibblInstances.get(owner.parent);\n if (root !== owner) throw new Error(\"Textures may only be shared within their owning Pibbl tree.\");\n }\n private borrow(placement: Readonly<TexturePlacement>): BorrowedTextureRaster {\n this.assertOwner();\n const revision = this.revision.get();\n const provisional = this.provisional;\n const source =\n provisional !== undefined && provisional.transaction === GLOBAL_STATE.renderTransaction ?\n provisional.canvas : this.committed;\n if (!source) throw new Error(\"Texture pixels are not committed for this render transaction.\");\n return Object.freeze({ source, width: source.width, height: source.height, revision, resource: this, placement });\n }\n private resolvePaint(ctx: RenderingContext2D, bounds: { x: number; y: number; width: number; height: number }, p: Readonly<TexturePlacement>): string | CanvasGradient | CanvasPattern {\n const borrowed = this.borrow(p);\n const pattern = ctx.createPattern(borrowed.source, \"repeat\");\n if (!pattern) throw new Error(\"Could not create texture paint.\");\n const stretch = p.mode === \"stretch\";\n const width = stretch ? bounds.width : (p.tileWidth ?? borrowed.width);\n const height = stretch ? bounds.height : (p.tileHeight ?? borrowed.height);\n pattern.setTransform(new DOMMatrix().translate(bounds.x + (p.offsetX ?? 0), bounds.y + (p.offsetY ?? 0)).rotate(p.rotation ?? 0).scale(Math.max(0.000001, width) / borrowed.width, Math.max(0.000001, height) / borrowed.height));\n return pattern;\n }\n dispose() {\n if (this.disposed) return;\n this.disposed = true;\n this.unschedule();\n this.messages.length = 0;\n try {\n this.disposeState();\n } finally {\n this.canvas.width = this.canvas.height = 0;\n this.committed && (this.committed.width = this.committed.height = 0);\n this.spare && (this.spare.width = this.spare.height = 0);\n this.provisional && (this.provisional.canvas.width = this.provisional.canvas.height = 0);\n this.state = undefined;\n this.hasState = false;\n this.committed = undefined;\n this.spare = undefined;\n this.provisional = undefined;\n this.owner = undefined;\n }\n }\n private disposeState() {\n if (!this.hasState) return;\n this.hasState = false;\n const state = this.state;\n this.state = undefined;\n this.call(() => this.definition.dispose?.(state, this.context));\n }\n}\n\n/**\n * Owns one persistent texture resource for the current mounted hook slot.\n *\n * @param input - Texture recipe to mount or update. See {@link TextureRecipe}.\n * @param options - Resolution and lifecycle options for the mounted texture. See\n * {@link TextureOptions} .\n * @returns A mount-owned texture handle for sending messages and creating paint placements. See\n * {@link Texture} .\n *\n * @see {@link TextureRecipe}\n * @see {@link TextureOptions}\n * @see {@link Texture}\n */\nexport function useTexture<Message>(\n input: TextureRecipe<Message>,\n options: TextureOptions = {},\n): Texture<Message> {\n const recipe = recipes.get(input);\n if (!recipe)\n throw new TypeError(\"useTexture requires a defineTexture recipe.\");\n const { pibblInstance } = requireHookContext();\n let created = false;\n const resource = useHookSlot(\"texture\", (teardowns) => {\n created = true;\n const value = new Resource(pibblInstance, recipe, options);\n teardowns.add(() => value.dispose());\n return value;\n }).value;\n if (!created)\n GLOBAL_STATE.renderTransaction!.onFinish((success) => {\n if (success) resource.update(recipe, options);\n });\n return resource.handle;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["placement"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type PibblTransitionEffect } from './fade.js';
|
|
2
|
+
import { type TransitionRegion } from './capture.js';
|
|
3
|
+
/**
|
|
4
|
+
* Color and motion controls for a bifrost visibility transition.
|
|
5
|
+
*
|
|
6
|
+
* @see {@link bifrost}
|
|
7
|
+
*/
|
|
8
|
+
export interface PibblBifrostOptions {
|
|
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 PibblBifrostOptions}. */
|
|
12
|
+
readonly entry?: Readonly<{
|
|
13
|
+
/**
|
|
14
|
+
* Horizontal coordinate or displacement in the containing coordinate system. See
|
|
15
|
+
* {@link PibblBifrostOptions}.
|
|
16
|
+
*/
|
|
17
|
+
x: number;
|
|
18
|
+
/**
|
|
19
|
+
* Vertical coordinate or displacement in the containing coordinate system. See
|
|
20
|
+
* {@link PibblBifrostOptions}.
|
|
21
|
+
*/
|
|
22
|
+
y: number;
|
|
23
|
+
}>;
|
|
24
|
+
/** Brightness control for the transition effect. See {@link PibblBifrostOptions}. */
|
|
25
|
+
readonly brightness?: number;
|
|
26
|
+
/** Hue control for the transition's emitted color. See {@link PibblBifrostOptions}. */
|
|
27
|
+
readonly hue?: number;
|
|
28
|
+
/** Amount of stretching applied by the transition. See {@link PibblBifrostOptions}. */
|
|
29
|
+
readonly stretch?: number;
|
|
30
|
+
/** Intensity of the electrical halo around the core. See {@link PibblBifrostOptions}. */
|
|
31
|
+
readonly glow?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Seed used for deterministic sampling or simulation initialization. See
|
|
34
|
+
* {@link PibblBifrostOptions}.
|
|
35
|
+
*/
|
|
36
|
+
readonly seed?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A prismatic beam stretches a white-hot captured subject toward its entry point.
|
|
40
|
+
*
|
|
41
|
+
* @param options - Bifrost appearance and animation settings. See {@link PibblBifrostOptions}.
|
|
42
|
+
* @returns A bifrost transition effect. See {@link PibblTransitionEffect}.
|
|
43
|
+
*
|
|
44
|
+
* @see {@link PibblBifrostOptions}
|
|
45
|
+
* @see {@link PibblTransitionEffect}
|
|
46
|
+
*/
|
|
47
|
+
export declare function bifrost(options: PibblBifrostOptions): PibblTransitionEffect;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { bifrostKernel } from "./wasm/bifrost-kernel.js";
|
|
2
|
+
import { opacity } from "../../filters/native.js";
|
|
3
|
+
import { defineTransitionEffect } from "./fade.js";
|
|
4
|
+
import { captureTransition, clamp, finite, regionSnapshot } from "./capture.js";
|
|
5
|
+
function bifrost(options) {
|
|
6
|
+
const r = regionSnapshot(options.region), ax = r.x + r.width / 2, ay = r.y + r.height;
|
|
7
|
+
const ex = finite(options.entry?.x ?? ax, "entry.x"), ey = finite(options.entry?.y ?? r.y - r.height * 2, "entry.y");
|
|
8
|
+
const brightness = finite(options.brightness ?? 1, "brightness", 0), hue = finite(options.hue ?? 0, "hue");
|
|
9
|
+
const stretchAmount = finite(options.stretch ?? 7, "stretch", 0), aura = finite(options.glow ?? 1, "glow", 0);
|
|
10
|
+
const samplePatches = bifrostKernel(finite(options.seed ?? 0, "seed"));
|
|
11
|
+
const distance = Math.hypot(ex - ax, ey - ay), ux = distance ? (ex - ax) / distance : 0, uy = distance ? (ey - ay) / distance : -1;
|
|
12
|
+
return defineTransitionEffect((q, phase, frame) => {
|
|
13
|
+
if (q === 1) return [];
|
|
14
|
+
if (q === 0) return [opacity({ amount: 0 })];
|
|
15
|
+
return [captureTransition(({ context: c, windows, drawSource, drawTint }) => {
|
|
16
|
+
const power = Math.pow(Math.sin(Math.PI * q), 0.65) * brightness * Math.pow(clamp((1 - q) / 0.32), 2);
|
|
17
|
+
const color = (h, a, light = 80) => `hsla(${h + hue},100%,${light}%,${clamp(a)})`;
|
|
18
|
+
const glow = (x, y, rx, ry, a) => {
|
|
19
|
+
c.save();
|
|
20
|
+
c.translate(x, y);
|
|
21
|
+
c.scale(rx, ry);
|
|
22
|
+
const gradient = c.createRadialGradient(0, 0, 0, 0, 0, 1);
|
|
23
|
+
gradient.addColorStop(0, `rgba(255,255,255,${clamp(a)})`);
|
|
24
|
+
gradient.addColorStop(0.25, color(230, a * 0.5));
|
|
25
|
+
gradient.addColorStop(1, color(230, 0));
|
|
26
|
+
c.fillStyle = gradient;
|
|
27
|
+
c.fillRect(-1, -1, 2, 2);
|
|
28
|
+
c.restore();
|
|
29
|
+
};
|
|
30
|
+
c.save();
|
|
31
|
+
c.globalCompositeOperation = "lighter";
|
|
32
|
+
const dx = ax - ex, dy = ay - ey;
|
|
33
|
+
const angle = Math.atan2(dy, dx), seconds = frame.elapsed / 1e3;
|
|
34
|
+
const flow = phase === "enter" ? 1 : -1;
|
|
35
|
+
c.translate(ex, ey);
|
|
36
|
+
c.rotate(angle);
|
|
37
|
+
c.beginPath();
|
|
38
|
+
c.rect(-Math.max(1, distance), -r.width * 2, Math.max(1, distance) * 2, r.width * 4);
|
|
39
|
+
c.clip();
|
|
40
|
+
c.rotate(-angle);
|
|
41
|
+
c.translate(-ex, -ey);
|
|
42
|
+
const patches = samplePatches(seconds, flow, power, r.width, distance, ex, ey, dx, dy);
|
|
43
|
+
for (let i = 0; i < 56; i++) {
|
|
44
|
+
const offset = i * 6;
|
|
45
|
+
const length = patches[offset + 2], width = patches[offset + 3], h = patches[offset + 4], alpha = patches[offset + 5];
|
|
46
|
+
c.save();
|
|
47
|
+
c.translate(patches[offset], patches[offset + 1]);
|
|
48
|
+
c.rotate(angle);
|
|
49
|
+
c.scale(length, width);
|
|
50
|
+
const patch = c.createRadialGradient(0, 0, 0, 0, 0, 1);
|
|
51
|
+
patch.addColorStop(0, color(h, alpha, 78));
|
|
52
|
+
patch.addColorStop(0.25, color(h + 12, alpha * 0.8, 72));
|
|
53
|
+
patch.addColorStop(0.6, color(h - 8, alpha * 0.3, 68));
|
|
54
|
+
patch.addColorStop(1, color(h, 0, 68));
|
|
55
|
+
c.fillStyle = patch;
|
|
56
|
+
c.fillRect(-1, -1, 2, 2);
|
|
57
|
+
c.restore();
|
|
58
|
+
}
|
|
59
|
+
c.restore();
|
|
60
|
+
const softness = 1 - clamp(q / 0.56), stretch = stretchAmount * softness * softness;
|
|
61
|
+
const travel = r.height * 0.7 * Math.pow(1 - clamp(q / 0.5), 2);
|
|
62
|
+
c.save();
|
|
63
|
+
c.translate(ax + ux * travel, ay + uy * travel);
|
|
64
|
+
c.transform(1 + stretch * ux * ux, stretch * ux * uy, stretch * ux * uy, 1 + stretch * uy * uy, 0, 0);
|
|
65
|
+
c.translate(-ax, -ay);
|
|
66
|
+
c.globalAlpha = clamp(q / 0.075);
|
|
67
|
+
if (softness > 0) {
|
|
68
|
+
c.save();
|
|
69
|
+
c.globalAlpha *= clamp(brightness * 0.7);
|
|
70
|
+
c.filter = `blur(${(22 + softness * 20) * aura * windows.density}px)`;
|
|
71
|
+
drawTint("#e1e9ff");
|
|
72
|
+
c.restore();
|
|
73
|
+
c.filter = `blur(${(4 + softness * 10) * windows.density}px)`;
|
|
74
|
+
drawTint("#fff");
|
|
75
|
+
} else {
|
|
76
|
+
drawSource();
|
|
77
|
+
c.globalAlpha *= clamp(clamp((1 - q) / 0.28) * brightness * 1.5);
|
|
78
|
+
drawTint("#fff");
|
|
79
|
+
}
|
|
80
|
+
c.restore();
|
|
81
|
+
c.globalCompositeOperation = "lighter";
|
|
82
|
+
const impact = Math.exp(-Math.pow((q - 0.56) / 0.085, 2));
|
|
83
|
+
glow(ax, r.y + r.height / 2, r.width, r.height * 0.8, impact * brightness * aura);
|
|
84
|
+
glow(ax, ay, r.width * 0.9, 24, power * aura);
|
|
85
|
+
})];
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
export {
|
|
89
|
+
bifrost
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=bifrost.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/lib/transitions/bifrost.ts"],
|
|
4
|
+
"sourcesContent": ["import { bifrostKernel } from './wasm/bifrost-kernel.js';\nimport { opacity } from '../../filters/native.js';\nimport { defineTransitionEffect, type PibblTransitionEffect } from './fade.js';\nimport { captureTransition, clamp, finite, regionSnapshot, type TransitionRegion } from './capture.js';\n\n/**\n * Color and motion controls for a bifrost visibility transition.\n *\n * @see {@link bifrost}\n */\nexport interface PibblBifrostOptions {\n /** Logical region over which the effect is evaluated. See {@link TransitionRegion}. */\n readonly region: TransitionRegion;\n /** Entry location or direction used by the transition. See {@link PibblBifrostOptions}. */\n readonly entry?: Readonly<{\n /**\n * Horizontal coordinate or displacement in the containing coordinate system. See\n * {@link PibblBifrostOptions}.\n */\n x: number;\n /**\n * Vertical coordinate or displacement in the containing coordinate system. See\n * {@link PibblBifrostOptions}.\n */\n y: number;\n }>;\n /** Brightness control for the transition effect. See {@link PibblBifrostOptions}. */\n readonly brightness?: number;\n /** Hue control for the transition's emitted color. See {@link PibblBifrostOptions}. */\n readonly hue?: number;\n /** Amount of stretching applied by the transition. See {@link PibblBifrostOptions}. */\n readonly stretch?: number;\n /** Intensity of the electrical halo around the core. See {@link PibblBifrostOptions}. */\n readonly glow?: number;\n /**\n * Seed used for deterministic sampling or simulation initialization. See\n * {@link PibblBifrostOptions}.\n */\n readonly seed?: number;\n}\n/**\n * A prismatic beam stretches a white-hot captured subject toward its entry point.\n *\n * @param options - Bifrost appearance and animation settings. See {@link PibblBifrostOptions}.\n * @returns A bifrost transition effect. See {@link PibblTransitionEffect}.\n *\n * @see {@link PibblBifrostOptions}\n * @see {@link PibblTransitionEffect}\n */\nexport function bifrost(options: PibblBifrostOptions): PibblTransitionEffect {\n const r = regionSnapshot(options.region), ax = r.x + r.width / 2, ay = r.y + r.height;\n const ex = finite(options.entry?.x ?? ax, 'entry.x'), ey = finite(options.entry?.y ?? r.y - r.height * 2, 'entry.y');\n const brightness = finite(options.brightness ?? 1, 'brightness', 0), hue = finite(options.hue ?? 0, 'hue');\n const stretchAmount = finite(options.stretch ?? 7, 'stretch', 0), aura = finite(options.glow ?? 1, 'glow', 0);\n const samplePatches = bifrostKernel(finite(options.seed ?? 0, 'seed'));\n const distance = Math.hypot(ex - ax, ey - ay), ux = distance ? (ex - ax) / distance : 0, uy = distance ? (ey - ay) / distance : -1;\n return defineTransitionEffect((q, phase, frame) => {\n if (q === 1) return [];\n if (q === 0) return [opacity({ amount: 0 })];\n return [captureTransition(({ context: c, windows, drawSource, drawTint }) => {\n const power = Math.pow(Math.sin(Math.PI * q), .65) * brightness * Math.pow(clamp((1 - q) / .32), 2);\n const color = (h: number, a: number, light = 80) => `hsla(${h + hue},100%,${light}%,${clamp(a)})`;\n const glow = (x: number, y: number, rx: number, ry: number, a: number) => {\n c.save(); c.translate(x, y); c.scale(rx, ry);\n const gradient = c.createRadialGradient(0, 0, 0, 0, 0, 1); gradient.addColorStop(0, `rgba(255,255,255,${clamp(a)})`); gradient.addColorStop(.25, color(230, a * .5)); gradient.addColorStop(1, color(230, 0));\n c.fillStyle = gradient; c.fillRect(-1, -1, 2, 2); c.restore();\n };\n // Seeded, feathered clouds stretched along the transit axis. Unequal\n // lengths, widths, hues and velocities avoid a fixed rainbow comb.\n c.save(); c.globalCompositeOperation = 'lighter';\n const dx = ax - ex, dy = ay - ey;\n const angle = Math.atan2(dy, dx), seconds = frame.elapsed / 1000;\n const flow = phase === 'enter' ? 1 : -1;\n // End the beam at the impact plane, as the original ribbons did.\n c.translate(ex, ey); c.rotate(angle);\n c.beginPath(); c.rect(-Math.max(1, distance), -r.width * 2, Math.max(1, distance) * 2, r.width * 4); c.clip();\n c.rotate(-angle); c.translate(-ex, -ey);\n const patches = samplePatches(seconds, flow, power, r.width, distance, ex, ey, dx, dy);\n for (let i = 0; i < 56; i++) {\n const offset = i * 6;\n const length = patches[offset + 2]!, width = patches[offset + 3]!, h = patches[offset + 4]!, alpha = patches[offset + 5]!;\n c.save(); c.translate(patches[offset]!, patches[offset + 1]!);\n c.rotate(angle); c.scale(length, width);\n const patch = c.createRadialGradient(0, 0, 0, 0, 0, 1);\n patch.addColorStop(0, color(h, alpha, 78));\n patch.addColorStop(.25, color(h + 12, alpha * .8, 72));\n patch.addColorStop(.6, color(h - 8, alpha * .3, 68));\n patch.addColorStop(1, color(h, 0, 68));\n c.fillStyle = patch; c.fillRect(-1, -1, 2, 2); c.restore();\n }\n c.restore();\n const softness = 1 - clamp(q / .56), stretch = stretchAmount * softness * softness;\n const travel = r.height * .7 * Math.pow(1 - clamp(q / .5), 2);\n c.save(); c.translate(ax + ux * travel, ay + uy * travel);\n c.transform(1 + stretch * ux * ux, stretch * ux * uy, stretch * ux * uy, 1 + stretch * uy * uy, 0, 0); c.translate(-ax, -ay);\n c.globalAlpha = clamp(q / .075);\n if (softness > 0) {\n c.save(); c.globalAlpha *= clamp(brightness * .7); c.filter = `blur(${(22 + softness * 20) * aura * windows.density}px)`; drawTint('#e1e9ff'); c.restore();\n c.filter = `blur(${(4 + softness * 10) * windows.density}px)`; drawTint('#fff');\n } else {\n drawSource(); c.globalAlpha *= clamp(clamp((1 - q) / .28) * brightness * 1.5); drawTint('#fff');\n }\n c.restore(); c.globalCompositeOperation = 'lighter';\n const impact = Math.exp(-Math.pow((q - .56) / .085, 2));\n glow(ax, r.y + r.height / 2, r.width, r.height * .8, impact * brightness * aura);\n glow(ax, ay, r.width * .9, 24, power * aura);\n })];\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PibblVisibilityTransition } from "../hooks/use-visibility-transition.js";
|
|
2
|
+
import type { PibblFilter } from '../style/filter-types.js';
|
|
3
|
+
declare const bindingBrand: unique symbol;
|
|
4
|
+
/**
|
|
5
|
+
* An opaque connection between one transition controller and its painted subject.
|
|
6
|
+
*
|
|
7
|
+
* @see {@link PibblVisibilityTransition}
|
|
8
|
+
*/
|
|
9
|
+
export interface PibblTransitionBinding {
|
|
10
|
+
readonly [bindingBrand]: true;
|
|
11
|
+
}
|
|
12
|
+
export declare function createTransitionBinding(resolve: () => readonly PibblFilter[]): PibblTransitionBinding;
|
|
13
|
+
export declare function resolveTransitionBinding(binding: PibblTransitionBinding): readonly PibblFilter[];
|
|
14
|
+
export {};
|