@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,557 @@
|
|
|
1
|
+
import { arcPoint, arcSweep, TAU } from "./path-arc.js";
|
|
2
|
+
const names = ["move", "line", "quadratic", "cubic", "close", "arc"];
|
|
3
|
+
const widths = [2, 2, 4, 6, 0, 8];
|
|
4
|
+
const storage = /* @__PURE__ */ new WeakMap();
|
|
5
|
+
function state(path) {
|
|
6
|
+
const value = storage.get(path);
|
|
7
|
+
if (!value) throw new TypeError("Expected a PathGeometry.");
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
function visitPathGeometry(path, visit) {
|
|
11
|
+
const value = state(path);
|
|
12
|
+
let offset = 0;
|
|
13
|
+
for (let i = 0; i < value.count; i++) {
|
|
14
|
+
const type = value.types[i];
|
|
15
|
+
visit(type, value.data, offset);
|
|
16
|
+
offset += widths[type];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function ensureRevision(value) {
|
|
20
|
+
if (value.revision >= Number.MAX_SAFE_INTEGER) {
|
|
21
|
+
throw new RangeError("PathGeometry revision exhausted.");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function reserve(value, count, length) {
|
|
25
|
+
if (count > value.types.length) {
|
|
26
|
+
const next = new Uint8Array(Math.max(count, value.types.length * 2, 8));
|
|
27
|
+
next.set(value.types.subarray(0, value.count));
|
|
28
|
+
value.types = next;
|
|
29
|
+
}
|
|
30
|
+
if (length > value.data.length) {
|
|
31
|
+
const next = new Float64Array(Math.max(length, value.data.length * 2, 32));
|
|
32
|
+
next.set(value.data.subarray(0, value.length));
|
|
33
|
+
value.data = next;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function append(value, type, data) {
|
|
37
|
+
reserve(value, value.count + 1, value.length + data.length);
|
|
38
|
+
value.types[value.count++] = type;
|
|
39
|
+
value.data.set(data, value.length);
|
|
40
|
+
value.length += data.length;
|
|
41
|
+
updatePoint(value, type, data, 0);
|
|
42
|
+
}
|
|
43
|
+
function operands(segment) {
|
|
44
|
+
switch (segment.type) {
|
|
45
|
+
case "move":
|
|
46
|
+
case "line":
|
|
47
|
+
return [segment.x, segment.y];
|
|
48
|
+
case "quadratic":
|
|
49
|
+
return [segment.cpx, segment.cpy, segment.x, segment.y];
|
|
50
|
+
case "cubic":
|
|
51
|
+
return [segment.cp1x, segment.cp1y, segment.cp2x, segment.cp2y, segment.x, segment.y];
|
|
52
|
+
case "close":
|
|
53
|
+
return [];
|
|
54
|
+
case "arc":
|
|
55
|
+
return [segment.cx, segment.cy, segment.ux, segment.uy, segment.vx, segment.vy, segment.startAngle, segment.sweep];
|
|
56
|
+
default:
|
|
57
|
+
throw new TypeError("Unknown path segment type.");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
class PathGeometry {
|
|
61
|
+
/**
|
|
62
|
+
* Creates empty geometry or an independent copy of the supplied path. See {@link PathGeometry}.
|
|
63
|
+
* @param source - Optional geometry whose segments are copied; omission creates an empty path.
|
|
64
|
+
* See {@link PathGeometry} .
|
|
65
|
+
*/
|
|
66
|
+
constructor(source) {
|
|
67
|
+
const original = source === void 0 ? void 0 : state(source);
|
|
68
|
+
storage.set(this, {
|
|
69
|
+
types: original ? original.types.slice(0, original.count) : new Uint8Array(0),
|
|
70
|
+
data: original ? original.data.slice(0, original.length) : new Float64Array(0),
|
|
71
|
+
count: original?.count ?? 0,
|
|
72
|
+
length: original?.length ?? 0,
|
|
73
|
+
revision: 0,
|
|
74
|
+
x: original?.x ?? 0,
|
|
75
|
+
y: original?.y ?? 0,
|
|
76
|
+
startX: original?.startX ?? 0,
|
|
77
|
+
startY: original?.startY ?? 0
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Monotonic mutation revision; changing geometry does not itself request a Pibbl frame. See
|
|
82
|
+
* {@link PathGeometry}.
|
|
83
|
+
* @returns The mutation revision used to invalidate cached representations.
|
|
84
|
+
*/
|
|
85
|
+
get revision() {
|
|
86
|
+
return state(this).revision;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Number of stored path segments, including move and close commands. See {@link PathGeometry}.
|
|
90
|
+
* @returns The number of stored path segments.
|
|
91
|
+
*/
|
|
92
|
+
get segmentCount() {
|
|
93
|
+
return state(this).count;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Returns an independent copy with its own mutation revision. See {@link PathGeometry}.
|
|
97
|
+
* @returns An independent copy of this path's segments. See {@link PathGeometry}.
|
|
98
|
+
*/
|
|
99
|
+
clone() {
|
|
100
|
+
return new PathGeometry(this);
|
|
101
|
+
}
|
|
102
|
+
/** Removes all segments and resets the current point. See {@link PathGeometry}. */
|
|
103
|
+
clear() {
|
|
104
|
+
const value = state(this);
|
|
105
|
+
if (!value.count) return;
|
|
106
|
+
ensureRevision(value);
|
|
107
|
+
value.count = value.length = 0;
|
|
108
|
+
value.x = value.y = value.startX = value.startY = 0;
|
|
109
|
+
value.revision++;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Begins a subpath at the supplied coordinates. See {@link PathGeometry}.
|
|
113
|
+
* @param x - Horizontal coordinate of the new subpath's starting point.
|
|
114
|
+
* @param y - Vertical coordinate of the new subpath's starting point.
|
|
115
|
+
*/
|
|
116
|
+
moveTo(x, y) {
|
|
117
|
+
this.#build(0, [x, y]);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Appends a straight segment to the supplied coordinates. See {@link PathGeometry}.
|
|
121
|
+
* @param x - Horizontal coordinate of the line endpoint.
|
|
122
|
+
* @param y - Vertical coordinate of the line endpoint.
|
|
123
|
+
*/
|
|
124
|
+
lineTo(x, y) {
|
|
125
|
+
this.#build(1, [x, y]);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Appends a quadratic curve using one control point and an endpoint. See {@link PathGeometry}.
|
|
129
|
+
* @param cpx - Horizontal coordinate of the quadratic control point.
|
|
130
|
+
* @param cpy - Vertical coordinate of the quadratic control point.
|
|
131
|
+
* @param x - Horizontal coordinate of the curve endpoint.
|
|
132
|
+
* @param y - Vertical coordinate of the curve endpoint.
|
|
133
|
+
*/
|
|
134
|
+
quadraticCurveTo(cpx, cpy, x, y) {
|
|
135
|
+
this.#build(2, [cpx, cpy, x, y]);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Appends a cubic curve using two control points and an endpoint. See {@link PathGeometry}.
|
|
139
|
+
* @param cp1x - Horizontal coordinate of the first control point.
|
|
140
|
+
* @param cp1y - Vertical coordinate of the first control point.
|
|
141
|
+
* @param cp2x - Horizontal coordinate of the second control point.
|
|
142
|
+
* @param cp2y - Vertical coordinate of the second control point.
|
|
143
|
+
* @param x - Horizontal coordinate of the curve endpoint.
|
|
144
|
+
* @param y - Vertical coordinate of the curve endpoint.
|
|
145
|
+
*/
|
|
146
|
+
bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {
|
|
147
|
+
this.#build(3, [cp1x, cp1y, cp2x, cp2y, x, y]);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Closes the current subpath; an already closed or empty path is unchanged. See
|
|
151
|
+
* {@link PathGeometry}.
|
|
152
|
+
*/
|
|
153
|
+
closePath() {
|
|
154
|
+
const value = state(this);
|
|
155
|
+
if (!value.count || value.types[value.count - 1] === 4) return;
|
|
156
|
+
this.#build(4, []);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Appends a circular arc using Canvas-compatible angles in radians. See {@link PathGeometry}.
|
|
160
|
+
* @param x - Horizontal coordinate of the circle center.
|
|
161
|
+
* @param y - Vertical coordinate of the circle center.
|
|
162
|
+
* @param radius - Circle radius in path units.
|
|
163
|
+
* @param startAngle - Starting angle in radians.
|
|
164
|
+
* @param endAngle - Ending angle in radians.
|
|
165
|
+
* @param counterclockwise - Whether the arc runs counterclockwise; defaults to false.
|
|
166
|
+
*/
|
|
167
|
+
arc(x, y, radius, startAngle, endAngle, counterclockwise = false) {
|
|
168
|
+
this.ellipse(x, y, radius, radius, 0, startAngle, endAngle, counterclockwise);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Appends an elliptical arc; rotation and arc angles are in radians. See {@link PathGeometry}.
|
|
172
|
+
* @param x - Horizontal coordinate of the ellipse center.
|
|
173
|
+
* @param y - Vertical coordinate of the ellipse center.
|
|
174
|
+
* @param radiusX - Horizontal radius in path units.
|
|
175
|
+
* @param radiusY - Vertical radius in path units.
|
|
176
|
+
* @param rotation - Ellipse rotation in radians.
|
|
177
|
+
* @param startAngle - Starting angle in radians.
|
|
178
|
+
* @param endAngle - Ending angle in radians.
|
|
179
|
+
* @param counterclockwise - Whether the arc runs counterclockwise; defaults to false.
|
|
180
|
+
*/
|
|
181
|
+
ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise = false) {
|
|
182
|
+
if (![x, y, radiusX, radiusY, rotation, startAngle, endAngle].every(Number.isFinite)) return;
|
|
183
|
+
if (radiusX < 0 || radiusY < 0) throw new DOMException("Arc radii must not be negative.", "IndexSizeError");
|
|
184
|
+
const cos = Math.cos(rotation), sin = Math.sin(rotation);
|
|
185
|
+
const arc = {
|
|
186
|
+
type: "arc",
|
|
187
|
+
cx: x,
|
|
188
|
+
cy: y,
|
|
189
|
+
ux: radiusX * cos,
|
|
190
|
+
uy: radiusX * sin,
|
|
191
|
+
vx: -radiusY * sin,
|
|
192
|
+
vy: radiusY * cos,
|
|
193
|
+
startAngle: startAngle % TAU,
|
|
194
|
+
sweep: arcSweep(startAngle, endAngle, counterclockwise)
|
|
195
|
+
};
|
|
196
|
+
this.#appendArc(arc);
|
|
197
|
+
}
|
|
198
|
+
#appendArc(arc) {
|
|
199
|
+
const [x, y] = arcPoint(arc, arc.startAngle);
|
|
200
|
+
const end = arcPoint(arc, arc.startAngle + arc.sweep);
|
|
201
|
+
if (![x, y, ...end].every(Number.isFinite)) throw new RangeError("Arc coordinates overflowed.");
|
|
202
|
+
const value = state(this);
|
|
203
|
+
ensureRevision(value);
|
|
204
|
+
if (!value.count) append(value, 0, [x, y]);
|
|
205
|
+
else if (value.x !== x || value.y !== y) append(value, 1, [x, y]);
|
|
206
|
+
append(value, 5, operands(arc));
|
|
207
|
+
value.revision++;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Appends a circular arc tangent to two lines using Canvas-compatible geometry. See
|
|
211
|
+
* {@link PathGeometry}.
|
|
212
|
+
* @param x1 - Horizontal coordinate of the first tangent intersection.
|
|
213
|
+
* @param y1 - Vertical coordinate of the first tangent intersection.
|
|
214
|
+
* @param x2 - Horizontal coordinate of the second tangent endpoint.
|
|
215
|
+
* @param y2 - Vertical coordinate of the second tangent endpoint.
|
|
216
|
+
* @param radius - Arc radius in path units.
|
|
217
|
+
*/
|
|
218
|
+
arcTo(x1, y1, x2, y2, radius) {
|
|
219
|
+
if (![x1, y1, x2, y2, radius].every(Number.isFinite)) return;
|
|
220
|
+
if (radius < 0) throw new DOMException("Arc radius must not be negative.", "IndexSizeError");
|
|
221
|
+
const value = state(this);
|
|
222
|
+
if (!value.count) {
|
|
223
|
+
this.moveTo(x1, y1);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const ax = value.x - x1, ay = value.y - y1, bx = x2 - x1, by = y2 - y1;
|
|
227
|
+
const al = Math.hypot(ax, ay), bl = Math.hypot(bx, by);
|
|
228
|
+
if (al === 0 || bl === 0 || radius === 0) {
|
|
229
|
+
this.lineTo(x1, y1);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const ux = ax / al, uy = ay / al, vx = bx / bl, vy = by / bl;
|
|
233
|
+
const cross = ux * vy - uy * vx;
|
|
234
|
+
if (cross === 0) {
|
|
235
|
+
this.lineTo(x1, y1);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
const dot = Math.max(-1, Math.min(1, ux * vx + uy * vy));
|
|
239
|
+
const distance = radius * (1 + dot) / Math.abs(cross);
|
|
240
|
+
const startX = x1 + ux * distance, startY = y1 + uy * distance;
|
|
241
|
+
const sign = cross < 0 ? -1 : 1;
|
|
242
|
+
const cx = startX - uy * radius * sign, cy = startY + ux * radius * sign;
|
|
243
|
+
const endX = x1 + vx * distance, endY = y1 + vy * distance;
|
|
244
|
+
const start = Math.atan2(startY - cy, startX - cx);
|
|
245
|
+
const end = Math.atan2(endY - cy, endX - cx);
|
|
246
|
+
if (![cx, cy, endX, endY].every(Number.isFinite)) throw new RangeError("Arc coordinates overflowed.");
|
|
247
|
+
this.#appendArc({
|
|
248
|
+
type: "arc",
|
|
249
|
+
cx,
|
|
250
|
+
cy,
|
|
251
|
+
ux: radius,
|
|
252
|
+
uy: 0,
|
|
253
|
+
vx: 0,
|
|
254
|
+
vy: radius,
|
|
255
|
+
startAngle: start,
|
|
256
|
+
sweep: arcSweep(start, end, cross > 0)
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Appends a closed rectangle subpath. See {@link PathGeometry}.
|
|
261
|
+
* @param x - Horizontal coordinate of the rectangle origin.
|
|
262
|
+
* @param y - Vertical coordinate of the rectangle origin.
|
|
263
|
+
* @param width - Signed horizontal extent in path units.
|
|
264
|
+
* @param height - Signed vertical extent in path units.
|
|
265
|
+
*/
|
|
266
|
+
rect(x, y, width, height) {
|
|
267
|
+
if (![x, y, width, height].every(Number.isFinite)) return;
|
|
268
|
+
if (![x + width, y + height].every(Number.isFinite)) throw new RangeError("Rectangle coordinates overflowed.");
|
|
269
|
+
const value = state(this);
|
|
270
|
+
ensureRevision(value);
|
|
271
|
+
append(value, 0, [x, y]);
|
|
272
|
+
append(value, 1, [x + width, y]);
|
|
273
|
+
append(value, 1, [x + width, y + height]);
|
|
274
|
+
append(value, 1, [x, y + height]);
|
|
275
|
+
append(value, 4, []);
|
|
276
|
+
append(value, 0, [x, y]);
|
|
277
|
+
value.revision++;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Appends a closed rectangle with Canvas-compatible corner radii. See {@link PathGeometry}.
|
|
281
|
+
* @param x - Horizontal coordinate of the rectangle origin.
|
|
282
|
+
* @param y - Vertical coordinate of the rectangle origin.
|
|
283
|
+
* @param width - Signed horizontal extent in path units.
|
|
284
|
+
* @param height - Signed vertical extent in path units.
|
|
285
|
+
* @param radii - Circular or elliptical corner radii, using Canvas roundRect ordering; defaults
|
|
286
|
+
* to zero.
|
|
287
|
+
*/
|
|
288
|
+
roundRect(x, y, width, height, radii = 0) {
|
|
289
|
+
if (![x, y, width, height].every(Number.isFinite)) return;
|
|
290
|
+
const list = Array.isArray(radii) ? radii : [radii];
|
|
291
|
+
if (!list.length || list.length > 4) throw new RangeError("Expected one to four corner radii.");
|
|
292
|
+
const values = [];
|
|
293
|
+
for (const radius of list) {
|
|
294
|
+
const rx = typeof radius === "number" ? radius : radius.x ?? 0;
|
|
295
|
+
const ry = typeof radius === "number" ? radius : radius.y ?? 0;
|
|
296
|
+
if (![rx, ry].every(Number.isFinite)) return;
|
|
297
|
+
if (rx < 0 || ry < 0) throw new RangeError("Corner radii must not be negative.");
|
|
298
|
+
values.push([rx, ry]);
|
|
299
|
+
}
|
|
300
|
+
const corners = [values[0], values[1] ?? values[0], values[2] ?? values[0], values[3] ?? values[1] ?? values[0]];
|
|
301
|
+
const w = Math.abs(width), h = Math.abs(height);
|
|
302
|
+
const ratio = (length, sum) => sum === 0 ? 1 : length / sum;
|
|
303
|
+
const scale = Math.min(
|
|
304
|
+
1,
|
|
305
|
+
ratio(w, corners[0][0] + corners[1][0]),
|
|
306
|
+
ratio(w, corners[2][0] + corners[3][0]),
|
|
307
|
+
ratio(h, corners[0][1] + corners[3][1]),
|
|
308
|
+
ratio(h, corners[1][1] + corners[2][1])
|
|
309
|
+
);
|
|
310
|
+
const [tl, tr, br, bl] = corners.map(([rx, ry]) => [rx * scale, ry * scale]);
|
|
311
|
+
const path = new PathGeometry();
|
|
312
|
+
path.moveTo(tl[0], 0);
|
|
313
|
+
path.lineTo(w - tr[0], 0);
|
|
314
|
+
path.ellipse(w - tr[0], tr[1], tr[0], tr[1], 0, -Math.PI / 2, 0);
|
|
315
|
+
path.lineTo(w, h - br[1]);
|
|
316
|
+
path.ellipse(w - br[0], h - br[1], br[0], br[1], 0, 0, Math.PI / 2);
|
|
317
|
+
path.lineTo(bl[0], h);
|
|
318
|
+
path.ellipse(bl[0], h - bl[1], bl[0], bl[1], 0, Math.PI / 2, Math.PI);
|
|
319
|
+
path.lineTo(0, tl[1]);
|
|
320
|
+
path.ellipse(tl[0], tl[1], tl[0], tl[1], 0, Math.PI, Math.PI * 1.5);
|
|
321
|
+
path.closePath();
|
|
322
|
+
path.moveTo(width < 0 ? w : 0, height < 0 ? h : 0);
|
|
323
|
+
path.transform({ a: width < 0 ? -1 : 1, d: height < 0 ? -1 : 1, e: x, f: y });
|
|
324
|
+
this.#copyPath(path);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Appends a copy of another path, optionally transformed by a 2D matrix. See
|
|
328
|
+
* {@link PathGeometry}.
|
|
329
|
+
* @param other - Geometry whose segments are appended. See {@link PathGeometry}.
|
|
330
|
+
* @param matrix - Optional affine transform applied to the appended segments; defaults to
|
|
331
|
+
* identity.
|
|
332
|
+
*/
|
|
333
|
+
addPath(other, matrix = {}) {
|
|
334
|
+
if (!state(other).count) return;
|
|
335
|
+
const normalized = DOMMatrix.fromMatrix(matrix);
|
|
336
|
+
if (!normalized.is2D) throw new TypeError("PathGeometry requires a 2D affine matrix.");
|
|
337
|
+
if (![normalized.a, normalized.b, normalized.c, normalized.d, normalized.e, normalized.f].every(Number.isFinite)) return;
|
|
338
|
+
const copy = other.clone();
|
|
339
|
+
copy.transform(normalized);
|
|
340
|
+
const value = state(copy);
|
|
341
|
+
append(value, 0, [value.x, value.y]);
|
|
342
|
+
this.#copyPath(copy);
|
|
343
|
+
}
|
|
344
|
+
#copyPath(other) {
|
|
345
|
+
const source = state(other), value = state(this);
|
|
346
|
+
ensureRevision(value);
|
|
347
|
+
reserve(value, value.count + source.count, value.length + source.length);
|
|
348
|
+
value.types.set(source.types.subarray(0, source.count), value.count);
|
|
349
|
+
value.data.set(source.data.subarray(0, source.length), value.length);
|
|
350
|
+
value.count += source.count;
|
|
351
|
+
value.length += source.length;
|
|
352
|
+
value.x = source.x;
|
|
353
|
+
value.y = source.y;
|
|
354
|
+
value.startX = source.startX;
|
|
355
|
+
value.startY = source.startY;
|
|
356
|
+
value.revision++;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Replaces a segment range with validated independent segment values. See {@link PathGeometry}.
|
|
360
|
+
* @param start - Index at which to begin replacing segments.
|
|
361
|
+
* @param deleteCount - Number of segments to remove.
|
|
362
|
+
* @param segments - Replacement segments; defaults to no inserted segments. See
|
|
363
|
+
* {@link PathSegment} .
|
|
364
|
+
*/
|
|
365
|
+
spliceSegments(start, deleteCount, segments = []) {
|
|
366
|
+
const value = state(this);
|
|
367
|
+
if (!Number.isInteger(start) || start < 0 || start > value.count || !Number.isInteger(deleteCount) || deleteCount < 0 || deleteCount > value.count - start) {
|
|
368
|
+
throw new RangeError("Invalid path splice range.");
|
|
369
|
+
}
|
|
370
|
+
const additions = segments.map((segment) => ({ type: names.indexOf(segment.type), data: validatedOperands(segment) }));
|
|
371
|
+
const count = value.count - deleteCount + additions.length;
|
|
372
|
+
const firstType = start === 0 ? additions[0]?.type ?? value.types[deleteCount] : value.types[0];
|
|
373
|
+
if (count > 0 && firstType !== 0) throw new TypeError("A path must start with a move segment.");
|
|
374
|
+
if (!deleteCount && !additions.length) return;
|
|
375
|
+
ensureRevision(value);
|
|
376
|
+
let offset = 0, removed = 0;
|
|
377
|
+
for (let i = 0; i < start; i++) offset += widths[value.types[i]];
|
|
378
|
+
for (let i = start; i < start + deleteCount; i++) removed += widths[value.types[i]];
|
|
379
|
+
const added = additions.reduce((sum, segment) => sum + segment.data.length, 0);
|
|
380
|
+
const length = value.length - removed + added;
|
|
381
|
+
reserve(value, count, length);
|
|
382
|
+
value.types.copyWithin(start + additions.length, start + deleteCount, value.count);
|
|
383
|
+
value.data.copyWithin(offset + added, offset + removed, value.length);
|
|
384
|
+
for (let i = 0; i < additions.length; i++) {
|
|
385
|
+
value.types[start + i] = additions[i].type;
|
|
386
|
+
value.data.set(additions[i].data, offset);
|
|
387
|
+
offset += additions[i].data.length;
|
|
388
|
+
}
|
|
389
|
+
value.count = count;
|
|
390
|
+
value.length = length;
|
|
391
|
+
rebuildPoint(value);
|
|
392
|
+
value.revision++;
|
|
393
|
+
}
|
|
394
|
+
#build(type, data) {
|
|
395
|
+
if (!data.every(Number.isFinite)) return;
|
|
396
|
+
const value = state(this);
|
|
397
|
+
ensureRevision(value);
|
|
398
|
+
if (!value.count && type !== 0) {
|
|
399
|
+
append(value, 0, data.slice(0, 2));
|
|
400
|
+
if (type === 1) {
|
|
401
|
+
value.revision++;
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
append(value, type, data);
|
|
406
|
+
value.revision++;
|
|
407
|
+
}
|
|
408
|
+
#offset(index) {
|
|
409
|
+
const value = state(this);
|
|
410
|
+
if (!Number.isInteger(index) || index < 0 || index >= value.count) {
|
|
411
|
+
throw new RangeError("Path segment index is out of range.");
|
|
412
|
+
}
|
|
413
|
+
let offset = 0;
|
|
414
|
+
for (let i = 0; i < index; i++) offset += widths[value.types[i]];
|
|
415
|
+
return offset;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Returns an independent segment value at the specified index. See {@link PathSegment}.
|
|
419
|
+
* @param index - Zero-based segment index.
|
|
420
|
+
* @returns The segment at the requested index. See {@link PathSegment}.
|
|
421
|
+
*/
|
|
422
|
+
getSegment(index) {
|
|
423
|
+
return readSegment(state(this), index, this.#offset(index));
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Replaces one stored segment with a validated independent value. See {@link PathGeometry}.
|
|
427
|
+
* @param index - Zero-based index of the segment to replace.
|
|
428
|
+
* @param segment - Replacement segment data. See {@link PathSegment}.
|
|
429
|
+
*/
|
|
430
|
+
setSegment(index, segment) {
|
|
431
|
+
const offset = this.#offset(index);
|
|
432
|
+
const type = names.indexOf(segment.type);
|
|
433
|
+
const data = validatedOperands(segment);
|
|
434
|
+
if (!data.every(Number.isFinite)) throw new RangeError("Path coordinates must be finite.");
|
|
435
|
+
if (index === 0 && type !== 0) throw new TypeError("A path must start with a move segment.");
|
|
436
|
+
const value = state(this);
|
|
437
|
+
ensureRevision(value);
|
|
438
|
+
const oldWidth = widths[value.types[index]];
|
|
439
|
+
const length = value.length + data.length - oldWidth;
|
|
440
|
+
reserve(value, value.count, length);
|
|
441
|
+
value.data.copyWithin(offset + data.length, offset + oldWidth, value.length);
|
|
442
|
+
value.data.set(data, offset);
|
|
443
|
+
value.types[index] = type;
|
|
444
|
+
value.length = length;
|
|
445
|
+
rebuildPoint(value);
|
|
446
|
+
value.revision++;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Applies a finite 2D affine matrix. Old native conversions remain unchanged.
|
|
450
|
+
* @param matrix - Affine matrix applied to all segments in this path.
|
|
451
|
+
*/
|
|
452
|
+
transform(matrix) {
|
|
453
|
+
const input = matrix;
|
|
454
|
+
const normalized = DOMMatrix.fromMatrix(input);
|
|
455
|
+
if (!normalized.is2D) throw new TypeError("PathGeometry requires a 2D affine matrix.");
|
|
456
|
+
const { a, b, c, d, e, f } = normalized;
|
|
457
|
+
if (![a, b, c, d, e, f].every(Number.isFinite)) {
|
|
458
|
+
throw new RangeError("Path transform must be finite.");
|
|
459
|
+
}
|
|
460
|
+
const value = state(this);
|
|
461
|
+
if (!value.count) return;
|
|
462
|
+
ensureRevision(value);
|
|
463
|
+
for (const write of [false, true]) {
|
|
464
|
+
visitPathGeometry(this, (type, data, offset) => {
|
|
465
|
+
const length = type === 5 ? 6 : widths[type];
|
|
466
|
+
for (let i = 0; i < length; i += 2) {
|
|
467
|
+
const x = data[offset + i], y = data[offset + i + 1];
|
|
468
|
+
const vector = type === 5 && i > 0;
|
|
469
|
+
const nextX = a * x + c * y + (vector ? 0 : e);
|
|
470
|
+
const nextY = b * x + d * y + (vector ? 0 : f);
|
|
471
|
+
if (!Number.isFinite(nextX) || !Number.isFinite(nextY)) {
|
|
472
|
+
throw new RangeError("Path transform coordinates overflowed.");
|
|
473
|
+
}
|
|
474
|
+
if (write) {
|
|
475
|
+
data[offset + i] = nextX;
|
|
476
|
+
data[offset + i + 1] = nextY;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
rebuildPoint(value);
|
|
482
|
+
value.revision++;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Iterates over independent segment values in source order. See {@link PathSegment}.
|
|
486
|
+
* @returns An iterator over the path's segments in drawing order. See {@link PathSegment}.
|
|
487
|
+
*/
|
|
488
|
+
*[Symbol.iterator]() {
|
|
489
|
+
const value = state(this);
|
|
490
|
+
const revision = value.revision;
|
|
491
|
+
let offset = 0;
|
|
492
|
+
for (let index = 0; index < value.count; index++) {
|
|
493
|
+
if (value.revision !== revision) throw new Error("PathGeometry changed during iteration.");
|
|
494
|
+
const width = widths[value.types[index]];
|
|
495
|
+
yield readSegment(value, index, offset);
|
|
496
|
+
if (value.revision !== revision) throw new Error("PathGeometry changed during iteration.");
|
|
497
|
+
offset += width;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
function readSegment(value, index, offset) {
|
|
502
|
+
const d = value.data;
|
|
503
|
+
switch (value.types[index]) {
|
|
504
|
+
case 0:
|
|
505
|
+
return { type: "move", x: d[offset], y: d[offset + 1] };
|
|
506
|
+
case 1:
|
|
507
|
+
return { type: "line", x: d[offset], y: d[offset + 1] };
|
|
508
|
+
case 2:
|
|
509
|
+
return { type: "quadratic", cpx: d[offset], cpy: d[offset + 1], x: d[offset + 2], y: d[offset + 3] };
|
|
510
|
+
case 3:
|
|
511
|
+
return { type: "cubic", cp1x: d[offset], cp1y: d[offset + 1], cp2x: d[offset + 2], cp2y: d[offset + 3], x: d[offset + 4], y: d[offset + 5] };
|
|
512
|
+
case 5:
|
|
513
|
+
return { type: "arc", cx: d[offset], cy: d[offset + 1], ux: d[offset + 2], uy: d[offset + 3], vx: d[offset + 4], vy: d[offset + 5], startAngle: d[offset + 6], sweep: d[offset + 7] };
|
|
514
|
+
default:
|
|
515
|
+
return { type: "close" };
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
function validatedOperands(segment) {
|
|
519
|
+
const data = operands(segment);
|
|
520
|
+
if (!data.every(Number.isFinite)) throw new RangeError("Path coordinates must be finite.");
|
|
521
|
+
if (segment.type === "arc" && (Math.abs(segment.sweep) > TAU || Math.abs(segment.startAngle) > TAU)) {
|
|
522
|
+
throw new RangeError("Arc angles must be normalized to one revolution.");
|
|
523
|
+
}
|
|
524
|
+
return data;
|
|
525
|
+
}
|
|
526
|
+
function updatePoint(value, type, data, offset) {
|
|
527
|
+
if (type === 4) {
|
|
528
|
+
value.x = value.startX;
|
|
529
|
+
value.y = value.startY;
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
if (type === 5) {
|
|
533
|
+
const angle = data[offset + 6] + data[offset + 7];
|
|
534
|
+
value.x = data[offset] + data[offset + 2] * Math.cos(angle) + data[offset + 4] * Math.sin(angle);
|
|
535
|
+
value.y = data[offset + 1] + data[offset + 3] * Math.cos(angle) + data[offset + 5] * Math.sin(angle);
|
|
536
|
+
} else {
|
|
537
|
+
value.x = data[offset + widths[type] - 2];
|
|
538
|
+
value.y = data[offset + widths[type] - 1];
|
|
539
|
+
}
|
|
540
|
+
if (type === 0) {
|
|
541
|
+
value.startX = value.x;
|
|
542
|
+
value.startY = value.y;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
function rebuildPoint(value) {
|
|
546
|
+
value.x = value.y = value.startX = value.startY = 0;
|
|
547
|
+
let offset = 0;
|
|
548
|
+
for (let i = 0; i < value.count; i++) {
|
|
549
|
+
updatePoint(value, value.types[i], value.data, offset);
|
|
550
|
+
offset += widths[value.types[i]];
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
export {
|
|
554
|
+
PathGeometry,
|
|
555
|
+
visitPathGeometry
|
|
556
|
+
};
|
|
557
|
+
//# sourceMappingURL=path-geometry.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/lib/geometry/path-geometry.ts"],
|
|
4
|
+
"sourcesContent": ["import { arcPoint, arcSweep, TAU, type ArcSegment } from './path-arc.js';\n/**\n * A canonical, independently editable path segment.\n *\n * @see {@link PathGeometry}\n */\nexport type PathSegment =\n | {\n /** Selects `\"move\"`, `\"line\"` for type. See {@link PathSegment}. */\n type: 'move' | 'line';\n /**\n * Horizontal coordinate or displacement in the containing coordinate system. See\n * {@link PathSegment}.\n */\n x: number;\n /**\n * Vertical coordinate or displacement in the containing coordinate system. See\n * {@link PathSegment}.\n */\n y: number;\n }\n | {\n /** The literal \"quadratic\" identifying this variant. See {@link PathSegment}. */\n type: 'quadratic';\n /** Horizontal coordinate of the quadratic control point. See {@link PathSegment}. */\n cpx: number;\n /** Vertical coordinate of the quadratic control point. See {@link PathSegment}. */\n cpy: number;\n /**\n * Horizontal coordinate or displacement in the containing coordinate system. See\n * {@link PathSegment}.\n */\n x: number;\n /**\n * Vertical coordinate or displacement in the containing coordinate system. See\n * {@link PathSegment}.\n */\n y: number;\n }\n | {\n /** The literal \"cubic\" identifying this variant. See {@link PathSegment}. */\n type: 'cubic';\n /** Horizontal coordinate of the first cubic control point. See {@link PathSegment}. */\n cp1x: number;\n /** Vertical coordinate of the first cubic control point. See {@link PathSegment}. */\n cp1y: number;\n /** Horizontal coordinate of the second cubic control point. See {@link PathSegment}. */\n cp2x: number;\n /** Vertical coordinate of the second cubic control point. See {@link PathSegment}. */\n cp2y: number;\n /**\n * Horizontal coordinate or displacement in the containing coordinate system. See\n * {@link PathSegment}.\n */\n x: number;\n /**\n * Vertical coordinate or displacement in the containing coordinate system. See\n * {@link PathSegment}.\n */\n y: number;\n }\n | ArcSegment\n | {\n /** The literal \"close\" identifying this variant. See {@link PathSegment}. */\n type: 'close';\n };\n\nconst names = ['move', 'line', 'quadratic', 'cubic', 'close', 'arc'] as const;\nconst widths = [2, 2, 4, 6, 0, 8] as const;\ninterface Storage {\n types: Uint8Array;\n data: Float64Array;\n count: number;\n length: number;\n revision: number;\n x: number; y: number; startX: number; startY: number;\n}\nconst storage = new WeakMap<PathGeometry, Storage>();\n\nfunction state(path: PathGeometry): Storage {\n const value = storage.get(path);\n if (!value) throw new TypeError('Expected a PathGeometry.');\n return value;\n}\n\n/** @internal Borrowed buffers must never escape this synchronous traversal. */\nexport function visitPathGeometry(\n path: PathGeometry,\n visit: (type: number, data: Float64Array, offset: number) => void,\n): void {\n const value = state(path);\n let offset = 0;\n for (let i = 0; i < value.count; i++) {\n const type = value.types[i];\n visit(type, value.data, offset);\n offset += widths[type];\n }\n}\n\nfunction ensureRevision(value: Storage): void {\n if (value.revision >= Number.MAX_SAFE_INTEGER) {\n throw new RangeError('PathGeometry revision exhausted.');\n }\n}\n\nfunction reserve(value: Storage, count: number, length: number): void {\n if (count > value.types.length) {\n const next = new Uint8Array(Math.max(count, value.types.length * 2, 8));\n next.set(value.types.subarray(0, value.count));\n value.types = next;\n }\n if (length > value.data.length) {\n const next = new Float64Array(Math.max(length, value.data.length * 2, 32));\n next.set(value.data.subarray(0, value.length));\n value.data = next;\n }\n}\n\nfunction append(value: Storage, type: number, data: readonly number[]): void {\n reserve(value, value.count + 1, value.length + data.length);\n value.types[value.count++] = type;\n value.data.set(data, value.length);\n value.length += data.length;\n updatePoint(value, type, data, 0);\n}\n\nfunction operands(segment: PathSegment): number[] {\n switch (segment.type) {\n case 'move': case 'line': return [segment.x, segment.y];\n case 'quadratic': return [segment.cpx, segment.cpy, segment.x, segment.y];\n case 'cubic': return [segment.cp1x, segment.cp1y, segment.cp2x, segment.cp2y, segment.x, segment.y];\n case 'close': return [];\n case 'arc': return [segment.cx, segment.cy, segment.ux, segment.uy, segment.vx, segment.vy, segment.startAngle, segment.sweep];\n default: throw new TypeError('Unknown path segment type.');\n }\n}\n\n/**\n * Mutable packed geometry. Mutations do not schedule Pibbl rendering.\n *\n * @see {@link PathSegment}\n */\nexport class PathGeometry implements Iterable<PathSegment> {\n /**\n * Creates empty geometry or an independent copy of the supplied path. See {@link PathGeometry}.\n * @param source - Optional geometry whose segments are copied; omission creates an empty path.\n * See {@link PathGeometry} .\n */\n constructor(source?: PathGeometry) {\n const original = source === undefined ? undefined : state(source);\n storage.set(this, {\n types: original ? original.types.slice(0, original.count) : new Uint8Array(0),\n data: original ? original.data.slice(0, original.length) : new Float64Array(0),\n count: original?.count ?? 0,\n length: original?.length ?? 0,\n revision: 0,\n x: original?.x ?? 0, y: original?.y ?? 0,\n startX: original?.startX ?? 0, startY: original?.startY ?? 0,\n });\n }\n\n /**\n * Monotonic mutation revision; changing geometry does not itself request a Pibbl frame. See\n * {@link PathGeometry}.\n * @returns The mutation revision used to invalidate cached representations.\n */\n get revision(): number { return state(this).revision; }\n /**\n * Number of stored path segments, including move and close commands. See {@link PathGeometry}.\n * @returns The number of stored path segments.\n */\n get segmentCount(): number { return state(this).count; }\n\n /**\n * Returns an independent copy with its own mutation revision. See {@link PathGeometry}.\n * @returns An independent copy of this path's segments. See {@link PathGeometry}.\n */\n clone(): PathGeometry { return new PathGeometry(this); }\n\n /** Removes all segments and resets the current point. See {@link PathGeometry}. */\n clear(): void {\n const value = state(this);\n if (!value.count) return;\n ensureRevision(value);\n value.count = value.length = 0;\n value.x = value.y = value.startX = value.startY = 0;\n value.revision++;\n }\n\n /**\n * Begins a subpath at the supplied coordinates. See {@link PathGeometry}.\n * @param x - Horizontal coordinate of the new subpath's starting point.\n * @param y - Vertical coordinate of the new subpath's starting point.\n */\n moveTo(x: number, y: number): void { this.#build(0, [x, y]); }\n /**\n * Appends a straight segment to the supplied coordinates. See {@link PathGeometry}.\n * @param x - Horizontal coordinate of the line endpoint.\n * @param y - Vertical coordinate of the line endpoint.\n */\n lineTo(x: number, y: number): void { this.#build(1, [x, y]); }\n /**\n * Appends a quadratic curve using one control point and an endpoint. See {@link PathGeometry}.\n * @param cpx - Horizontal coordinate of the quadratic control point.\n * @param cpy - Vertical coordinate of the quadratic control point.\n * @param x - Horizontal coordinate of the curve endpoint.\n * @param y - Vertical coordinate of the curve endpoint.\n */\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n this.#build(2, [cpx, cpy, x, y]);\n }\n /**\n * Appends a cubic curve using two control points and an endpoint. See {@link PathGeometry}.\n * @param cp1x - Horizontal coordinate of the first control point.\n * @param cp1y - Vertical coordinate of the first control point.\n * @param cp2x - Horizontal coordinate of the second control point.\n * @param cp2y - Vertical coordinate of the second control point.\n * @param x - Horizontal coordinate of the curve endpoint.\n * @param y - Vertical coordinate of the curve endpoint.\n */\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void {\n this.#build(3, [cp1x, cp1y, cp2x, cp2y, x, y]);\n }\n /**\n * Closes the current subpath; an already closed or empty path is unchanged. See\n * {@link PathGeometry}.\n */\n closePath(): void {\n const value = state(this);\n if (!value.count || value.types[value.count - 1] === 4) return;\n this.#build(4, []);\n }\n\n /**\n * Appends a circular arc using Canvas-compatible angles in radians. See {@link PathGeometry}.\n * @param x - Horizontal coordinate of the circle center.\n * @param y - Vertical coordinate of the circle center.\n * @param radius - Circle radius in path units.\n * @param startAngle - Starting angle in radians.\n * @param endAngle - Ending angle in radians.\n * @param counterclockwise - Whether the arc runs counterclockwise; defaults to false.\n */\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise = false): void {\n this.ellipse(x, y, radius, radius, 0, startAngle, endAngle, counterclockwise);\n }\n\n /**\n * Appends an elliptical arc; rotation and arc angles are in radians. See {@link PathGeometry}.\n * @param x - Horizontal coordinate of the ellipse center.\n * @param y - Vertical coordinate of the ellipse center.\n * @param radiusX - Horizontal radius in path units.\n * @param radiusY - Vertical radius in path units.\n * @param rotation - Ellipse rotation in radians.\n * @param startAngle - Starting angle in radians.\n * @param endAngle - Ending angle in radians.\n * @param counterclockwise - Whether the arc runs counterclockwise; defaults to false.\n */\n ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise = false): void {\n if (![x, y, radiusX, radiusY, rotation, startAngle, endAngle].every(Number.isFinite)) return;\n if (radiusX < 0 || radiusY < 0) throw new DOMException('Arc radii must not be negative.', 'IndexSizeError');\n const cos = Math.cos(rotation), sin = Math.sin(rotation);\n const arc: ArcSegment = {\n type: 'arc', cx: x, cy: y, ux: radiusX * cos, uy: radiusX * sin,\n vx: -radiusY * sin, vy: radiusY * cos, startAngle: startAngle % TAU,\n sweep: arcSweep(startAngle, endAngle, counterclockwise),\n };\n this.#appendArc(arc);\n }\n\n #appendArc(arc: ArcSegment): void {\n const [x, y] = arcPoint(arc, arc.startAngle);\n const end = arcPoint(arc, arc.startAngle + arc.sweep);\n if (![x, y, ...end].every(Number.isFinite)) throw new RangeError('Arc coordinates overflowed.');\n const value = state(this);\n ensureRevision(value);\n if (!value.count) append(value, 0, [x, y]);\n else if (value.x !== x || value.y !== y) append(value, 1, [x, y]);\n append(value, 5, operands(arc));\n value.revision++;\n }\n\n /**\n * Appends a circular arc tangent to two lines using Canvas-compatible geometry. See\n * {@link PathGeometry}.\n * @param x1 - Horizontal coordinate of the first tangent intersection.\n * @param y1 - Vertical coordinate of the first tangent intersection.\n * @param x2 - Horizontal coordinate of the second tangent endpoint.\n * @param y2 - Vertical coordinate of the second tangent endpoint.\n * @param radius - Arc radius in path units.\n */\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void {\n if (![x1, y1, x2, y2, radius].every(Number.isFinite)) return;\n if (radius < 0) throw new DOMException('Arc radius must not be negative.', 'IndexSizeError');\n const value = state(this);\n if (!value.count) { this.moveTo(x1, y1); return; }\n const ax = value.x - x1, ay = value.y - y1, bx = x2 - x1, by = y2 - y1;\n const al = Math.hypot(ax, ay), bl = Math.hypot(bx, by);\n if (al === 0 || bl === 0 || radius === 0) { this.lineTo(x1, y1); return; }\n const ux = ax / al, uy = ay / al, vx = bx / bl, vy = by / bl;\n const cross = ux * vy - uy * vx;\n if (cross === 0) { this.lineTo(x1, y1); return; }\n const dot = Math.max(-1, Math.min(1, ux * vx + uy * vy));\n const distance = radius * (1 + dot) / Math.abs(cross);\n const startX = x1 + ux * distance, startY = y1 + uy * distance;\n const sign = cross < 0 ? -1 : 1;\n const cx = startX - uy * radius * sign, cy = startY + ux * radius * sign;\n const endX = x1 + vx * distance, endY = y1 + vy * distance;\n const start = Math.atan2(startY - cy, startX - cx);\n const end = Math.atan2(endY - cy, endX - cx);\n if (![cx, cy, endX, endY].every(Number.isFinite)) throw new RangeError('Arc coordinates overflowed.');\n this.#appendArc({ type: 'arc', cx, cy, ux: radius, uy: 0, vx: 0, vy: radius,\n startAngle: start, sweep: arcSweep(start, end, cross > 0) });\n }\n\n /**\n * Appends a closed rectangle subpath. See {@link PathGeometry}.\n * @param x - Horizontal coordinate of the rectangle origin.\n * @param y - Vertical coordinate of the rectangle origin.\n * @param width - Signed horizontal extent in path units.\n * @param height - Signed vertical extent in path units.\n */\n rect(x: number, y: number, width: number, height: number): void {\n if (![x, y, width, height].every(Number.isFinite)) return;\n if (![x + width, y + height].every(Number.isFinite)) throw new RangeError('Rectangle coordinates overflowed.');\n const value = state(this);\n ensureRevision(value);\n append(value, 0, [x, y]);\n append(value, 1, [x + width, y]);\n append(value, 1, [x + width, y + height]);\n append(value, 1, [x, y + height]);\n append(value, 4, []);\n append(value, 0, [x, y]);\n value.revision++;\n }\n\n /**\n * Appends a closed rectangle with Canvas-compatible corner radii. See {@link PathGeometry}.\n * @param x - Horizontal coordinate of the rectangle origin.\n * @param y - Vertical coordinate of the rectangle origin.\n * @param width - Signed horizontal extent in path units.\n * @param height - Signed vertical extent in path units.\n * @param radii - Circular or elliptical corner radii, using Canvas roundRect ordering; defaults\n * to zero.\n */\n roundRect(x: number, y: number, width: number, height: number,\n radii: number | DOMPointInit | (number | DOMPointInit)[] = 0): void {\n if (![x, y, width, height].every(Number.isFinite)) return;\n const list = Array.isArray(radii) ? radii : [radii];\n if (!list.length || list.length > 4) throw new RangeError('Expected one to four corner radii.');\n const values: [number, number][] = [];\n for (const radius of list) {\n const rx = typeof radius === 'number' ? radius : radius.x ?? 0;\n const ry = typeof radius === 'number' ? radius : radius.y ?? 0;\n if (![rx, ry].every(Number.isFinite)) return;\n if (rx < 0 || ry < 0) throw new RangeError('Corner radii must not be negative.');\n values.push([rx, ry]);\n }\n const corners = [values[0], values[1] ?? values[0], values[2] ?? values[0], values[3] ?? values[1] ?? values[0]];\n const w = Math.abs(width), h = Math.abs(height);\n const ratio = (length: number, sum: number) => sum === 0 ? 1 : length / sum;\n const scale = Math.min(1, ratio(w, corners[0][0] + corners[1][0]), ratio(w, corners[2][0] + corners[3][0]),\n ratio(h, corners[0][1] + corners[3][1]), ratio(h, corners[1][1] + corners[2][1]));\n const [tl, tr, br, bl] = corners.map(([rx, ry]) => [rx * scale, ry * scale]);\n const path = new PathGeometry();\n path.moveTo(tl[0], 0);\n path.lineTo(w - tr[0], 0);\n path.ellipse(w - tr[0], tr[1], tr[0], tr[1], 0, -Math.PI / 2, 0);\n path.lineTo(w, h - br[1]);\n path.ellipse(w - br[0], h - br[1], br[0], br[1], 0, 0, Math.PI / 2);\n path.lineTo(bl[0], h);\n path.ellipse(bl[0], h - bl[1], bl[0], bl[1], 0, Math.PI / 2, Math.PI);\n path.lineTo(0, tl[1]);\n path.ellipse(tl[0], tl[1], tl[0], tl[1], 0, Math.PI, Math.PI * 1.5);\n path.closePath();\n // Chromium resumes at the normalized rectangle origin after negative dimensions.\n path.moveTo(width < 0 ? w : 0, height < 0 ? h : 0);\n path.transform({ a: width < 0 ? -1 : 1, d: height < 0 ? -1 : 1, e: x, f: y });\n this.#copyPath(path);\n }\n\n /**\n * Appends a copy of another path, optionally transformed by a 2D matrix. See\n * {@link PathGeometry}.\n * @param other - Geometry whose segments are appended. See {@link PathGeometry}.\n * @param matrix - Optional affine transform applied to the appended segments; defaults to\n * identity.\n */\n addPath(other: PathGeometry, matrix: DOMMatrix2DInit = {}): void {\n if (!state(other).count) return;\n const normalized = DOMMatrix.fromMatrix(matrix);\n if (!normalized.is2D) throw new TypeError('PathGeometry requires a 2D affine matrix.');\n if (![normalized.a, normalized.b, normalized.c, normalized.d, normalized.e, normalized.f].every(Number.isFinite)) return;\n const copy = other.clone();\n copy.transform(normalized);\n const value = state(copy);\n append(value, 0, [value.x, value.y]);\n this.#copyPath(copy);\n }\n\n #copyPath(other: PathGeometry): void {\n const source = state(other), value = state(this);\n ensureRevision(value);\n reserve(value, value.count + source.count, value.length + source.length);\n value.types.set(source.types.subarray(0, source.count), value.count);\n value.data.set(source.data.subarray(0, source.length), value.length);\n value.count += source.count; value.length += source.length;\n value.x = source.x; value.y = source.y;\n value.startX = source.startX; value.startY = source.startY;\n value.revision++;\n }\n\n /**\n * Replaces a segment range with validated independent segment values. See {@link PathGeometry}.\n * @param start - Index at which to begin replacing segments.\n * @param deleteCount - Number of segments to remove.\n * @param segments - Replacement segments; defaults to no inserted segments. See\n * {@link PathSegment} .\n */\n spliceSegments(start: number, deleteCount: number, segments: readonly PathSegment[] = []): void {\n const value = state(this);\n if (!Number.isInteger(start) || start < 0 || start > value.count ||\n !Number.isInteger(deleteCount) || deleteCount < 0 || deleteCount > value.count - start) {\n throw new RangeError('Invalid path splice range.');\n }\n const additions = segments.map(segment => ({ type: names.indexOf(segment.type), data: validatedOperands(segment) }));\n const count = value.count - deleteCount + additions.length;\n const firstType = start === 0 ? (additions[0]?.type ?? value.types[deleteCount]) : value.types[0];\n if (count > 0 && firstType !== 0) throw new TypeError('A path must start with a move segment.');\n if (!deleteCount && !additions.length) return;\n ensureRevision(value);\n let offset = 0, removed = 0;\n for (let i = 0; i < start; i++) offset += widths[value.types[i]];\n for (let i = start; i < start + deleteCount; i++) removed += widths[value.types[i]];\n const added = additions.reduce((sum, segment) => sum + segment.data.length, 0);\n const length = value.length - removed + added;\n reserve(value, count, length);\n value.types.copyWithin(start + additions.length, start + deleteCount, value.count);\n value.data.copyWithin(offset + added, offset + removed, value.length);\n for (let i = 0; i < additions.length; i++) {\n value.types[start + i] = additions[i].type;\n value.data.set(additions[i].data, offset);\n offset += additions[i].data.length;\n }\n value.count = count; value.length = length;\n rebuildPoint(value);\n value.revision++;\n }\n\n #build(type: number, data: number[]): void {\n if (!data.every(Number.isFinite)) return;\n const value = state(this);\n ensureRevision(value);\n if (!value.count && type !== 0) {\n // Canvas starts a missing subpath at the first control point (or endpoint).\n append(value, 0, data.slice(0, 2));\n if (type === 1) {\n value.revision++;\n return;\n }\n }\n append(value, type, data);\n value.revision++;\n }\n\n #offset(index: number): number {\n const value = state(this);\n if (!Number.isInteger(index) || index < 0 || index >= value.count) {\n throw new RangeError('Path segment index is out of range.');\n }\n let offset = 0;\n for (let i = 0; i < index; i++) offset += widths[value.types[i]];\n return offset;\n }\n\n /**\n * Returns an independent segment value at the specified index. See {@link PathSegment}.\n * @param index - Zero-based segment index.\n * @returns The segment at the requested index. See {@link PathSegment}.\n */\n getSegment(index: number): PathSegment {\n return readSegment(state(this), index, this.#offset(index));\n }\n\n /**\n * Replaces one stored segment with a validated independent value. See {@link PathGeometry}.\n * @param index - Zero-based index of the segment to replace.\n * @param segment - Replacement segment data. See {@link PathSegment}.\n */\n setSegment(index: number, segment: PathSegment): void {\n const offset = this.#offset(index);\n const type = names.indexOf(segment.type);\n const data = validatedOperands(segment);\n if (!data.every(Number.isFinite)) throw new RangeError('Path coordinates must be finite.');\n if (index === 0 && type !== 0) throw new TypeError('A path must start with a move segment.');\n const value = state(this);\n ensureRevision(value);\n const oldWidth = widths[value.types[index]];\n const length = value.length + data.length - oldWidth;\n reserve(value, value.count, length);\n value.data.copyWithin(offset + data.length, offset + oldWidth, value.length);\n value.data.set(data, offset);\n value.types[index] = type;\n value.length = length;\n rebuildPoint(value);\n value.revision++;\n }\n\n /**\n * Applies a finite 2D affine matrix. Old native conversions remain unchanged.\n * @param matrix - Affine matrix applied to all segments in this path.\n */\n transform(matrix: DOMMatrix2DInit): void {\n const input = matrix as DOMMatrixInit;\n const normalized = DOMMatrix.fromMatrix(input);\n if (!normalized.is2D) throw new TypeError('PathGeometry requires a 2D affine matrix.');\n const { a, b, c, d, e, f } = normalized;\n if (![a, b, c, d, e, f].every(Number.isFinite)) {\n throw new RangeError('Path transform must be finite.');\n }\n const value = state(this);\n if (!value.count) return;\n ensureRevision(value);\n // Two passes keep overflow errors atomic without allocating another buffer.\n for (const write of [false, true]) {\n visitPathGeometry(this, (type, data, offset) => {\n const length = type === 5 ? 6 : widths[type];\n for (let i = 0; i < length; i += 2) {\n const x = data[offset + i], y = data[offset + i + 1];\n const vector = type === 5 && i > 0;\n const nextX = a * x + c * y + (vector ? 0 : e);\n const nextY = b * x + d * y + (vector ? 0 : f);\n if (!Number.isFinite(nextX) || !Number.isFinite(nextY)) {\n throw new RangeError('Path transform coordinates overflowed.');\n }\n if (write) { data[offset + i] = nextX; data[offset + i + 1] = nextY; }\n }\n });\n }\n rebuildPoint(value);\n value.revision++;\n }\n\n /**\n * Iterates over independent segment values in source order. See {@link PathSegment}.\n * @returns An iterator over the path's segments in drawing order. See {@link PathSegment}.\n */\n *[Symbol.iterator](): IterableIterator<PathSegment> {\n const value = state(this);\n const revision = value.revision;\n let offset = 0;\n for (let index = 0; index < value.count; index++) {\n if (value.revision !== revision) throw new Error('PathGeometry changed during iteration.');\n const width = widths[value.types[index]];\n yield readSegment(value, index, offset);\n if (value.revision !== revision) throw new Error('PathGeometry changed during iteration.');\n offset += width;\n }\n }\n}\n\nfunction readSegment(value: Storage, index: number, offset: number): PathSegment {\n const d = value.data;\n switch (value.types[index]) {\n case 0: return { type: 'move', x: d[offset], y: d[offset + 1] };\n case 1: return { type: 'line', x: d[offset], y: d[offset + 1] };\n case 2: return { type: 'quadratic', cpx: d[offset], cpy: d[offset + 1], x: d[offset + 2], y: d[offset + 3] };\n case 3: return { type: 'cubic', cp1x: d[offset], cp1y: d[offset + 1], cp2x: d[offset + 2], cp2y: d[offset + 3], x: d[offset + 4], y: d[offset + 5] };\n case 5: return { type: 'arc', cx: d[offset], cy: d[offset + 1], ux: d[offset + 2], uy: d[offset + 3], vx: d[offset + 4], vy: d[offset + 5], startAngle: d[offset + 6], sweep: d[offset + 7] };\n default: return { type: 'close' };\n }\n}\n\nfunction validatedOperands(segment: PathSegment): number[] {\n const data = operands(segment);\n if (!data.every(Number.isFinite)) throw new RangeError('Path coordinates must be finite.');\n if (segment.type === 'arc' && (Math.abs(segment.sweep) > TAU || Math.abs(segment.startAngle) > TAU)) {\n throw new RangeError('Arc angles must be normalized to one revolution.');\n }\n return data;\n}\n\nfunction updatePoint(value: Storage, type: number, data: ArrayLike<number>, offset: number): void {\n if (type === 4) { value.x = value.startX; value.y = value.startY; return; }\n if (type === 5) {\n const angle = data[offset + 6] + data[offset + 7];\n value.x = data[offset] + data[offset + 2] * Math.cos(angle) + data[offset + 4] * Math.sin(angle);\n value.y = data[offset + 1] + data[offset + 3] * Math.cos(angle) + data[offset + 5] * Math.sin(angle);\n } else {\n value.x = data[offset + widths[type] - 2]; value.y = data[offset + widths[type] - 1];\n }\n if (type === 0) { value.startX = value.x; value.startY = value.y; }\n}\nfunction rebuildPoint(value: Storage): void {\n value.x = value.y = value.startX = value.startY = 0;\n let offset = 0;\n for (let i = 0; i < value.count; i++) {\n updatePoint(value, value.types[i], value.data, offset);\n offset += widths[value.types[i]];\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PathGeometry } from './path-geometry.js';
|
|
2
|
+
import { type SimplifyPathOptions } from './path-utilities.js';
|
|
3
|
+
/**
|
|
4
|
+
* Simplifies line-only paths with a radial-distance prepass followed by the
|
|
5
|
+
* default Douglas--Peucker implementation. Each stage receives half of the
|
|
6
|
+
* requested error budget, so their errors compose within `tolerance`.
|
|
7
|
+
*
|
|
8
|
+
* @param path - Source geometry; it is not modified. See {@link PathGeometry}.
|
|
9
|
+
* @param options - Simplification tolerance and work limits. See {@link SimplifyPathOptions}.
|
|
10
|
+
* @returns Independent geometry with redundant line vertices removed. See {@link PathGeometry}.
|
|
11
|
+
*
|
|
12
|
+
* @see {@link PathGeometry}
|
|
13
|
+
* @see {@link SimplifyPathOptions}
|
|
14
|
+
*/
|
|
15
|
+
export declare function simplifyPathRadial(path: PathGeometry, options: Readonly<SimplifyPathOptions>): PathGeometry;
|