react-native-webrtc-kaleidoscope 2.0.0 → 2.1.0
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/NOTICE.md +8 -8
- package/README.md +185 -56
- package/android/build.gradle +13 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/CompositeLayers.kt +127 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/EffectTuning.kt +69 -69
- package/android/src/main/java/com/simiancraft/kaleidoscope/KaleidoscopeModule.kt +86 -33
- package/android/src/main/java/com/simiancraft/kaleidoscope/Registration.kt +23 -64
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/CompositeFactory.kt +691 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/LayerShaders.kt +30 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/TransformFactory.kt +248 -200
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Egl.kt +82 -70
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Fbo.kt +50 -47
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/FramePipeline.kt +106 -105
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/GlDebug.kt +23 -23
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/GlProgram.kt +76 -57
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Ingest.kt +92 -71
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Orientation.kt +25 -25
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Shaders.kt +57 -76
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/ShadersGenerated.kt +1162 -25
- package/android/src/main/java/com/simiancraft/kaleidoscope/segmentation/Mask.kt +254 -242
- package/android/src/main/java/com/simiancraft/kaleidoscope/segmentation/MaskTuning.kt +28 -25
- package/android/src/main/java/com/simiancraft/kaleidoscope/segmentation/SegmentationEngine.kt +104 -98
- package/android/src/test/java/com/simiancraft/kaleidoscope/CompositeLayersTest.kt +165 -0
- package/app.plugin.js +9 -255
- package/catalog/composites/clouds/clouds.controls.tsx +19 -0
- package/catalog/composites/clouds/clouds.ts +32 -0
- package/catalog/composites/corporate-blobs/corporate-blobs.controls.tsx +24 -0
- package/catalog/composites/corporate-blobs/corporate-blobs.thumb.webp +0 -0
- package/catalog/composites/corporate-blobs/corporate-blobs.ts +51 -0
- package/catalog/composites/corporate-blobs/corporate-blobs.web.ts +42 -0
- package/catalog/composites/fairy-cave/fairy-cave.controls.tsx +33 -0
- package/catalog/composites/fairy-cave/fairy-cave.thumb.webp +0 -0
- package/catalog/composites/fairy-cave/fairy-cave.ts +53 -0
- package/catalog/composites/fairy-cave/fairy-cave.web.ts +47 -0
- package/catalog/composites/fairy-grotto/fairy-grotto.controls.tsx +34 -0
- package/catalog/composites/fairy-grotto/fairy-grotto.thumb.webp +0 -0
- package/catalog/composites/fairy-grotto/fairy-grotto.ts +54 -0
- package/catalog/composites/fairy-grotto/fairy-grotto.web.ts +47 -0
- package/catalog/composites/fairy-hollow/fairy-hollow.controls.tsx +34 -0
- package/catalog/composites/fairy-hollow/fairy-hollow.thumb.webp +0 -0
- package/catalog/composites/fairy-hollow/fairy-hollow.ts +55 -0
- package/catalog/composites/fairy-hollow/fairy-hollow.web.ts +47 -0
- package/catalog/composites/nebula/nebula.controls.tsx +19 -0
- package/catalog/composites/nebula/nebula.thumb.webp +0 -0
- package/catalog/composites/nebula/nebula.ts +37 -0
- package/catalog/composites/nebula/nebula.web.ts +30 -0
- package/catalog/composites/observation-deck/observation-deck.controls.tsx +28 -0
- package/catalog/composites/observation-deck/observation-deck.thumb.webp +0 -0
- package/catalog/composites/observation-deck/observation-deck.ts +59 -0
- package/catalog/composites/observation-deck/observation-deck.web.ts +50 -0
- package/catalog/composites/simianlights/simianlights.controls.tsx +19 -0
- package/catalog/composites/simianlights/simianlights.thumb.webp +0 -0
- package/catalog/composites/simianlights/simianlights.ts +34 -0
- package/catalog/composites/simianlights/simianlights.web.ts +29 -0
- package/catalog/composites/underwater/underwater.controls.tsx +19 -0
- package/catalog/composites/underwater/underwater.thumb.webp +0 -0
- package/catalog/composites/underwater/underwater.ts +42 -0
- package/catalog/composites/underwater/underwater.web.ts +36 -0
- package/catalog/composites/wizard-tower/wizard-tower.controls.tsx +23 -0
- package/catalog/composites/wizard-tower/wizard-tower.thumb.webp +0 -0
- package/catalog/composites/wizard-tower/wizard-tower.ts +44 -0
- package/catalog/composites/wizard-tower/wizard-tower.web.ts +35 -0
- package/catalog/composites/wizard-tower-night/wizard-tower-night.controls.tsx +22 -0
- package/catalog/composites/wizard-tower-night/wizard-tower-night.thumb.webp +0 -0
- package/catalog/composites/wizard-tower-night/wizard-tower-night.ts +43 -0
- package/catalog/composites/wizard-tower-night/wizard-tower-night.web.ts +35 -0
- package/catalog/images/README.md +188 -0
- package/catalog/images/corporate/corporate-logo.thumb.webp +0 -0
- package/catalog/images/corporate/corporate-logo.ts +6 -0
- package/catalog/images/corporate/corporate-logo.web.ts +7 -0
- package/catalog/images/corporate/corporate-logo.webp +0 -0
- package/catalog/images/debug/debug-resolutions.thumb.webp +0 -0
- package/catalog/images/debug/debug-resolutions.ts +6 -0
- package/catalog/images/debug/debug-resolutions.web.ts +7 -0
- package/catalog/images/fairy-caves/grotto.thumb.webp +0 -0
- package/catalog/images/fairy-caves/grotto.ts +6 -0
- package/catalog/images/fairy-caves/grotto.web.ts +7 -0
- package/catalog/images/fairy-caves/grotto.webp +0 -0
- package/catalog/images/fairy-caves/hollow.thumb.webp +0 -0
- package/catalog/images/fairy-caves/hollow.ts +6 -0
- package/catalog/images/fairy-caves/hollow.web.ts +7 -0
- package/catalog/images/fairy-caves/hollow.webp +0 -0
- package/catalog/images/fairy-caves/treehouse-2.thumb.webp +0 -0
- package/catalog/images/fairy-caves/treehouse-2.ts +6 -0
- package/catalog/images/fairy-caves/treehouse-2.web.ts +7 -0
- package/catalog/images/fairy-caves/treehouse-2.webp +0 -0
- package/catalog/images/fairy-caves/treehouse-3.thumb.webp +0 -0
- package/catalog/images/fairy-caves/treehouse-3.ts +6 -0
- package/catalog/images/fairy-caves/treehouse-3.web.ts +7 -0
- package/catalog/images/fairy-caves/treehouse-3.webp +0 -0
- package/catalog/images/fairy-caves/treehouse.thumb.webp +0 -0
- package/catalog/images/fairy-caves/treehouse.ts +6 -0
- package/catalog/images/fairy-caves/treehouse.web.ts +7 -0
- package/catalog/images/fairy-caves/treehouse.webp +0 -0
- package/catalog/images/home/home-dark.thumb.webp +0 -0
- package/catalog/images/home/home-dark.ts +6 -0
- package/catalog/images/home/home-dark.web.ts +7 -0
- package/catalog/images/home/home-light.thumb.webp +0 -0
- package/catalog/images/home/home-light.ts +6 -0
- package/catalog/images/home/home-light.web.ts +7 -0
- package/catalog/images/image-ids.ts +42 -0
- package/catalog/images/image.types.ts +5 -0
- package/catalog/images/index.ts +7 -0
- package/catalog/images/nature/landscape-dark.thumb.webp +0 -0
- package/catalog/images/nature/landscape-dark.ts +6 -0
- package/catalog/images/nature/landscape-dark.web.ts +7 -0
- package/catalog/images/nature/landscape-light.thumb.webp +0 -0
- package/catalog/images/nature/landscape-light.ts +6 -0
- package/catalog/images/nature/landscape-light.web.ts +7 -0
- package/catalog/images/office/office-dark.thumb.webp +0 -0
- package/catalog/images/office/office-dark.ts +6 -0
- package/catalog/images/office/office-dark.web.ts +7 -0
- package/catalog/images/office/office-light.thumb.webp +0 -0
- package/catalog/images/office/office-light.ts +6 -0
- package/catalog/images/office/office-light.web.ts +7 -0
- package/catalog/images/sci-fi/sci-fi-light.thumb.webp +0 -0
- package/catalog/images/sci-fi/sci-fi-light.ts +6 -0
- package/catalog/images/sci-fi/sci-fi-light.web.ts +7 -0
- package/catalog/images/simiancraft/simiancraft-dark-transparency.thumb.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-dark-transparency.ts +6 -0
- package/catalog/images/simiancraft/simiancraft-dark-transparency.web.ts +9 -0
- package/catalog/images/simiancraft/simiancraft-dark-transparency.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-dark.thumb.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-dark.ts +6 -0
- package/catalog/images/simiancraft/simiancraft-dark.web.ts +7 -0
- package/catalog/images/simiancraft/simiancraft-light-transparency.thumb.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-light-transparency.ts +6 -0
- package/catalog/images/simiancraft/simiancraft-light-transparency.web.ts +9 -0
- package/catalog/images/simiancraft/simiancraft-light-transparency.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-light.thumb.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-light.ts +6 -0
- package/catalog/images/simiancraft/simiancraft-light.web.ts +7 -0
- package/catalog/images/spaceship/observation-deck.thumb.webp +0 -0
- package/catalog/images/spaceship/observation-deck.ts +6 -0
- package/catalog/images/spaceship/observation-deck.web.ts +7 -0
- package/catalog/images/spaceship/observation-deck.webp +0 -0
- package/catalog/images/underwater/oceanscape-dark.thumb.webp +0 -0
- package/catalog/images/underwater/oceanscape-dark.ts +6 -0
- package/catalog/images/underwater/oceanscape-dark.web.ts +7 -0
- package/catalog/images/underwater/oceanscape-dark.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-1.thumb.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-1.ts +6 -0
- package/catalog/images/wizard-tower/wizard-tower-1.web.ts +7 -0
- package/catalog/images/wizard-tower/wizard-tower-1.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-2.thumb.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-2.ts +6 -0
- package/catalog/images/wizard-tower/wizard-tower-2.web.ts +7 -0
- package/catalog/images/wizard-tower/wizard-tower-2.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-night.thumb.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-night.ts +6 -0
- package/catalog/images/wizard-tower/wizard-tower-night.web.ts +7 -0
- package/catalog/images/wizard-tower/wizard-tower-night.webp +0 -0
- package/catalog/shaders/README.md +114 -0
- package/catalog/shaders/_shared/composite-blit.frag +26 -0
- package/catalog/shaders/_shared/composite-camera.frag +17 -0
- package/catalog/shaders/_shared/composite-image.frag +23 -0
- package/catalog/shaders/_shared/composite-masked.frag +26 -0
- package/catalog/shaders/_shared/composite-subject.frag +27 -0
- package/catalog/shaders/_shared/passthrough.vert +27 -0
- package/catalog/shaders/_shared/transform.frag +27 -0
- package/catalog/shaders/_shared/types.ts +63 -0
- package/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.tsx +37 -0
- package/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.frag +123 -0
- package/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.ts +106 -0
- package/catalog/shaders/blur/blur.form.tsx +29 -0
- package/catalog/shaders/blur/blur.ts +32 -0
- package/catalog/shaders/blur/composite-blur.frag +42 -0
- package/catalog/shaders/clouds/clouds.form.tsx +39 -0
- package/catalog/shaders/clouds/clouds.frag +128 -0
- package/catalog/shaders/clouds/clouds.presets.md +37 -0
- package/catalog/shaders/clouds/clouds.ts +124 -0
- package/catalog/shaders/corporate-blobs/corporate-blobs.form.tsx +44 -0
- package/catalog/shaders/corporate-blobs/corporate-blobs.frag +224 -0
- package/catalog/shaders/corporate-blobs/corporate-blobs.ts +136 -0
- package/catalog/shaders/fireflies/fireflies.form.tsx +33 -0
- package/catalog/shaders/fireflies/fireflies.frag +68 -0
- package/catalog/shaders/fireflies/fireflies.ts +61 -0
- package/catalog/shaders/godrays/godrays.form.tsx +37 -0
- package/catalog/shaders/godrays/godrays.frag +85 -0
- package/catalog/shaders/godrays/godrays.ts +105 -0
- package/catalog/shaders/index.ts +78 -0
- package/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.tsx +55 -0
- package/catalog/shaders/light-beams-and-motes/light-beams-and-motes.frag +262 -0
- package/catalog/shaders/light-beams-and-motes/light-beams-and-motes.ts +137 -0
- package/catalog/shaders/nebula/nebula.form.tsx +34 -0
- package/catalog/shaders/nebula/nebula.frag +151 -0
- package/catalog/shaders/nebula/nebula.ts +74 -0
- package/catalog/shaders/plasma/plasma.form.tsx +32 -0
- package/catalog/shaders/plasma/plasma.frag +55 -0
- package/catalog/shaders/plasma/plasma.ts +44 -0
- package/catalog/shaders/simianlights/simianlights.form.tsx +34 -0
- package/catalog/shaders/simianlights/simianlights.frag +151 -0
- package/catalog/shaders/simianlights/simianlights.ts +73 -0
- package/dist/catalog/composites/clouds/clouds.controls.d.ts +3 -0
- package/dist/catalog/composites/clouds/clouds.controls.d.ts.map +1 -0
- package/dist/catalog/composites/clouds/clouds.controls.js +11 -0
- package/dist/catalog/composites/clouds/clouds.controls.js.map +1 -0
- package/dist/catalog/composites/clouds/clouds.d.ts +26 -0
- package/dist/catalog/composites/clouds/clouds.d.ts.map +1 -0
- package/dist/catalog/composites/clouds/clouds.js +33 -0
- package/dist/catalog/composites/clouds/clouds.js.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.controls.d.ts +3 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.controls.d.ts.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.controls.js +13 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.controls.js.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.d.ts +37 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.d.ts.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.js +52 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.js.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.thumb.webp +0 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.web.d.ts +37 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.web.d.ts.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.web.js +46 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.web.js.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.controls.d.ts +3 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.controls.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.controls.js +13 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.controls.js.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.d.ts +42 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.js +54 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.js.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.thumb.webp +0 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.web.d.ts +42 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.web.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.web.js +51 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.web.js.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.controls.d.ts +3 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.controls.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.controls.js +14 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.controls.js.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.d.ts +42 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.js +55 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.js.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.thumb.webp +0 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.web.d.ts +42 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.web.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.web.js +51 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.web.js.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.controls.d.ts +3 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.controls.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.controls.js +14 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.controls.js.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.d.ts +42 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.js +56 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.js.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.thumb.webp +0 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.web.d.ts +42 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.web.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.web.js +51 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.web.js.map +1 -0
- package/dist/catalog/composites/nebula/nebula.controls.d.ts +3 -0
- package/dist/catalog/composites/nebula/nebula.controls.d.ts.map +1 -0
- package/dist/catalog/composites/nebula/nebula.controls.js +11 -0
- package/dist/catalog/composites/nebula/nebula.controls.js.map +1 -0
- package/dist/catalog/composites/nebula/nebula.d.ts +22 -0
- package/dist/catalog/composites/nebula/nebula.d.ts.map +1 -0
- package/dist/catalog/composites/nebula/nebula.js +38 -0
- package/dist/catalog/composites/nebula/nebula.js.map +1 -0
- package/dist/catalog/composites/nebula/nebula.thumb.webp +0 -0
- package/dist/catalog/composites/nebula/nebula.web.d.ts +22 -0
- package/dist/catalog/composites/nebula/nebula.web.d.ts.map +1 -0
- package/dist/catalog/composites/nebula/nebula.web.js +34 -0
- package/dist/catalog/composites/nebula/nebula.web.js.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.controls.d.ts +3 -0
- package/dist/catalog/composites/observation-deck/observation-deck.controls.d.ts.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.controls.js +13 -0
- package/dist/catalog/composites/observation-deck/observation-deck.controls.js.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.d.ts +41 -0
- package/dist/catalog/composites/observation-deck/observation-deck.d.ts.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.js +60 -0
- package/dist/catalog/composites/observation-deck/observation-deck.js.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.thumb.webp +0 -0
- package/dist/catalog/composites/observation-deck/observation-deck.web.d.ts +41 -0
- package/dist/catalog/composites/observation-deck/observation-deck.web.d.ts.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.web.js +54 -0
- package/dist/catalog/composites/observation-deck/observation-deck.web.js.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.controls.d.ts +3 -0
- package/dist/catalog/composites/simianlights/simianlights.controls.d.ts.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.controls.js +11 -0
- package/dist/catalog/composites/simianlights/simianlights.controls.js.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.d.ts +22 -0
- package/dist/catalog/composites/simianlights/simianlights.d.ts.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.js +30 -0
- package/dist/catalog/composites/simianlights/simianlights.js.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.thumb.webp +0 -0
- package/dist/catalog/composites/simianlights/simianlights.web.d.ts +22 -0
- package/dist/catalog/composites/simianlights/simianlights.web.d.ts.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.web.js +33 -0
- package/dist/catalog/composites/simianlights/simianlights.web.js.map +1 -0
- package/dist/catalog/composites/underwater/underwater.controls.d.ts +3 -0
- package/dist/catalog/composites/underwater/underwater.controls.d.ts.map +1 -0
- package/dist/catalog/composites/underwater/underwater.controls.js +11 -0
- package/dist/catalog/composites/underwater/underwater.controls.js.map +1 -0
- package/dist/catalog/composites/underwater/underwater.d.ts +30 -0
- package/dist/catalog/composites/underwater/underwater.d.ts.map +1 -0
- package/dist/catalog/composites/underwater/underwater.js +43 -0
- package/dist/catalog/composites/underwater/underwater.js.map +1 -0
- package/dist/catalog/composites/underwater/underwater.thumb.webp +0 -0
- package/dist/catalog/composites/underwater/underwater.web.d.ts +30 -0
- package/dist/catalog/composites/underwater/underwater.web.d.ts.map +1 -0
- package/dist/catalog/composites/underwater/underwater.web.js +40 -0
- package/dist/catalog/composites/underwater/underwater.web.js.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.controls.d.ts +3 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.controls.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.controls.js +15 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.controls.js.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.d.ts +31 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.js +45 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.js.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.thumb.webp +0 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.web.d.ts +31 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.web.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.web.js +39 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.web.js.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.controls.d.ts +3 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.controls.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.controls.js +14 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.controls.js.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.d.ts +31 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.js +44 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.js.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.thumb.webp +0 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.web.d.ts +31 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.web.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.web.js +39 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.web.js.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.d.ts +3 -0
- package/dist/catalog/images/corporate/corporate-logo.d.ts.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.js +8 -0
- package/dist/catalog/images/corporate/corporate-logo.js.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.thumb.webp +0 -0
- package/dist/catalog/images/corporate/corporate-logo.web.d.ts +3 -0
- package/dist/catalog/images/corporate/corporate-logo.web.d.ts.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.web.js +12 -0
- package/dist/catalog/images/corporate/corporate-logo.web.js.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.webp +0 -0
- package/dist/catalog/images/debug/debug-resolutions.d.ts +3 -0
- package/dist/catalog/images/debug/debug-resolutions.d.ts.map +1 -0
- package/dist/catalog/images/debug/debug-resolutions.js +8 -0
- package/dist/catalog/images/debug/debug-resolutions.js.map +1 -0
- package/dist/catalog/images/debug/debug-resolutions.thumb.webp +0 -0
- package/dist/catalog/images/debug/debug-resolutions.web.d.ts +3 -0
- package/dist/catalog/images/debug/debug-resolutions.web.d.ts.map +1 -0
- package/dist/catalog/images/debug/debug-resolutions.web.js +12 -0
- package/dist/catalog/images/debug/debug-resolutions.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/grotto.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.js +8 -0
- package/dist/catalog/images/fairy-caves/grotto.js.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/grotto.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/grotto.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.web.js +12 -0
- package/dist/catalog/images/fairy-caves/grotto.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.webp +0 -0
- package/dist/catalog/images/fairy-caves/hollow.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/hollow.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/hollow.js +8 -0
- package/dist/catalog/images/fairy-caves/hollow.js.map +1 -0
- package/dist/catalog/images/fairy-caves/hollow.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/hollow.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/hollow.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/hollow.web.js +12 -0
- package/dist/catalog/images/fairy-caves/hollow.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/hollow.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.js +8 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.web.js +12 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.js +8 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.web.js +12 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse.js +8 -0
- package/dist/catalog/images/fairy-caves/treehouse.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse.web.js +12 -0
- package/dist/catalog/images/fairy-caves/treehouse.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse.webp +0 -0
- package/dist/catalog/images/home/home-dark.d.ts +3 -0
- package/dist/catalog/images/home/home-dark.d.ts.map +1 -0
- package/dist/catalog/images/home/home-dark.js +8 -0
- package/dist/catalog/images/home/home-dark.js.map +1 -0
- package/dist/catalog/images/home/home-dark.thumb.webp +0 -0
- package/dist/catalog/images/home/home-dark.web.d.ts +3 -0
- package/dist/catalog/images/home/home-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/home/home-dark.web.js +12 -0
- package/dist/catalog/images/home/home-dark.web.js.map +1 -0
- package/dist/catalog/images/home/home-light.d.ts +3 -0
- package/dist/catalog/images/home/home-light.d.ts.map +1 -0
- package/dist/catalog/images/home/home-light.js +8 -0
- package/dist/catalog/images/home/home-light.js.map +1 -0
- package/dist/catalog/images/home/home-light.thumb.webp +0 -0
- package/dist/catalog/images/home/home-light.web.d.ts +3 -0
- package/dist/catalog/images/home/home-light.web.d.ts.map +1 -0
- package/dist/catalog/images/home/home-light.web.js +12 -0
- package/dist/catalog/images/home/home-light.web.js.map +1 -0
- package/dist/catalog/images/image-ids.d.ts +3 -0
- package/dist/catalog/images/image-ids.d.ts.map +1 -0
- package/dist/catalog/images/image-ids.js +43 -0
- package/dist/catalog/images/image-ids.js.map +1 -0
- package/dist/catalog/images/image.types.d.ts +2 -0
- package/dist/catalog/images/image.types.d.ts.map +1 -0
- package/dist/catalog/images/image.types.js +3 -0
- package/dist/catalog/images/image.types.js.map +1 -0
- package/dist/catalog/images/index.d.ts +3 -0
- package/dist/catalog/images/index.d.ts.map +1 -0
- package/dist/catalog/images/index.js +10 -0
- package/dist/catalog/images/index.js.map +1 -0
- package/dist/catalog/images/nature/landscape-dark.d.ts +3 -0
- package/dist/catalog/images/nature/landscape-dark.d.ts.map +1 -0
- package/dist/catalog/images/nature/landscape-dark.js +8 -0
- package/dist/catalog/images/nature/landscape-dark.js.map +1 -0
- package/dist/catalog/images/nature/landscape-dark.thumb.webp +0 -0
- package/dist/catalog/images/nature/landscape-dark.web.d.ts +3 -0
- package/dist/catalog/images/nature/landscape-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/nature/landscape-dark.web.js +12 -0
- package/dist/catalog/images/nature/landscape-dark.web.js.map +1 -0
- package/dist/catalog/images/nature/landscape-light.d.ts +3 -0
- package/dist/catalog/images/nature/landscape-light.d.ts.map +1 -0
- package/dist/catalog/images/nature/landscape-light.js +8 -0
- package/dist/catalog/images/nature/landscape-light.js.map +1 -0
- package/dist/catalog/images/nature/landscape-light.thumb.webp +0 -0
- package/dist/catalog/images/nature/landscape-light.web.d.ts +3 -0
- package/dist/catalog/images/nature/landscape-light.web.d.ts.map +1 -0
- package/dist/catalog/images/nature/landscape-light.web.js +12 -0
- package/dist/catalog/images/nature/landscape-light.web.js.map +1 -0
- package/dist/catalog/images/office/office-dark.d.ts +3 -0
- package/dist/catalog/images/office/office-dark.d.ts.map +1 -0
- package/dist/catalog/images/office/office-dark.js +8 -0
- package/dist/catalog/images/office/office-dark.js.map +1 -0
- package/dist/catalog/images/office/office-dark.thumb.webp +0 -0
- package/dist/catalog/images/office/office-dark.web.d.ts +3 -0
- package/dist/catalog/images/office/office-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/office/office-dark.web.js +12 -0
- package/dist/catalog/images/office/office-dark.web.js.map +1 -0
- package/dist/catalog/images/office/office-light.d.ts +3 -0
- package/dist/catalog/images/office/office-light.d.ts.map +1 -0
- package/dist/catalog/images/office/office-light.js +8 -0
- package/dist/catalog/images/office/office-light.js.map +1 -0
- package/dist/catalog/images/office/office-light.thumb.webp +0 -0
- package/dist/catalog/images/office/office-light.web.d.ts +3 -0
- package/dist/catalog/images/office/office-light.web.d.ts.map +1 -0
- package/dist/catalog/images/office/office-light.web.js +12 -0
- package/dist/catalog/images/office/office-light.web.js.map +1 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.d.ts +3 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.d.ts.map +1 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.js +8 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.js.map +1 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.thumb.webp +0 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.web.d.ts +3 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.web.d.ts.map +1 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.web.js +12 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.web.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.js +8 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.thumb.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.web.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.web.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.web.js +12 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.web.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.js +8 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.thumb.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.web.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.web.js +12 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.web.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.js +8 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.thumb.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.web.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.web.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.web.js +12 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.web.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.js +8 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.thumb.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.web.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.web.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.web.js +12 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.web.js.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.d.ts +3 -0
- package/dist/catalog/images/spaceship/observation-deck.d.ts.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.js +8 -0
- package/dist/catalog/images/spaceship/observation-deck.js.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.thumb.webp +0 -0
- package/dist/catalog/images/spaceship/observation-deck.web.d.ts +3 -0
- package/dist/catalog/images/spaceship/observation-deck.web.d.ts.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.web.js +12 -0
- package/dist/catalog/images/spaceship/observation-deck.web.js.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.webp +0 -0
- package/dist/catalog/images/underwater/oceanscape-dark.d.ts +3 -0
- package/dist/catalog/images/underwater/oceanscape-dark.d.ts.map +1 -0
- package/dist/catalog/images/underwater/oceanscape-dark.js +8 -0
- package/dist/catalog/images/underwater/oceanscape-dark.js.map +1 -0
- package/dist/catalog/images/underwater/oceanscape-dark.thumb.webp +0 -0
- package/dist/catalog/images/underwater/oceanscape-dark.web.d.ts +3 -0
- package/dist/catalog/images/underwater/oceanscape-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/underwater/oceanscape-dark.web.js +12 -0
- package/dist/catalog/images/underwater/oceanscape-dark.web.js.map +1 -0
- package/dist/catalog/images/underwater/oceanscape-dark.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.js +8 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.thumb.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.web.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.web.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.web.js +12 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.web.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.js +8 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.thumb.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.web.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.web.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.web.js +12 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.web.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.js +8 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.thumb.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.web.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.web.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.web.js +12 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.web.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.webp +0 -0
- package/dist/catalog/shaders/_shared/types.d.ts +38 -0
- package/dist/catalog/shaders/_shared/types.d.ts.map +1 -0
- package/dist/catalog/shaders/_shared/types.js +15 -0
- package/dist/catalog/shaders/_shared/types.js.map +1 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.d.ts +26 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.d.ts.map +1 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.d.ts +3 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.d.ts.map +1 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.js +15 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.js.map +1 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.js +84 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.js.map +1 -0
- package/dist/catalog/shaders/blur/blur.d.ts +15 -0
- package/dist/catalog/shaders/blur/blur.d.ts.map +1 -0
- package/dist/catalog/shaders/blur/blur.form.d.ts +3 -0
- package/dist/catalog/shaders/blur/blur.form.d.ts.map +1 -0
- package/dist/catalog/shaders/blur/blur.form.js +15 -0
- package/dist/catalog/shaders/blur/blur.form.js.map +1 -0
- package/dist/catalog/shaders/blur/blur.js +27 -0
- package/dist/catalog/shaders/blur/blur.js.map +1 -0
- package/dist/catalog/shaders/clouds/clouds.d.ts +34 -0
- package/dist/catalog/shaders/clouds/clouds.d.ts.map +1 -0
- package/dist/catalog/shaders/clouds/clouds.form.d.ts +3 -0
- package/dist/catalog/shaders/clouds/clouds.form.d.ts.map +1 -0
- package/dist/catalog/shaders/clouds/clouds.form.js +15 -0
- package/dist/catalog/shaders/clouds/clouds.form.js.map +1 -0
- package/dist/catalog/shaders/clouds/clouds.js +98 -0
- package/dist/catalog/shaders/clouds/clouds.js.map +1 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.d.ts +40 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.d.ts.map +1 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.form.d.ts +3 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.form.d.ts.map +1 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.form.js +15 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.form.js.map +1 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.js +100 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.js.map +1 -0
- package/dist/catalog/shaders/fireflies/fireflies.d.ts +18 -0
- package/dist/catalog/shaders/fireflies/fireflies.d.ts.map +1 -0
- package/dist/catalog/shaders/fireflies/fireflies.form.d.ts +3 -0
- package/dist/catalog/shaders/fireflies/fireflies.form.d.ts.map +1 -0
- package/dist/catalog/shaders/fireflies/fireflies.form.js +15 -0
- package/dist/catalog/shaders/fireflies/fireflies.form.js.map +1 -0
- package/dist/catalog/shaders/fireflies/fireflies.js +47 -0
- package/dist/catalog/shaders/fireflies/fireflies.js.map +1 -0
- package/dist/catalog/shaders/godrays/godrays.d.ts +26 -0
- package/dist/catalog/shaders/godrays/godrays.d.ts.map +1 -0
- package/dist/catalog/shaders/godrays/godrays.form.d.ts +3 -0
- package/dist/catalog/shaders/godrays/godrays.form.d.ts.map +1 -0
- package/dist/catalog/shaders/godrays/godrays.form.js +15 -0
- package/dist/catalog/shaders/godrays/godrays.form.js.map +1 -0
- package/dist/catalog/shaders/godrays/godrays.js +83 -0
- package/dist/catalog/shaders/godrays/godrays.js.map +1 -0
- package/dist/catalog/shaders/index.d.ts +73 -0
- package/dist/catalog/shaders/index.d.ts.map +1 -0
- package/dist/catalog/shaders/index.js +30 -0
- package/dist/catalog/shaders/index.js.map +1 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.d.ts +44 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.d.ts.map +1 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.d.ts +3 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.d.ts.map +1 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.js +16 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.js.map +1 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.js +91 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.js.map +1 -0
- package/dist/catalog/shaders/nebula/nebula.d.ts +20 -0
- package/dist/catalog/shaders/nebula/nebula.d.ts.map +1 -0
- package/dist/catalog/shaders/nebula/nebula.form.d.ts +3 -0
- package/dist/catalog/shaders/nebula/nebula.form.d.ts.map +1 -0
- package/dist/catalog/shaders/nebula/nebula.form.js +15 -0
- package/dist/catalog/shaders/nebula/nebula.form.js.map +1 -0
- package/dist/catalog/shaders/nebula/nebula.js +58 -0
- package/dist/catalog/shaders/nebula/nebula.js.map +1 -0
- package/dist/catalog/shaders/plasma/plasma.d.ts +16 -0
- package/dist/catalog/shaders/plasma/plasma.d.ts.map +1 -0
- package/dist/catalog/shaders/plasma/plasma.form.d.ts +3 -0
- package/dist/catalog/shaders/plasma/plasma.form.d.ts.map +1 -0
- package/dist/catalog/shaders/plasma/plasma.form.js +15 -0
- package/dist/catalog/shaders/plasma/plasma.form.js.map +1 -0
- package/dist/catalog/shaders/plasma/plasma.js +32 -0
- package/dist/catalog/shaders/plasma/plasma.js.map +1 -0
- package/dist/catalog/shaders/simianlights/simianlights.d.ts +20 -0
- package/dist/catalog/shaders/simianlights/simianlights.d.ts.map +1 -0
- package/dist/catalog/shaders/simianlights/simianlights.form.d.ts +3 -0
- package/dist/catalog/shaders/simianlights/simianlights.form.d.ts.map +1 -0
- package/dist/catalog/shaders/simianlights/simianlights.form.js +15 -0
- package/dist/catalog/shaders/simianlights/simianlights.form.js.map +1 -0
- package/dist/catalog/shaders/simianlights/simianlights.js +57 -0
- package/dist/catalog/shaders/simianlights/simianlights.js.map +1 -0
- package/dist/src/components/form/control-form.d.ts +37 -0
- package/dist/src/components/form/control-form.d.ts.map +1 -0
- package/dist/src/components/form/control-form.js +55 -0
- package/dist/src/components/form/control-form.js.map +1 -0
- package/dist/src/components/form/make-controls.d.ts +22 -0
- package/dist/src/components/form/make-controls.d.ts.map +1 -0
- package/dist/src/components/form/make-controls.js +19 -0
- package/dist/src/components/form/make-controls.js.map +1 -0
- package/dist/src/components/form/scope.d.ts +2 -0
- package/dist/src/components/form/scope.d.ts.map +1 -0
- package/dist/src/components/form/scope.js +11 -0
- package/dist/src/components/form/scope.js.map +1 -0
- package/dist/src/components/form/use-field.d.ts +10 -0
- package/dist/src/components/form/use-field.d.ts.map +1 -0
- package/dist/src/components/form/use-field.js +27 -0
- package/dist/src/components/form/use-field.js.map +1 -0
- package/dist/src/components/preset-book-menu/index.d.ts +52 -0
- package/dist/src/components/preset-book-menu/index.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/index.js +152 -0
- package/dist/src/components/preset-book-menu/index.js.map +1 -0
- package/dist/src/components/preset-book-menu/layout.d.ts +25 -0
- package/dist/src/components/preset-book-menu/layout.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/layout.js +19 -0
- package/dist/src/components/preset-book-menu/layout.js.map +1 -0
- package/dist/src/components/preset-book-menu/preset-book-menu.types.d.ts +88 -0
- package/dist/src/components/preset-book-menu/preset-book-menu.types.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/preset-book-menu.types.js +14 -0
- package/dist/src/components/preset-book-menu/preset-book-menu.types.js.map +1 -0
- package/dist/src/components/preset-book-menu/preset-grid.d.ts +16 -0
- package/dist/src/components/preset-book-menu/preset-grid.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/preset-grid.js +49 -0
- package/dist/src/components/preset-book-menu/preset-grid.js.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.d.ts +3 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.js +28 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.js.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.types.d.ts +13 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.types.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.types.js +5 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.types.js.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.web.d.ts +3 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.web.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.web.js +17 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.web.js.map +1 -0
- package/dist/src/components/preset-control-panel/composite-layer-control-panel.d.ts +14 -0
- package/dist/src/components/preset-control-panel/composite-layer-control-panel.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/composite-layer-control-panel.js +36 -0
- package/dist/src/components/preset-control-panel/composite-layer-control-panel.js.map +1 -0
- package/dist/src/components/preset-control-panel/control-section.d.ts +9 -0
- package/dist/src/components/preset-control-panel/control-section.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/control-section.js +47 -0
- package/dist/src/components/preset-control-panel/control-section.js.map +1 -0
- package/dist/src/components/preset-control-panel/control.d.ts +10 -0
- package/dist/src/components/preset-control-panel/control.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/control.js +35 -0
- package/dist/src/components/preset-control-panel/control.js.map +1 -0
- package/dist/src/components/preset-control-panel/index.d.ts +14 -0
- package/dist/src/components/preset-control-panel/index.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/index.js +49 -0
- package/dist/src/components/preset-control-panel/index.js.map +1 -0
- package/dist/src/components/preset-control-panel/mask-control-panel.d.ts +11 -0
- package/dist/src/components/preset-control-panel/mask-control-panel.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/mask-control-panel.js +34 -0
- package/dist/src/components/preset-control-panel/mask-control-panel.js.map +1 -0
- package/dist/src/components/preset-control-panel/preset-control-panel.d.ts +12 -0
- package/dist/src/components/preset-control-panel/preset-control-panel.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/preset-control-panel.js +23 -0
- package/dist/src/components/preset-control-panel/preset-control-panel.js.map +1 -0
- package/dist/src/components/preset-control-panel/transform-control-panel.d.ts +14 -0
- package/dist/src/components/preset-control-panel/transform-control-panel.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/transform-control-panel.js +58 -0
- package/dist/src/components/preset-control-panel/transform-control-panel.js.map +1 -0
- package/dist/src/components/preset-tile/index.d.ts +24 -0
- package/dist/src/components/preset-tile/index.d.ts.map +1 -0
- package/dist/src/components/preset-tile/index.js +98 -0
- package/dist/src/components/preset-tile/index.js.map +1 -0
- package/dist/src/components/theme/provider.d.ts +18 -0
- package/dist/src/components/theme/provider.d.ts.map +1 -0
- package/dist/src/components/theme/provider.js +29 -0
- package/dist/src/components/theme/provider.js.map +1 -0
- package/dist/src/components/theme/slots.d.ts +17 -0
- package/dist/src/components/theme/slots.d.ts.map +1 -0
- package/dist/src/components/theme/slots.js +9 -0
- package/dist/src/components/theme/slots.js.map +1 -0
- package/dist/src/components/ui/button.d.ts +14 -0
- package/dist/src/components/ui/button.d.ts.map +1 -0
- package/dist/src/components/ui/button.js +29 -0
- package/dist/src/components/ui/button.js.map +1 -0
- package/dist/src/components/ui/color-picker.d.ts +12 -0
- package/dist/src/components/ui/color-picker.d.ts.map +1 -0
- package/dist/src/components/ui/color-picker.js +43 -0
- package/dist/src/components/ui/color-picker.js.map +1 -0
- package/dist/src/components/ui/index.d.ts +6 -0
- package/dist/src/components/ui/index.d.ts.map +1 -0
- package/dist/src/components/ui/index.js +18 -0
- package/dist/src/components/ui/index.js.map +1 -0
- package/dist/src/components/ui/label.d.ts +10 -0
- package/dist/src/components/ui/label.d.ts.map +1 -0
- package/dist/src/components/ui/label.js +14 -0
- package/dist/src/components/ui/label.js.map +1 -0
- package/dist/src/components/ui/point.d.ts +19 -0
- package/dist/src/components/ui/point.d.ts.map +1 -0
- package/dist/src/components/ui/point.js +52 -0
- package/dist/src/components/ui/point.js.map +1 -0
- package/dist/src/components/ui/polygon-field.d.ts +10 -0
- package/dist/src/components/ui/polygon-field.d.ts.map +1 -0
- package/dist/src/components/ui/polygon-field.js +50 -0
- package/dist/src/components/ui/polygon-field.js.map +1 -0
- package/dist/src/components/ui/readout.d.ts +10 -0
- package/dist/src/components/ui/readout.d.ts.map +1 -0
- package/dist/src/components/ui/readout.js +14 -0
- package/dist/src/components/ui/readout.js.map +1 -0
- package/dist/src/components/ui/slider-value.d.ts +8 -0
- package/dist/src/components/ui/slider-value.d.ts.map +1 -0
- package/dist/src/components/ui/slider-value.js +17 -0
- package/dist/src/components/ui/slider-value.js.map +1 -0
- package/dist/src/components/ui/slider.d.ts +15 -0
- package/dist/src/components/ui/slider.d.ts.map +1 -0
- package/dist/src/components/ui/slider.js +58 -0
- package/dist/src/components/ui/slider.js.map +1 -0
- package/dist/src/components/ui/switch.d.ts +8 -0
- package/dist/src/components/ui/switch.d.ts.map +1 -0
- package/dist/src/components/ui/switch.js +24 -0
- package/dist/src/components/ui/switch.js.map +1 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +187 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/index.web.d.ts +32 -0
- package/dist/src/index.web.d.ts.map +1 -0
- package/dist/src/index.web.js +119 -0
- package/dist/src/index.web.js.map +1 -0
- package/dist/src/kaleidoscope/controls.d.ts +24 -0
- package/dist/src/kaleidoscope/controls.d.ts.map +1 -0
- package/dist/src/kaleidoscope/controls.js +92 -0
- package/dist/src/kaleidoscope/controls.js.map +1 -0
- package/dist/src/kaleidoscope/effect.d.ts +4 -0
- package/dist/src/kaleidoscope/effect.d.ts.map +1 -0
- package/dist/src/kaleidoscope/effect.js +7 -0
- package/dist/src/kaleidoscope/effect.js.map +1 -0
- package/dist/src/kaleidoscope/effect.types.d.ts +47 -0
- package/dist/src/kaleidoscope/effect.types.d.ts.map +1 -0
- package/dist/src/kaleidoscope/effect.types.js +9 -0
- package/dist/src/kaleidoscope/effect.types.js.map +1 -0
- package/dist/src/kaleidoscope/shader-to-spec.d.ts +4 -0
- package/dist/src/kaleidoscope/shader-to-spec.d.ts.map +1 -0
- package/dist/src/kaleidoscope/shader-to-spec.js +17 -0
- package/dist/src/kaleidoscope/shader-to-spec.js.map +1 -0
- package/dist/src/kaleidoscope/types.d.ts +79 -0
- package/dist/src/kaleidoscope/types.d.ts.map +1 -0
- package/dist/src/kaleidoscope/types.js +18 -0
- package/dist/src/kaleidoscope/types.js.map +1 -0
- package/dist/src/kaleidoscope.preset-book.types.d.ts +86 -0
- package/dist/src/kaleidoscope.preset-book.types.d.ts.map +1 -0
- package/dist/src/kaleidoscope.preset-book.types.js +16 -0
- package/dist/src/kaleidoscope.preset-book.types.js.map +1 -0
- package/dist/src/lib/primitives.types.d.ts +3 -0
- package/dist/src/lib/primitives.types.d.ts.map +1 -0
- package/dist/src/lib/primitives.types.js +5 -0
- package/dist/src/lib/primitives.types.js.map +1 -0
- package/dist/src/lib/test-id.d.ts +30 -0
- package/dist/src/lib/test-id.d.ts.map +1 -0
- package/dist/src/lib/test-id.js +81 -0
- package/dist/src/lib/test-id.js.map +1 -0
- package/dist/src/livekit.d.ts +24 -0
- package/dist/src/livekit.d.ts.map +1 -0
- package/dist/src/livekit.js +63 -0
- package/dist/src/livekit.js.map +1 -0
- package/dist/src/nativewind.d.ts +7 -0
- package/dist/src/nativewind.d.ts.map +1 -0
- package/dist/src/nativewind.js +43 -0
- package/dist/src/nativewind.js.map +1 -0
- package/dist/web-driver/effects/composite.d.ts +14 -0
- package/dist/web-driver/effects/composite.d.ts.map +1 -0
- package/dist/web-driver/effects/composite.js +576 -0
- package/dist/web-driver/effects/composite.js.map +1 -0
- package/dist/web-driver/effects/layer-shaders.d.ts +2 -0
- package/dist/web-driver/effects/layer-shaders.d.ts.map +1 -0
- package/dist/web-driver/effects/layer-shaders.js +11 -0
- package/dist/web-driver/effects/layer-shaders.js.map +1 -0
- package/dist/web-driver/effects/transform.d.ts +4 -0
- package/dist/web-driver/effects/transform.d.ts.map +1 -0
- package/dist/web-driver/effects/transform.js +66 -0
- package/dist/web-driver/effects/transform.js.map +1 -0
- package/dist/web-driver/index.d.ts +6 -0
- package/dist/web-driver/index.d.ts.map +1 -0
- package/dist/web-driver/index.js +21 -0
- package/dist/web-driver/index.js.map +1 -0
- package/dist/web-driver/insertable-streams.d.ts.map +1 -0
- package/dist/web-driver/insertable-streams.js +68 -0
- package/dist/web-driver/insertable-streams.js.map +1 -0
- package/dist/web-driver/segmenter.d.ts.map +1 -0
- package/dist/web-driver/segmenter.js +89 -0
- package/dist/web-driver/segmenter.js.map +1 -0
- package/dist/web-driver/shaders.d.ts +2 -0
- package/dist/web-driver/shaders.d.ts.map +1 -0
- package/dist/web-driver/shaders.generated.d.ts +17 -0
- package/dist/web-driver/shaders.generated.d.ts.map +1 -0
- package/dist/web-driver/shaders.generated.js +1180 -0
- package/dist/web-driver/shaders.generated.js.map +1 -0
- package/dist/web-driver/shaders.js +28 -0
- package/dist/web-driver/shaders.js.map +1 -0
- package/dist/web-driver/tuning.d.ts.map +1 -0
- package/dist/web-driver/tuning.js +61 -0
- package/dist/web-driver/tuning.js.map +1 -0
- package/ios/Kaleidoscope.podspec +22 -15
- package/ios/KaleidoscopeModule/BundledImage.swift +39 -0
- package/ios/KaleidoscopeModule/CompositeLayers.swift +142 -0
- package/ios/KaleidoscopeModule/EffectTuning.swift +86 -86
- package/ios/KaleidoscopeModule/KaleidoscopeModule.swift +55 -27
- package/ios/KaleidoscopeModule/Registration.swift +36 -57
- package/ios/KaleidoscopeModule/effects/CompositeProcessor.swift +906 -0
- package/ios/KaleidoscopeModule/effects/FrameBridge.swift +25 -25
- package/ios/KaleidoscopeModule/effects/TransformProcessor.swift +127 -126
- package/ios/KaleidoscopeModule/gpu/CompositeRendering.swift +352 -0
- package/ios/KaleidoscopeModule/gpu/Ingest.swift +104 -102
- package/ios/KaleidoscopeModule/gpu/MetalRenderer.swift +473 -544
- package/ios/KaleidoscopeModule/gpu/Orientation.swift +41 -41
- package/ios/KaleidoscopeModule/gpu/ShaderLibrary.swift +100 -54
- package/ios/KaleidoscopeModule/gpu/TextureBridge.swift +245 -244
- package/ios/KaleidoscopeModule/segmentation/MaskTuning.swift +11 -11
- package/ios/KaleidoscopeModule/segmentation/Segmenter.swift +360 -359
- package/ios/KaleidoscopeModule/shaders/GENERATIVE.txt +9 -0
- package/ios/KaleidoscopeModule/shaders/SHADERS.txt +13 -2
- package/ios/KaleidoscopeModule/shaders/anamorphic-lensflare.metalsrc +47 -0
- package/ios/KaleidoscopeModule/shaders/clouds.metalsrc +185 -0
- package/ios/KaleidoscopeModule/shaders/composite-blit.metalsrc +22 -0
- package/ios/KaleidoscopeModule/shaders/composite-blur.metalsrc +93 -0
- package/ios/KaleidoscopeModule/shaders/composite-camera.metalsrc +22 -0
- package/ios/KaleidoscopeModule/shaders/composite-image.metalsrc +24 -0
- package/ios/KaleidoscopeModule/shaders/composite-masked.metalsrc +22 -0
- package/ios/KaleidoscopeModule/shaders/composite-subject.metalsrc +23 -0
- package/ios/KaleidoscopeModule/shaders/corporate-blobs.metalsrc +221 -0
- package/ios/KaleidoscopeModule/shaders/fireflies.metalsrc +44 -0
- package/ios/KaleidoscopeModule/shaders/godrays.metalsrc +46 -0
- package/ios/KaleidoscopeModule/shaders/light-beams-and-motes.metalsrc +316 -0
- package/ios/KaleidoscopeModule/shaders/nebula.metalsrc +45 -45
- package/ios/KaleidoscopeModule/shaders/plasma.metalsrc +26 -0
- package/ios/KaleidoscopeModule/shaders/simianlights.metalsrc +45 -45
- package/package.json +485 -115
- package/plugin/build/android/assets.js +45 -0
- package/plugin/build/android/index.js +34 -0
- package/plugin/build/index.js +39 -0
- package/plugin/build/ios/assets.js +110 -0
- package/plugin/build/ios/deployment-target.js +105 -0
- package/plugin/build/ios/index.js +63 -0
- package/plugin/build/ios/pods.js +73 -0
- package/plugin/build/lib/constants.js +15 -0
- package/plugin/build/lib/file-manipulation.js +57 -0
- package/plugin/build/lib/mods.js +36 -0
- package/plugin/build/lib/preset-book.js +215 -0
- package/plugin/build/lib/types.js +16 -0
- package/src/components/form/control-form.tsx +112 -0
- package/src/components/form/make-controls.ts +33 -0
- package/src/components/form/scope.ts +9 -0
- package/src/components/form/use-field.ts +35 -0
- package/src/components/preset-book-menu/index.tsx +286 -0
- package/src/components/preset-book-menu/layout.tsx +63 -0
- package/src/components/preset-book-menu/preset-book-menu.types.ts +112 -0
- package/src/components/preset-book-menu/preset-grid.tsx +80 -0
- package/src/components/preset-book-menu/resolve-image-uri.ts +31 -0
- package/src/components/preset-book-menu/resolve-image-uri.types.ts +18 -0
- package/src/components/preset-book-menu/resolve-image-uri.web.ts +15 -0
- package/src/components/preset-control-panel/composite-layer-control-panel.tsx +56 -0
- package/src/components/preset-control-panel/control-section.tsx +84 -0
- package/src/components/preset-control-panel/control.tsx +50 -0
- package/src/components/preset-control-panel/index.ts +31 -0
- package/src/components/preset-control-panel/mask-control-panel.tsx +93 -0
- package/src/components/preset-control-panel/preset-control-panel.tsx +48 -0
- package/src/components/preset-control-panel/transform-control-panel.tsx +146 -0
- package/src/components/preset-tile/index.tsx +160 -0
- package/src/components/theme/provider.tsx +50 -0
- package/src/components/theme/slots.ts +37 -0
- package/src/components/ui/button.tsx +54 -0
- package/src/components/ui/color-picker.tsx +74 -0
- package/src/components/ui/index.ts +10 -0
- package/src/components/ui/label.tsx +24 -0
- package/src/components/ui/point.tsx +116 -0
- package/src/components/ui/polygon-field.tsx +84 -0
- package/src/components/ui/readout.tsx +25 -0
- package/src/components/ui/slider-value.ts +15 -0
- package/src/components/ui/slider.tsx +98 -0
- package/src/components/ui/switch.tsx +40 -0
- package/src/index.ts +176 -95
- package/src/index.web.ts +126 -74
- package/src/kaleidoscope/controls.ts +127 -0
- package/src/kaleidoscope/effect.ts +5 -0
- package/src/kaleidoscope/effect.types.ts +63 -0
- package/src/kaleidoscope/shader-to-spec.ts +16 -0
- package/src/kaleidoscope/types.ts +101 -0
- package/src/kaleidoscope.preset-book.types.ts +105 -0
- package/src/lib/primitives.types.ts +5 -0
- package/src/lib/test-id.ts +81 -0
- package/src/livekit.ts +6 -4
- package/src/nativewind.ts +41 -0
- package/android/src/main/assets/backgrounds/stylized-dark.webp +0 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/BackgroundImageFactory.kt +0 -365
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/BlurFactory.kt +0 -400
- package/dist/backgrounds/dark-office.d.ts +0 -3
- package/dist/backgrounds/dark-office.d.ts.map +0 -1
- package/dist/backgrounds/dark-office.js +0 -5
- package/dist/backgrounds/dark-office.js.map +0 -1
- package/dist/backgrounds/dark-office.web.d.ts +0 -3
- package/dist/backgrounds/dark-office.web.d.ts.map +0 -1
- package/dist/backgrounds/dark-office.web.js +0 -8
- package/dist/backgrounds/dark-office.web.js.map +0 -1
- package/dist/backgrounds/debug-resolutions.d.ts +0 -3
- package/dist/backgrounds/debug-resolutions.d.ts.map +0 -1
- package/dist/backgrounds/debug-resolutions.js +0 -6
- package/dist/backgrounds/debug-resolutions.js.map +0 -1
- package/dist/backgrounds/debug-resolutions.web.d.ts +0 -3
- package/dist/backgrounds/debug-resolutions.web.d.ts.map +0 -1
- package/dist/backgrounds/debug-resolutions.web.js +0 -8
- package/dist/backgrounds/debug-resolutions.web.js.map +0 -1
- package/dist/backgrounds/home-dark.d.ts +0 -3
- package/dist/backgrounds/home-dark.d.ts.map +0 -1
- package/dist/backgrounds/home-dark.js +0 -5
- package/dist/backgrounds/home-dark.js.map +0 -1
- package/dist/backgrounds/home-dark.web.d.ts +0 -3
- package/dist/backgrounds/home-dark.web.d.ts.map +0 -1
- package/dist/backgrounds/home-dark.web.js +0 -6
- package/dist/backgrounds/home-dark.web.js.map +0 -1
- package/dist/backgrounds/home-light.d.ts +0 -3
- package/dist/backgrounds/home-light.d.ts.map +0 -1
- package/dist/backgrounds/home-light.js +0 -5
- package/dist/backgrounds/home-light.js.map +0 -1
- package/dist/backgrounds/home-light.web.d.ts +0 -3
- package/dist/backgrounds/home-light.web.d.ts.map +0 -1
- package/dist/backgrounds/home-light.web.js +0 -6
- package/dist/backgrounds/home-light.web.js.map +0 -1
- package/dist/backgrounds/index.d.ts +0 -3
- package/dist/backgrounds/index.d.ts.map +0 -1
- package/dist/backgrounds/index.js +0 -6
- package/dist/backgrounds/index.js.map +0 -1
- package/dist/backgrounds/light-office.d.ts +0 -3
- package/dist/backgrounds/light-office.d.ts.map +0 -1
- package/dist/backgrounds/light-office.js +0 -5
- package/dist/backgrounds/light-office.js.map +0 -1
- package/dist/backgrounds/light-office.web.d.ts +0 -3
- package/dist/backgrounds/light-office.web.d.ts.map +0 -1
- package/dist/backgrounds/light-office.web.js +0 -8
- package/dist/backgrounds/light-office.web.js.map +0 -1
- package/dist/backgrounds/nature-dark.d.ts +0 -3
- package/dist/backgrounds/nature-dark.d.ts.map +0 -1
- package/dist/backgrounds/nature-dark.js +0 -5
- package/dist/backgrounds/nature-dark.js.map +0 -1
- package/dist/backgrounds/nature-dark.web.d.ts +0 -3
- package/dist/backgrounds/nature-dark.web.d.ts.map +0 -1
- package/dist/backgrounds/nature-dark.web.js +0 -6
- package/dist/backgrounds/nature-dark.web.js.map +0 -1
- package/dist/backgrounds/nature-light.d.ts +0 -3
- package/dist/backgrounds/nature-light.d.ts.map +0 -1
- package/dist/backgrounds/nature-light.js +0 -5
- package/dist/backgrounds/nature-light.js.map +0 -1
- package/dist/backgrounds/nature-light.web.d.ts +0 -3
- package/dist/backgrounds/nature-light.web.d.ts.map +0 -1
- package/dist/backgrounds/nature-light.web.js +0 -6
- package/dist/backgrounds/nature-light.web.js.map +0 -1
- package/dist/backgrounds/preset-source.types.d.ts +0 -2
- package/dist/backgrounds/preset-source.types.d.ts.map +0 -1
- package/dist/backgrounds/preset-source.types.js +0 -2
- package/dist/backgrounds/preset-source.types.js.map +0 -1
- package/dist/backgrounds/presets.d.ts +0 -3
- package/dist/backgrounds/presets.d.ts.map +0 -1
- package/dist/backgrounds/presets.js +0 -34
- package/dist/backgrounds/presets.js.map +0 -1
- package/dist/backgrounds/simiancraft-dark.d.ts +0 -3
- package/dist/backgrounds/simiancraft-dark.d.ts.map +0 -1
- package/dist/backgrounds/simiancraft-dark.js +0 -5
- package/dist/backgrounds/simiancraft-dark.js.map +0 -1
- package/dist/backgrounds/simiancraft-dark.web.d.ts +0 -3
- package/dist/backgrounds/simiancraft-dark.web.d.ts.map +0 -1
- package/dist/backgrounds/simiancraft-dark.web.js +0 -6
- package/dist/backgrounds/simiancraft-dark.web.js.map +0 -1
- package/dist/backgrounds/simiancraft-light.d.ts +0 -3
- package/dist/backgrounds/simiancraft-light.d.ts.map +0 -1
- package/dist/backgrounds/simiancraft-light.js +0 -5
- package/dist/backgrounds/simiancraft-light.js.map +0 -1
- package/dist/backgrounds/simiancraft-light.web.d.ts +0 -3
- package/dist/backgrounds/simiancraft-light.web.d.ts.map +0 -1
- package/dist/backgrounds/simiancraft-light.web.js +0 -6
- package/dist/backgrounds/simiancraft-light.web.js.map +0 -1
- package/dist/backgrounds/stylized-dark.d.ts +0 -3
- package/dist/backgrounds/stylized-dark.d.ts.map +0 -1
- package/dist/backgrounds/stylized-dark.js +0 -5
- package/dist/backgrounds/stylized-dark.js.map +0 -1
- package/dist/backgrounds/stylized-dark.web.d.ts +0 -3
- package/dist/backgrounds/stylized-dark.web.d.ts.map +0 -1
- package/dist/backgrounds/stylized-dark.web.js +0 -6
- package/dist/backgrounds/stylized-dark.web.js.map +0 -1
- package/dist/backgrounds/stylized-dark.webp +0 -0
- package/dist/backgrounds/stylized-light.d.ts +0 -3
- package/dist/backgrounds/stylized-light.d.ts.map +0 -1
- package/dist/backgrounds/stylized-light.js +0 -5
- package/dist/backgrounds/stylized-light.js.map +0 -1
- package/dist/backgrounds/stylized-light.web.d.ts +0 -3
- package/dist/backgrounds/stylized-light.web.d.ts.map +0 -1
- package/dist/backgrounds/stylized-light.web.js +0 -6
- package/dist/backgrounds/stylized-light.web.js.map +0 -1
- package/dist/index.d.ts +0 -42
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -155
- package/dist/index.js.map +0 -1
- package/dist/index.web.d.ts +0 -49
- package/dist/index.web.d.ts.map +0 -1
- package/dist/index.web.js +0 -113
- package/dist/index.web.js.map +0 -1
- package/dist/livekit.d.ts +0 -24
- package/dist/livekit.d.ts.map +0 -1
- package/dist/livekit.js +0 -57
- package/dist/livekit.js.map +0 -1
- package/dist/types.d.ts +0 -74
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/web/blur-kernel.d.ts +0 -6
- package/dist/web/blur-kernel.d.ts.map +0 -1
- package/dist/web/blur-kernel.js +0 -41
- package/dist/web/blur-kernel.js.map +0 -1
- package/dist/web/effects/background-image.d.ts +0 -3
- package/dist/web/effects/background-image.d.ts.map +0 -1
- package/dist/web/effects/background-image.js +0 -284
- package/dist/web/effects/background-image.js.map +0 -1
- package/dist/web/effects/blur.d.ts +0 -3
- package/dist/web/effects/blur.d.ts.map +0 -1
- package/dist/web/effects/blur.js +0 -339
- package/dist/web/effects/blur.js.map +0 -1
- package/dist/web/effects/transform.d.ts +0 -4
- package/dist/web/effects/transform.d.ts.map +0 -1
- package/dist/web/effects/transform.js +0 -62
- package/dist/web/effects/transform.js.map +0 -1
- package/dist/web/insertable-streams.d.ts.map +0 -1
- package/dist/web/insertable-streams.js +0 -64
- package/dist/web/insertable-streams.js.map +0 -1
- package/dist/web/segmenter.d.ts.map +0 -1
- package/dist/web/segmenter.js +0 -83
- package/dist/web/segmenter.js.map +0 -1
- package/dist/web/shaders.d.ts +0 -2
- package/dist/web/shaders.d.ts.map +0 -1
- package/dist/web/shaders.generated.d.ts +0 -4
- package/dist/web/shaders.generated.d.ts.map +0 -1
- package/dist/web/shaders.generated.js +0 -54
- package/dist/web/shaders.generated.js.map +0 -1
- package/dist/web/shaders.js +0 -32
- package/dist/web/shaders.js.map +0 -1
- package/dist/web/tuning.d.ts.map +0 -1
- package/dist/web/tuning.js +0 -55
- package/dist/web/tuning.js.map +0 -1
- package/ios/KaleidoscopeModule/effects/BackgroundImageProcessor.swift +0 -293
- package/ios/KaleidoscopeModule/effects/BlurProcessor.swift +0 -238
- package/ios/KaleidoscopeModule/resources/backgrounds/dark-office.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/debug-resolutions.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/home-dark.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/home-light.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/light-office.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/nature-dark.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/nature-light.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/simiancraft-dark.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/simiancraft-light.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/stylized-dark.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/stylized-light.webp +0 -0
- package/ios/KaleidoscopeModule/shaders/blur.metalsrc +0 -72
- package/ios/KaleidoscopeModule/shaders/composite.metalsrc +0 -22
- package/src/backgrounds/README.md +0 -83
- package/src/backgrounds/dark-office.ts +0 -6
- package/src/backgrounds/dark-office.web.ts +0 -9
- package/src/backgrounds/dark-office.webp +0 -0
- package/src/backgrounds/debug-resolutions.ts +0 -7
- package/src/backgrounds/debug-resolutions.web.ts +0 -9
- package/src/backgrounds/debug-resolutions.webp +0 -0
- package/src/backgrounds/home-dark.ts +0 -6
- package/src/backgrounds/home-dark.web.ts +0 -7
- package/src/backgrounds/home-dark.webp +0 -0
- package/src/backgrounds/home-light.ts +0 -6
- package/src/backgrounds/home-light.web.ts +0 -7
- package/src/backgrounds/home-light.webp +0 -0
- package/src/backgrounds/index.ts +0 -7
- package/src/backgrounds/light-office.ts +0 -6
- package/src/backgrounds/light-office.web.ts +0 -9
- package/src/backgrounds/light-office.webp +0 -0
- package/src/backgrounds/nature-dark.ts +0 -6
- package/src/backgrounds/nature-dark.web.ts +0 -7
- package/src/backgrounds/nature-dark.webp +0 -0
- package/src/backgrounds/nature-light.ts +0 -6
- package/src/backgrounds/nature-light.web.ts +0 -7
- package/src/backgrounds/nature-light.webp +0 -0
- package/src/backgrounds/preset-source.types.ts +0 -5
- package/src/backgrounds/presets.ts +0 -36
- package/src/backgrounds/simiancraft-dark.ts +0 -6
- package/src/backgrounds/simiancraft-dark.web.ts +0 -7
- package/src/backgrounds/simiancraft-dark.webp +0 -0
- package/src/backgrounds/simiancraft-light.ts +0 -6
- package/src/backgrounds/simiancraft-light.web.ts +0 -7
- package/src/backgrounds/simiancraft-light.webp +0 -0
- package/src/backgrounds/stylized-dark.ts +0 -6
- package/src/backgrounds/stylized-dark.web.ts +0 -7
- package/src/backgrounds/stylized-dark.webp +0 -0
- package/src/backgrounds/stylized-light.ts +0 -6
- package/src/backgrounds/stylized-light.web.ts +0 -7
- package/src/backgrounds/stylized-light.webp +0 -0
- package/src/types.ts +0 -89
- package/src/web/blur-kernel.ts +0 -44
- package/src/web/effects/background-image.ts +0 -364
- package/src/web/effects/blur.ts +0 -430
- package/src/web/effects/transform.ts +0 -69
- package/src/web/insertable-streams.ts +0 -112
- package/src/web/segmenter.ts +0 -107
- package/src/web/shaders.generated.ts +0 -56
- package/src/web/shaders.ts +0 -31
- package/src/web/tuning.ts +0 -67
- /package/{src/backgrounds → catalog/images}/assets.d.ts +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/debug}/debug-resolutions.webp +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/home}/home-dark.webp +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/home}/home-light.webp +0 -0
- /package/{android/src/main/assets/backgrounds/nature-dark.webp → catalog/images/nature/landscape-dark.webp} +0 -0
- /package/{android/src/main/assets/backgrounds/nature-light.webp → catalog/images/nature/landscape-light.webp} +0 -0
- /package/{android/src/main/assets/backgrounds/dark-office.webp → catalog/images/office/office-dark.webp} +0 -0
- /package/{android/src/main/assets/backgrounds/light-office.webp → catalog/images/office/office-light.webp} +0 -0
- /package/{android/src/main/assets/backgrounds/stylized-light.webp → catalog/images/sci-fi/sci-fi-light.webp} +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/simiancraft}/simiancraft-dark.webp +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/simiancraft}/simiancraft-light.webp +0 -0
- /package/dist/{backgrounds → catalog/images/debug}/debug-resolutions.webp +0 -0
- /package/dist/{backgrounds → catalog/images/home}/home-dark.webp +0 -0
- /package/dist/{backgrounds → catalog/images/home}/home-light.webp +0 -0
- /package/dist/{backgrounds/nature-dark.webp → catalog/images/nature/landscape-dark.webp} +0 -0
- /package/dist/{backgrounds/nature-light.webp → catalog/images/nature/landscape-light.webp} +0 -0
- /package/dist/{backgrounds/dark-office.webp → catalog/images/office/office-dark.webp} +0 -0
- /package/dist/{backgrounds/light-office.webp → catalog/images/office/office-light.webp} +0 -0
- /package/dist/{backgrounds/stylized-light.webp → catalog/images/sci-fi/sci-fi-light.webp} +0 -0
- /package/dist/{backgrounds → catalog/images/simiancraft}/simiancraft-dark.webp +0 -0
- /package/dist/{backgrounds → catalog/images/simiancraft}/simiancraft-light.webp +0 -0
- /package/dist/{web → web-driver}/insertable-streams.d.ts +0 -0
- /package/dist/{web → web-driver}/segmenter.d.ts +0 -0
- /package/dist/{web → web-driver}/tuning.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/preset-tile/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAGL,KAAK,SAAS,EAId,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,UAAU,eAAe;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAClD,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CA6ChD","sourcesContent":["// Leaf: one preset tile. The single item shape for every family; it prints the\n// label and, if the preset has a resolved thumbnail, paints it as a wallpaper\n// behind the label; with no thumbnail it is a recessed pressable button of the\n// SAME footprint, so a thumbnail-less preset never breaks the grid's flow. The\n// variant is chosen per preset by `uri` presence, not by family. Hover/press\n// \"light up\" via an overlay sheet (web hover is inert on native, where\n// `hovered` is simply undefined).\n//\n// The tile is a fixed 16:9 box (`aspectRatio`), matching the 1280x720 images and\n// 320x180 thumbnails, so cover-fit shows the whole image and every tile is the\n// same shape regardless of how wide a column resolves to. Width comes from the\n// flex row (`flexBasis`/`maxWidth`); `aspectRatio` derives the height from it.\n// (Historical note: an earlier attempt rendered thin strips when Yoga failed to\n// derive height from a percentage `flexBasis` + `aspectRatio`; if that recurs on\n// a target, restore an explicit `height` floor here.)\n//\n// Styling is headless: defaults + `style` (wins) + `className` (consumed by the\n// `./nativewind` interop, inert without it).\n\nimport {\n Image,\n Pressable,\n type StyleProp,\n StyleSheet,\n Text,\n View,\n type ViewStyle,\n} from 'react-native';\n\ninterface PresetTileProps {\n readonly label: string;\n /**\n * Resolved thumbnail source. A `string` is a URL (web) or file:// URI (native\n * preset-name lookup); a `number` is a Metro asset module id consumed directly\n * by `<Image source={number}>`. Undefined renders the recessed button.\n */\n readonly uri: string | number | undefined;\n readonly selected: boolean;\n readonly disabled?: boolean | undefined;\n readonly onPress: () => void;\n /** Optional corner badge, e.g. \"demo-owned\". */\n readonly badge?: string | undefined;\n /** NativeWind class; resolved via the `./nativewind` interop registration. */\n readonly className?: string | undefined;\n /** RN style override; applied after the defaults. */\n readonly style?: StyleProp<ViewStyle> | undefined;\n /** Deterministic `accessibilityIdentifier` (`kld.preset.<id>`). */\n readonly testID?: string | undefined;\n}\n\nexport function PresetTile(props: PresetTileProps) {\n const { label, uri, selected, disabled = false, onPress, badge, style, testID } = props;\n const hasWallpaper = !!uri;\n return (\n <Pressable\n accessibilityRole=\"radio\"\n accessibilityState={{ checked: selected, disabled }}\n testID={testID}\n disabled={disabled}\n onPress={onPress}\n style={[\n styles.tile,\n hasWallpaper ? styles.wallpaper : styles.recessed,\n selected && styles.selected,\n disabled && styles.disabled,\n style,\n ]}\n >\n {({ pressed, hovered = false }: { pressed: boolean; hovered?: boolean }) => (\n <>\n {hasWallpaper ? (\n <Image\n source={typeof uri === 'number' ? uri : { uri }}\n style={styles.thumb}\n resizeMode=\"cover\"\n />\n ) : null}\n {hasWallpaper ? <View style={styles.scrim} /> : null}\n {badge ? (\n <View style={styles.badge}>\n <Text style={styles.badgeText}>{badge}</Text>\n </View>\n ) : null}\n <View style={styles.labelWrap}>\n <Text numberOfLines={2} style={styles.label}>\n {label}\n </Text>\n </View>\n {hovered || pressed ? (\n <View pointerEvents=\"none\" style={[styles.glow, pressed && styles.glowPressed]} />\n ) : null}\n </>\n )}\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n tile: {\n aspectRatio: 16 / 9,\n minWidth: 96,\n // GENERAL React Native gotcha worth naming, because it bites LLM-generated\n // layouts in particular: Yoga (RN's flex engine) will silently collapse a\n // view to zero height when the layout describes height purely by derivation\n // (a percentage `flexBasis` plus an `aspectRatio`, or content that has not\n // measured yet) without an explicit floor. It smashes shut like an\n // unbroken IE6 `<div>`. If a row of tiles ever renders as thin strips, the\n // first thing to check is whether each tile has a `height` or `minHeight`\n // anywhere in its chain.\n //\n // THIS SITE: declared `flexBasis: '30%'` + `aspectRatio: 16/9` and no\n // height floor; each tile resolved to 118 x 4 px on iOS (Maestro hierarchy\n // bounds), turning every wallpaper tile into a thin gray strip. The\n // recessed variant survived only because its visible 2px border made the\n // 4px collapse read as a deliberate divider. 54 = 96 * 9 / 16 (the\n // minWidth's aspect-derived height), so a tile whose width grows past the\n // floor still tracks the 16:9 ratio via `aspectRatio`.\n minHeight: 54,\n flexGrow: 1,\n flexBasis: '30%',\n maxWidth: '32%',\n borderRadius: 6,\n overflow: 'hidden',\n borderWidth: 2,\n borderColor: 'transparent',\n },\n // Wallpaper variant: the thumbnail fills the tile, label over a legibility scrim.\n wallpaper: { backgroundColor: '#1a1a1a' },\n // Recessed variant (no thumbnail): a pressable inset area, same footprint.\n recessed: { backgroundColor: '#242424', borderColor: '#333' },\n selected: { borderColor: '#4a8f3f' },\n disabled: { opacity: 0.5 },\n thumb: { ...StyleSheet.absoluteFillObject },\n scrim: { ...StyleSheet.absoluteFillObject, backgroundColor: 'rgba(0, 0, 0, 0.35)' },\n badge: {\n position: 'absolute',\n top: 4,\n left: 4,\n backgroundColor: 'rgba(217, 119, 6, 0.92)',\n borderRadius: 4,\n paddingHorizontal: 5,\n paddingVertical: 2,\n },\n badgeText: { color: '#fff', fontSize: 9, fontWeight: '700' },\n labelWrap: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n },\n label: {\n color: '#fff',\n fontSize: 12,\n fontWeight: '700',\n textAlign: 'center',\n paddingHorizontal: 6,\n },\n // Hover/press \"lights up\": a translucent sheet over the whole tile.\n glow: { ...StyleSheet.absoluteFillObject, backgroundColor: 'rgba(255, 255, 255, 0.12)' },\n glowPressed: { backgroundColor: 'rgba(255, 255, 255, 0.04)' },\n});\n"]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PresetTile = PresetTile;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
// Leaf: one preset tile. The single item shape for every family; it prints the
|
|
6
|
+
// label and, if the preset has a resolved thumbnail, paints it as a wallpaper
|
|
7
|
+
// behind the label; with no thumbnail it is a recessed pressable button of the
|
|
8
|
+
// SAME footprint, so a thumbnail-less preset never breaks the grid's flow. The
|
|
9
|
+
// variant is chosen per preset by `uri` presence, not by family. Hover/press
|
|
10
|
+
// "light up" via an overlay sheet (web hover is inert on native, where
|
|
11
|
+
// `hovered` is simply undefined).
|
|
12
|
+
//
|
|
13
|
+
// The tile is a fixed 16:9 box (`aspectRatio`), matching the 1280x720 images and
|
|
14
|
+
// 320x180 thumbnails, so cover-fit shows the whole image and every tile is the
|
|
15
|
+
// same shape regardless of how wide a column resolves to. Width comes from the
|
|
16
|
+
// flex row (`flexBasis`/`maxWidth`); `aspectRatio` derives the height from it.
|
|
17
|
+
// (Historical note: an earlier attempt rendered thin strips when Yoga failed to
|
|
18
|
+
// derive height from a percentage `flexBasis` + `aspectRatio`; if that recurs on
|
|
19
|
+
// a target, restore an explicit `height` floor here.)
|
|
20
|
+
//
|
|
21
|
+
// Styling is headless: defaults + `style` (wins) + `className` (consumed by the
|
|
22
|
+
// `./nativewind` interop, inert without it).
|
|
23
|
+
const react_native_1 = require("react-native");
|
|
24
|
+
function PresetTile(props) {
|
|
25
|
+
const { label, uri, selected, disabled = false, onPress, badge, style, testID } = props;
|
|
26
|
+
const hasWallpaper = !!uri;
|
|
27
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.Pressable, { accessibilityRole: "radio", accessibilityState: { checked: selected, disabled }, testID: testID, disabled: disabled, onPress: onPress, style: [
|
|
28
|
+
styles.tile,
|
|
29
|
+
hasWallpaper ? styles.wallpaper : styles.recessed,
|
|
30
|
+
selected && styles.selected,
|
|
31
|
+
disabled && styles.disabled,
|
|
32
|
+
style,
|
|
33
|
+
], children: ({ pressed, hovered = false }) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [hasWallpaper ? ((0, jsx_runtime_1.jsx)(react_native_1.Image, { source: typeof uri === 'number' ? uri : { uri }, style: styles.thumb, resizeMode: "cover" })) : null, hasWallpaper ? (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.scrim }) : null, badge ? ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.badge, children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.badgeText, children: badge }) })) : null, (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.labelWrap, children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { numberOfLines: 2, style: styles.label, children: label }) }), hovered || pressed ? ((0, jsx_runtime_1.jsx)(react_native_1.View, { pointerEvents: "none", style: [styles.glow, pressed && styles.glowPressed] })) : null] })) }));
|
|
34
|
+
}
|
|
35
|
+
const styles = react_native_1.StyleSheet.create({
|
|
36
|
+
tile: {
|
|
37
|
+
aspectRatio: 16 / 9,
|
|
38
|
+
minWidth: 96,
|
|
39
|
+
// GENERAL React Native gotcha worth naming, because it bites LLM-generated
|
|
40
|
+
// layouts in particular: Yoga (RN's flex engine) will silently collapse a
|
|
41
|
+
// view to zero height when the layout describes height purely by derivation
|
|
42
|
+
// (a percentage `flexBasis` plus an `aspectRatio`, or content that has not
|
|
43
|
+
// measured yet) without an explicit floor. It smashes shut like an
|
|
44
|
+
// unbroken IE6 `<div>`. If a row of tiles ever renders as thin strips, the
|
|
45
|
+
// first thing to check is whether each tile has a `height` or `minHeight`
|
|
46
|
+
// anywhere in its chain.
|
|
47
|
+
//
|
|
48
|
+
// THIS SITE: declared `flexBasis: '30%'` + `aspectRatio: 16/9` and no
|
|
49
|
+
// height floor; each tile resolved to 118 x 4 px on iOS (Maestro hierarchy
|
|
50
|
+
// bounds), turning every wallpaper tile into a thin gray strip. The
|
|
51
|
+
// recessed variant survived only because its visible 2px border made the
|
|
52
|
+
// 4px collapse read as a deliberate divider. 54 = 96 * 9 / 16 (the
|
|
53
|
+
// minWidth's aspect-derived height), so a tile whose width grows past the
|
|
54
|
+
// floor still tracks the 16:9 ratio via `aspectRatio`.
|
|
55
|
+
minHeight: 54,
|
|
56
|
+
flexGrow: 1,
|
|
57
|
+
flexBasis: '30%',
|
|
58
|
+
maxWidth: '32%',
|
|
59
|
+
borderRadius: 6,
|
|
60
|
+
overflow: 'hidden',
|
|
61
|
+
borderWidth: 2,
|
|
62
|
+
borderColor: 'transparent',
|
|
63
|
+
},
|
|
64
|
+
// Wallpaper variant: the thumbnail fills the tile, label over a legibility scrim.
|
|
65
|
+
wallpaper: { backgroundColor: '#1a1a1a' },
|
|
66
|
+
// Recessed variant (no thumbnail): a pressable inset area, same footprint.
|
|
67
|
+
recessed: { backgroundColor: '#242424', borderColor: '#333' },
|
|
68
|
+
selected: { borderColor: '#4a8f3f' },
|
|
69
|
+
disabled: { opacity: 0.5 },
|
|
70
|
+
thumb: { ...react_native_1.StyleSheet.absoluteFillObject },
|
|
71
|
+
scrim: { ...react_native_1.StyleSheet.absoluteFillObject, backgroundColor: 'rgba(0, 0, 0, 0.35)' },
|
|
72
|
+
badge: {
|
|
73
|
+
position: 'absolute',
|
|
74
|
+
top: 4,
|
|
75
|
+
left: 4,
|
|
76
|
+
backgroundColor: 'rgba(217, 119, 6, 0.92)',
|
|
77
|
+
borderRadius: 4,
|
|
78
|
+
paddingHorizontal: 5,
|
|
79
|
+
paddingVertical: 2,
|
|
80
|
+
},
|
|
81
|
+
badgeText: { color: '#fff', fontSize: 9, fontWeight: '700' },
|
|
82
|
+
labelWrap: {
|
|
83
|
+
...react_native_1.StyleSheet.absoluteFillObject,
|
|
84
|
+
alignItems: 'center',
|
|
85
|
+
justifyContent: 'center',
|
|
86
|
+
},
|
|
87
|
+
label: {
|
|
88
|
+
color: '#fff',
|
|
89
|
+
fontSize: 12,
|
|
90
|
+
fontWeight: '700',
|
|
91
|
+
textAlign: 'center',
|
|
92
|
+
paddingHorizontal: 6,
|
|
93
|
+
},
|
|
94
|
+
// Hover/press "lights up": a translucent sheet over the whole tile.
|
|
95
|
+
glow: { ...react_native_1.StyleSheet.absoluteFillObject, backgroundColor: 'rgba(255, 255, 255, 0.12)' },
|
|
96
|
+
glowPressed: { backgroundColor: 'rgba(255, 255, 255, 0.04)' },
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/preset-tile/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Leaf: one preset tile. The single item shape for every family; it prints the\n// label and, if the preset has a resolved thumbnail, paints it as a wallpaper\n// behind the label; with no thumbnail it is a recessed pressable button of the\n// SAME footprint, so a thumbnail-less preset never breaks the grid's flow. The\n// variant is chosen per preset by `uri` presence, not by family. Hover/press\n// \"light up\" via an overlay sheet (web hover is inert on native, where\n// `hovered` is simply undefined).\n//\n// The tile is a fixed 16:9 box (`aspectRatio`), matching the 1280x720 images and\n// 320x180 thumbnails, so cover-fit shows the whole image and every tile is the\n// same shape regardless of how wide a column resolves to. Width comes from the\n// flex row (`flexBasis`/`maxWidth`); `aspectRatio` derives the height from it.\n// (Historical note: an earlier attempt rendered thin strips when Yoga failed to\n// derive height from a percentage `flexBasis` + `aspectRatio`; if that recurs on\n// a target, restore an explicit `height` floor here.)\n//\n// Styling is headless: defaults + `style` (wins) + `className` (consumed by the\n// `./nativewind` interop, inert without it).\n\nimport {\n Image,\n Pressable,\n type StyleProp,\n StyleSheet,\n Text,\n View,\n type ViewStyle,\n} from 'react-native';\n\ninterface PresetTileProps {\n readonly label: string;\n /**\n * Resolved thumbnail source. A `string` is a URL (web) or file:// URI (native\n * preset-name lookup); a `number` is a Metro asset module id consumed directly\n * by `<Image source={number}>`. Undefined renders the recessed button.\n */\n readonly uri: string | number | undefined;\n readonly selected: boolean;\n readonly disabled?: boolean | undefined;\n readonly onPress: () => void;\n /** Optional corner badge, e.g. \"demo-owned\". */\n readonly badge?: string | undefined;\n /** NativeWind class; resolved via the `./nativewind` interop registration. */\n readonly className?: string | undefined;\n /** RN style override; applied after the defaults. */\n readonly style?: StyleProp<ViewStyle> | undefined;\n /** Deterministic `accessibilityIdentifier` (`kld.preset.<id>`). */\n readonly testID?: string | undefined;\n}\n\nexport function PresetTile(props: PresetTileProps) {\n const { label, uri, selected, disabled = false, onPress, badge, style, testID } = props;\n const hasWallpaper = !!uri;\n return (\n <Pressable\n accessibilityRole=\"radio\"\n accessibilityState={{ checked: selected, disabled }}\n testID={testID}\n disabled={disabled}\n onPress={onPress}\n style={[\n styles.tile,\n hasWallpaper ? styles.wallpaper : styles.recessed,\n selected && styles.selected,\n disabled && styles.disabled,\n style,\n ]}\n >\n {({ pressed, hovered = false }: { pressed: boolean; hovered?: boolean }) => (\n <>\n {hasWallpaper ? (\n <Image\n source={typeof uri === 'number' ? uri : { uri }}\n style={styles.thumb}\n resizeMode=\"cover\"\n />\n ) : null}\n {hasWallpaper ? <View style={styles.scrim} /> : null}\n {badge ? (\n <View style={styles.badge}>\n <Text style={styles.badgeText}>{badge}</Text>\n </View>\n ) : null}\n <View style={styles.labelWrap}>\n <Text numberOfLines={2} style={styles.label}>\n {label}\n </Text>\n </View>\n {hovered || pressed ? (\n <View pointerEvents=\"none\" style={[styles.glow, pressed && styles.glowPressed]} />\n ) : null}\n </>\n )}\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n tile: {\n aspectRatio: 16 / 9,\n minWidth: 96,\n // GENERAL React Native gotcha worth naming, because it bites LLM-generated\n // layouts in particular: Yoga (RN's flex engine) will silently collapse a\n // view to zero height when the layout describes height purely by derivation\n // (a percentage `flexBasis` plus an `aspectRatio`, or content that has not\n // measured yet) without an explicit floor. It smashes shut like an\n // unbroken IE6 `<div>`. If a row of tiles ever renders as thin strips, the\n // first thing to check is whether each tile has a `height` or `minHeight`\n // anywhere in its chain.\n //\n // THIS SITE: declared `flexBasis: '30%'` + `aspectRatio: 16/9` and no\n // height floor; each tile resolved to 118 x 4 px on iOS (Maestro hierarchy\n // bounds), turning every wallpaper tile into a thin gray strip. The\n // recessed variant survived only because its visible 2px border made the\n // 4px collapse read as a deliberate divider. 54 = 96 * 9 / 16 (the\n // minWidth's aspect-derived height), so a tile whose width grows past the\n // floor still tracks the 16:9 ratio via `aspectRatio`.\n minHeight: 54,\n flexGrow: 1,\n flexBasis: '30%',\n maxWidth: '32%',\n borderRadius: 6,\n overflow: 'hidden',\n borderWidth: 2,\n borderColor: 'transparent',\n },\n // Wallpaper variant: the thumbnail fills the tile, label over a legibility scrim.\n wallpaper: { backgroundColor: '#1a1a1a' },\n // Recessed variant (no thumbnail): a pressable inset area, same footprint.\n recessed: { backgroundColor: '#242424', borderColor: '#333' },\n selected: { borderColor: '#4a8f3f' },\n disabled: { opacity: 0.5 },\n thumb: { ...StyleSheet.absoluteFillObject },\n scrim: { ...StyleSheet.absoluteFillObject, backgroundColor: 'rgba(0, 0, 0, 0.35)' },\n badge: {\n position: 'absolute',\n top: 4,\n left: 4,\n backgroundColor: 'rgba(217, 119, 6, 0.92)',\n borderRadius: 4,\n paddingHorizontal: 5,\n paddingVertical: 2,\n },\n badgeText: { color: '#fff', fontSize: 9, fontWeight: '700' },\n labelWrap: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n },\n label: {\n color: '#fff',\n fontSize: 12,\n fontWeight: '700',\n textAlign: 'center',\n paddingHorizontal: 6,\n },\n // Hover/press \"lights up\": a translucent sheet over the whole tile.\n glow: { ...StyleSheet.absoluteFillObject, backgroundColor: 'rgba(255, 255, 255, 0.12)' },\n glowPressed: { backgroundColor: 'rgba(255, 255, 255, 0.04)' },\n});\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { KaleidoscopeThemeSlots, SlotStyle, ThemeSlot } from './slots';
|
|
3
|
+
/**
|
|
4
|
+
* Wrap the controls UI to theme every primitive at once. `value` is the slot
|
|
5
|
+
* bank (`labelClassName`, `sliderStyle`, ...); memoize it at the call site.
|
|
6
|
+
*/
|
|
7
|
+
export declare function KaleidoscopeThemeProvider({ value, children, }: {
|
|
8
|
+
readonly value?: KaleidoscopeThemeSlots;
|
|
9
|
+
readonly children: ReactNode;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
/** The full slot bank from context (empty when no provider is mounted). */
|
|
12
|
+
export declare function useKaleidoscopeTheme(): KaleidoscopeThemeSlots;
|
|
13
|
+
/** The `{ className, style }` pair for one slot, for a primitive to merge last. */
|
|
14
|
+
export declare function useThemeSlot(slot: ThemeSlot): {
|
|
15
|
+
readonly className?: string;
|
|
16
|
+
readonly style?: SlotStyle;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/components/theme/provider.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAM5E;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,KAAK,CAAC,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B,2CAEA;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,IAAI,sBAAsB,CAE7D;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B,CAMA","sourcesContent":["// The theme provider: one context holding the flat slot bank that every control\n// primitive reads to self-decorate. Mirrors the React Native Reusables\n// `TextClassContext` idea, generalized to a slot map.\n//\n// Pass a STABLE `value` (React Compiler memoizes it on the consumer side;\n// otherwise memoize it by hand): a fresh object each render re-renders every\n// themed primitive.\n//\n// Leaf module: imports only `react` and the slot types. It must never import from\n// sibling component modules or from `ui/`, so `ui/` can depend on it (the one\n// allowed `ui/` -> `theme/` edge) without a cycle.\n\nimport type { ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\nimport type { KaleidoscopeThemeSlots, SlotStyle, ThemeSlot } from './slots';\n\nconst EMPTY: KaleidoscopeThemeSlots = {};\n\nconst ThemeContext = createContext<KaleidoscopeThemeSlots>(EMPTY);\n\n/**\n * Wrap the controls UI to theme every primitive at once. `value` is the slot\n * bank (`labelClassName`, `sliderStyle`, ...); memoize it at the call site.\n */\nexport function KaleidoscopeThemeProvider({\n value,\n children,\n}: {\n readonly value?: KaleidoscopeThemeSlots;\n readonly children: ReactNode;\n}) {\n return <ThemeContext.Provider value={value ?? EMPTY}>{children}</ThemeContext.Provider>;\n}\n\n/** The full slot bank from context (empty when no provider is mounted). */\nexport function useKaleidoscopeTheme(): KaleidoscopeThemeSlots {\n return useContext(ThemeContext);\n}\n\n/** The `{ className, style }` pair for one slot, for a primitive to merge last. */\nexport function useThemeSlot(slot: ThemeSlot): {\n readonly className?: string;\n readonly style?: SlotStyle;\n} {\n const slots = useContext(ThemeContext);\n return {\n className: slots[`${slot}ClassName`],\n style: slots[`${slot}Style`],\n };\n}\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KaleidoscopeThemeProvider = KaleidoscopeThemeProvider;
|
|
4
|
+
exports.useKaleidoscopeTheme = useKaleidoscopeTheme;
|
|
5
|
+
exports.useThemeSlot = useThemeSlot;
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const EMPTY = {};
|
|
9
|
+
const ThemeContext = (0, react_1.createContext)(EMPTY);
|
|
10
|
+
/**
|
|
11
|
+
* Wrap the controls UI to theme every primitive at once. `value` is the slot
|
|
12
|
+
* bank (`labelClassName`, `sliderStyle`, ...); memoize it at the call site.
|
|
13
|
+
*/
|
|
14
|
+
function KaleidoscopeThemeProvider({ value, children, }) {
|
|
15
|
+
return (0, jsx_runtime_1.jsx)(ThemeContext.Provider, { value: value ?? EMPTY, children: children });
|
|
16
|
+
}
|
|
17
|
+
/** The full slot bank from context (empty when no provider is mounted). */
|
|
18
|
+
function useKaleidoscopeTheme() {
|
|
19
|
+
return (0, react_1.useContext)(ThemeContext);
|
|
20
|
+
}
|
|
21
|
+
/** The `{ className, style }` pair for one slot, for a primitive to merge last. */
|
|
22
|
+
function useThemeSlot(slot) {
|
|
23
|
+
const slots = (0, react_1.useContext)(ThemeContext);
|
|
24
|
+
return {
|
|
25
|
+
className: slots[`${slot}ClassName`],
|
|
26
|
+
style: slots[`${slot}Style`],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/components/theme/provider.tsx"],"names":[],"mappings":";;;;;;AAaA,iCAAkD;AAGlD,MAAM,KAAK,GAA2B,EAAE,CAAC;AAEzC,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAyB,KAAK,CAAC,CAAC;AAElE;;;GAGG;AACH,mCAA0C,EACxC,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,uBAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAAI,KAAK,YAAG,QAAQ,GAAyB,CAAC;AAC1F,CAAC;AAED,2EAA2E;AAC3E;IACE,OAAO,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC;AAClC,CAAC;AAED,mFAAmF;AACnF,sBAA6B,IAAe;IAI1C,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC;IACvC,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,GAAG,IAAI,WAAW,CAAC;QACpC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC;KAC7B,CAAC;AACJ,CAAC","sourcesContent":["// The theme provider: one context holding the flat slot bank that every control\n// primitive reads to self-decorate. Mirrors the React Native Reusables\n// `TextClassContext` idea, generalized to a slot map.\n//\n// Pass a STABLE `value` (React Compiler memoizes it on the consumer side;\n// otherwise memoize it by hand): a fresh object each render re-renders every\n// themed primitive.\n//\n// Leaf module: imports only `react` and the slot types. It must never import from\n// sibling component modules or from `ui/`, so `ui/` can depend on it (the one\n// allowed `ui/` -> `theme/` edge) without a cycle.\n\nimport type { ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\nimport type { KaleidoscopeThemeSlots, SlotStyle, ThemeSlot } from './slots';\n\nconst EMPTY: KaleidoscopeThemeSlots = {};\n\nconst ThemeContext = createContext<KaleidoscopeThemeSlots>(EMPTY);\n\n/**\n * Wrap the controls UI to theme every primitive at once. `value` is the slot\n * bank (`labelClassName`, `sliderStyle`, ...); memoize it at the call site.\n */\nexport function KaleidoscopeThemeProvider({\n value,\n children,\n}: {\n readonly value?: KaleidoscopeThemeSlots;\n readonly children: ReactNode;\n}) {\n return <ThemeContext.Provider value={value ?? EMPTY}>{children}</ThemeContext.Provider>;\n}\n\n/** The full slot bank from context (empty when no provider is mounted). */\nexport function useKaleidoscopeTheme(): KaleidoscopeThemeSlots {\n return useContext(ThemeContext);\n}\n\n/** The `{ className, style }` pair for one slot, for a primitive to merge last. */\nexport function useThemeSlot(slot: ThemeSlot): {\n readonly className?: string;\n readonly style?: SlotStyle;\n} {\n const slots = useContext(ThemeContext);\n return {\n className: slots[`${slot}ClassName`],\n style: slots[`${slot}Style`],\n };\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ImageStyle, StyleProp, TextStyle, ViewStyle } from 'react-native';
|
|
2
|
+
/** A style value for any slot (container, text, or image targets). */
|
|
3
|
+
export type SlotStyle = StyleProp<ViewStyle | TextStyle | ImageStyle>;
|
|
4
|
+
/** Semantic slot names: one per primitive component, one per interaction state. */
|
|
5
|
+
export type ThemeSlot = 'label' | 'readout' | 'slider' | 'colorPicker' | 'button' | 'tabs' | 'tile' | 'section' | 'active' | 'inactive' | 'disabled';
|
|
6
|
+
/**
|
|
7
|
+
* The theme bank: a `<slot>ClassName` (resolved by the `./nativewind` interop)
|
|
8
|
+
* and a `<slot>Style` (the always-works RN fallback) per slot. All optional; an
|
|
9
|
+
* unset slot falls back to the primitive's built-in default. `readout` is the
|
|
10
|
+
* value display (named distinctly from a control's mutating `value`).
|
|
11
|
+
*/
|
|
12
|
+
export type KaleidoscopeThemeSlots = {
|
|
13
|
+
readonly [S in ThemeSlot as `${S}ClassName`]?: string;
|
|
14
|
+
} & {
|
|
15
|
+
readonly [S in ThemeSlot as `${S}Style`]?: SlotStyle;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=slots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../../src/components/theme/slots.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhF,sEAAsE;AACtE,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;AAEtE,mFAAmF;AACnF,MAAM,MAAM,SAAS,GACjB,OAAO,GACP,SAAS,GACT,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,MAAM,GACN,MAAM,GACN,SAAS,GACT,QAAQ,GACR,UAAU,GACV,UAAU,CAAC;AAEf;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,CAAC,IAAI,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM;CACtD,GAAG;IACF,QAAQ,EAAE,CAAC,IAAI,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS;CACrD,CAAC","sourcesContent":["// The controls theme slot bank: one className + style pair per primitive\n// component and per interaction state. A primitive reads its slot via\n// `useThemeSlot` and merges it AFTER its built-in defaults (local props win).\n//\n// Leaf module: imports only react-native types, nothing from sibling `controls/`\n// modules or from `ui/`, so `ui/` can read the theme without an import cycle.\n\nimport type { ImageStyle, StyleProp, TextStyle, ViewStyle } from 'react-native';\n\n/** A style value for any slot (container, text, or image targets). */\nexport type SlotStyle = StyleProp<ViewStyle | TextStyle | ImageStyle>;\n\n/** Semantic slot names: one per primitive component, one per interaction state. */\nexport type ThemeSlot =\n | 'label'\n | 'readout'\n | 'slider'\n | 'colorPicker'\n | 'button'\n | 'tabs'\n | 'tile'\n | 'section'\n | 'active'\n | 'inactive'\n | 'disabled';\n\n/**\n * The theme bank: a `<slot>ClassName` (resolved by the `./nativewind` interop)\n * and a `<slot>Style` (the always-works RN fallback) per slot. All optional; an\n * unset slot falls back to the primitive's built-in default. `readout` is the\n * value display (named distinctly from a control's mutating `value`).\n */\nexport type KaleidoscopeThemeSlots = {\n readonly [S in ThemeSlot as `${S}ClassName`]?: string;\n} & {\n readonly [S in ThemeSlot as `${S}Style`]?: SlotStyle;\n};\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// The controls theme slot bank: one className + style pair per primitive
|
|
3
|
+
// component and per interaction state. A primitive reads its slot via
|
|
4
|
+
// `useThemeSlot` and merges it AFTER its built-in defaults (local props win).
|
|
5
|
+
//
|
|
6
|
+
// Leaf module: imports only react-native types, nothing from sibling `controls/`
|
|
7
|
+
// modules or from `ui/`, so `ui/` can read the theme without an import cycle.
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=slots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slots.js","sourceRoot":"","sources":["../../../../src/components/theme/slots.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,sEAAsE;AACtE,8EAA8E;AAC9E,EAAE;AACF,iFAAiF;AACjF,8EAA8E","sourcesContent":["// The controls theme slot bank: one className + style pair per primitive\n// component and per interaction state. A primitive reads its slot via\n// `useThemeSlot` and merges it AFTER its built-in defaults (local props win).\n//\n// Leaf module: imports only react-native types, nothing from sibling `controls/`\n// modules or from `ui/`, so `ui/` can read the theme without an import cycle.\n\nimport type { ImageStyle, StyleProp, TextStyle, ViewStyle } from 'react-native';\n\n/** A style value for any slot (container, text, or image targets). */\nexport type SlotStyle = StyleProp<ViewStyle | TextStyle | ImageStyle>;\n\n/** Semantic slot names: one per primitive component, one per interaction state. */\nexport type ThemeSlot =\n | 'label'\n | 'readout'\n | 'slider'\n | 'colorPicker'\n | 'button'\n | 'tabs'\n | 'tile'\n | 'section'\n | 'active'\n | 'inactive'\n | 'disabled';\n\n/**\n * The theme bank: a `<slot>ClassName` (resolved by the `./nativewind` interop)\n * and a `<slot>Style` (the always-works RN fallback) per slot. All optional; an\n * unset slot falls back to the primitive's built-in default. `readout` is the\n * value display (named distinctly from a control's mutating `value`).\n */\nexport type KaleidoscopeThemeSlots = {\n readonly [S in ThemeSlot as `${S}ClassName`]?: string;\n} & {\n readonly [S in ThemeSlot as `${S}Style`]?: SlotStyle;\n};\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
export type ButtonProps = {
|
|
4
|
+
readonly children: ReactNode;
|
|
5
|
+
readonly onPress: () => void;
|
|
6
|
+
readonly disabled?: boolean;
|
|
7
|
+
/** NativeWind class; resolved via the `./nativewind` interop. */
|
|
8
|
+
readonly className?: string;
|
|
9
|
+
readonly style?: StyleProp<ViewStyle>;
|
|
10
|
+
/** Deterministic `accessibilityIdentifier` for the pressable. */
|
|
11
|
+
readonly testID?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function Button({ children, onPress, disabled, style, testID }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,2CAqBzF","sourcesContent":["// Button: a themed Pressable + label, used for the copy button and any control\n// action. Themes via the `button` slot, with the `disabled` state slot overlaid\n// at the container when disabled.\n\nimport type { ReactNode } from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { Pressable, StyleSheet, Text } from 'react-native';\nimport { useThemeSlot } from '../theme/provider';\n\nexport type ButtonProps = {\n readonly children: ReactNode;\n readonly onPress: () => void;\n readonly disabled?: boolean;\n /** NativeWind class; resolved via the `./nativewind` interop. */\n readonly className?: string;\n readonly style?: StyleProp<ViewStyle>;\n /** Deterministic `accessibilityIdentifier` for the pressable. */\n readonly testID?: string;\n};\n\nexport function Button({ children, onPress, disabled = false, style, testID }: ButtonProps) {\n const { style: themeStyle } = useThemeSlot('button');\n const { style: disabledStyle } = useThemeSlot('disabled');\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ disabled }}\n testID={testID}\n onPress={onPress}\n disabled={disabled}\n style={[\n styles.button,\n themeStyle as StyleProp<ViewStyle>,\n disabled && styles.disabled,\n disabled && (disabledStyle as StyleProp<ViewStyle>),\n style,\n ]}\n >\n <Text style={styles.text}>{children}</Text>\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n button: {\n paddingHorizontal: 8,\n paddingVertical: 3,\n backgroundColor: '#2a2a2a',\n borderRadius: 4,\n alignSelf: 'flex-start',\n },\n disabled: { opacity: 0.5 },\n text: { color: '#8888ff', fontSize: 11, fontWeight: '600' },\n});\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Button = Button;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const provider_1 = require("../theme/provider");
|
|
7
|
+
function Button({ children, onPress, disabled = false, style, testID }) {
|
|
8
|
+
const { style: themeStyle } = (0, provider_1.useThemeSlot)('button');
|
|
9
|
+
const { style: disabledStyle } = (0, provider_1.useThemeSlot)('disabled');
|
|
10
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.Pressable, { accessibilityRole: "button", accessibilityState: { disabled }, testID: testID, onPress: onPress, disabled: disabled, style: [
|
|
11
|
+
styles.button,
|
|
12
|
+
themeStyle,
|
|
13
|
+
disabled && styles.disabled,
|
|
14
|
+
disabled && disabledStyle,
|
|
15
|
+
style,
|
|
16
|
+
], children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.text, children: children }) }));
|
|
17
|
+
}
|
|
18
|
+
const styles = react_native_1.StyleSheet.create({
|
|
19
|
+
button: {
|
|
20
|
+
paddingHorizontal: 8,
|
|
21
|
+
paddingVertical: 3,
|
|
22
|
+
backgroundColor: '#2a2a2a',
|
|
23
|
+
borderRadius: 4,
|
|
24
|
+
alignSelf: 'flex-start',
|
|
25
|
+
},
|
|
26
|
+
disabled: { opacity: 0.5 },
|
|
27
|
+
text: { color: '#8888ff', fontSize: 11, fontWeight: '600' },
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../../src/components/ui/button.tsx"],"names":[],"mappings":";;;;AAMA,+CAA2D;AAC3D,gDAAiD;AAajD,gBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,EAAe;IACxF,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAA,uBAAY,EAAC,UAAU,CAAC,CAAC;IAC1D,OAAO,CACL,uBAAC,wBAAS,IACR,iBAAiB,EAAC,QAAQ,EAC1B,kBAAkB,EAAE,EAAE,QAAQ,EAAE,EAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACL,MAAM,CAAC,MAAM;YACb,UAAkC;YAClC,QAAQ,IAAI,MAAM,CAAC,QAAQ;YAC3B,QAAQ,IAAK,aAAsC;YACnD,KAAK;SACN,YAED,uBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,QAAQ,GAAQ,GACjC,CACb,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE;QACN,iBAAiB,EAAE,CAAC;QACpB,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,YAAY;KACxB;IACD,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;IAC1B,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;CAC5D,CAAC,CAAC","sourcesContent":["// Button: a themed Pressable + label, used for the copy button and any control\n// action. Themes via the `button` slot, with the `disabled` state slot overlaid\n// at the container when disabled.\n\nimport type { ReactNode } from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { Pressable, StyleSheet, Text } from 'react-native';\nimport { useThemeSlot } from '../theme/provider';\n\nexport type ButtonProps = {\n readonly children: ReactNode;\n readonly onPress: () => void;\n readonly disabled?: boolean;\n /** NativeWind class; resolved via the `./nativewind` interop. */\n readonly className?: string;\n readonly style?: StyleProp<ViewStyle>;\n /** Deterministic `accessibilityIdentifier` for the pressable. */\n readonly testID?: string;\n};\n\nexport function Button({ children, onPress, disabled = false, style, testID }: ButtonProps) {\n const { style: themeStyle } = useThemeSlot('button');\n const { style: disabledStyle } = useThemeSlot('disabled');\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ disabled }}\n testID={testID}\n onPress={onPress}\n disabled={disabled}\n style={[\n styles.button,\n themeStyle as StyleProp<ViewStyle>,\n disabled && styles.disabled,\n disabled && (disabledStyle as StyleProp<ViewStyle>),\n style,\n ]}\n >\n <Text style={styles.text}>{children}</Text>\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n button: {\n paddingHorizontal: 8,\n paddingVertical: 3,\n backgroundColor: '#2a2a2a',\n borderRadius: 4,\n alignSelf: 'flex-start',\n },\n disabled: { opacity: 0.5 },\n text: { color: '#8888ff', fontSize: 11, fontWeight: '600' },\n});\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
2
|
+
export type ColorPickerProps = {
|
|
3
|
+
/** The uniform key this picker drives (an RGB triple). */
|
|
4
|
+
readonly uniform: string;
|
|
5
|
+
/** Display name; defaults to the uniform key. */
|
|
6
|
+
readonly label?: string;
|
|
7
|
+
/** NativeWind class for the container; resolved via the `./nativewind` interop. */
|
|
8
|
+
readonly className?: string;
|
|
9
|
+
readonly style?: StyleProp<ViewStyle>;
|
|
10
|
+
};
|
|
11
|
+
export declare function ColorPicker({ uniform, label, style }: ColorPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=color-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-picker.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/color-picker.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAWzD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,2CAuCtE","sourcesContent":["// ColorPicker: a self-wiring vec3 field. v1 is the swatch + three channel\n// sliders the demo shipped; it reads/writes a single RGB uniform via `useField`\n// and emits the whole triple on any channel change. Themes via `colorPicker`.\n\nimport RNSlider from '@react-native-community/slider';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { StyleSheet, View } from 'react-native';\nimport { useField } from '../form/use-field';\nimport { useThemeSlot } from '../theme/provider';\nimport { Label } from './label';\nimport { Readout } from './readout';\nimport { SLIDER_TINTS, safeSliderValue } from './slider-value';\n\nconst CH = ['R', 'G', 'B'] as const;\nconst CH_KEY = ['r', 'g', 'b'] as const;\n\nexport type ColorPickerProps = {\n /** The uniform key this picker drives (an RGB triple). */\n readonly uniform: string;\n /** Display name; defaults to the uniform key. */\n readonly label?: string;\n /** NativeWind class for the container; resolved via the `./nativewind` interop. */\n readonly className?: string;\n readonly style?: StyleProp<ViewStyle>;\n};\n\nexport function ColorPicker({ uniform, label, style }: ColorPickerProps) {\n const field = useField(uniform);\n const { style: themeStyle } = useThemeSlot('colorPicker');\n const rgb = Array.isArray(field.value) ? field.value : [0, 0, 0];\n const r = rgb[0] ?? 0;\n const g = rgb[1] ?? 0;\n const b = rgb[2] ?? 0;\n const swatch = `rgb(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)})`;\n const name = label ?? uniform;\n const setChannel = (i: number, v: number) => {\n const next = [r, g, b];\n next[i] = v;\n field.onChange(next);\n };\n return (\n <View testID={field.testID} style={[styles.row, themeStyle as StyleProp<ViewStyle>, style]}>\n <View style={styles.labelWrap}>\n <View style={[styles.swatch, { backgroundColor: swatch }]} />\n <Label>{name}</Label>\n </View>\n {[r, g, b].map((v, i) => (\n <View key={CH[i]} style={styles.chanLine}>\n <Readout>{CH[i]}</Readout>\n <RNSlider\n style={styles.chanSlider}\n testID={`${field.testID}.${CH_KEY[i]}`}\n accessibilityLabel={`${name} ${CH[i]}`}\n minimumValue={0}\n maximumValue={1}\n step={0.01}\n value={safeSliderValue(v)}\n disabled={field.disabled}\n onValueChange={(nv) => setChannel(i, nv)}\n {...SLIDER_TINTS}\n />\n </View>\n ))}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n row: { gap: 2 },\n labelWrap: { flexDirection: 'row', alignItems: 'center', gap: 6 },\n swatch: { width: 12, height: 12, borderRadius: 2, borderWidth: 1, borderColor: '#555' },\n chanLine: { flexDirection: 'row', alignItems: 'center', gap: 6 },\n chanSlider: { flex: 1, height: 28 },\n});\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ColorPicker = ColorPicker;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
// ColorPicker: a self-wiring vec3 field. v1 is the swatch + three channel
|
|
9
|
+
// sliders the demo shipped; it reads/writes a single RGB uniform via `useField`
|
|
10
|
+
// and emits the whole triple on any channel change. Themes via `colorPicker`.
|
|
11
|
+
const slider_1 = __importDefault(require("@react-native-community/slider"));
|
|
12
|
+
const react_native_1 = require("react-native");
|
|
13
|
+
const use_field_1 = require("../form/use-field");
|
|
14
|
+
const provider_1 = require("../theme/provider");
|
|
15
|
+
const label_1 = require("./label");
|
|
16
|
+
const readout_1 = require("./readout");
|
|
17
|
+
const slider_value_1 = require("./slider-value");
|
|
18
|
+
const CH = ['R', 'G', 'B'];
|
|
19
|
+
const CH_KEY = ['r', 'g', 'b'];
|
|
20
|
+
function ColorPicker({ uniform, label, style }) {
|
|
21
|
+
const field = (0, use_field_1.useField)(uniform);
|
|
22
|
+
const { style: themeStyle } = (0, provider_1.useThemeSlot)('colorPicker');
|
|
23
|
+
const rgb = Array.isArray(field.value) ? field.value : [0, 0, 0];
|
|
24
|
+
const r = rgb[0] ?? 0;
|
|
25
|
+
const g = rgb[1] ?? 0;
|
|
26
|
+
const b = rgb[2] ?? 0;
|
|
27
|
+
const swatch = `rgb(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)})`;
|
|
28
|
+
const name = label ?? uniform;
|
|
29
|
+
const setChannel = (i, v) => {
|
|
30
|
+
const next = [r, g, b];
|
|
31
|
+
next[i] = v;
|
|
32
|
+
field.onChange(next);
|
|
33
|
+
};
|
|
34
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { testID: field.testID, style: [styles.row, themeStyle, style], children: [(0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.labelWrap, children: [(0, jsx_runtime_1.jsx)(react_native_1.View, { style: [styles.swatch, { backgroundColor: swatch }] }), (0, jsx_runtime_1.jsx)(label_1.Label, { children: name })] }), [r, g, b].map((v, i) => ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.chanLine, children: [(0, jsx_runtime_1.jsx)(readout_1.Readout, { children: CH[i] }), (0, jsx_runtime_1.jsx)(slider_1.default, { style: styles.chanSlider, testID: `${field.testID}.${CH_KEY[i]}`, accessibilityLabel: `${name} ${CH[i]}`, minimumValue: 0, maximumValue: 1, step: 0.01, value: (0, slider_value_1.safeSliderValue)(v), disabled: field.disabled, onValueChange: (nv) => setChannel(i, nv), ...slider_value_1.SLIDER_TINTS })] }, CH[i])))] }));
|
|
35
|
+
}
|
|
36
|
+
const styles = react_native_1.StyleSheet.create({
|
|
37
|
+
row: { gap: 2 },
|
|
38
|
+
labelWrap: { flexDirection: 'row', alignItems: 'center', gap: 6 },
|
|
39
|
+
swatch: { width: 12, height: 12, borderRadius: 2, borderWidth: 1, borderColor: '#555' },
|
|
40
|
+
chanLine: { flexDirection: 'row', alignItems: 'center', gap: 6 },
|
|
41
|
+
chanSlider: { flex: 1, height: 28 },
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=color-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-picker.js","sourceRoot":"","sources":["../../../../src/components/ui/color-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["// ColorPicker: a self-wiring vec3 field. v1 is the swatch + three channel\n// sliders the demo shipped; it reads/writes a single RGB uniform via `useField`\n// and emits the whole triple on any channel change. Themes via `colorPicker`.\n\nimport RNSlider from '@react-native-community/slider';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { StyleSheet, View } from 'react-native';\nimport { useField } from '../form/use-field';\nimport { useThemeSlot } from '../theme/provider';\nimport { Label } from './label';\nimport { Readout } from './readout';\nimport { SLIDER_TINTS, safeSliderValue } from './slider-value';\n\nconst CH = ['R', 'G', 'B'] as const;\nconst CH_KEY = ['r', 'g', 'b'] as const;\n\nexport type ColorPickerProps = {\n /** The uniform key this picker drives (an RGB triple). */\n readonly uniform: string;\n /** Display name; defaults to the uniform key. */\n readonly label?: string;\n /** NativeWind class for the container; resolved via the `./nativewind` interop. */\n readonly className?: string;\n readonly style?: StyleProp<ViewStyle>;\n};\n\nexport function ColorPicker({ uniform, label, style }: ColorPickerProps) {\n const field = useField(uniform);\n const { style: themeStyle } = useThemeSlot('colorPicker');\n const rgb = Array.isArray(field.value) ? field.value : [0, 0, 0];\n const r = rgb[0] ?? 0;\n const g = rgb[1] ?? 0;\n const b = rgb[2] ?? 0;\n const swatch = `rgb(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)})`;\n const name = label ?? uniform;\n const setChannel = (i: number, v: number) => {\n const next = [r, g, b];\n next[i] = v;\n field.onChange(next);\n };\n return (\n <View testID={field.testID} style={[styles.row, themeStyle as StyleProp<ViewStyle>, style]}>\n <View style={styles.labelWrap}>\n <View style={[styles.swatch, { backgroundColor: swatch }]} />\n <Label>{name}</Label>\n </View>\n {[r, g, b].map((v, i) => (\n <View key={CH[i]} style={styles.chanLine}>\n <Readout>{CH[i]}</Readout>\n <RNSlider\n style={styles.chanSlider}\n testID={`${field.testID}.${CH_KEY[i]}`}\n accessibilityLabel={`${name} ${CH[i]}`}\n minimumValue={0}\n maximumValue={1}\n step={0.01}\n value={safeSliderValue(v)}\n disabled={field.disabled}\n onValueChange={(nv) => setChannel(i, nv)}\n {...SLIDER_TINTS}\n />\n </View>\n ))}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n row: { gap: 2 },\n labelWrap: { flexDirection: 'row', alignItems: 'center', gap: 6 },\n swatch: { width: 12, height: 12, borderRadius: 2, borderWidth: 1, borderColor: '#555' },\n chanLine: { flexDirection: 'row', alignItems: 'center', gap: 6 },\n chanSlider: { flex: 1, height: 28 },\n});\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Button, type ButtonProps } from './button';
|
|
2
|
+
export { ColorPicker, type ColorPickerProps } from './color-picker';
|
|
3
|
+
export { Label, type LabelProps } from './label';
|
|
4
|
+
export { Readout, type ReadoutProps } from './readout';
|
|
5
|
+
export { Slider, type SliderProps } from './slider';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC","sourcesContent":["// The field primitives barrel. These are the styleable leaves the parity test\n// pairs against the `./nativewind` cssInterop registrations (providers and\n// shells are NOT here, so the test's bidirectional check stays scoped to\n// components that actually take a `className`).\n\nexport { Button, type ButtonProps } from './button';\nexport { ColorPicker, type ColorPickerProps } from './color-picker';\nexport { Label, type LabelProps } from './label';\nexport { Readout, type ReadoutProps } from './readout';\nexport { Slider, type SliderProps } from './slider';\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// The field primitives barrel. These are the styleable leaves the parity test
|
|
3
|
+
// pairs against the `./nativewind` cssInterop registrations (providers and
|
|
4
|
+
// shells are NOT here, so the test's bidirectional check stays scoped to
|
|
5
|
+
// components that actually take a `className`).
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Slider = exports.Readout = exports.Label = exports.ColorPicker = exports.Button = void 0;
|
|
8
|
+
var button_1 = require("./button");
|
|
9
|
+
Object.defineProperty(exports, "Button", { enumerable: true, get: function () { return button_1.Button; } });
|
|
10
|
+
var color_picker_1 = require("./color-picker");
|
|
11
|
+
Object.defineProperty(exports, "ColorPicker", { enumerable: true, get: function () { return color_picker_1.ColorPicker; } });
|
|
12
|
+
var label_1 = require("./label");
|
|
13
|
+
Object.defineProperty(exports, "Label", { enumerable: true, get: function () { return label_1.Label; } });
|
|
14
|
+
var readout_1 = require("./readout");
|
|
15
|
+
Object.defineProperty(exports, "Readout", { enumerable: true, get: function () { return readout_1.Readout; } });
|
|
16
|
+
var slider_1 = require("./slider");
|
|
17
|
+
Object.defineProperty(exports, "Slider", { enumerable: true, get: function () { return slider_1.Slider; } });
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/index.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,yEAAyE;AACzE,gDAAgD;;;AAEhD,mCAAoD;AAA3C,gGAAA,MAAM,OAAA;AACf,+CAAoE;AAA3D,2GAAA,WAAW,OAAA;AACpB,iCAAiD;AAAxC,8FAAA,KAAK,OAAA;AACd,qCAAuD;AAA9C,kGAAA,OAAO,OAAA;AAChB,mCAAoD;AAA3C,gGAAA,MAAM,OAAA","sourcesContent":["// The field primitives barrel. These are the styleable leaves the parity test\n// pairs against the `./nativewind` cssInterop registrations (providers and\n// shells are NOT here, so the test's bidirectional check stays scoped to\n// components that actually take a `className`).\n\nexport { Button, type ButtonProps } from './button';\nexport { ColorPicker, type ColorPickerProps } from './color-picker';\nexport { Label, type LabelProps } from './label';\nexport { Readout, type ReadoutProps } from './readout';\nexport { Slider, type SliderProps } from './slider';\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { StyleProp, TextStyle } from 'react-native';
|
|
3
|
+
export type LabelProps = {
|
|
4
|
+
readonly children: ReactNode;
|
|
5
|
+
/** NativeWind class; resolved via the `./nativewind` interop. */
|
|
6
|
+
readonly className?: string;
|
|
7
|
+
readonly style?: StyleProp<TextStyle>;
|
|
8
|
+
};
|
|
9
|
+
export declare function Label({ children, style }: LabelProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/label.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,2CAGpD","sourcesContent":["// Label: a themed Text for a control's name. Reads the `label` theme slot's\n// style and merges it after the default; `className` is consumed by the\n// `./nativewind` cssInterop at the boundary and arrives folded into `style`.\n\nimport type { ReactNode } from 'react';\nimport type { StyleProp, TextStyle } from 'react-native';\nimport { StyleSheet, Text } from 'react-native';\nimport { useThemeSlot } from '../theme/provider';\n\nexport type LabelProps = {\n readonly children: ReactNode;\n /** NativeWind class; resolved via the `./nativewind` interop. */\n readonly className?: string;\n readonly style?: StyleProp<TextStyle>;\n};\n\nexport function Label({ children, style }: LabelProps) {\n const { style: themeStyle } = useThemeSlot('label');\n return <Text style={[styles.label, themeStyle as StyleProp<TextStyle>, style]}>{children}</Text>;\n}\n\nconst styles = StyleSheet.create({\n label: { color: '#ccc', fontSize: 12 },\n});\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Label = Label;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const provider_1 = require("../theme/provider");
|
|
7
|
+
function Label({ children, style }) {
|
|
8
|
+
const { style: themeStyle } = (0, provider_1.useThemeSlot)('label');
|
|
9
|
+
return (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: [styles.label, themeStyle, style], children: children });
|
|
10
|
+
}
|
|
11
|
+
const styles = react_native_1.StyleSheet.create({
|
|
12
|
+
label: { color: '#ccc', fontSize: 12 },
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../../../src/components/ui/label.tsx"],"names":[],"mappings":";;;;AAMA,+CAAgD;AAChD,gDAAiD;AASjD,eAAsB,EAAE,QAAQ,EAAE,KAAK,EAAc;IACnD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,CAAC;IACpD,OAAO,uBAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,UAAkC,EAAE,KAAK,CAAC,YAAG,QAAQ,GAAQ,CAAC;AACnG,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;CACvC,CAAC,CAAC","sourcesContent":["// Label: a themed Text for a control's name. Reads the `label` theme slot's\n// style and merges it after the default; `className` is consumed by the\n// `./nativewind` cssInterop at the boundary and arrives folded into `style`.\n\nimport type { ReactNode } from 'react';\nimport type { StyleProp, TextStyle } from 'react-native';\nimport { StyleSheet, Text } from 'react-native';\nimport { useThemeSlot } from '../theme/provider';\n\nexport type LabelProps = {\n readonly children: ReactNode;\n /** NativeWind class; resolved via the `./nativewind` interop. */\n readonly className?: string;\n readonly style?: StyleProp<TextStyle>;\n};\n\nexport function Label({ children, style }: LabelProps) {\n const { style: themeStyle } = useThemeSlot('label');\n return <Text style={[styles.label, themeStyle as StyleProp<TextStyle>, style]}>{children}</Text>;\n}\n\nconst styles = StyleSheet.create({\n label: { color: '#ccc', fontSize: 12 },\n});\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type PointProps = {
|
|
2
|
+
/** Current x, in [min, max]. */
|
|
3
|
+
readonly x: number;
|
|
4
|
+
/** Current y, in [min, max]; drawn bottom-to-top (y-up). */
|
|
5
|
+
readonly y: number;
|
|
6
|
+
/** Slider range for both axes. */
|
|
7
|
+
readonly min: number;
|
|
8
|
+
readonly max: number;
|
|
9
|
+
readonly step?: number;
|
|
10
|
+
/** Emitted on either axis change with the full (x, y). */
|
|
11
|
+
readonly onChange: (x: number, y: number) => void;
|
|
12
|
+
/** Short caption above the box (e.g. the vertex index). */
|
|
13
|
+
readonly label?: string;
|
|
14
|
+
readonly disabled?: boolean;
|
|
15
|
+
/** Base test id; the x slider appends `.x`, the y slider `.y`. */
|
|
16
|
+
readonly testID?: string;
|
|
17
|
+
};
|
|
18
|
+
export declare function Point({ x, y, min, max, step, onChange, label, disabled, testID, }: PointProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=point.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/point.tsx"],"names":[],"mappings":"AAmBA,MAAM,MAAM,UAAU,GAAG;IACvB,gCAAgC;IAChC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,KAAK,CAAC,EACpB,CAAC,EACD,CAAC,EACD,GAAG,EACH,GAAG,EACH,IAAW,EACX,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,GACP,EAAE,UAAU,2CA6CZ","sourcesContent":["// Point: a presentational (x, y) coordinate editor. A square box with a dot drawn\n// at the point's position, plus two HORIZONTAL sliders labeled X and Y. (A rotated\n// \"vertical\" slider renders upright but still drags side-to-side on RN-web, which\n// reads as broken; two plain horizontal sliders are honest.) The box gives the\n// spatial feedback the vertical axis would have: the dot tracks (x, y) live, x\n// left-to-right and y bottom-to-top (y-up, matching the shaders).\n//\n// Presentational on purpose: it owns no field, just `{ x, y, onChange }`. The\n// self-wiring lives in the container that drives it (PolygonField slices a vec2\n// array into one Point per vertex). Reusable for anything that is an xy coordinate\n// (a point light, a focal point).\n\nimport RNSlider from '@react-native-community/slider';\nimport { StyleSheet, View } from 'react-native';\nimport { Readout } from './readout';\nimport { SLIDER_TINTS, safeSliderValue } from './slider-value';\n\nconst BOX = 56;\n\nexport type PointProps = {\n /** Current x, in [min, max]. */\n readonly x: number;\n /** Current y, in [min, max]; drawn bottom-to-top (y-up). */\n readonly y: number;\n /** Slider range for both axes. */\n readonly min: number;\n readonly max: number;\n readonly step?: number;\n /** Emitted on either axis change with the full (x, y). */\n readonly onChange: (x: number, y: number) => void;\n /** Short caption above the box (e.g. the vertex index). */\n readonly label?: string;\n readonly disabled?: boolean;\n /** Base test id; the x slider appends `.x`, the y slider `.y`. */\n readonly testID?: string;\n};\n\nexport function Point({\n x,\n y,\n min,\n max,\n step = 0.01,\n onChange,\n label,\n disabled,\n testID,\n}: PointProps) {\n const span = max - min || 1;\n const xFrac = Math.min(1, Math.max(0, (x - min) / span));\n const yFrac = Math.min(1, Math.max(0, (y - min) / span));\n return (\n <View style={styles.wrap}>\n {label ? <Readout>{label}</Readout> : null}\n <View style={styles.box}>\n <View\n style={[styles.dot, { left: `${xFrac * 100}%`, top: `${(1 - yFrac) * 100}%` }]}\n pointerEvents=\"none\"\n />\n </View>\n <View style={styles.axis}>\n <Readout>X</Readout>\n <RNSlider\n style={styles.slider}\n testID={testID ? `${testID}.x` : undefined}\n accessibilityLabel={label ? `${label} x` : 'x'}\n minimumValue={min}\n maximumValue={max}\n step={step}\n value={safeSliderValue(x)}\n disabled={disabled}\n onValueChange={(v) => onChange(v, y)}\n {...SLIDER_TINTS}\n />\n </View>\n <View style={styles.axis}>\n <Readout>Y</Readout>\n <RNSlider\n style={styles.slider}\n testID={testID ? `${testID}.y` : undefined}\n accessibilityLabel={label ? `${label} y` : 'y'}\n minimumValue={min}\n maximumValue={max}\n step={step}\n value={safeSliderValue(y)}\n disabled={disabled}\n onValueChange={(v) => onChange(x, v)}\n {...SLIDER_TINTS}\n />\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrap: { alignItems: 'center', gap: 3, width: BOX + 44 },\n box: {\n width: BOX,\n height: BOX,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: 'rgba(255,255,255,0.35)',\n backgroundColor: 'rgba(255,255,255,0.05)',\n position: 'relative',\n },\n dot: {\n position: 'absolute',\n width: 7,\n height: 7,\n borderRadius: 4,\n marginLeft: -3.5,\n marginTop: -3.5,\n backgroundColor: '#fff',\n },\n axis: { flexDirection: 'row', alignItems: 'center', gap: 4, alignSelf: 'stretch' },\n slider: { flex: 1, height: 28 },\n});\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Point = Point;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
// Point: a presentational (x, y) coordinate editor. A square box with a dot drawn
|
|
9
|
+
// at the point's position, plus two HORIZONTAL sliders labeled X and Y. (A rotated
|
|
10
|
+
// "vertical" slider renders upright but still drags side-to-side on RN-web, which
|
|
11
|
+
// reads as broken; two plain horizontal sliders are honest.) The box gives the
|
|
12
|
+
// spatial feedback the vertical axis would have: the dot tracks (x, y) live, x
|
|
13
|
+
// left-to-right and y bottom-to-top (y-up, matching the shaders).
|
|
14
|
+
//
|
|
15
|
+
// Presentational on purpose: it owns no field, just `{ x, y, onChange }`. The
|
|
16
|
+
// self-wiring lives in the container that drives it (PolygonField slices a vec2
|
|
17
|
+
// array into one Point per vertex). Reusable for anything that is an xy coordinate
|
|
18
|
+
// (a point light, a focal point).
|
|
19
|
+
const slider_1 = __importDefault(require("@react-native-community/slider"));
|
|
20
|
+
const react_native_1 = require("react-native");
|
|
21
|
+
const readout_1 = require("./readout");
|
|
22
|
+
const slider_value_1 = require("./slider-value");
|
|
23
|
+
const BOX = 56;
|
|
24
|
+
function Point({ x, y, min, max, step = 0.01, onChange, label, disabled, testID, }) {
|
|
25
|
+
const span = max - min || 1;
|
|
26
|
+
const xFrac = Math.min(1, Math.max(0, (x - min) / span));
|
|
27
|
+
const yFrac = Math.min(1, Math.max(0, (y - min) / span));
|
|
28
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.wrap, children: [label ? (0, jsx_runtime_1.jsx)(readout_1.Readout, { children: label }) : null, (0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.box, children: (0, jsx_runtime_1.jsx)(react_native_1.View, { style: [styles.dot, { left: `${xFrac * 100}%`, top: `${(1 - yFrac) * 100}%` }], pointerEvents: "none" }) }), (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.axis, children: [(0, jsx_runtime_1.jsx)(readout_1.Readout, { children: "X" }), (0, jsx_runtime_1.jsx)(slider_1.default, { style: styles.slider, testID: testID ? `${testID}.x` : undefined, accessibilityLabel: label ? `${label} x` : 'x', minimumValue: min, maximumValue: max, step: step, value: (0, slider_value_1.safeSliderValue)(x), disabled: disabled, onValueChange: (v) => onChange(v, y), ...slider_value_1.SLIDER_TINTS })] }), (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: styles.axis, children: [(0, jsx_runtime_1.jsx)(readout_1.Readout, { children: "Y" }), (0, jsx_runtime_1.jsx)(slider_1.default, { style: styles.slider, testID: testID ? `${testID}.y` : undefined, accessibilityLabel: label ? `${label} y` : 'y', minimumValue: min, maximumValue: max, step: step, value: (0, slider_value_1.safeSliderValue)(y), disabled: disabled, onValueChange: (v) => onChange(x, v), ...slider_value_1.SLIDER_TINTS })] })] }));
|
|
29
|
+
}
|
|
30
|
+
const styles = react_native_1.StyleSheet.create({
|
|
31
|
+
wrap: { alignItems: 'center', gap: 3, width: BOX + 44 },
|
|
32
|
+
box: {
|
|
33
|
+
width: BOX,
|
|
34
|
+
height: BOX,
|
|
35
|
+
borderWidth: react_native_1.StyleSheet.hairlineWidth,
|
|
36
|
+
borderColor: 'rgba(255,255,255,0.35)',
|
|
37
|
+
backgroundColor: 'rgba(255,255,255,0.05)',
|
|
38
|
+
position: 'relative',
|
|
39
|
+
},
|
|
40
|
+
dot: {
|
|
41
|
+
position: 'absolute',
|
|
42
|
+
width: 7,
|
|
43
|
+
height: 7,
|
|
44
|
+
borderRadius: 4,
|
|
45
|
+
marginLeft: -3.5,
|
|
46
|
+
marginTop: -3.5,
|
|
47
|
+
backgroundColor: '#fff',
|
|
48
|
+
},
|
|
49
|
+
axis: { flexDirection: 'row', alignItems: 'center', gap: 4, alignSelf: 'stretch' },
|
|
50
|
+
slider: { flex: 1, height: 28 },
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=point.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"point.js","sourceRoot":"","sources":["../../../../src/components/ui/point.tsx"],"names":[],"mappings":"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","sourcesContent":["// Point: a presentational (x, y) coordinate editor. A square box with a dot drawn\n// at the point's position, plus two HORIZONTAL sliders labeled X and Y. (A rotated\n// \"vertical\" slider renders upright but still drags side-to-side on RN-web, which\n// reads as broken; two plain horizontal sliders are honest.) The box gives the\n// spatial feedback the vertical axis would have: the dot tracks (x, y) live, x\n// left-to-right and y bottom-to-top (y-up, matching the shaders).\n//\n// Presentational on purpose: it owns no field, just `{ x, y, onChange }`. The\n// self-wiring lives in the container that drives it (PolygonField slices a vec2\n// array into one Point per vertex). Reusable for anything that is an xy coordinate\n// (a point light, a focal point).\n\nimport RNSlider from '@react-native-community/slider';\nimport { StyleSheet, View } from 'react-native';\nimport { Readout } from './readout';\nimport { SLIDER_TINTS, safeSliderValue } from './slider-value';\n\nconst BOX = 56;\n\nexport type PointProps = {\n /** Current x, in [min, max]. */\n readonly x: number;\n /** Current y, in [min, max]; drawn bottom-to-top (y-up). */\n readonly y: number;\n /** Slider range for both axes. */\n readonly min: number;\n readonly max: number;\n readonly step?: number;\n /** Emitted on either axis change with the full (x, y). */\n readonly onChange: (x: number, y: number) => void;\n /** Short caption above the box (e.g. the vertex index). */\n readonly label?: string;\n readonly disabled?: boolean;\n /** Base test id; the x slider appends `.x`, the y slider `.y`. */\n readonly testID?: string;\n};\n\nexport function Point({\n x,\n y,\n min,\n max,\n step = 0.01,\n onChange,\n label,\n disabled,\n testID,\n}: PointProps) {\n const span = max - min || 1;\n const xFrac = Math.min(1, Math.max(0, (x - min) / span));\n const yFrac = Math.min(1, Math.max(0, (y - min) / span));\n return (\n <View style={styles.wrap}>\n {label ? <Readout>{label}</Readout> : null}\n <View style={styles.box}>\n <View\n style={[styles.dot, { left: `${xFrac * 100}%`, top: `${(1 - yFrac) * 100}%` }]}\n pointerEvents=\"none\"\n />\n </View>\n <View style={styles.axis}>\n <Readout>X</Readout>\n <RNSlider\n style={styles.slider}\n testID={testID ? `${testID}.x` : undefined}\n accessibilityLabel={label ? `${label} x` : 'x'}\n minimumValue={min}\n maximumValue={max}\n step={step}\n value={safeSliderValue(x)}\n disabled={disabled}\n onValueChange={(v) => onChange(v, y)}\n {...SLIDER_TINTS}\n />\n </View>\n <View style={styles.axis}>\n <Readout>Y</Readout>\n <RNSlider\n style={styles.slider}\n testID={testID ? `${testID}.y` : undefined}\n accessibilityLabel={label ? `${label} y` : 'y'}\n minimumValue={min}\n maximumValue={max}\n step={step}\n value={safeSliderValue(y)}\n disabled={disabled}\n onValueChange={(v) => onChange(x, v)}\n {...SLIDER_TINTS}\n />\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrap: { alignItems: 'center', gap: 3, width: BOX + 44 },\n box: {\n width: BOX,\n height: BOX,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: 'rgba(255,255,255,0.35)',\n backgroundColor: 'rgba(255,255,255,0.05)',\n position: 'relative',\n },\n dot: {\n position: 'absolute',\n width: 7,\n height: 7,\n borderRadius: 4,\n marginLeft: -3.5,\n marginTop: -3.5,\n backgroundColor: '#fff',\n },\n axis: { flexDirection: 'row', alignItems: 'center', gap: 4, alignSelf: 'stretch' },\n slider: { flex: 1, height: 28 },\n});\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type PolygonFieldProps = {
|
|
2
|
+
/** The uniform key this field drives: a vec2 array, flat [x0,y0, x1,y1, ...]. */
|
|
3
|
+
readonly uniform: string;
|
|
4
|
+
/** Number of polygon vertices; laid out in a ceil(√points)-column grid. */
|
|
5
|
+
readonly points: number;
|
|
6
|
+
/** Display name; defaults to the uniform key. */
|
|
7
|
+
readonly label?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function PolygonField({ uniform, points, label }: PolygonFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=polygon-field.d.ts.map
|