@mkbabb/glass-ui 7.0.0 → 9.0.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/README.md +4 -3
- package/dist/DialogContent-4hzLiaCQ.js +152 -0
- package/dist/DotRing-Blh4Mc3Q.js +27 -0
- package/dist/{DropdownMenuTrigger-ClIq8RJE.js → DropdownMenuTrigger-8UZsBtZ8.js} +5 -5
- package/dist/Surface-i1tWC-Ga.js +48 -0
- package/dist/aurora.d.ts +1 -1
- package/dist/aurora.js +321 -289
- package/dist/axes.d.ts +1 -1
- package/dist/axes.js +1 -22
- package/dist/badge-owUOaaba.js +63 -0
- package/dist/badge.d.ts +1 -1
- package/dist/badge.js +2 -2
- package/dist/blob-config.d.ts +1 -1
- package/dist/blob.d.ts +1 -1
- package/dist/blob.js +43 -43
- package/dist/button-yvGPb0Bx.js +110 -0
- package/dist/button.d.ts +1 -1
- package/dist/button.js +1 -1
- package/dist/{card-Bk96VI2R.js → card-3HFFpC7_.js} +51 -95
- package/dist/card.d.ts +1 -1
- package/dist/card.js +2 -2
- package/dist/carousel.d.ts +1 -1
- package/dist/carousel.js +187 -175
- package/dist/checkbox-B1qn65se.js +64 -0
- package/dist/checkbox.d.ts +1 -0
- package/dist/checkbox.js +2 -0
- package/dist/chip.d.ts +1 -1
- package/dist/chip.js +129 -2
- package/dist/{class-names-Cpy5eaBk.js → class-names-q-UGOkHH.js} +15 -1
- package/dist/{collapsible-BAP95XTt.js → collapsible-B7O6m-Ch.js} +2 -2
- package/dist/collapsible.d.ts +1 -1
- package/dist/collapsible.js +1 -1
- package/dist/color.d.ts +1 -1
- package/dist/color.glsl-DTJhdekG.js +34 -0
- package/dist/color.js +18 -18
- package/dist/color.wgsl-BTszLY39.js +398 -0
- package/dist/command-tEzAaVY_.js +340 -0
- package/dist/command.d.ts +1 -1
- package/dist/command.js +1 -1
- package/dist/component-styles.css +4 -0
- package/dist/components/_shared/axes.d.ts +4 -1
- package/dist/components/_shared/class-names.d.ts +1 -1
- package/dist/components/_shared/control.d.ts +10 -0
- package/dist/components/_shared/feedback/DotRing.vue.d.ts +3 -0
- package/dist/components/_shared/feedback/dot-ring.css +1 -0
- package/dist/components/_shared/feedback/feedback-tone.css +1 -0
- package/dist/components/_shared/{fieldControl.d.ts → field/control.d.ts} +1 -1
- package/dist/components/_shared/focus.d.ts +11 -0
- package/dist/components/_shared/index.d.ts +1 -2
- package/dist/components/_shared/interaction.d.ts +1 -1
- package/dist/components/_shared/menu/menu.css +1 -0
- package/dist/components/_shared/menu/rowClass.d.ts +2 -0
- package/dist/components/_shared/overlay/content.d.ts +40 -0
- package/dist/components/_shared/overlay/index.d.ts +12 -0
- package/dist/components/{dock/composables → _shared/overlay}/isTeleportedTarget.d.ts +5 -0
- package/dist/components/_shared/overlay/participation.d.ts +66 -0
- package/dist/components/_shared/overlay/placement.d.ts +22 -0
- package/dist/components/_shared/selection.d.ts +39 -0
- package/dist/components/_shared/surface/resolve.d.ts +17 -0
- package/dist/components/_shared/useMotionAxis.d.ts +1 -7
- package/dist/components/accordion/Accordion.vue.d.ts +1 -1
- package/dist/components/accordion/index.d.ts +4 -4
- package/dist/components/alert/Alert.vue.d.ts +1 -1
- package/dist/components/alert/AlertDescription.vue.d.ts +2 -2
- package/dist/components/alert/AlertTitle.vue.d.ts +2 -2
- package/dist/components/alert/index.d.ts +9 -9
- package/dist/components/aurora/Aurora.vue.d.ts +5 -4
- package/dist/components/aurora/composables/atoms-fields.d.ts +1 -1
- package/dist/components/aurora/composables/atoms.d.ts +3 -3
- package/dist/components/aurora/composables/auroraFallbackGround.d.ts +1 -1
- package/dist/components/aurora/composables/auroraImageSource.d.ts +2 -2
- package/dist/components/aurora/composables/color.d.ts +3 -4
- package/dist/components/aurora/composables/frameLoop.d.ts +9 -8
- package/dist/components/aurora/composables/glSetup.d.ts +5 -10
- package/dist/components/aurora/composables/runtime.d.ts +28 -3
- package/dist/{composables/glass → components/aurora/composables}/textureUpload.d.ts +0 -13
- package/dist/components/aurora/composables/uniformBridge.d.ts +3 -20
- package/dist/components/aurora/composables/uniformBridgeWGPU.d.ts +2 -2
- package/dist/components/aurora/composables/uniformBridgeWGPUImage.d.ts +2 -2
- package/dist/components/aurora/composables/useAurora.d.ts +32 -4
- package/dist/components/aurora/composables/useCursorInteraction.d.ts +2 -2
- package/dist/components/aurora/composables/wgpuSetup.d.ts +5 -5
- package/dist/components/aurora/constants/budget.d.ts +0 -36
- package/dist/components/aurora/constants/presets.d.ts +46 -7
- package/dist/components/aurora/constants/shaders/aurora-image.frag.d.ts +0 -2
- package/dist/components/aurora/constants/shaders/aurora-image.wgsl.d.ts +0 -2
- package/dist/components/aurora/index.d.ts +15 -14
- package/dist/components/avatar/AvatarImage.vue.d.ts +1 -6
- package/dist/components/avatar/index.d.ts +3 -3
- package/dist/components/badge/Badge.vue.d.ts +2 -9
- package/dist/components/badge/index.d.ts +12 -11
- package/dist/components/blob/Blob.vue.d.ts +4 -4
- package/dist/components/blob/composables/blobSimulation.d.ts +5 -5
- package/dist/components/blob/composables/buildMetaballProgram.d.ts +1 -1
- package/dist/components/blob/composables/resolveBlobSurface.d.ts +1 -1
- package/dist/components/blob/composables/satelliteKinematics.d.ts +1 -1
- package/dist/components/blob/composables/uniformBridgeWGPU.d.ts +4 -4
- package/dist/components/blob/composables/uploadBlobUniforms.d.ts +5 -5
- package/dist/components/blob/composables/useBlobMood.d.ts +1 -1
- package/dist/components/blob/composables/useBlobPointer.d.ts +0 -3
- package/dist/components/blob/composables/useBlobSatellites.d.ts +1 -1
- package/dist/components/blob/composables/useMetaballRenderer.d.ts +6 -6
- package/dist/components/blob/composables/wgpuSetup.d.ts +5 -5
- package/dist/components/blob/config.d.ts +3 -3
- package/dist/components/blob/constants.d.ts +1 -3
- package/dist/components/blob/index.d.ts +8 -8
- package/dist/components/blob/presets.d.ts +1 -1
- package/dist/components/button/Button.vue.d.ts +15 -9
- package/dist/components/button/index.d.ts +1 -1
- package/dist/components/button/styles.css +1 -1
- package/dist/components/card/Card.vue.d.ts +20 -23
- package/dist/components/card/CardHeader.vue.d.ts +8 -1
- package/dist/components/card/index.d.ts +6 -7
- package/dist/components/card/scroll.css +1 -0
- package/dist/components/card/styles.css +1 -1
- package/dist/components/carousel/Carousel.vue.d.ts +14 -19
- package/dist/components/carousel/CarouselContent.vue.d.ts +2 -12
- package/dist/components/carousel/CarouselItem.vue.d.ts +14 -3
- package/dist/components/carousel/CarouselPager.vue.d.ts +2 -2
- package/dist/components/carousel/index.d.ts +7 -6
- package/dist/components/carousel/projection.d.ts +23 -0
- package/dist/components/carousel/styles.css +1 -0
- package/dist/components/carousel/types.d.ts +47 -0
- package/dist/components/carousel/useCarousel.d.ts +4 -21
- package/dist/components/checkbox/Checkbox.vue.d.ts +6 -6
- package/dist/components/checkbox/index.d.ts +1 -1
- package/dist/components/chip/Chip.vue.d.ts +2 -2
- package/dist/components/chip/accent-tone.css +1 -0
- package/dist/components/chip/chipVariants.d.ts +1 -1
- package/dist/components/chip/index.d.ts +3 -3
- package/dist/components/chip/types.d.ts +2 -2
- package/dist/components/collapsible/CollapsibleTrigger.vue.d.ts +1 -1
- package/dist/components/collapsible/index.d.ts +3 -3
- package/dist/components/command/Command.vue.d.ts +5 -3
- package/dist/components/command/CommandDialog.vue.d.ts +9 -5
- package/dist/components/command/CommandEmpty.vue.d.ts +1 -1
- package/dist/components/command/CommandGroup.vue.d.ts +1 -1
- package/dist/components/command/CommandInput.vue.d.ts +1 -1
- package/dist/components/command/CommandItem.vue.d.ts +3 -3
- package/dist/components/command/CommandList.vue.d.ts +8 -8
- package/dist/components/command/CommandSeparator.vue.d.ts +1 -1
- package/dist/components/command/index.d.ts +11 -10
- package/dist/components/command/types.d.ts +8 -3
- package/dist/components/configurator/Configurator.vue.d.ts +26 -3
- package/dist/components/configurator/ConfiguratorRow.vue.d.ts +5 -3
- package/dist/components/configurator/index.d.ts +6 -6
- package/dist/components/configurator/styles.css +1 -1
- package/dist/components/configurator/useConfiguratorState.d.ts +1 -1
- package/dist/components/constellation/Constellation.vue.d.ts +3 -5
- package/dist/components/constellation/composables/createConstellationField.d.ts +1 -1
- package/dist/components/constellation/composables/useConstellation.d.ts +2 -2
- package/dist/components/constellation/constants.d.ts +1 -1
- package/dist/components/constellation/constellationField.d.ts +3 -4
- package/dist/components/constellation/constellationInteraction.d.ts +1 -5
- package/dist/components/constellation/constellationRender.d.ts +1 -3
- package/dist/components/constellation/constellationTypes.d.ts +0 -11
- package/dist/components/constellation/constellationWell.d.ts +1 -1
- package/dist/components/constellation/index.d.ts +8 -6
- package/dist/components/dark-mode-toggle/dark-mode-toggle.css +1 -1
- package/dist/components/dark-mode-toggle/index.d.ts +2 -2
- package/dist/components/data-table/DataTable.vue.d.ts +1 -1
- package/dist/components/data-table/composables/useDataTableResponsive.d.ts +1 -1
- package/dist/components/data-table/index.d.ts +2 -2
- package/dist/components/{number-field/NumberFieldContent.vue.d.ts → deck/DeckSlide.vue.d.ts} +12 -1
- package/dist/components/deck/DeckStage.vue.d.ts +36 -0
- package/dist/components/deck/composables/useDeck.d.ts +35 -10
- package/dist/components/deck/composables/useDeckCapture.d.ts +26 -0
- package/dist/components/deck/composables/useDeckHashSync.d.ts +8 -0
- package/dist/components/deck/composables/useDeckKeyboard.d.ts +16 -8
- package/dist/components/deck/composables/useDeckSnap.d.ts +20 -0
- package/dist/components/deck/composables/useDeckSwipe.d.ts +13 -0
- package/dist/components/deck/composables/useEdgeZones.d.ts +14 -0
- package/dist/components/deck/constants.d.ts +0 -3
- package/dist/components/deck/index.d.ts +22 -6
- package/dist/components/deck/slideContext.d.ts +21 -0
- package/dist/components/deck/styles/capture.css +1 -0
- package/dist/components/deck/styles/index.css +1 -0
- package/dist/components/deck/styles/reveal.css +1 -0
- package/dist/components/deck/styles/stage.css +1 -0
- package/dist/components/deck/styles/turn.css +1 -0
- package/dist/components/deck/types.d.ts +26 -0
- package/dist/components/deck/window.d.ts +27 -0
- package/dist/components/dialog/Dialog.vue.d.ts +13 -0
- package/dist/components/dialog/DialogContent.vue.d.ts +23 -27
- package/dist/components/dialog/DialogFooter.vue.d.ts +2 -2
- package/dist/components/dialog/DialogHeader.vue.d.ts +2 -2
- package/dist/components/dialog/ModalOverlay.vue.d.ts +44 -23
- package/dist/components/dialog/index.d.ts +7 -8
- package/dist/components/dialog/styles.css +1 -0
- package/dist/components/dock/DockControl.vue.d.ts +8 -4
- package/dist/components/dock/DockCrossfade.vue.d.ts +3 -3
- package/dist/components/dock/DockLayer.vue.d.ts +1 -1
- package/dist/components/dock/DockLayerGroup.vue.d.ts +13 -13
- package/dist/components/dock/DockSeparator.vue.d.ts +24 -20
- package/dist/components/dock/GlassDock.vue.d.ts +5 -4
- package/dist/components/dock/composables/dockContext.d.ts +28 -11
- package/dist/components/dock/composables/dockCrossfadeContext.d.ts +5 -5
- package/dist/components/dock/composables/dockMorphMeasure.d.ts +0 -1
- package/dist/components/dock/composables/dockSwitcherContext.d.ts +29 -0
- package/dist/components/dock/composables/index.d.ts +10 -10
- package/dist/components/dock/composables/useDockHold.d.ts +21 -6
- package/dist/components/dock/composables/useDockRun.d.ts +20 -0
- package/dist/components/dock/composables/useDockSearch.d.ts +5 -5
- package/dist/components/dock/composables/useDockShellProps.d.ts +21 -128
- package/dist/components/dock/composables/useDockState.d.ts +18 -12
- package/dist/components/dock/constants.d.ts +32 -3
- package/dist/components/dock/index.d.ts +15 -15
- package/dist/components/dock/styles/adaptive-legibility.css +1 -1
- package/dist/components/dock/styles/controls/icon-button.css +1 -1
- package/dist/components/dock/styles/controls/tab-button.css +1 -1
- package/dist/components/dock/styles/controls/touch-floor.css +1 -1
- package/dist/components/dock/styles/controls/triggers.css +1 -1
- package/dist/components/dock/styles/controls.css +1 -1
- package/dist/components/dock/styles/crossfade.css +1 -1
- package/dist/components/dock/styles/cta-seat.css +1 -1
- package/dist/components/dock/styles/density.css +1 -1
- package/dist/components/dock/styles/dock.css +1 -1
- package/dist/components/dock/styles/index.css +1 -1
- package/dist/components/dock/styles/layer-group.css +1 -1
- package/dist/components/dock/styles/layers.css +1 -1
- package/dist/components/dock/styles/morph.css +1 -1
- package/dist/components/dock/styles/run.css +1 -0
- package/dist/components/dock/styles/search.css +1 -1
- package/dist/components/dock/styles/shape.css +1 -1
- package/dist/components/dock/styles/shell-regions.css +1 -1
- package/dist/components/dock/styles/shell.css +1 -1
- package/dist/components/easing/EasingCurve.vue.d.ts +51 -0
- package/dist/components/easing/EasingPicker.vue.d.ts +16 -32
- package/dist/components/easing/constants.d.ts +15 -13
- package/dist/components/easing/index.d.ts +5 -3
- package/dist/components/easing/{composables/useEasingPicker.d.ts → usePicker.d.ts} +27 -23
- package/dist/components/expandable-container/ExpandableContainer.vue.d.ts +1 -1
- package/dist/components/expandable-container/index.d.ts +1 -1
- package/dist/components/fading-scroll/constants.d.ts +2 -9
- package/dist/components/fading-scroll/index.d.ts +2 -2
- package/dist/components/fourier-field/FourierField.vue.d.ts +31 -30
- package/dist/components/fourier-field/clock.d.ts +35 -0
- package/dist/components/fourier-field/constants.d.ts +79 -104
- package/dist/components/fourier-field/index.d.ts +4 -31
- package/dist/components/fourier-field/math.d.ts +69 -77
- package/dist/components/fourier-field/renderer/mint.d.ts +50 -0
- package/dist/components/fourier-field/renderer/uniforms.d.ts +84 -0
- package/dist/components/fourier-field/renderer/wgpu.d.ts +28 -0
- package/dist/components/fourier-field/shaders/compute.wgsl.d.ts +1 -0
- package/dist/components/fourier-field/shaders/render.wgsl.d.ts +1 -0
- package/dist/components/fourier-field/useFourierField.d.ts +49 -0
- package/dist/components/handmark/HandMark.vue.d.ts +18 -14
- package/dist/components/handmark/index.d.ts +5 -22
- package/dist/components/handmark/stroke.d.ts +92 -0
- package/dist/components/index.d.ts +30 -32
- package/dist/components/infinite-scroll/InfiniteScroll.vue.d.ts +3 -3
- package/dist/components/infinite-scroll/composables/index.d.ts +2 -2
- package/dist/components/infinite-scroll/composables/useInfiniteScroll.d.ts +1 -1
- package/dist/components/infinite-scroll/index.d.ts +2 -2
- package/dist/components/input/Input.vue.d.ts +10 -5
- package/dist/components/input/index.d.ts +3 -2
- package/dist/components/input/types.d.ts +49 -9
- package/dist/components/label/index.d.ts +1 -1
- package/dist/components/labeled-field/LabeledField.vue.d.ts +4 -4
- package/dist/components/labeled-field/LabeledInput.vue.d.ts +1 -1
- package/dist/components/labeled-field/LabeledSlider.vue.d.ts +1 -1
- package/dist/components/labeled-field/LabeledSwitch.vue.d.ts +1 -1
- package/dist/components/labeled-field/index.d.ts +5 -6
- package/dist/components/labeled-field/types.d.ts +5 -14
- package/dist/components/{dropdown-menu → menu}/DropdownMenu.vue.d.ts +2 -2
- package/dist/components/{dropdown-menu → menu}/DropdownMenuCheckboxItem.vue.d.ts +2 -2
- package/dist/components/{dropdown-menu → menu}/DropdownMenuContent.vue.d.ts +4 -7
- package/dist/components/{dropdown-menu → menu}/DropdownMenuRadioGroup.vue.d.ts +1 -1
- package/dist/components/{dropdown-menu → menu}/DropdownMenuRadioItem.vue.d.ts +1 -1
- package/dist/components/{dropdown-menu → menu}/DropdownMenuSubContent.vue.d.ts +7 -7
- package/dist/components/{dropdown-menu → menu}/DropdownMenuTrigger.vue.d.ts +1 -1
- package/dist/components/{dropdown-menu → menu}/index.d.ts +15 -15
- package/dist/components/metric/Metric.vue.d.ts +7 -5
- package/dist/components/metric/MetricRow.vue.d.ts +4 -12
- package/dist/components/metric/MetricStack.vue.d.ts +2 -2
- package/dist/components/metric/coalesce-metric.d.ts +30 -2
- package/dist/components/metric/index.d.ts +6 -5
- package/dist/components/metric/styles.css +1 -1
- package/dist/components/metric/types.d.ts +25 -13
- package/dist/components/music-staff/MusicStaff.vue.d.ts +22 -0
- package/dist/components/music-staff/glyphs.d.ts +74 -0
- package/dist/components/music-staff/index.d.ts +4 -0
- package/dist/components/music-staff/midiAdapter.d.ts +22 -0
- package/dist/components/music-staff/staffGeometry.d.ts +216 -0
- package/dist/components/music-staff/styles.css +1 -0
- package/dist/components/number-field/NumberField.vue.d.ts +7 -2
- package/dist/components/number-field/NumberFieldStep.vue.d.ts +31 -0
- package/dist/components/number-field/context.d.ts +4 -0
- package/dist/components/number-field/index.d.ts +3 -5
- package/dist/components/pager-dots/PagerDots.vue.d.ts +22 -10
- package/dist/components/pager-dots/index.d.ts +3 -2
- package/dist/components/pager-dots/worm.d.ts +42 -0
- package/dist/components/popover/Popover.vue.d.ts +23 -1
- package/dist/components/popover/PopoverContent.vue.d.ts +17 -14
- package/dist/components/popover/PopoverTrigger.vue.d.ts +1 -1
- package/dist/components/popover/index.d.ts +3 -3
- package/dist/components/popover/popoverContext.d.ts +10 -0
- package/dist/components/progress/Progress.vue.d.ts +5 -5
- package/dist/components/progress/index.d.ts +2 -2
- package/dist/components/progress/types.d.ts +16 -6
- package/dist/components/radio-group/RadioGroup.vue.d.ts +5 -7
- package/dist/components/radio-group/RadioGroupItem.vue.d.ts +3 -2
- package/dist/components/radio-group/index.d.ts +4 -4
- package/dist/components/scroll-progress-rim/ScrollProgressRim.vue.d.ts +2 -14
- package/dist/components/scroll-progress-rim/index.d.ts +2 -3
- package/dist/components/scroll-progress-rim/styles.css +1 -1
- package/dist/components/scroll-progress-rim/types.d.ts +20 -2
- package/dist/components/select/Select.vue.d.ts +2 -2
- package/dist/components/select/SelectContent.vue.d.ts +4 -9
- package/dist/components/select/SelectItem.vue.d.ts +1 -1
- package/dist/components/select/SelectScrollButton.vue.d.ts +18 -0
- package/dist/components/select/SelectTrigger.vue.d.ts +1 -8
- package/dist/components/select/SelectValue.vue.d.ts +4 -6
- package/dist/components/select/index.d.ts +18 -16
- package/dist/components/separator/Separator.vue.d.ts +1 -1
- package/dist/components/separator/index.d.ts +1 -1
- package/dist/components/sheet/SheetContent.vue.d.ts +60 -0
- package/dist/components/sheet/detents/projection.d.ts +42 -0
- package/dist/components/sheet/detents/use.d.ts +27 -0
- package/dist/components/sheet/index.d.ts +4 -0
- package/dist/components/sheet/motion.d.ts +29 -0
- package/dist/components/sheet/styles.css +1 -0
- package/dist/components/skeleton/index.d.ts +1 -1
- package/dist/components/slider/Slider.vue.d.ts +2 -3
- package/dist/components/slider/index.d.ts +2 -2
- package/dist/components/slider/styles.css +1 -0
- package/dist/components/slider/types.d.ts +13 -4
- package/dist/components/sortable-list/SortableItem.vue.d.ts +1 -1
- package/dist/components/sortable-list/SortableList.vue.d.ts +1 -2
- package/dist/components/sortable-list/context.d.ts +1 -1
- package/dist/components/sortable-list/drag.d.ts +52 -0
- package/dist/components/sortable-list/ghost.d.ts +40 -0
- package/dist/components/sortable-list/index.d.ts +4 -4
- package/dist/components/sortable-list/motion.d.ts +75 -0
- package/dist/components/sortable-list/resolve.d.ts +56 -0
- package/dist/components/sortable-list/{composables/types.d.ts → types.d.ts} +14 -7
- package/dist/components/sortable-list/{composables/useSortable.d.ts → useSortable.d.ts} +2 -4
- package/dist/components/status-dot/StatusDot.vue.d.ts +10 -3
- package/dist/components/status-dot/index.d.ts +3 -2
- package/dist/components/status-dot/states.d.ts +4 -0
- package/dist/components/surface/Surface.vue.d.ts +31 -14
- package/dist/components/surface/index.d.ts +2 -2
- package/dist/components/switch/Switch.vue.d.ts +7 -12
- package/dist/components/switch/index.d.ts +2 -2
- package/dist/components/table/index.d.ts +8 -8
- package/dist/components/tabs/SegmentedTabs.vue.d.ts +9 -13
- package/dist/components/tabs/composables/useTabDragMorph.d.ts +2 -2
- package/dist/components/tabs/composables/useTabResponsive.d.ts +1 -1
- package/dist/components/tabs/composables/useTabRovingFocus.d.ts +15 -7
- package/dist/components/tabs/index.d.ts +2 -2
- package/dist/components/tabs/styles/drag.css +1 -1
- package/dist/components/tabs/styles/segmented.css +1 -1
- package/dist/components/textarea/Textarea.vue.d.ts +10 -5
- package/dist/components/textarea/index.d.ts +2 -2
- package/dist/components/textarea/types.d.ts +34 -11
- package/dist/components/timeline/Timeline.vue.d.ts +41 -0
- package/dist/components/timeline/geometry.d.ts +53 -78
- package/dist/components/timeline/index.d.ts +2 -2
- package/dist/components/timeline/types.d.ts +42 -42
- package/dist/components/toast/Toast.vue.d.ts +3 -3
- package/dist/components/toast/index.d.ts +8 -8
- package/dist/components/toast/use-toast.d.ts +9 -2
- package/dist/components/toggle-group/ToggleGroup.vue.d.ts +29 -40
- package/dist/components/toggle-group/ToggleGroupItem.vue.d.ts +7 -7
- package/dist/components/toggle-group/context.d.ts +28 -0
- package/dist/components/toggle-group/index.d.ts +2 -3
- package/dist/components/tooltip/TooltipContent.vue.d.ts +3 -8
- package/dist/components/tooltip/TooltipTrigger.vue.d.ts +1 -1
- package/dist/components/tooltip/index.d.ts +4 -4
- package/dist/components/typewriter/TypewriterText.vue.d.ts +12 -32
- package/dist/components/typewriter/composables/useTypewriter.d.ts +1 -1
- package/dist/components/typewriter/index.d.ts +7 -7
- package/dist/components/typewriter/types.d.ts +1 -1
- package/dist/components/typewriter/utils/timing.d.ts +1 -1
- package/dist/components/typewriter/utils/typoStateMachine.d.ts +1 -1
- package/dist/composables/color/accent-tone-solve.d.ts +1 -1
- package/dist/composables/color/index.d.ts +7 -7
- package/dist/composables/context/index.d.ts +1 -1
- package/dist/composables/dark/darkModeSyncScript.d.ts +19 -0
- package/dist/composables/dark/index.d.ts +5 -5
- package/dist/composables/dom/index.d.ts +10 -10
- package/dist/composables/dom/useDragVelocity.d.ts +7 -0
- package/dist/composables/glass/backdropLuminanceSample.d.ts +20 -22
- package/dist/composables/glass/backdropSampleMath.d.ts +10 -0
- package/dist/composables/glass/canvas2d/index.d.ts +3 -3
- package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +2 -10
- package/dist/composables/glass/index.d.ts +5 -7
- package/dist/composables/glass/useGlassBackdropLuminance.d.ts +3 -4
- package/dist/composables/glass/useSpecularTracking.d.ts +1 -1
- package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +13 -22
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +10 -13
- package/dist/composables/glass/webgl/visibility.d.ts +1 -1
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +10 -13
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +3 -4
- package/dist/composables/glass/webgpu/webgpuCanvasTypes.d.ts +9 -11
- package/dist/composables/glass/webgpu/webgpuDevice.d.ts +0 -17
- package/dist/composables/keyboard/index.d.ts +1 -1
- package/dist/composables/motion/core/constants.d.ts +7 -0
- package/dist/composables/motion/core/index.d.ts +21 -21
- package/dist/composables/motion/core/motionTempo.d.ts +0 -2
- package/dist/composables/motion/dissolve/dissolveGrammar.d.ts +88 -0
- package/dist/composables/motion/engage/engageEnvelopes.d.ts +45 -0
- package/dist/composables/motion/engage/engageLadder.d.ts +86 -0
- package/dist/composables/motion/index.d.ts +14 -14
- package/dist/composables/motion/morph/eyeglass.d.ts +141 -0
- package/dist/composables/motion/morph/useDockCtaReceive.d.ts +6 -6
- package/dist/composables/motion/morph/useElementMorph.d.ts +4 -4
- package/dist/composables/motion/morph/useLeadTrail.d.ts +30 -28
- package/dist/composables/motion/morph/useSelectionGroup.d.ts +61 -23
- package/dist/composables/motion/morph/useSelectionIndicator.d.ts +52 -22
- package/dist/composables/motion/number/useAnimatedNumberMap.d.ts +1 -1
- package/dist/composables/motion/pointer/pointerFieldMappings.d.ts +1 -42
- package/dist/composables/motion/pointer/useRoutePointer.d.ts +1 -1
- package/dist/composables/motion/reveal/useLiquidReveal.d.ts +7 -6
- package/dist/composables/motion/route/routeGrammar.d.ts +60 -0
- package/dist/composables/motion/route/useRouteTransition.d.ts +45 -0
- package/dist/composables/motion/scroll/useScrollProgress.d.ts +7 -14
- package/dist/composables/motion/scroll/useScrollScene.d.ts +5 -4
- package/dist/composables/motion/spring/springPresets.d.ts +13 -27
- package/dist/composables/motion/spring/springProjection.d.ts +3 -4
- package/dist/composables/motion/spring/useLiquidPress.d.ts +2 -2
- package/dist/composables/motion/spring/useSpring.d.ts +3 -3
- package/dist/composables/motion/spring/useSpringMount.d.ts +6 -3
- package/dist/composables/motion/spring/useSpringPress.d.ts +6 -6
- package/dist/composables/reactive/index.d.ts +2 -2
- package/dist/composables/search/index.d.ts +5 -0
- package/dist/{components/search/composables/fuzzySearchIndex.d.ts → composables/search/match.d.ts} +9 -4
- package/dist/{components/search/composables → composables/search}/useFuzzySearch.d.ts +1 -1
- package/dist/composables/sidebar/index.d.ts +10 -10
- package/dist/composables/sidebar/useClickDelegate.d.ts +1 -1
- package/dist/composables/sidebar/useLazyLoader.d.ts +1 -1
- package/dist/composables/sidebar/useScrollTo.d.ts +1 -1
- package/dist/composables/sidebar/useScrollTracker.d.ts +1 -1
- package/dist/composables/sidebar/useSidebarState.d.ts +1 -1
- package/dist/composables/sidebar/useTreeIndex.d.ts +1 -1
- package/dist/configurator-BHJymdrF.js +339 -0
- package/dist/configurator.d.ts +1 -1
- package/dist/configurator.js +1 -1
- package/dist/{constants-nBz23tJE.js → constants-Dk96HZHu.js} +2 -2
- package/dist/constellation.d.ts +1 -1
- package/dist/constellation.js +137 -136
- package/dist/content-CWO-XL7o.js +18 -0
- package/dist/control-DJp15L4U.js +7 -0
- package/dist/{field-control.css_vue_type_style_index_0_src_true_lang-CeLay9Tk.js → control.css_vue_type_style_index_0_src_true_lang-BIdufaDG.js} +1 -1
- package/dist/{createCanvasLifecycle-DbXRwjU_.js → createCanvasLifecycle-hJHobVTn.js} +2 -5
- package/dist/{dark-z_P5QwqI.js → dark-CLlmo7dD.js} +2 -2
- package/dist/dark-mode-toggle.d.ts +1 -1
- package/dist/dark-mode-toggle.js +3 -3
- package/dist/dark.d.ts +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table-_RrOEdiw.js +493 -0
- package/dist/data-table.d.ts +1 -1
- package/dist/data-table.js +1 -1
- package/dist/deck-Ci6YjB5e.js +453 -0
- package/dist/deck.d.ts +1 -1
- package/dist/deck.js +2 -94
- package/dist/dialog-CbRnTRtg.js +78 -0
- package/dist/dialog.d.ts +1 -1
- package/dist/dialog.js +3 -2
- package/dist/dock.d.ts +1 -1
- package/dist/dock.js +873 -620
- package/dist/dom.d.ts +1 -1
- package/dist/dom.js +141 -37
- package/dist/easing.d.ts +1 -1
- package/dist/easing.js +686 -515
- package/dist/expandable-container-BY1hQXi4.js +142 -0
- package/dist/expandable-container.d.ts +1 -1
- package/dist/expandable-container.js +2 -140
- package/dist/{fading-scroll-DhxXIhm2.js → fading-scroll-CTeW3KNS.js} +30 -30
- package/dist/fading-scroll.d.ts +1 -1
- package/dist/fading-scroll.js +1 -1
- package/dist/focus-Duf7EpUu.js +13 -0
- package/dist/fourier-field.d.ts +1 -1
- package/dist/fourier-field.js +641 -855
- package/dist/fourier-math.d.ts +1 -1
- package/dist/fourier-math.js +6 -6
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +133 -469
- package/dist/handmark.d.ts +1 -1
- package/dist/handmark.js +330 -718
- package/dist/index.d.ts +41 -42
- package/dist/infinite-scroll.d.ts +1 -1
- package/dist/infinite-scroll.js +56 -43
- package/dist/input-Bls2A4Tt.js +54 -0
- package/dist/input.d.ts +1 -0
- package/dist/input.js +2 -0
- package/dist/keyboard.d.ts +1 -1
- package/dist/label-BQEZhnK_.js +53 -0
- package/dist/label.d.ts +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.d.ts +1 -1
- package/dist/labeled-field.js +64 -148
- package/dist/menu-TDMNtZjG.js +501 -0
- package/dist/menu.d.ts +1 -0
- package/dist/{dropdown-menu.js → menu.js} +2 -2
- package/dist/metric.d.ts +1 -1
- package/dist/metric.js +79 -132
- package/dist/motion-D4uYE0UM.js +61 -0
- package/dist/motion-core.d.ts +1 -1
- package/dist/motion-core.js +185 -52
- package/dist/motion.d.ts +1 -1
- package/dist/motion.js +160 -178
- package/dist/music-staff.d.ts +1 -0
- package/dist/music-staff.js +915 -0
- package/dist/number-field-NFAwQ0HK.js +111 -0
- package/dist/number-field.d.ts +1 -1
- package/dist/number-field.js +2 -2
- package/dist/pager-dots.d.ts +1 -1
- package/dist/pager-dots.js +362 -2
- package/dist/participation-Di4UHbzk.js +42 -0
- package/dist/{pointerFieldMappings-DP5tla5z.js → pointerFieldMappings-DXwlU5uj.js} +7 -23
- package/dist/popover-C04Rrdcz.js +181 -0
- package/dist/popover.d.ts +1 -1
- package/dist/popover.js +1 -1
- package/dist/progress-DF8dWZIX.js +74 -0
- package/dist/progress.d.ts +1 -1
- package/dist/progress.js +1 -1
- package/dist/radio-group-BNV7PN1O.js +85 -0
- package/dist/radio-group.d.ts +1 -0
- package/dist/radio-group.js +2 -0
- package/dist/reactive.d.ts +1 -1
- package/dist/resolve-DdrNvBby.js +6 -0
- package/dist/rowClass-DYOXwxhO.js +10 -0
- package/dist/scroll-progress-rim.d.ts +1 -1
- package/dist/scroll-progress-rim.js +48 -42
- package/dist/select-COox45Kv.js +290 -0
- package/dist/select.d.ts +1 -1
- package/dist/select.js +2 -2
- package/dist/separator-CN11t406.js +73 -0
- package/dist/separator.d.ts +1 -1
- package/dist/separator.js +1 -1
- package/dist/sheet-BEFvnO_u.js +340 -0
- package/dist/sheet.d.ts +1 -0
- package/dist/sheet.js +3 -0
- package/dist/sidebar.d.ts +1 -1
- package/dist/slider-5ChjjWSR.js +227 -0
- package/dist/slider.d.ts +1 -1
- package/dist/slider.js +1 -1
- package/dist/sortable-list.d.ts +1 -1
- package/dist/sortable-list.js +411 -286
- package/dist/springPresets-Cbe0Voqg.js +52 -0
- package/dist/status-dot-BpnqOP5N.js +56 -0
- package/dist/status-dot.d.ts +1 -1
- package/dist/status-dot.js +2 -42
- package/dist/styles/accessibility.css +1 -1
- package/dist/styles/animations.css +1 -1
- package/dist/styles/components.css +1 -1
- package/dist/styles/fonts.css +1 -1
- package/dist/styles/glass/a11y-fallback.css +1 -1
- package/dist/styles/glass/control-bit.css +1 -0
- package/dist/styles/glass/control-edge.css +1 -0
- package/dist/styles/glass/control-surfaces.css +1 -1
- package/dist/styles/glass/deep.css +1 -1
- package/dist/styles/glass/defined.css +1 -1
- package/dist/styles/glass/dissolve.css +1 -0
- package/dist/styles/glass/focus-veil.css +1 -0
- package/dist/styles/glass/glass-atom.css +1 -1
- package/dist/styles/glass/glass-capsule.css +1 -1
- package/dist/styles/glass/glass-chip.css +1 -1
- package/dist/styles/glass/grasp.css +1 -0
- package/dist/styles/glass/ladder-undershadow.css +1 -1
- package/dist/styles/glass/ladder.css +1 -1
- package/dist/styles/glass/liquid-enter.css +1 -1
- package/dist/styles/glass/liquid-fill.css +1 -1
- package/dist/styles/glass/mark.css +1 -0
- package/dist/styles/glass/material.css +1 -1
- package/dist/styles/glass/overlay-plate.css +1 -0
- package/dist/styles/glass/reveal.css +1 -1
- package/dist/styles/glass/rim.css +1 -1
- package/dist/styles/glass/squircle.css +1 -1
- package/dist/styles/glass/surface-axis.css +1 -1
- package/dist/styles/glass/surfaces-pager.css +1 -1
- package/dist/styles/glass/surfaces.css +1 -1
- package/dist/styles/glass/track-flow.css +1 -0
- package/dist/styles/glass/value-marks.css +1 -0
- package/dist/styles/glass/veil.css +1 -0
- package/dist/styles/glass-specular-track.css +1 -1
- package/dist/styles/glass.css +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/styles/paper.css +1 -1
- package/dist/styles/scroll-choreography.css +1 -1
- package/dist/styles/scroll-chrome.css +1 -1
- package/dist/styles/scroll-driven.css +1 -1
- package/dist/styles/theme/bridges.css +1 -1
- package/dist/styles/theme/dark.css +1 -1
- package/dist/styles/theme/literals.css +1 -1
- package/dist/styles/theme/radius.css +1 -1
- package/dist/styles/theme.css +1 -1
- package/dist/styles/tokens/color-radius.css +1 -1
- package/dist/styles/tokens/dark-arm-glass.css +1 -1
- package/dist/styles/tokens/dark-arm.css +1 -1
- package/dist/styles/tokens/glass-deep.css +1 -1
- package/dist/styles/tokens/glass-fx.css +1 -1
- package/dist/styles/tokens/glass.css +1 -1
- package/dist/styles/tokens/light-dark.css +1 -1
- package/dist/styles/tokens/manifest.d.ts +4 -4
- package/dist/styles/tokens/motion-registers.css +1 -1
- package/dist/styles/tokens/offsets.css +1 -1
- package/dist/styles/tokens/on-glass-fg.css +1 -1
- package/dist/styles/tokens/property-regs-specular.css +1 -1
- package/dist/styles/tokens/property-regs.css +1 -1
- package/dist/styles/tokens/scale-paper.css +1 -1
- package/dist/styles/tokens/scheme-motion.css +1 -1
- package/dist/styles/tokens/scheme-spring.css +1 -1
- package/dist/styles/tokens/scroll-tokens.css +1 -1
- package/dist/styles/tokens/shadow.css +1 -1
- package/dist/styles/tokens/sizing-config.css +1 -1
- package/dist/styles/tokens/sizing.css +1 -1
- package/dist/styles/tokens.css +1 -1
- package/dist/styles/tokens.d.ts +2 -2
- package/dist/styles/track-well.css +1 -0
- package/dist/styles/transitions.css +1 -1
- package/dist/styles/typography/scale.css +1 -1
- package/dist/styles/typography/semantic.css +1 -1
- package/dist/styles/typography/utilities.css +1 -1
- package/dist/styles/typography.css +1 -1
- package/dist/styles/utilities/a11y-overrides.css +1 -1
- package/dist/styles/utilities/base-misc.css +1 -1
- package/dist/styles/utilities/base.css +1 -1
- package/dist/styles/utilities/btn.css +1 -1
- package/dist/styles/utilities/components.css +1 -1
- package/dist/styles/utilities/metal.css +1 -1
- package/dist/styles/utilities/responsive.css +1 -1
- package/dist/styles/utilities.css +1 -1
- package/dist/styles/view-transition.css +1 -1
- package/dist/styles/viz-reveal.css +1 -1
- package/dist/{supportsCssTimeline-C2zyWpl8.js → supportsCssTimeline-Di9gzleG.js} +5 -4
- package/dist/surface.d.ts +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch-lLkbREB-.js +49 -0
- package/dist/switch.d.ts +1 -1
- package/dist/switch.js +1 -1
- package/dist/tabs-DSJMd1Et.js +268 -0
- package/dist/tabs.d.ts +1 -1
- package/dist/tabs.js +2 -311
- package/dist/textarea.d.ts +1 -0
- package/dist/textarea.js +58 -0
- package/dist/timeline.d.ts +1 -1
- package/dist/timeline.js +238 -528
- package/dist/{toast-CH5mnsYT.js → toast-9c6Kp58L.js} +52 -50
- package/dist/toast.d.ts +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle-group-DUcmKnDw.js +125 -0
- package/dist/toggle-group.d.ts +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tokens.d.ts +1 -1
- package/dist/tokens.js +12 -10
- package/dist/tooltip-BKk2qVDn.js +142 -0
- package/dist/tooltip.d.ts +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.d.ts +1 -1
- package/dist/typewriter.js +10 -32
- package/dist/useAccentTone-DFAh1osB.js +47 -0
- package/dist/{resolveCanvasColor-DS_6DBxA.js → useCanvas2D-CQRElMyE.js} +2 -13
- package/dist/{useDockCtaReceive-DkrOTM0q.js → useDockCtaReceive-BSSgD6mu.js} +2 -2
- package/dist/{useDragMorph-BogSV_nv.js → useDragMorph-B363RUbF.js} +59 -59
- package/dist/{useDragVelocity-6ONX0sr0.js → useDragVelocity-C5BkKiNf.js} +28 -24
- package/dist/useIntersectionPause-CzKR3EyP.js +57 -0
- package/dist/useLeadTrail-DQWdpFN1.js +83 -0
- package/dist/{useLiquidPress-BOxuDkKa.js → useLiquidPress-h1scrPtP.js} +1 -1
- package/dist/useScrollChrome-BJbWV32F.js +162 -0
- package/dist/useScrollProgress-Bq-KPaKM.js +41 -0
- package/dist/{useScrollTrigger-BDdqptlc.js → useScrollTrigger-Abe5dEeO.js} +25 -26
- package/dist/useSelectionGroup-zsEwitF6.js +291 -0
- package/dist/{useSpringMount-uQ8QL9Ff.js → useSpringMount-OA-0mTNv.js} +5 -6
- package/dist/vReveal-B5WYGofz.js +44 -0
- package/dist/{valueDomain-SbVzoHMH.js → valueDomain-DXRzfc8l.js} +1 -1
- package/package.json +52 -109
- package/dist/FeedbackMark-DZq5001h.js +0 -23
- package/dist/Input-9BlLluik.js +0 -77
- package/dist/PagerDots-BEq0MgtH.js +0 -311
- package/dist/Surface-kFQeYrYv.js +0 -82
- package/dist/animated-digit.d.ts +0 -1
- package/dist/animated-digit.js +0 -44
- package/dist/badge-u65NClWn.js +0 -62
- package/dist/button-Bu9F4uU6.js +0 -98
- package/dist/canvas.d.ts +0 -1
- package/dist/canvas.js +0 -2
- package/dist/chip-DFZQr6rV.js +0 -129
- package/dist/color.wgsl-Ct5o9dpf.js +0 -411
- package/dist/command-SFqDQ65h.js +0 -320
- package/dist/compile-D7VYG3gi.js +0 -19
- package/dist/completion-seal.d.ts +0 -1
- package/dist/completion-seal.js +0 -132
- package/dist/components/_shared/FeedbackMark.vue.d.ts +0 -11
- package/dist/components/_shared/control-size.d.ts +0 -2
- package/dist/components/_shared/disclosure.css +0 -1
- package/dist/components/_shared/feedback-tone.css +0 -1
- package/dist/components/_shared/feedback.d.ts +0 -7
- package/dist/components/_shared/field-control.css +0 -1
- package/dist/components/_shared/field-surfaces.css +0 -1
- package/dist/components/_shared/floating.d.ts +0 -14
- package/dist/components/_shared/menu.css +0 -1
- package/dist/components/_shared/menuRowClass.d.ts +0 -2
- package/dist/components/_shared/resolveSurfaceClass.d.ts +0 -3
- package/dist/components/animated-digit/AnimatedDigit.vue.d.ts +0 -55
- package/dist/components/animated-digit/index.d.ts +0 -2
- package/dist/components/avatar/styles.css +0 -1
- package/dist/components/card/CardAction.vue.d.ts +0 -17
- package/dist/components/card/card-scroll.css +0 -1
- package/dist/components/carousel/interface.d.ts +0 -22
- package/dist/components/checkbox/styles.css +0 -1
- package/dist/components/combobox/Combobox.vue.d.ts +0 -22
- package/dist/components/combobox/ComboboxAnchor.vue.d.ts +0 -14
- package/dist/components/combobox/ComboboxEmpty.vue.d.ts +0 -14
- package/dist/components/combobox/ComboboxGroup.vue.d.ts +0 -14
- package/dist/components/combobox/ComboboxInput.vue.d.ts +0 -18
- package/dist/components/combobox/ComboboxItem.vue.d.ts +0 -18
- package/dist/components/combobox/ComboboxItemIndicator.vue.d.ts +0 -14
- package/dist/components/combobox/ComboboxList.vue.d.ts +0 -29
- package/dist/components/combobox/ComboboxTrigger.vue.d.ts +0 -16
- package/dist/components/combobox/index.d.ts +0 -10
- package/dist/components/combobox/types.d.ts +0 -87
- package/dist/components/command/dialogContext.d.ts +0 -6
- package/dist/components/command/styles.css +0 -1
- package/dist/components/completion-seal/CompletionSeal.vue.d.ts +0 -28
- package/dist/components/completion-seal/composables/useCompletionSeal.d.ts +0 -37
- package/dist/components/completion-seal/constants.d.ts +0 -66
- package/dist/components/completion-seal/index.d.ts +0 -4
- package/dist/components/completion-seal/styles.css +0 -1
- package/dist/components/data-table/styles.css +0 -1
- package/dist/components/deck/DeckPager.vue.d.ts +0 -29
- package/dist/components/dialog/DialogClose.vue.d.ts +0 -16
- package/dist/components/dialog/DialogTrigger.vue.d.ts +0 -16
- package/dist/components/dialog/dialogStageContext.d.ts +0 -7
- package/dist/components/dialog/placement.css +0 -1
- package/dist/components/dialog/sheet-motion.d.ts +0 -17
- package/dist/components/dock/composables/useDockOverflowFit.d.ts +0 -20
- package/dist/components/dock/composables/useDockTouchGate.d.ts +0 -42
- package/dist/components/dock/styles/overflow.css +0 -1
- package/dist/components/drawer/Drawer.vue.d.ts +0 -82
- package/dist/components/drawer/DrawerContent.vue.d.ts +0 -39
- package/dist/components/drawer/DrawerDescription.vue.d.ts +0 -17
- package/dist/components/drawer/DrawerFooter.vue.d.ts +0 -17
- package/dist/components/drawer/DrawerHeader.vue.d.ts +0 -17
- package/dist/components/drawer/DrawerOverlay.vue.d.ts +0 -8
- package/dist/components/drawer/DrawerTitle.vue.d.ts +0 -17
- package/dist/components/drawer/composables/drawerSnapContext.d.ts +0 -34
- package/dist/components/drawer/composables/useDrawerSnap.d.ts +0 -26
- package/dist/components/drawer/constants.d.ts +0 -32
- package/dist/components/drawer/index.d.ts +0 -33
- package/dist/components/drawer/styles.css +0 -1
- package/dist/components/dropdown-menu/styles.css +0 -1
- package/dist/components/easing/EasingConfigurator.vue.d.ts +0 -33
- package/dist/components/expandable-container/styles.css +0 -1
- package/dist/components/fourier-field/composables/fourierFieldGLSetup.d.ts +0 -24
- package/dist/components/fourier-field/composables/fourierFieldWGPUSetup.d.ts +0 -31
- package/dist/components/fourier-field/composables/uniformBridgeWGPU.d.ts +0 -41
- package/dist/components/fourier-field/composables/useFourierField.d.ts +0 -56
- package/dist/components/fourier-field/presets.d.ts +0 -54
- package/dist/components/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +0 -1
- package/dist/components/fourier-field/shaders/fourier-field.glsl.d.ts +0 -4
- package/dist/components/fourier-field/shaders/fourier-field.render.wgsl.d.ts +0 -1
- package/dist/components/fourier-field/shaders/fourier-field.ribbon.d.ts +0 -51
- package/dist/components/handmark/brush.d.ts +0 -269
- package/dist/components/handmark/composables/useHandMark.d.ts +0 -99
- package/dist/components/handmark/constants.d.ts +0 -69
- package/dist/components/handmark/freehand.d.ts +0 -69
- package/dist/components/handmark/geometry.d.ts +0 -65
- package/dist/components/handmark/ink.d.ts +0 -11
- package/dist/components/handmark/noise.d.ts +0 -30
- package/dist/components/handmark/texture.d.ts +0 -39
- package/dist/components/handmark/types.d.ts +0 -70
- package/dist/components/header-ribbon/HeaderRibbon.vue.d.ts +0 -13
- package/dist/components/header-ribbon/index.d.ts +0 -2
- package/dist/components/header-ribbon/styles.css +0 -1
- package/dist/components/header-ribbon/types.d.ts +0 -10
- package/dist/components/instrument-chassis/InstrumentChassis.vue.d.ts +0 -23
- package/dist/components/instrument-chassis/index.d.ts +0 -2
- package/dist/components/instrument-chassis/styles.css +0 -1
- package/dist/components/instrument-chassis/types.d.ts +0 -13
- package/dist/components/labeled-field/LabeledSelect.vue.d.ts +0 -20
- package/dist/components/liquid-grid/LiquidGrid.vue.d.ts +0 -46
- package/dist/components/liquid-grid/composables/liquidGrid.d.ts +0 -113
- package/dist/components/liquid-grid/composables/liquidGridGLSetup.d.ts +0 -18
- package/dist/components/liquid-grid/composables/liquidGridWGPUSetup.d.ts +0 -21
- package/dist/components/liquid-grid/composables/uniformBridgeWGPU.d.ts +0 -16
- package/dist/components/liquid-grid/composables/useLiquidGrid.d.ts +0 -32
- package/dist/components/liquid-grid/constants.d.ts +0 -92
- package/dist/components/liquid-grid/index.d.ts +0 -5
- package/dist/components/liquid-grid/shaders/liquid-grid.glsl.d.ts +0 -4
- package/dist/components/liquid-grid/shaders/liquid-grid.wgsl.d.ts +0 -1
- package/dist/components/metric/MetricCell.vue.d.ts +0 -26
- package/dist/components/number-field/NumberFieldDecrement.vue.d.ts +0 -18
- package/dist/components/number-field/NumberFieldIncrement.vue.d.ts +0 -18
- package/dist/components/number-field/styles.css +0 -1
- package/dist/components/pager-dots/composables/usePagerWorm.d.ts +0 -26
- package/dist/components/pager-dots/constants.d.ts +0 -14
- package/dist/components/pager-dots/pagerWindow.d.ts +0 -9
- package/dist/components/paper-backdrop/PaperBackdrop.vue.d.ts +0 -8
- package/dist/components/paper-backdrop/index.d.ts +0 -2
- package/dist/components/pulse/Pulse.vue.d.ts +0 -14
- package/dist/components/pulse/index.d.ts +0 -2
- package/dist/components/radio-group/styles.css +0 -1
- package/dist/components/search/FuzzySearch.vue.d.ts +0 -24
- package/dist/components/search/SearchBar.vue.d.ts +0 -38
- package/dist/components/search/composables/index.d.ts +0 -5
- package/dist/components/search/index.d.ts +0 -9
- package/dist/components/search/searchVariants.d.ts +0 -17
- package/dist/components/select/SelectScrollDownButton.vue.d.ts +0 -17
- package/dist/components/select/SelectScrollUpButton.vue.d.ts +0 -17
- package/dist/components/sortable-list/composables/dragController.d.ts +0 -29
- package/dist/components/sortable-list/composables/dropResolver.d.ts +0 -34
- package/dist/components/sortable-list/composables/ghostRenderer.d.ts +0 -44
- package/dist/components/sortable-list/composables/index.d.ts +0 -1
- package/dist/components/sortable-list/composables/touchGate.d.ts +0 -26
- package/dist/components/sortable-list/composables/transitionTiming.d.ts +0 -50
- package/dist/components/switch/styles.css +0 -1
- package/dist/components/tabs/constants.d.ts +0 -1
- package/dist/components/tags-input/TagsInput.vue.d.ts +0 -41
- package/dist/components/tags-input/TagsInputInput.vue.d.ts +0 -10
- package/dist/components/tags-input/TagsInputItem.vue.d.ts +0 -19
- package/dist/components/tags-input/TagsInputItemDelete.vue.d.ts +0 -17
- package/dist/components/tags-input/TagsInputItemText.vue.d.ts +0 -7
- package/dist/components/tags-input/context.d.ts +0 -5
- package/dist/components/tags-input/index.d.ts +0 -5
- package/dist/components/tags-input/styles.css +0 -1
- package/dist/components/timeline/ContinuousMarkers.vue.d.ts +0 -47
- package/dist/components/timeline/ContinuousRail.vue.d.ts +0 -23
- package/dist/components/timeline/ContinuousTimeline.vue.d.ts +0 -117
- package/dist/components/timeline/GlassTimeline.vue.d.ts +0 -113
- package/dist/components/timeline/ScrubberTimeline.vue.d.ts +0 -45
- package/dist/components/timeline/SegmentedTimeline.vue.d.ts +0 -45
- package/dist/components/toggle-group/styles.css +0 -1
- package/dist/components/toggle-group/toggleGroupContext.d.ts +0 -9
- package/dist/components/typewriter/composables/index.d.ts +0 -1
- package/dist/components/watercolor-dot/WatercolorDot.vue.d.ts +0 -61
- package/dist/components/watercolor-dot/index.d.ts +0 -3
- package/dist/components/watercolor-dot/prng.d.ts +0 -5
- package/dist/components/watercolor-dot/useWatercolorBlob.d.ts +0 -28
- package/dist/composables/glass/ambientHueHistogram.d.ts +0 -27
- package/dist/composables/glass/useSpecularPointer.d.ts +0 -52
- package/dist/composables/glass/wave/index.d.ts +0 -4
- package/dist/composables/glass/wave/waveField.d.ts +0 -136
- package/dist/composables/glass/wave/waveField.glsl.d.ts +0 -1
- package/dist/composables/glass/wave/waveField.wgsl.d.ts +0 -1
- package/dist/composables/glass/webgpu/index.d.ts +0 -3
- package/dist/composables/index.d.ts +0 -9
- package/dist/composables/motion/number/useCountup.d.ts +0 -30
- package/dist/composables/motion/number/useNumericTransition.d.ts +0 -56
- package/dist/composables/motion/reveal/bloomUpField.d.ts +0 -29
- package/dist/composables/motion/reveal/useBloomUp.d.ts +0 -33
- package/dist/composables/motion/reveal/useStaggerReveal.d.ts +0 -28
- package/dist/composables/motion/reveal/useTextHighlight.d.ts +0 -41
- package/dist/composables/motion/scroll/useScrollPin.d.ts +0 -49
- package/dist/configurator-M5OaIlJd.js +0 -311
- package/dist/data-table-BygKg6ZA.js +0 -491
- package/dist/dialog-TNRDkcE4.js +0 -385
- package/dist/dockContext-BUTlGRNJ.js +0 -13
- package/dist/drawer.d.ts +0 -1
- package/dist/drawer.js +0 -496
- package/dist/dropdown-menu-BlbnvMaZ.js +0 -507
- package/dist/dropdown-menu.d.ts +0 -1
- package/dist/floating-dB5TD88k.js +0 -7
- package/dist/flow.wgsl-Cd2GUkPx.js +0 -4
- package/dist/fonts/README.md +0 -120
- package/dist/fonts/fira-code/OFL.txt +0 -93
- package/dist/fonts/plus-jakarta-sans/OFL.txt +0 -93
- package/dist/forms.d.ts +0 -5
- package/dist/forms.js +0 -403
- package/dist/header-ribbon.d.ts +0 -1
- package/dist/header-ribbon.js +0 -43
- package/dist/instrument-chassis.d.ts +0 -1
- package/dist/instrument-chassis.js +0 -54
- package/dist/label-DnMqH7jr.js +0 -55
- package/dist/liquid-grid.d.ts +0 -1
- package/dist/liquid-grid.js +0 -1065
- package/dist/menuRowClass-Nh7CtMON.js +0 -12
- package/dist/number-field-Boe09SvX.js +0 -154
- package/dist/paper-backdrop.d.ts +0 -1
- package/dist/paper-backdrop.js +0 -23
- package/dist/popover-BQGYXZyO.js +0 -244
- package/dist/progress-DClbhRAT.js +0 -88
- package/dist/pulse.d.ts +0 -1
- package/dist/pulse.js +0 -42
- package/dist/resolveSurfaceClass-DCZ4PZcy.js +0 -6
- package/dist/search.d.ts +0 -1
- package/dist/search.js +0 -352
- package/dist/select-BcBAyLXA.js +0 -336
- package/dist/separator-CgZInrX-.js +0 -75
- package/dist/slider-DzqeQmMu.js +0 -162
- package/dist/springPresets-rCii5KqX.js +0 -52
- package/dist/styles/draw-in.css +0 -1
- package/dist/styles/glass/accent-tone.css +0 -1
- package/dist/styles/glass/grain-overlay.css +0 -1
- package/dist/styles/glass/material-roles.css +0 -1
- package/dist/styles/glass-refract.css +0 -1
- package/dist/styles/tokens/manifest.ts +0 -56
- package/dist/styles/tokens.ts +0 -54
- package/dist/switch-DZjQuFLa.js +0 -54
- package/dist/toggle-group-O6jBo7AE.js +0 -150
- package/dist/tooltip-Drx5qnw_.js +0 -148
- package/dist/useAccentTone-DyInfHXE.js +0 -23
- package/dist/useAnimatedNumber-WPtMz0AN.js +0 -40
- package/dist/useDocumentVisibility-Dh_TGXsU.js +0 -21
- package/dist/useFuzzySearch-CUnZknpm.js +0 -177
- package/dist/useIntersectionPause-B5mAU6XY.js +0 -39
- package/dist/useLeadTrail-AW1-zZcd.js +0 -74
- package/dist/useRAFLoop-B3YlWK4M.js +0 -98
- package/dist/useScrollProgress-CSFYXIZT.js +0 -43
- package/dist/useSelectionGroup-B5XplBbo.js +0 -132
- package/dist/useTabRovingFocus-YnWh-Ytr.js +0 -169
- package/dist/useTextHighlight-mfwNIC1f.js +0 -112
- package/dist/useTouchGate-B4mzQcHJ.js +0 -84
- package/dist/useUserInvalidAria-0GNrddMX.js +0 -25
- package/dist/watercolor-dot.d.ts +0 -1
- package/dist/watercolor-dot.js +0 -149
- /package/dist/components/_shared/{disclosure-context.d.ts → disclosure/disclosure-context.d.ts} +0 -0
- /package/dist/components/_shared/{valueDomain.d.ts → field/valueDomain.d.ts} +0 -0
- /package/dist/components/{dropdown-menu → menu}/DropdownMenuGroup.vue.d.ts +0 -0
- /package/dist/components/{dropdown-menu → menu}/DropdownMenuItem.vue.d.ts +0 -0
- /package/dist/components/{dropdown-menu → menu}/DropdownMenuLabel.vue.d.ts +0 -0
- /package/dist/components/{dropdown-menu → menu}/DropdownMenuSeparator.vue.d.ts +0 -0
- /package/dist/components/{dropdown-menu → menu}/DropdownMenuShortcut.vue.d.ts +0 -0
- /package/dist/components/{dropdown-menu → menu}/DropdownMenuSub.vue.d.ts +0 -0
- /package/dist/components/{dropdown-menu → menu}/DropdownMenuSubTrigger.vue.d.ts +0 -0
- /package/dist/components/{dropdown-menu/useMenuTrigger.d.ts → menu/context.d.ts} +0 -0
- /package/dist/{components/search/composables → composables/search}/types.d.ts +0 -0
package/dist/liquid-grid.js
DELETED
|
@@ -1,1065 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./_plugin-vue_export-helper-B3ysoDQm.js";
|
|
2
|
-
import { t } from "./usePointerVelocityField-DsIf7yyq.js";
|
|
3
|
-
import { cssToOklch as n, oklchToLinear as r } from "./color.js";
|
|
4
|
-
import { m as i, n as a, o, u as s } from "./color.wgsl-Ct5o9dpf.js";
|
|
5
|
-
import { a as c } from "./rendererStatus-BxUlBLVy.js";
|
|
6
|
-
import { n as l, t as u } from "./flow.wgsl-Cd2GUkPx.js";
|
|
7
|
-
import { computed as d, createElementBlock as f, createElementVNode as p, defineComponent as m, normalizeStyle as h, onMounted as g, onScopeDispose as _, openBlock as v, reactive as y, readonly as b, shallowRef as x, useTemplateRef as S, watch as C } from "vue";
|
|
8
|
-
//#region src/composables/glass/wave/waveField.ts
|
|
9
|
-
var w = Math.PI * 2;
|
|
10
|
-
function T(e, t, n, r, i, a) {
|
|
11
|
-
let o = ((e.x * n.x + e.y * n.y) * r - t * i) / w;
|
|
12
|
-
o -= Math.floor(o);
|
|
13
|
-
let s = (o - .5) * 2;
|
|
14
|
-
return Math.exp(-(s * s) / Math.max(a, .001));
|
|
15
|
-
}
|
|
16
|
-
function E(e, t, n, r, i, a, o) {
|
|
17
|
-
return T(e, t, n, r, i, a) * o;
|
|
18
|
-
}
|
|
19
|
-
function D(e, t, n, r, i, a, o, s) {
|
|
20
|
-
let c = Math.max(t, .001) * .5, l = E({
|
|
21
|
-
x: e.x + c,
|
|
22
|
-
y: e.y
|
|
23
|
-
}, n, r, i, a, o, s), u = E({
|
|
24
|
-
x: e.x - c,
|
|
25
|
-
y: e.y
|
|
26
|
-
}, n, r, i, a, o, s), d = E({
|
|
27
|
-
x: e.x,
|
|
28
|
-
y: e.y + c
|
|
29
|
-
}, n, r, i, a, o, s), f = E({
|
|
30
|
-
x: e.x,
|
|
31
|
-
y: e.y - c
|
|
32
|
-
}, n, r, i, a, o, s);
|
|
33
|
-
return {
|
|
34
|
-
x: (l - u) / (2 * c),
|
|
35
|
-
y: (d - f) / (2 * c)
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function O(e, t, n) {
|
|
39
|
-
let r = 1 - Math.abs((e.x - Math.floor(e.x)) * 2 - 1), i = 1 - Math.abs((e.y - Math.floor(e.y)) * 2 - 1), a = Math.min(r, i), o = Math.max(n.x, n.y) * 1.5, s = t, c = t + 2 * o, l = Math.max(c - s, 1e-6), u = Math.min(Math.max((a - s) / l, 0), 1);
|
|
40
|
-
return u * u * (3 - 2 * u);
|
|
41
|
-
}
|
|
42
|
-
function k(e, t, n, r) {
|
|
43
|
-
let i = e.x - t.x, a = e.y - t.y, o = i * i + a * a, s = Math.max(r, 1e-4), c = n * Math.exp(-o / (2 * s * s)), l = Math.cos(c), u = Math.sin(c);
|
|
44
|
-
return {
|
|
45
|
-
x: t.x + (l * i - u * a),
|
|
46
|
-
y: t.y + (u * i + l * a)
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
var A = 1.833333;
|
|
50
|
-
function j(e, t, n, r, i, a, o, s, c, l = .6) {
|
|
51
|
-
let u = T(t, n, r, i, a, o) * c, d = e({
|
|
52
|
-
x: t.x * l + n * .05,
|
|
53
|
-
y: t.y * l - n * .04
|
|
54
|
-
}), f = l * A, p = e({
|
|
55
|
-
x: t.x * f - n * .03,
|
|
56
|
-
y: t.y * f + n * .035
|
|
57
|
-
}), m = s * u;
|
|
58
|
-
return {
|
|
59
|
-
x: t.x + (d.x + p.x * .5) * m,
|
|
60
|
-
y: t.y + (d.y + p.y * .5) * m
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
//#endregion
|
|
64
|
-
//#region src/components/liquid-grid/composables/liquidGrid.ts
|
|
65
|
-
Math.PI * 2;
|
|
66
|
-
var M = .012, N = .03;
|
|
67
|
-
function P(e, t) {
|
|
68
|
-
let n = e * .1031 % 1, r = t * .1031 % 1, i = e * .1031 % 1;
|
|
69
|
-
n < 0 && (n += 1), r < 0 && (r += 1), i < 0 && (i += 1);
|
|
70
|
-
let a = n * (r + 33.33) + r * (i + 33.33) + i * (n + 33.33);
|
|
71
|
-
n += a, r += a, i += a;
|
|
72
|
-
let o = (n + r) * i % 1;
|
|
73
|
-
return o < 0 && (o += 1), o;
|
|
74
|
-
}
|
|
75
|
-
function F(e, t, n) {
|
|
76
|
-
return e + (t - e) * n;
|
|
77
|
-
}
|
|
78
|
-
function I(e, t) {
|
|
79
|
-
let n = Math.floor(e), r = Math.floor(t), i = e - n, a = t - r, o = i * i * i * (i * (i * 6 - 15) + 10), s = a * a * a * (a * (a * 6 - 15) + 10), c = P(n, r), l = P(n + 1, r), u = P(n, r + 1), d = P(n + 1, r + 1);
|
|
80
|
-
return F(F(c, l, o), F(u, d, o), s);
|
|
81
|
-
}
|
|
82
|
-
function L(e) {
|
|
83
|
-
let t = 0, n = .5, r = 1, i = e.x, a = e.y;
|
|
84
|
-
for (let e = 0; e < 3; e++) {
|
|
85
|
-
t += n * I(i * r, a * r);
|
|
86
|
-
let e = .8 * i - .6 * a, o = .6 * i + .8 * a;
|
|
87
|
-
i = e, a = o, r *= 2, n *= .5;
|
|
88
|
-
}
|
|
89
|
-
return t;
|
|
90
|
-
}
|
|
91
|
-
function R(e) {
|
|
92
|
-
let t = L({
|
|
93
|
-
x: e.x + M,
|
|
94
|
-
y: e.y
|
|
95
|
-
}) - L({
|
|
96
|
-
x: e.x - M,
|
|
97
|
-
y: e.y
|
|
98
|
-
}), n = L({
|
|
99
|
-
x: e.x,
|
|
100
|
-
y: e.y + M
|
|
101
|
-
}) - L({
|
|
102
|
-
x: e.x,
|
|
103
|
-
y: e.y - M
|
|
104
|
-
}), r = t / (2 * M);
|
|
105
|
-
return {
|
|
106
|
-
x: n / (2 * M),
|
|
107
|
-
y: -r
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
function z(e, t, n) {
|
|
111
|
-
let r = t - e, i = Math.abs(r) < 1e-9 ? r < 0 ? -1e-9 : 1e-9 : r, a = Math.min(Math.max((n - e) / i, 0), 1);
|
|
112
|
-
return a * a * (3 - 2 * a);
|
|
113
|
-
}
|
|
114
|
-
function B(e, t, n) {
|
|
115
|
-
return Math.min(Math.max(e, t), n);
|
|
116
|
-
}
|
|
117
|
-
function V(e, t, n) {
|
|
118
|
-
let r = 1 - Math.abs((e.x - Math.floor(e.x)) * 2 - 1), i = 1 - Math.abs((e.y - Math.floor(e.y)) * 2 - 1), a = B(t, n.x, .5), o = B(t, n.y, .5), s = n.x * 1.5, c = n.y * 1.5, l = z(a + s, a - s, r), u = z(o + c, o - c, i);
|
|
119
|
-
return l *= B(t / Math.max(a, 1e-6), 0, 1), u *= B(t / Math.max(o, 1e-6), 0, 1), l = F(l, t, B(n.x * 2 - 1, 0, 1)), u = F(u, t, B(n.y * 2 - 1, 0, 1)), Math.max(l, u);
|
|
120
|
-
}
|
|
121
|
-
function H(e, t, n) {
|
|
122
|
-
let r = j(R, {
|
|
123
|
-
x: e.x * n.gridScale,
|
|
124
|
-
y: e.y * n.gridScale
|
|
125
|
-
}, t, n.waveDir, n.waveK, n.waveOmega, n.waveSigma, n.twistMax, n.amp, N);
|
|
126
|
-
n.interactive > .5 && (r = k(r, n.cursor, n.bulgeStrength * n.bulgeMode, n.bulgeRadius));
|
|
127
|
-
let i = V(r, n.targetWidth, n.uvDeriv), a = Math.max(n.majorEvery, 1), o = {
|
|
128
|
-
x: r.x / a,
|
|
129
|
-
y: r.y / a
|
|
130
|
-
}, s = {
|
|
131
|
-
x: n.uvDeriv.x / a,
|
|
132
|
-
y: n.uvDeriv.y / a
|
|
133
|
-
}, c = V(o, n.targetWidthMajor, s), l = Math.max(i * n.minorAlpha, c * n.majorAlpha), u = n.faceAlpha ?? 0, d = n.faceReliefGain ?? 0, f = n.squashK ?? 0, p = n.baseInset ?? 0, m = n.lightDir ?? {
|
|
134
|
-
x: .6,
|
|
135
|
-
y: .8
|
|
136
|
-
}, h = {
|
|
137
|
-
x: Math.floor(r.x) + .5,
|
|
138
|
-
y: Math.floor(r.y) + .5
|
|
139
|
-
}, g = E(h, t, n.waveDir, n.waveK, n.waveOmega, n.waveSigma, n.amp), _ = D(h, 1, t, n.waveDir, n.waveK, n.waveOmega, n.waveSigma, n.amp), v = -_.x * d, y = -_.y * d, b = Math.hypot(v, y, 1), x = Math.hypot(m.x, m.y) || 1, S = B(.5 + (v * m.x + y * m.y) / (b * x) * .5, 0, 1), C = p * (1 - f * g), w = O(r, C, n.uvDeriv), T = w * u * n.fieldAlpha, A = B(S * .5 + g * .5, 0, 1);
|
|
140
|
-
return {
|
|
141
|
-
line: l,
|
|
142
|
-
alpha: l * n.fieldAlpha,
|
|
143
|
-
face: {
|
|
144
|
-
env: g,
|
|
145
|
-
h: g,
|
|
146
|
-
shade: S,
|
|
147
|
-
faceCov: w,
|
|
148
|
-
faceA: T,
|
|
149
|
-
rampT: A
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
function U(e, t) {
|
|
154
|
-
return e / Math.max(t, 1);
|
|
155
|
-
}
|
|
156
|
-
//#endregion
|
|
157
|
-
//#region src/components/liquid-grid/shaders/liquid-grid.wgsl.ts
|
|
158
|
-
var W = `
|
|
159
|
-
const TAU: f32 = 6.283185307179586;
|
|
160
|
-
|
|
161
|
-
// ── Paper-grid uniforms (the typed-struct source-of-truth — see uniformBridgeWGPU.ts) ──
|
|
162
|
-
struct LiquidGridUniforms {
|
|
163
|
-
// u0: (uTime, uGridScale, uMinorPitch, uMajorEvery)
|
|
164
|
-
u0: vec4<f32>,
|
|
165
|
-
// face: (uFaceAlpha, uFaceRelief, uSquashK, uBaseInset) — the height-lit FACE (re-points the retired warp lane)
|
|
166
|
-
face: vec4<f32>,
|
|
167
|
-
// warp2: (uAmplitude, uAspect, uLightDirX, uLightDirY) — aspect + the cel key-light
|
|
168
|
-
warp2: vec4<f32>,
|
|
169
|
-
// grid: (uTargetWidth, uTargetWidthMajor, uMinorAlpha, uMajorAlpha)
|
|
170
|
-
grid: vec4<f32>,
|
|
171
|
-
// field: (uFieldAlpha, uHasBackground, _pad, _pad)
|
|
172
|
-
field: vec4<f32>,
|
|
173
|
-
// cursor: (uCursorX, uCursorY, uSwirlStrength, uSwirlRadius)
|
|
174
|
-
cursor: vec4<f32>,
|
|
175
|
-
// cursor2: (uBulgeMode, uInteractive, _pad, _pad)
|
|
176
|
-
cursor2: vec4<f32>,
|
|
177
|
-
// line: (uLineColor.rgb (linear), _pad)
|
|
178
|
-
line: vec4<f32>,
|
|
179
|
-
// bg: (uBg.rgb (linear), _pad)
|
|
180
|
-
bg: vec4<f32>,
|
|
181
|
-
// wave: (waveDirX, waveDirY, waveK, waveOmega) — the traveling-wave crest
|
|
182
|
-
wave: vec4<f32>,
|
|
183
|
-
// wave2: (waveSigma, twistMax, _pad, amp) — the affine sheet-warp envelope (amp: spring-eased)
|
|
184
|
-
wave2: vec4<f32>,
|
|
185
|
-
// faceLo: (rose-umber trough.rgb (linear), _pad) — the warm-divergent ramp (FOLD B, 3-stop)
|
|
186
|
-
faceLo: vec4<f32>,
|
|
187
|
-
// faceMid: (ember-amber mid.rgb (linear), _pad)
|
|
188
|
-
faceMid: vec4<f32>,
|
|
189
|
-
// faceHi: (warm-wheat crest.rgb (linear), _pad)
|
|
190
|
-
faceHi: vec4<f32>,
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
@group(0) @binding(0) var<uniform> u: LiquidGridUniforms;
|
|
194
|
-
|
|
195
|
-
${a}
|
|
196
|
-
|
|
197
|
-
// ── The host noise basis (transcribes liquidGrid.ts hash21/valueNoise/potentialFBM) ──
|
|
198
|
-
// A quintic-faded 2D value-noise fbm potential — the SAME basis the dot-flow-field carries
|
|
199
|
-
// (so the suite speaks ONE noise basis). DECLARED ABOVE the curl splice (WGSL has no forward
|
|
200
|
-
// declaration — a function may only call one declared earlier).
|
|
201
|
-
fn hash21(x: f32, y: f32) -> f32 {
|
|
202
|
-
var px = fract(x * 0.1031);
|
|
203
|
-
var py = fract(y * 0.1031);
|
|
204
|
-
var pz = fract(x * 0.1031);
|
|
205
|
-
let d = px * (py + 33.33) + py * (pz + 33.33) + pz * (px + 33.33);
|
|
206
|
-
px = px + d;
|
|
207
|
-
py = py + d;
|
|
208
|
-
pz = pz + d;
|
|
209
|
-
return fract((px + py) * pz);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
fn valueNoise(x: f32, y: f32) -> f32 {
|
|
213
|
-
let ix = floor(x);
|
|
214
|
-
let iy = floor(y);
|
|
215
|
-
let fx = x - ix;
|
|
216
|
-
let fy = y - iy;
|
|
217
|
-
let ux = fx * fx * fx * (fx * (fx * 6.0 - 15.0) + 10.0);
|
|
218
|
-
let uy = fy * fy * fy * (fy * (fy * 6.0 - 15.0) + 10.0);
|
|
219
|
-
let a = hash21(ix, iy);
|
|
220
|
-
let b = hash21(ix + 1.0, iy);
|
|
221
|
-
let c = hash21(ix, iy + 1.0);
|
|
222
|
-
let d2 = hash21(ix + 1.0, iy + 1.0);
|
|
223
|
-
return mix(mix(a, b, ux), mix(c, d2, ux), uy);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// The 3-octave scalar fbm potential — the host noise basis the curl operator wraps.
|
|
227
|
-
fn potentialFBM(p: vec2f) -> f32 {
|
|
228
|
-
var v = 0.0;
|
|
229
|
-
var amp = 0.5;
|
|
230
|
-
var freq = 1.0;
|
|
231
|
-
var px = p.x;
|
|
232
|
-
var py = p.y;
|
|
233
|
-
for (var i = 0; i < 3; i = i + 1) {
|
|
234
|
-
v = v + amp * valueNoise(px * freq, py * freq);
|
|
235
|
-
// FBM_ROT mat2(0.8, 0.6, -0.6, 0.8) — same rotation as the shared chunk.
|
|
236
|
-
let rx = 0.8 * px - 0.6 * py;
|
|
237
|
-
let ry = 0.6 * px + 0.8 * py;
|
|
238
|
-
px = rx;
|
|
239
|
-
py = ry;
|
|
240
|
-
freq = freq * 2.0;
|
|
241
|
-
amp = amp * 0.5;
|
|
242
|
-
}
|
|
243
|
-
return v;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// The shared divergence-free 2D-curl operator (flow.wgsl.ts — the FIRST WGSL curl consumer).
|
|
247
|
-
${u}
|
|
248
|
-
|
|
249
|
-
// The shared traveling-wave WARP chunk (waveField.wgsl.ts — waveFlow/cursorSwirl/
|
|
250
|
-
// travelingEnvelope + the FACE leaf; splices AFTER valueNoise + curlFBM are declared). liquid-grid
|
|
251
|
-
// + concentric read the SAME waveFlow continuous affine sheet-warp (the DRY coupling — a leaf
|
|
252
|
-
// tune moves both).
|
|
253
|
-
|
|
254
|
-
const WAVE_FIELD_TAU: f32 = 6.283185307179586;
|
|
255
|
-
|
|
256
|
-
// The traveling-wave envelope — a moving Gaussian crest band sweeping along waveDir.
|
|
257
|
-
fn travelingEnvelope(pivot: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32) -> f32 {
|
|
258
|
-
let coord = dot(pivot, waveDir) * waveK - t * waveOmega;
|
|
259
|
-
let crest = fract(coord / WAVE_FIELD_TAU);
|
|
260
|
-
let z = (crest - 0.5) * 2.0;
|
|
261
|
-
return exp(-(z * z) / max(waveSigma, 1e-3));
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// The curl-direction scalar — the smooth low-freq director the per-cell twist follows.
|
|
265
|
-
fn curlScalar(cc: vec2f, t: f32) -> f32 {
|
|
266
|
-
let f = curlFBM(vec2f(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));
|
|
267
|
-
return clamp(f.x, -1.0, 1.0);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean
|
|
271
|
-
// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.
|
|
272
|
-
const WAVE_FIELD_TWIST_FLOOR: f32 = 0.62;
|
|
273
|
-
fn directedTwist(s: f32, floorMag: f32) -> f32 {
|
|
274
|
-
let mag = max(floorMag, abs(s));
|
|
275
|
-
let sgn = tanh(s * 6.0);
|
|
276
|
-
return sgn * mag;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
// ── The FACE leaf (the structurally-absent RE-INVENT — height-lit filled cell interior) ──
|
|
280
|
-
// DECLARED ABOVE cellTwist (no WGSL forward declaration): cellTwist rides cellHeight via the
|
|
281
|
-
// driver so twist + face read ONE envelope.
|
|
282
|
-
|
|
283
|
-
// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.
|
|
284
|
-
fn cellHeight(cc: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32, amp: f32) -> f32 {
|
|
285
|
-
return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the
|
|
289
|
-
// face both ride. The face samples height/relief at THIS pre-twist cc (the crest twist crosses
|
|
290
|
-
// the cell boundary → floor(twisted_g) would light a neighbouring cell). cc is in .xy and env in .z.
|
|
291
|
-
fn cellDriver(g: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,
|
|
292
|
-
waveSigma: f32, amp: f32) -> vec3f {
|
|
293
|
-
let cs = max(cellSize, 1e-3);
|
|
294
|
-
let cc = (floor(g / cs) + 0.5) * cs;
|
|
295
|
-
let env = cellHeight(cc, t, waveDir, waveK, waveOmega, waveSigma, amp);
|
|
296
|
-
return vec3f(cc, env);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
// The central-difference slope of cellHeight across a cell (eps = 0.5·cellSize) — derivative-
|
|
300
|
-
// FREE (NO dFdx on the height) → Safari WebGL2-safe. Returns ∇H.
|
|
301
|
-
fn faceRelief(cc: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,
|
|
302
|
-
waveSigma: f32, amp: f32) -> vec2f {
|
|
303
|
-
let eps = max(cellSize, 1e-3) * 0.5;
|
|
304
|
-
let hxp = cellHeight(cc + vec2f(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);
|
|
305
|
-
let hxm = cellHeight(cc - vec2f(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);
|
|
306
|
-
let hyp = cellHeight(cc + vec2f(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);
|
|
307
|
-
let hym = cellHeight(cc - vec2f(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);
|
|
308
|
-
return vec2f((hxp - hxm) / (2.0 * eps), (hyp - hym) / (2.0 * eps));
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
// Soft inset-square coverage inside a (warped) cell — the filled FACE plateau. d is the
|
|
312
|
-
// distance into the cell from the nearest gutter (the Golus triangle-wave); the inset retreats
|
|
313
|
-
// as it grows (the squash). aa = the shader's fwidth(g) (JS passes a fixed uvDeriv).
|
|
314
|
-
fn facePlateau(g: vec2f, inset: f32, uvDeriv: vec2f) -> f32 {
|
|
315
|
-
let tri = 1.0 - abs(fract(g) * 2.0 - 1.0);
|
|
316
|
-
let d = min(tri.x, tri.y);
|
|
317
|
-
let aa = max(uvDeriv.x, uvDeriv.y) * 1.5;
|
|
318
|
-
return smoothstep(inset, inset + 2.0 * aa, d);
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
// The cell-local twist about each cell's own center, gated by the traveling wave + directed
|
|
322
|
-
// by the curl flow. amp is the spring-eased envelope amplitude the JS host drives. FOLD C: the
|
|
323
|
-
// TWIST_FLOOR is crest-gated by env so OFF-crest cells relax to flat calm paper (the traveling
|
|
324
|
-
// read, not static foil).
|
|
325
|
-
fn cellTwist(g: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,
|
|
326
|
-
waveSigma: f32, twistMax: f32, shearMax: f32, amp: f32) -> vec2f {
|
|
327
|
-
let drv = cellDriver(g, cellSize, t, waveDir, waveK, waveOmega, waveSigma, amp);
|
|
328
|
-
let cc = drv.xy;
|
|
329
|
-
let env = drv.z;
|
|
330
|
-
let floorMag = WAVE_FIELD_TWIST_FLOOR * env; // FOLD C: crest-gated floor
|
|
331
|
-
let theta = twistMax * env * directedTwist(curlScalar(cc, t), floorMag);
|
|
332
|
-
let shear = shearMax * env * directedTwist(curlScalar(cc + vec2f(17.3, 9.1), t), floorMag);
|
|
333
|
-
let local = g - cc;
|
|
334
|
-
let ct = cos(theta);
|
|
335
|
-
let st = sin(theta);
|
|
336
|
-
var rot = vec2f(ct * local.x - st * local.y, st * local.x + ct * local.y);
|
|
337
|
-
rot.x = rot.x + shear * rot.y; // a small skew so the box MORPHS, not just rotates
|
|
338
|
-
return cc + rot;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
// The CONTINUOUS traveling-wave FLOW warp — the SMOOTH twin of cellTwist (no per-cell seam;
|
|
342
|
-
// for the level-set contours that shatter into a mesh under the cell discontinuity).
|
|
343
|
-
// warpFreq is the host-supplied curl-sampling spatial frequency (the caller's
|
|
344
|
-
// own coordinate units): an order of magnitude BELOW its grid frequency so the warp is locally
|
|
345
|
-
// affine (major lines bow as one smooth curve, no sub-cell crackle). LiquidGrid (cell-scale g0)
|
|
346
|
-
// passes ~0.03; concentric (unit-scale p) passes 0.6. The 1.833333 second-flow ratio transcribes
|
|
347
|
-
// WAVE_FLOW_SECOND_RATIO. Amplitude unchanged — curl magnitude is the intrinsic gradient at the
|
|
348
|
-
// fixed CURL_EPS, independent of warpFreq; the t-drift is host-agnostic.
|
|
349
|
-
fn waveFlow(g: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32,
|
|
350
|
-
twistMax: f32, amp: f32, warpFreq: f32) -> vec2f {
|
|
351
|
-
let env = travelingEnvelope(g, t, waveDir, waveK, waveOmega, waveSigma) * amp;
|
|
352
|
-
let f = curlFBM(vec2f(g.x * warpFreq + t * 0.05, g.y * warpFreq - t * 0.04));
|
|
353
|
-
let wf2 = warpFreq * 1.833333;
|
|
354
|
-
let f2 = curlFBM(vec2f(g.x * wf2 - t * 0.03, g.y * wf2 + t * 0.035));
|
|
355
|
-
let k = twistMax * env;
|
|
356
|
-
return g + (f + f2 * 0.5) * k;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
// The local cursor swirl — the finger twists the cells around it (re-aimed cursorBulge).
|
|
360
|
-
fn cursorSwirl(g: vec2f, cursor: vec2f, strength: f32, radius: f32) -> vec2f {
|
|
361
|
-
let to = g - cursor;
|
|
362
|
-
let d2 = dot(to, to);
|
|
363
|
-
let r = max(radius, 1e-4);
|
|
364
|
-
let theta = strength * exp(-d2 / (2.0 * r * r));
|
|
365
|
-
let ct = cos(theta);
|
|
366
|
-
let st = sin(theta);
|
|
367
|
-
return cursor + vec2f(ct * to.x - st * to.y, st * to.x + ct * to.y);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
// The LOW-octave value-noise topography — the scalar field concentric extracts contours of.
|
|
371
|
-
fn heightField(p: vec2f, octavesF: f32, seed: f32) -> f32 {
|
|
372
|
-
var v = 0.0;
|
|
373
|
-
var amp = 0.5;
|
|
374
|
-
var freq = 1.0;
|
|
375
|
-
var px = p.x + seed;
|
|
376
|
-
var py = p.y - seed;
|
|
377
|
-
let n = i32(clamp(octavesF, 1.0, 6.0));
|
|
378
|
-
for (var i = 0; i < 6; i = i + 1) {
|
|
379
|
-
if (i >= n) { break; }
|
|
380
|
-
v = v + amp * valueNoise(px * freq, py * freq);
|
|
381
|
-
let rx = 0.8 * px - 0.6 * py;
|
|
382
|
-
let ry = 0.6 * px + 0.8 * py;
|
|
383
|
-
px = rx;
|
|
384
|
-
py = ry;
|
|
385
|
-
freq = freq * 2.0;
|
|
386
|
-
amp = amp * 0.5;
|
|
387
|
-
}
|
|
388
|
-
return v;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
// The ω=√(g·k) breathing swell — basins inflate/deflate with weight.
|
|
392
|
-
fn waveSwell(t: f32, phase: f32) -> f32 {
|
|
393
|
-
return sin(t * 0.35 + phase) * 0.5 + sin(t * 0.21 + phase * 1.7) * 0.5;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
// ── §1 The crisp line: Ben Golus derivative-AA grid coverage (transcribes gridCoverage) ──
|
|
398
|
-
// targetWidth is the line half-width in grid units (lineWidthPx / minorPitchPx); uvDeriv is
|
|
399
|
-
// the per-axis screen-space derivative of g (length(vec2(dpdx, dpdy)) per axis). Returns
|
|
400
|
-
// line coverage [0..1] — exactly N device-pixels wide at ANY DPR/zoom (the blur-kill).
|
|
401
|
-
fn gridCoverage(g: vec2f, targetWidth: f32, uvDeriv: vec2f) -> f32 {
|
|
402
|
-
// triangle wave per axis: 0 at a line, 1 at the cell center.
|
|
403
|
-
let gridUV = 1.0 - abs(fract(g) * 2.0 - 1.0);
|
|
404
|
-
let drawWidth = clamp(vec2f(targetWidth), uvDeriv, vec2f(0.5));
|
|
405
|
-
let lineAA = uvDeriv * 1.5;
|
|
406
|
-
// smoothstep with edge0 > edge1 (Golus) → a falling edge.
|
|
407
|
-
var grid2 = smoothstep(drawWidth + lineAA, drawWidth - lineAA, gridUV);
|
|
408
|
-
// preserve thin-line intensity where the line is sub-drawWidth.
|
|
409
|
-
grid2 = grid2 * clamp(vec2f(targetWidth) / max(drawWidth, vec2f(1e-6)), vec2f(0.0), vec2f(1.0));
|
|
410
|
-
// Moiré suppression: fade toward the average where the cell packs tighter than a pixel.
|
|
411
|
-
grid2 = mix(grid2, vec2f(targetWidth), clamp(uvDeriv * 2.0 - 1.0, vec2f(0.0), vec2f(1.0)));
|
|
412
|
-
return max(grid2.x, grid2.y);
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
// ── The 3-stop warm-divergent FACE ramp (FOLD B — height-keyed, NOT a 2-point mid-park) ──
|
|
416
|
-
// trough (faceLo) → mid (faceMid) → crest (faceHi), keyed on rampT = mix(shade, h). All stops
|
|
417
|
-
// are warm hue ∈ [20,90] (the teal-navy purge clear by construction). Linear-space stops; the
|
|
418
|
-
// fs_main routes the result through the production OETF (FOLD E).
|
|
419
|
-
fn faceRamp(rampT: f32) -> vec3f {
|
|
420
|
-
let s = clamp(rampT, 0.0, 1.0);
|
|
421
|
-
if (s < 0.5) {
|
|
422
|
-
return mix(u.faceLo.rgb, u.faceMid.rgb, s * 2.0);
|
|
423
|
-
}
|
|
424
|
-
return mix(u.faceMid.rgb, u.faceHi.rgb, (s - 0.5) * 2.0);
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
// Full-screen-triangle (the pilot idiom): NDC corners (-1,-1),(3,-1),(-1,3) cover the
|
|
428
|
-
// viewport from a single 3-vertex draw — no vertex buffer.
|
|
429
|
-
struct VSOut {
|
|
430
|
-
@builtin(position) pos: vec4f,
|
|
431
|
-
@location(0) uv: vec2f, // domain [-1,1]², aspect-corrected x
|
|
432
|
-
};
|
|
433
|
-
|
|
434
|
-
@vertex
|
|
435
|
-
fn vs_main(@builtin(vertex_index) vi: u32) -> VSOut {
|
|
436
|
-
var corners = array<vec2f, 3>(
|
|
437
|
-
vec2f(-1.0, -1.0), vec2f(3.0, -1.0), vec2f(-1.0, 3.0),
|
|
438
|
-
);
|
|
439
|
-
let c = corners[vi];
|
|
440
|
-
var out: VSOut;
|
|
441
|
-
out.pos = vec4f(c, 0.0, 1.0);
|
|
442
|
-
out.uv = vec2f(c.x, c.y);
|
|
443
|
-
return out;
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
@fragment
|
|
447
|
-
fn fs_main(in: VSOut) -> @location(0) vec4f {
|
|
448
|
-
let aspect = max(u.warp2.y, 1e-4);
|
|
449
|
-
// aspect-correct the domain x so the cells read square.
|
|
450
|
-
let uv = vec2f(in.uv.x * aspect, in.uv.y);
|
|
451
|
-
let t = u.u0.x;
|
|
452
|
-
let gridScale = u.u0.y;
|
|
453
|
-
|
|
454
|
-
// §5 the per-pixel kernel: AFFINE sheet-warp + cursor-swirl the grid coordinate, then two-tier
|
|
455
|
-
// Golus. waveFlow is the SMOOTH continuous domain transform (the SAME warp concentric reads) —
|
|
456
|
-
// a low-order curl-flow displacement gated by the traveling wave, locally affine at the cell
|
|
457
|
-
// scale, so the sheet bows/shears as ONE coherent transform (major lines a single smooth curve,
|
|
458
|
-
// no per-cell seam); cursorSwirl twists the cells about the finger. The Golus dv reads the FINAL
|
|
459
|
-
// warped coord (the crisp-line fence survives).
|
|
460
|
-
let g0 = uv * gridScale;
|
|
461
|
-
// g0 is CELL-scale, so pass the tiny 0.03 curl-sampling frequency (== the JS
|
|
462
|
-
// LIQUID_GRID_WARP_FREQ) so the warp is locally affine at the cell scale (major lines bow as ONE
|
|
463
|
-
// smooth curve, no sub-cell crackle). Concentric passes 0.6 (its p is unit-scale).
|
|
464
|
-
var g = waveFlow(g0, t, u.wave.xy, u.wave.z, u.wave.w, u.wave2.x, u.wave2.y, u.wave2.w, 0.03);
|
|
465
|
-
if (u.cursor2.y > 0.5) {
|
|
466
|
-
// bulgeMode (cursor2.x: +repel, −attract) signs the swirl direction.
|
|
467
|
-
g = cursorSwirl(g, u.cursor.xy, u.cursor.z * u.cursor2.x, u.cursor.w);
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
// The screen-space derivative of g (Golus): length(vec2(dpdx, dpdy)) per axis. fwidth-class
|
|
471
|
-
// derivative reads the ACTUAL backing-store pixel (NOT fwidthFine — Compatibility-Mode safe).
|
|
472
|
-
let dv = vec2f(
|
|
473
|
-
length(vec2f(dpdx(g.x), dpdy(g.x))),
|
|
474
|
-
length(vec2f(dpdx(g.y), dpdy(g.y))),
|
|
475
|
-
);
|
|
476
|
-
|
|
477
|
-
let minor = gridCoverage(g, u.grid.x, dv);
|
|
478
|
-
// The major tier evaluates at g / majorEvery with its own derivative scaling.
|
|
479
|
-
let me = max(u.u0.w, 1.0);
|
|
480
|
-
let major = gridCoverage(g / me, u.grid.y, dv / me);
|
|
481
|
-
let line = max(minor * u.grid.z, major * u.grid.w);
|
|
482
|
-
|
|
483
|
-
// ── The FACE — height-lit filled cell interior ──────────────────
|
|
484
|
-
// Sample height/relief at the WARPED-space cell center (floor(g)+0.5, the cell the fragment
|
|
485
|
-
// lands in under the affine warp); Lambert the ∇H slope against the fixed cel key-light; squash
|
|
486
|
-
// the inset so the crest face inflates; multi-stop warm-divergent ramp keyed on mix(shade, h)
|
|
487
|
-
// (FOLD B); the ink through the production OETF (FOLD E).
|
|
488
|
-
let cc = floor(g) + vec2f(0.5);
|
|
489
|
-
let h = cellHeight(cc, t, u.wave.xy, u.wave.z, u.wave.w, u.wave2.x, u.wave2.w);
|
|
490
|
-
let grad = faceRelief(cc, 1.0, t, u.wave.xy, u.wave.z, u.wave.w, u.wave2.x, u.wave2.w);
|
|
491
|
-
let n = normalize(vec3f(-grad * u.face.y, 1.0));
|
|
492
|
-
let shade = clamp(0.5 + dot(n, normalize(vec3f(u.warp2.zw, 1.0))) * 0.5, 0.0, 1.0);
|
|
493
|
-
let inset = u.face.w * (1.0 - u.face.z * h); // squash & stretch
|
|
494
|
-
let face = facePlateau(g, inset, dv);
|
|
495
|
-
let rampT = clamp(shade * 0.5 + h * 0.5, 0.0, 1.0); // FOLD B — height-keyed crest
|
|
496
|
-
let faceInk = clamp(linearToSrgb(faceRamp(rampT)), vec3f(0.0), vec3f(1.0));
|
|
497
|
-
let faceA = face * u.face.x * u.field.x; // FOLD D — one field-blend scalar
|
|
498
|
-
|
|
499
|
-
let col = clamp(linearToSrgb(u.line.rgb), vec3f(0.0), vec3f(1.0));
|
|
500
|
-
let hasBg = u.field.y;
|
|
501
|
-
if (hasBg > 0.5) {
|
|
502
|
-
// opaque ground: the face fills the cell, the ink over the themed bg, the line on top.
|
|
503
|
-
let bg = clamp(linearToSrgb(u.bg.rgb), vec3f(0.0), vec3f(1.0));
|
|
504
|
-
let base = mix(bg, faceInk, faceA);
|
|
505
|
-
let a = line * u.field.x;
|
|
506
|
-
let outRgb = mix(base, col, a);
|
|
507
|
-
return vec4f(outRgb, 1.0);
|
|
508
|
-
}
|
|
509
|
-
// transparent ground: the FACE composites UNDER the line, the SOURCE-OVER operator in
|
|
510
|
-
// PREMULTIPLIED space (the page reads through the gutters). faceAlpha:0 → faceA=0 → the face
|
|
511
|
-
// term vanishes → vec4f(col·line, line) = the line-only render.
|
|
512
|
-
let linePremult = (col * line) * u.field.x; // line layer (the FieldAlpha global subtlety)
|
|
513
|
-
let lineA = line * u.field.x;
|
|
514
|
-
let facePremult = faceInk * faceA; // face layer premultiplied (faceA folds field.x)
|
|
515
|
-
let outPremult = linePremult + facePremult * (1.0 - lineA);
|
|
516
|
-
let a = lineA + faceA * (1.0 - lineA);
|
|
517
|
-
return vec4f(outPremult, a); // premultiplied over transparent
|
|
518
|
-
}
|
|
519
|
-
`, G = {
|
|
520
|
-
u0: 0,
|
|
521
|
-
face: 4,
|
|
522
|
-
warp2: 8,
|
|
523
|
-
grid: 12,
|
|
524
|
-
field: 16,
|
|
525
|
-
cursor: 20,
|
|
526
|
-
cursor2: 24,
|
|
527
|
-
line: 28,
|
|
528
|
-
bg: 32,
|
|
529
|
-
wave: 36,
|
|
530
|
-
wave2: 40,
|
|
531
|
-
faceLo: 44,
|
|
532
|
-
faceMid: 48,
|
|
533
|
-
faceHi: 52
|
|
534
|
-
};
|
|
535
|
-
function K() {
|
|
536
|
-
let e = /* @__PURE__ */ new ArrayBuffer(224);
|
|
537
|
-
return {
|
|
538
|
-
buffer: e,
|
|
539
|
-
f32: new Float32Array(e)
|
|
540
|
-
};
|
|
541
|
-
}
|
|
542
|
-
function ee(e, t, n, i, a, o, s) {
|
|
543
|
-
let { f32: c } = e, l = U(a, t.cellSize);
|
|
544
|
-
c[G.u0 + 0] = n, c[G.u0 + 1] = l, c[G.u0 + 2] = t.cellSize, c[G.u0 + 3] = t.majorEvery, c[G.face + 0] = t.faceAlpha, c[G.face + 1] = t.faceRelief, c[G.face + 2] = t.squashK, c[G.face + 3] = t.baseInset, c[G.warp2 + 0] = 0, c[G.warp2 + 1] = i, c[G.warp2 + 2] = t.lightDir[0], c[G.warp2 + 3] = t.lightDir[1];
|
|
545
|
-
let u = Math.max(t.cellSize, 1), d = t.lineWidth / u, f = t.lineWidth * 1.6 / u;
|
|
546
|
-
c[G.grid + 0] = d, c[G.grid + 1] = f, c[G.grid + 2] = t.minorAlpha, c[G.grid + 3] = t.majorAlpha;
|
|
547
|
-
let p = t.background === "transparent" ? 0 : 1;
|
|
548
|
-
c[G.field + 0] = t.fieldAlpha, c[G.field + 1] = p, c[G.field + 2] = 0, c[G.field + 3] = 0, c[G.cursor + 0] = o.x, c[G.cursor + 1] = o.y, c[G.cursor + 2] = t.bulgeStrength, c[G.cursor + 3] = t.bulgeRadius, c[G.cursor2 + 0] = t.bulgeMode === "attract" ? -1 : 1, c[G.cursor2 + 1] = +!!t.interactive, c[G.cursor2 + 2] = 0, c[G.cursor2 + 3] = 0;
|
|
549
|
-
let m = r(t.lineColor);
|
|
550
|
-
if (c[G.line + 0] = m[0], c[G.line + 1] = m[1], c[G.line + 2] = m[2], c[G.line + 3] = 0, t.background === "transparent") c[G.bg + 0] = 0, c[G.bg + 1] = 0, c[G.bg + 2] = 0, c[G.bg + 3] = 0;
|
|
551
|
-
else {
|
|
552
|
-
let e = r(t.background);
|
|
553
|
-
c[G.bg + 0] = e[0], c[G.bg + 1] = e[1], c[G.bg + 2] = e[2], c[G.bg + 3] = 0;
|
|
554
|
-
}
|
|
555
|
-
c[G.wave + 0] = t.waveDir[0], c[G.wave + 1] = t.waveDir[1], c[G.wave + 2] = t.waveK, c[G.wave + 3] = t.waveOmega, c[G.wave2 + 0] = t.waveSigma, c[G.wave2 + 1] = t.twistMax, c[G.wave2 + 2] = 0, c[G.wave2 + 3] = s;
|
|
556
|
-
let h = r(t.faceWarmLo), g = r(t.faceWarmMid), _ = r(t.faceWarmHi);
|
|
557
|
-
return c[G.faceLo + 0] = h[0], c[G.faceLo + 1] = h[1], c[G.faceLo + 2] = h[2], c[G.faceLo + 3] = 0, c[G.faceMid + 0] = g[0], c[G.faceMid + 1] = g[1], c[G.faceMid + 2] = g[2], c[G.faceMid + 3] = 0, c[G.faceHi + 0] = _[0], c[G.faceHi + 1] = _[1], c[G.faceHi + 2] = _[2], c[G.faceHi + 3] = 0, e;
|
|
558
|
-
}
|
|
559
|
-
//#endregion
|
|
560
|
-
//#region src/components/liquid-grid/composables/liquidGridWGPUSetup.ts
|
|
561
|
-
var te = 2;
|
|
562
|
-
function ne(e) {
|
|
563
|
-
let { canvas: t, config: n, getCursor: r, getAmp: i, shouldContinue: a, onFrame: o } = e;
|
|
564
|
-
return function(e, s, c) {
|
|
565
|
-
let l = e.createShaderModule({
|
|
566
|
-
label: "[LiquidGrid] liquid-grid.wgsl",
|
|
567
|
-
code: W
|
|
568
|
-
}), u = K(), d = e.createBuffer({
|
|
569
|
-
label: "[LiquidGrid] uniforms",
|
|
570
|
-
size: u.buffer.byteLength,
|
|
571
|
-
usage: 72
|
|
572
|
-
}), f = e.createBindGroupLayout({
|
|
573
|
-
label: "[LiquidGrid] bgl",
|
|
574
|
-
entries: [{
|
|
575
|
-
binding: 0,
|
|
576
|
-
visibility: te,
|
|
577
|
-
buffer: { type: "uniform" }
|
|
578
|
-
}]
|
|
579
|
-
}), p = e.createRenderPipeline({
|
|
580
|
-
label: "[LiquidGrid] pipeline",
|
|
581
|
-
layout: e.createPipelineLayout({ bindGroupLayouts: [f] }),
|
|
582
|
-
vertex: {
|
|
583
|
-
module: l,
|
|
584
|
-
entryPoint: "vs_main"
|
|
585
|
-
},
|
|
586
|
-
fragment: {
|
|
587
|
-
module: l,
|
|
588
|
-
entryPoint: "fs_main",
|
|
589
|
-
targets: [{
|
|
590
|
-
format: c,
|
|
591
|
-
blend: {
|
|
592
|
-
color: {
|
|
593
|
-
srcFactor: "one",
|
|
594
|
-
dstFactor: "one-minus-src-alpha",
|
|
595
|
-
operation: "add"
|
|
596
|
-
},
|
|
597
|
-
alpha: {
|
|
598
|
-
srcFactor: "one",
|
|
599
|
-
dstFactor: "one-minus-src-alpha",
|
|
600
|
-
operation: "add"
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
}]
|
|
604
|
-
},
|
|
605
|
-
primitive: { topology: "triangle-list" }
|
|
606
|
-
}), m = e.createBindGroup({
|
|
607
|
-
label: "[LiquidGrid] bg",
|
|
608
|
-
layout: f,
|
|
609
|
-
entries: [{
|
|
610
|
-
binding: 0,
|
|
611
|
-
resource: { buffer: d }
|
|
612
|
-
}]
|
|
613
|
-
});
|
|
614
|
-
function h(e) {}
|
|
615
|
-
function g(a) {
|
|
616
|
-
o?.(a);
|
|
617
|
-
let c = t.width / Math.max(t.height, 1), l = t.height || 1;
|
|
618
|
-
ee(u, n, a, c, l, r(), i()), e.queue.writeBuffer(d, 0, u.buffer);
|
|
619
|
-
let f = e.createCommandEncoder({ label: "[LiquidGrid] frame" }), h = s.getCurrentTexture().createView(), g = f.beginRenderPass({ colorAttachments: [{
|
|
620
|
-
view: h,
|
|
621
|
-
clearValue: {
|
|
622
|
-
r: 0,
|
|
623
|
-
g: 0,
|
|
624
|
-
b: 0,
|
|
625
|
-
a: 0
|
|
626
|
-
},
|
|
627
|
-
loadOp: "clear",
|
|
628
|
-
storeOp: "store"
|
|
629
|
-
}] });
|
|
630
|
-
g.setPipeline(p), g.setBindGroup(0, m), g.draw(3, 1, 0, 0), g.end(), e.queue.submit([f.finish()]);
|
|
631
|
-
}
|
|
632
|
-
return {
|
|
633
|
-
frame: g,
|
|
634
|
-
shouldContinue: a,
|
|
635
|
-
resize: h,
|
|
636
|
-
teardown: () => {
|
|
637
|
-
d.destroy();
|
|
638
|
-
}
|
|
639
|
-
};
|
|
640
|
-
};
|
|
641
|
-
}
|
|
642
|
-
//#endregion
|
|
643
|
-
//#region src/composables/glass/wave/waveField.glsl.ts
|
|
644
|
-
var re = "\n#ifndef WAVE_FIELD_TAU\n#define WAVE_FIELD_TAU 6.283185307179586\n#endif\n\n// The traveling-wave envelope — a moving Gaussian crest band sweeping along waveDir.\nfloat travelingEnvelope(vec2 pivot, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma) {\n float coord = dot(pivot, waveDir) * waveK - t * waveOmega;\n float crest = fract(coord / WAVE_FIELD_TAU);\n float z = (crest - 0.5) * 2.0;\n return exp(-(z * z) / max(waveSigma, 1e-3));\n}\n\n// The curl-direction scalar — the smooth low-freq director the per-cell twist follows.\nfloat curlScalar(vec2 cc, float t) {\n vec2 f = curlFBM(vec2(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));\n return clamp(f.x, -1.0, 1.0);\n}\n\n// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean\n// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.\n#ifndef WAVE_FIELD_TWIST_FLOOR\n#define WAVE_FIELD_TWIST_FLOOR 0.62\n#endif\nfloat directedTwist(float s, float floorMag) {\n float mag = max(floorMag, abs(s));\n float sgn = tanh(s * 6.0);\n return sgn * mag;\n}\n\n// ── The FACE leaf (the structurally-absent RE-INVENT — height-lit filled cell interior) ──\n// Defined ABOVE cellTwist: cellTwist rides cellHeight via the driver so twist + face read ONE\n// envelope.\n\n// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.\nfloat cellHeight(vec2 cc, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma, float amp) {\n return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n}\n\n// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the\n// face both ride. The face samples height/relief at THIS pre-twist cc (floor(twisted_g) at the\n// crest lights a neighbouring cell). cc is in .xy and env in .z.\nvec3 cellDriver(vec2 g, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float amp) {\n float cs = max(cellSize, 1e-3);\n vec2 cc = (floor(g / cs) + 0.5) * cs;\n float env = cellHeight(cc, t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec3(cc, env);\n}\n\n// The central-difference slope of cellHeight across a cell (eps = 0.5·cellSize) — derivative-\n// FREE (NO dFdx on the height) → Safari WebGL2-safe. Returns ∇H.\nvec2 faceRelief(vec2 cc, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float amp) {\n float eps = max(cellSize, 1e-3) * 0.5;\n float hxp = cellHeight(cc + vec2(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hxm = cellHeight(cc - vec2(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hyp = cellHeight(cc + vec2(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hym = cellHeight(cc - vec2(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec2((hxp - hxm) / (2.0 * eps), (hyp - hym) / (2.0 * eps));\n}\n\n// Soft inset-square coverage inside a (warped) cell — the filled FACE plateau. d is the distance\n// into the cell from the nearest gutter (the Golus triangle-wave); the inset retreats as it grows\n// (the squash). aa = the shader's fwidth(g) (JS passes a fixed uvDeriv).\nfloat facePlateau(vec2 g, float inset, vec2 uvDeriv) {\n vec2 tri = 1.0 - abs(fract(g) * 2.0 - 1.0);\n float d = min(tri.x, tri.y);\n float aa = max(uvDeriv.x, uvDeriv.y) * 1.5;\n return smoothstep(inset, inset + 2.0 * aa, d);\n}\n\n// The cell-local twist about each cell's own center, gated by the traveling wave + directed\n// by the curl flow. amp is the spring-eased envelope amplitude the JS host drives. FOLD C: the\n// TWIST_FLOOR is crest-gated by env so OFF-crest cells relax to flat calm paper (the traveling\n// read, not static foil).\nvec2 cellTwist(vec2 g, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float twistMax, float shearMax, float amp) {\n vec3 drv = cellDriver(g, cellSize, t, waveDir, waveK, waveOmega, waveSigma, amp);\n vec2 cc = drv.xy;\n float env = drv.z;\n float floorMag = WAVE_FIELD_TWIST_FLOOR * env; // FOLD C: crest-gated floor\n float theta = twistMax * env * directedTwist(curlScalar(cc, t), floorMag);\n float shear = shearMax * env * directedTwist(curlScalar(cc + vec2(17.3, 9.1), t), floorMag);\n vec2 local = g - cc;\n float ct = cos(theta);\n float st = sin(theta);\n vec2 rot = vec2(ct * local.x - st * local.y, st * local.x + ct * local.y);\n rot.x += shear * rot.y; // a small skew so the box MORPHS, not just rotates\n return cc + rot;\n}\n\n// The CONTINUOUS traveling-wave FLOW warp — the SMOOTH twin of cellTwist (no per-cell seam;\n// for the level-set contours that shatter into a mesh under the cell discontinuity).\n// warpFreq is the host-supplied curl-sampling spatial frequency (the caller's\n// own coordinate units): an order of magnitude BELOW its grid frequency so the warp is locally\n// affine (major lines bow as one smooth curve, no sub-cell crackle). LiquidGrid (cell-scale g0)\n// passes ~0.03; concentric (unit-scale p) passes 0.6. The 1.833333 second-flow ratio transcribes\n// WAVE_FLOW_SECOND_RATIO. Amplitude unchanged — curl magnitude is the intrinsic gradient at the\n// fixed CURL_EPS, independent of warpFreq; the t-drift is host-agnostic.\nvec2 waveFlow(vec2 g, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma,\n float twistMax, float amp, float warpFreq) {\n float env = travelingEnvelope(g, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n vec2 f = curlFBM(vec2(g.x * warpFreq + t * 0.05, g.y * warpFreq - t * 0.04));\n float wf2 = warpFreq * 1.833333;\n vec2 f2 = curlFBM(vec2(g.x * wf2 - t * 0.03, g.y * wf2 + t * 0.035));\n float k = twistMax * env;\n return g + (f + f2 * 0.5) * k;\n}\n\n// The local cursor swirl — the finger twists the cells around it (re-aimed cursorBulge).\nvec2 cursorSwirl(vec2 g, vec2 cursor, float strength, float radius) {\n vec2 to = g - cursor;\n float d2 = dot(to, to);\n float r = max(radius, 1e-4);\n float theta = strength * exp(-d2 / (2.0 * r * r));\n float ct = cos(theta);\n float st = sin(theta);\n return cursor + vec2(ct * to.x - st * to.y, st * to.x + ct * to.y);\n}\n\n// The LOW-octave value-noise topography — the scalar field concentric extracts contours of.\nfloat heightField(vec2 p, float octavesF, float seed) {\n float v = 0.0;\n float amp = 0.5;\n float freq = 1.0;\n float px = p.x + seed;\n float py = p.y - seed;\n int n = int(clamp(octavesF, 1.0, 6.0));\n for (int i = 0; i < 6; i++) {\n if (i >= n) break;\n v += amp * valueNoise(px * freq, py * freq);\n float rx = 0.8 * px - 0.6 * py;\n float ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq *= 2.0;\n amp *= 0.5;\n }\n return v;\n}\n\n// The ω=√(g·k) breathing swell — basins inflate/deflate with weight.\nfloat waveSwell(float t, float phase) {\n return sin(t * 0.35 + phase) * 0.5 + sin(t * 0.21 + phase * 1.7) * 0.5;\n}\n", ie = "#version 300 es\nprecision highp float;\nin vec2 aPosition;\nout vec2 vUv;\nvoid main() {\n vUv = aPosition; // [-1,1]² domain\n gl_Position = vec4(aPosition, 0.0, 1.0);\n}", ae = `#version 300 es
|
|
645
|
-
precision highp float;
|
|
646
|
-
|
|
647
|
-
#define TAU 6.283185307179586
|
|
648
|
-
|
|
649
|
-
in vec2 vUv;
|
|
650
|
-
out vec4 fragColor;
|
|
651
|
-
|
|
652
|
-
uniform float uTime;
|
|
653
|
-
uniform float uGridScale;
|
|
654
|
-
uniform float uMajorEvery;
|
|
655
|
-
uniform float uAspect;
|
|
656
|
-
uniform vec4 uWarp; // (warpScale, warpSpeed, warpScale2, warpSpeed2)
|
|
657
|
-
uniform float uAmplitude;
|
|
658
|
-
uniform vec4 uGrid; // (targetWidth, targetWidthMajor, minorAlpha, majorAlpha)
|
|
659
|
-
uniform float uFieldAlpha;
|
|
660
|
-
uniform float uHasBackground;
|
|
661
|
-
uniform vec4 uCursor; // (cursorX, cursorY, swirlStrength, swirlRadius)
|
|
662
|
-
uniform float uBulgeMode; // +1 repel / −1 attract (signs the swirl)
|
|
663
|
-
uniform float uInteractive; // 1 = cursor swirl on
|
|
664
|
-
uniform vec4 uWave; // (waveDirX, waveDirY, waveK, waveOmega)
|
|
665
|
-
uniform vec4 uWave2; // (waveSigma, twistMax, _pad, amp) — affine sheet-warp envelope
|
|
666
|
-
uniform vec3 uLineColor; // linear-sRGB ink
|
|
667
|
-
uniform vec3 uBg; // linear-sRGB themed bg
|
|
668
|
-
// ── The FACE — the height-lit filled cell interior ──
|
|
669
|
-
uniform vec4 uFace; // (faceAlpha, faceRelief, squashK, baseInset)
|
|
670
|
-
uniform vec2 uLightDir; // the cel key-light direction
|
|
671
|
-
uniform vec3 uFaceLo; // linear-sRGB rose-umber trough (FOLD B, 3-stop)
|
|
672
|
-
uniform vec3 uFaceMid; // linear-sRGB ember-amber mid
|
|
673
|
-
uniform vec3 uFaceHi; // linear-sRGB warm-wheat crest
|
|
674
|
-
|
|
675
|
-
${o}
|
|
676
|
-
|
|
677
|
-
// The 3-stop warm-divergent FACE ramp (FOLD B — height-keyed, NOT a 2-point mid-park). All stops
|
|
678
|
-
// warm hue ∈ [20,90]; linear-space (the OETF runs in main, FOLD E).
|
|
679
|
-
vec3 faceRamp(float rampT) {
|
|
680
|
-
float s = clamp(rampT, 0.0, 1.0);
|
|
681
|
-
if (s < 0.5) {
|
|
682
|
-
return mix(uFaceLo, uFaceMid, s * 2.0);
|
|
683
|
-
}
|
|
684
|
-
return mix(uFaceMid, uFaceHi, (s - 0.5) * 2.0);
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
// The shared divergence-free 2D-curl operator (flow.glsl.ts) — the prototype declares
|
|
688
|
-
// potentialFBM; the host defines its BODY below the splice (GLSL forward-declaration).
|
|
689
|
-
${l}
|
|
690
|
-
|
|
691
|
-
// ── The host noise basis (transcribes liquidGrid.ts hash21/valueNoise/potentialFBM) ──
|
|
692
|
-
float hash21(float x, float y) {
|
|
693
|
-
float px = fract(x * 0.1031);
|
|
694
|
-
float py = fract(y * 0.1031);
|
|
695
|
-
float pz = fract(x * 0.1031);
|
|
696
|
-
float d = px * (py + 33.33) + py * (pz + 33.33) + pz * (px + 33.33);
|
|
697
|
-
px += d;
|
|
698
|
-
py += d;
|
|
699
|
-
pz += d;
|
|
700
|
-
return fract((px + py) * pz);
|
|
701
|
-
}
|
|
702
|
-
|
|
703
|
-
float valueNoise(float x, float y) {
|
|
704
|
-
float ix = floor(x);
|
|
705
|
-
float iy = floor(y);
|
|
706
|
-
float fx = x - ix;
|
|
707
|
-
float fy = y - iy;
|
|
708
|
-
float ux = fx * fx * fx * (fx * (fx * 6.0 - 15.0) + 10.0);
|
|
709
|
-
float uy = fy * fy * fy * (fy * (fy * 6.0 - 15.0) + 10.0);
|
|
710
|
-
float a = hash21(ix, iy);
|
|
711
|
-
float b = hash21(ix + 1.0, iy);
|
|
712
|
-
float c = hash21(ix, iy + 1.0);
|
|
713
|
-
float d2 = hash21(ix + 1.0, iy + 1.0);
|
|
714
|
-
return mix(mix(a, b, ux), mix(c, d2, ux), uy);
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
// The 3-octave scalar fbm potential — the curl chunk's forward-declared potentialFBM body.
|
|
718
|
-
float potentialFBM(vec2 p) {
|
|
719
|
-
float v = 0.0;
|
|
720
|
-
float amp = 0.5;
|
|
721
|
-
float freq = 1.0;
|
|
722
|
-
float px = p.x;
|
|
723
|
-
float py = p.y;
|
|
724
|
-
for (int i = 0; i < 3; i++) {
|
|
725
|
-
v += amp * valueNoise(px * freq, py * freq);
|
|
726
|
-
// FBM_ROT mat2(0.8, 0.6, -0.6, 0.8) — same rotation as the shared chunk.
|
|
727
|
-
float rx = 0.8 * px - 0.6 * py;
|
|
728
|
-
float ry = 0.6 * px + 0.8 * py;
|
|
729
|
-
px = rx;
|
|
730
|
-
py = ry;
|
|
731
|
-
freq *= 2.0;
|
|
732
|
-
amp *= 0.5;
|
|
733
|
-
}
|
|
734
|
-
return v;
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
// The shared traveling-wave WARP chunk (waveField.glsl.ts — waveFlow/cursorSwirl/
|
|
738
|
-
// travelingEnvelope + the FACE leaf; spliced AFTER valueNoise + potentialFBM bodies + the curlFBM
|
|
739
|
-
// chunk). liquid-grid + concentric read the SAME waveFlow continuous affine sheet-warp (the DRY
|
|
740
|
-
// coupling — a leaf tune moves both, never the retired per-cell twist or line warp).
|
|
741
|
-
${re}
|
|
742
|
-
|
|
743
|
-
// ── §1 The Ben Golus derivative-AA grid coverage (transcribes liquidGrid.ts gridCoverage) ──
|
|
744
|
-
float gridCoverage(vec2 g, float targetWidth, vec2 uvDeriv) {
|
|
745
|
-
vec2 gridUV = 1.0 - abs(fract(g) * 2.0 - 1.0);
|
|
746
|
-
vec2 drawWidth = clamp(vec2(targetWidth), uvDeriv, vec2(0.5));
|
|
747
|
-
vec2 lineAA = uvDeriv * 1.5;
|
|
748
|
-
vec2 grid2 = smoothstep(drawWidth + lineAA, drawWidth - lineAA, gridUV);
|
|
749
|
-
grid2 *= clamp(vec2(targetWidth) / max(drawWidth, vec2(1e-6)), vec2(0.0), vec2(1.0));
|
|
750
|
-
grid2 = mix(grid2, vec2(targetWidth), clamp(uvDeriv * 2.0 - 1.0, vec2(0.0), vec2(1.0)));
|
|
751
|
-
return max(grid2.x, grid2.y);
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
void main() {
|
|
755
|
-
float aspect = max(uAspect, 1e-4);
|
|
756
|
-
vec2 uv = vec2(vUv.x * aspect, vUv.y);
|
|
757
|
-
|
|
758
|
-
// §5 the per-pixel kernel: AFFINE sheet-warp + cursor-swirl the grid coordinate, then two-tier
|
|
759
|
-
// Golus. waveFlow is the SMOOTH continuous domain transform (the SAME warp concentric reads) —
|
|
760
|
-
// a low-order curl-flow displacement gated by the traveling wave, locally affine at the cell
|
|
761
|
-
// scale, so the sheet bows/shears as ONE coherent transform (major lines a single smooth curve,
|
|
762
|
-
// no per-cell seam); cursorSwirl twists the cells about the finger. The Golus dv reads the FINAL
|
|
763
|
-
// warped coord (the crisp-line fence survives).
|
|
764
|
-
vec2 g0 = uv * uGridScale;
|
|
765
|
-
// g0 is cell-scale, so pass the tiny 0.03 curl-sampling frequency (== the JS
|
|
766
|
-
// LIQUID_GRID_WARP_FREQ) so the warp is locally affine at the cell scale (major lines bow as ONE
|
|
767
|
-
// smooth curve, no sub-cell crackle). Concentric passes 0.6 (its p is unit-scale).
|
|
768
|
-
vec2 g = waveFlow(g0, uTime, uWave.xy, uWave.z, uWave.w, uWave2.x, uWave2.y, uWave2.w, 0.03);
|
|
769
|
-
if (uInteractive > 0.5) {
|
|
770
|
-
g = cursorSwirl(g, uCursor.xy, uCursor.z * uBulgeMode, uCursor.w);
|
|
771
|
-
}
|
|
772
|
-
|
|
773
|
-
// The screen-space derivative of g (Golus): length(vec2(dFdx, dFdy)) per axis (the actual
|
|
774
|
-
// backing-store pixel — NOT a CSS sub-pixel, the blur-kill).
|
|
775
|
-
vec2 dv = vec2(
|
|
776
|
-
length(vec2(dFdx(g.x), dFdy(g.x))),
|
|
777
|
-
length(vec2(dFdx(g.y), dFdy(g.y)))
|
|
778
|
-
);
|
|
779
|
-
|
|
780
|
-
float minor = gridCoverage(g, uGrid.x, dv);
|
|
781
|
-
float me = max(uMajorEvery, 1.0);
|
|
782
|
-
float major = gridCoverage(g / me, uGrid.y, dv / me);
|
|
783
|
-
float line = max(minor * uGrid.z, major * uGrid.w);
|
|
784
|
-
|
|
785
|
-
// ── The FACE — height-lit filled cell interior ──────────────────
|
|
786
|
-
// Sample height/relief at the WARPED-space cell center (floor(g)+0.5, the cell the fragment
|
|
787
|
-
// lands in under the affine warp); Lambert the ∇H slope against the fixed cel key-light; squash
|
|
788
|
-
// the inset so the crest face inflates; multi-stop warm-divergent ramp keyed on mix(shade, h)
|
|
789
|
-
// (FOLD B); the ink through the production OETF (FOLD E).
|
|
790
|
-
vec2 cc = floor(g) + 0.5;
|
|
791
|
-
float h = cellHeight(cc, uTime, uWave.xy, uWave.z, uWave.w, uWave2.x, uWave2.w);
|
|
792
|
-
vec2 grad = faceRelief(cc, 1.0, uTime, uWave.xy, uWave.z, uWave.w, uWave2.x, uWave2.w);
|
|
793
|
-
vec3 n = normalize(vec3(-grad * uFace.y, 1.0));
|
|
794
|
-
float shade = clamp(0.5 + dot(n, normalize(vec3(uLightDir, 1.0))) * 0.5, 0.0, 1.0);
|
|
795
|
-
float inset = uFace.w * (1.0 - uFace.z * h); // squash & stretch
|
|
796
|
-
float face = facePlateau(g, inset, dv);
|
|
797
|
-
float rampT = clamp(shade * 0.5 + h * 0.5, 0.0, 1.0); // FOLD B — height-keyed crest
|
|
798
|
-
vec3 faceInk = clamp(linearToSrgb(faceRamp(rampT)), vec3(0.0), vec3(1.0));
|
|
799
|
-
float faceA = face * uFace.x * uFieldAlpha; // FOLD D — one field-blend scalar
|
|
800
|
-
|
|
801
|
-
vec3 col = clamp(linearToSrgb(uLineColor), vec3(0.0), vec3(1.0));
|
|
802
|
-
if (uHasBackground > 0.5) {
|
|
803
|
-
vec3 bg = clamp(linearToSrgb(uBg), vec3(0.0), vec3(1.0));
|
|
804
|
-
vec3 base = mix(bg, faceInk, faceA);
|
|
805
|
-
float a = line * uFieldAlpha;
|
|
806
|
-
fragColor = vec4(mix(base, col, a), 1.0);
|
|
807
|
-
return;
|
|
808
|
-
}
|
|
809
|
-
// transparent ground: the FACE composites UNDER the line, the SOURCE-OVER operator in
|
|
810
|
-
// PREMULTIPLIED space. faceAlpha:0 → faceA=0 → the face term vanishes → vec4(col·line, line) =
|
|
811
|
-
// identical to the plain line-only render.
|
|
812
|
-
vec3 linePremult = (col * line) * uFieldAlpha; // line layer (the FieldAlpha subtlety)
|
|
813
|
-
float lineA = line * uFieldAlpha;
|
|
814
|
-
vec3 facePremult = faceInk * faceA; // face layer premultiplied (faceA folds field)
|
|
815
|
-
vec3 outPremult = linePremult + facePremult * (1.0 - lineA);
|
|
816
|
-
float a = lineA + faceA * (1.0 - lineA);
|
|
817
|
-
fragColor = vec4(outPremult, a); // premultiplied over transparent
|
|
818
|
-
}`;
|
|
819
|
-
//#endregion
|
|
820
|
-
//#region src/components/liquid-grid/composables/liquidGridGLSetup.ts
|
|
821
|
-
function q(e, t, n) {
|
|
822
|
-
let r = e.createShader(t);
|
|
823
|
-
if (e.shaderSource(r, n), e.compileShader(r), !e.getShaderParameter(r, e.COMPILE_STATUS)) {
|
|
824
|
-
let t = e.getShaderInfoLog(r);
|
|
825
|
-
throw e.deleteShader(r), Error(`[LiquidGrid] shader compile failed: ${t}`);
|
|
826
|
-
}
|
|
827
|
-
return r;
|
|
828
|
-
}
|
|
829
|
-
function oe(e) {
|
|
830
|
-
let { canvas: t, config: n, getCursor: i, getAmp: a, shouldContinue: o, onFrame: s } = e;
|
|
831
|
-
return function(e) {
|
|
832
|
-
let c = q(e, e.VERTEX_SHADER, ie), l = q(e, e.FRAGMENT_SHADER, ae), u = e.createProgram();
|
|
833
|
-
if (e.attachShader(u, c), e.attachShader(u, l), e.linkProgram(u), !e.getProgramParameter(u, e.LINK_STATUS)) throw Error(`[LiquidGrid] link failed: ${e.getProgramInfoLog(u)}`);
|
|
834
|
-
e.deleteShader(c), e.deleteShader(l);
|
|
835
|
-
let d = e.createVertexArray();
|
|
836
|
-
e.bindVertexArray(d);
|
|
837
|
-
let f = e.createBuffer();
|
|
838
|
-
e.bindBuffer(e.ARRAY_BUFFER, f), e.bufferData(e.ARRAY_BUFFER, new Float32Array([
|
|
839
|
-
-1,
|
|
840
|
-
-1,
|
|
841
|
-
3,
|
|
842
|
-
-1,
|
|
843
|
-
-1,
|
|
844
|
-
3
|
|
845
|
-
]), e.STATIC_DRAW);
|
|
846
|
-
let p = e.getAttribLocation(u, "aPosition");
|
|
847
|
-
e.enableVertexAttribArray(p), e.vertexAttribPointer(p, 2, e.FLOAT, !1, 0, 0), e.bindVertexArray(null);
|
|
848
|
-
let m = (t) => e.getUniformLocation(u, t), h = m("uTime"), g = m("uGridScale"), _ = m("uMajorEvery"), v = m("uAspect"), y = m("uGrid"), b = m("uFieldAlpha"), x = m("uHasBackground"), S = m("uCursor"), C = m("uBulgeMode"), w = m("uInteractive"), T = m("uWave"), E = m("uWave2"), D = m("uLineColor"), O = m("uBg"), k = m("uFace"), A = m("uLightDir"), j = m("uFaceLo"), M = m("uFaceMid"), N = m("uFaceHi");
|
|
849
|
-
function P(n) {
|
|
850
|
-
e.viewport(0, 0, n?.w ?? t.width, n?.h ?? t.height);
|
|
851
|
-
}
|
|
852
|
-
function F(o) {
|
|
853
|
-
s?.(o);
|
|
854
|
-
let c = t.width / Math.max(t.height, 1), l = U(t.height || 1, n.cellSize);
|
|
855
|
-
e.useProgram(u), e.bindVertexArray(d), e.enable(e.BLEND), e.blendFunc(e.ONE, e.ONE_MINUS_SRC_ALPHA), e.clearColor(0, 0, 0, 0), e.clear(e.COLOR_BUFFER_BIT), e.uniform1f(h, o), e.uniform1f(g, l), e.uniform1f(_, n.majorEvery), e.uniform1f(v, c), e.uniform4f(T, n.waveDir[0], n.waveDir[1], n.waveK, n.waveOmega), e.uniform4f(E, n.waveSigma, n.twistMax, 0, a()), e.uniform1f(w, +!!n.interactive);
|
|
856
|
-
let f = Math.max(n.cellSize, 1), p = n.lineWidth / f, m = n.lineWidth * 1.6 / f;
|
|
857
|
-
e.uniform4f(y, p, m, n.minorAlpha, n.majorAlpha), e.uniform1f(b, n.fieldAlpha);
|
|
858
|
-
let P = i();
|
|
859
|
-
e.uniform4f(S, P.x, P.y, n.bulgeStrength, n.bulgeRadius), e.uniform1f(C, n.bulgeMode === "attract" ? -1 : 1);
|
|
860
|
-
let F = r(n.lineColor);
|
|
861
|
-
e.uniform3f(D, F[0], F[1], F[2]), e.uniform4f(k, n.faceAlpha, n.faceRelief, n.squashK, n.baseInset), e.uniform2f(A, n.lightDir[0], n.lightDir[1]);
|
|
862
|
-
let I = r(n.faceWarmLo), L = r(n.faceWarmMid), R = r(n.faceWarmHi);
|
|
863
|
-
if (e.uniform3f(j, I[0], I[1], I[2]), e.uniform3f(M, L[0], L[1], L[2]), e.uniform3f(N, R[0], R[1], R[2]), n.background === "transparent") e.uniform1f(x, 0), e.uniform3f(O, 0, 0, 0);
|
|
864
|
-
else {
|
|
865
|
-
e.uniform1f(x, 1);
|
|
866
|
-
let t = r(n.background);
|
|
867
|
-
e.uniform3f(O, t[0], t[1], t[2]);
|
|
868
|
-
}
|
|
869
|
-
e.drawArrays(e.TRIANGLES, 0, 3), e.bindVertexArray(null);
|
|
870
|
-
}
|
|
871
|
-
return {
|
|
872
|
-
frame: F,
|
|
873
|
-
shouldContinue: o,
|
|
874
|
-
resize: P,
|
|
875
|
-
teardown: () => {
|
|
876
|
-
e.deleteProgram(u), e.deleteVertexArray(d), e.deleteBuffer(f);
|
|
877
|
-
}
|
|
878
|
-
};
|
|
879
|
-
};
|
|
880
|
-
}
|
|
881
|
-
//#endregion
|
|
882
|
-
//#region src/components/liquid-grid/composables/useLiquidGrid.ts
|
|
883
|
-
function J(e, n) {
|
|
884
|
-
let { config: r } = n, a = n.mode ?? "live", o = t({ respectReducedMotion: r.respectReducedMotion }), l = {
|
|
885
|
-
x: 1e6,
|
|
886
|
-
y: 1e6
|
|
887
|
-
}, u = () => l, d = 0, f = () => d, p = 0, m = null, h = x(c("webgpu")), g = !1;
|
|
888
|
-
function v(t) {
|
|
889
|
-
let n = p > 0 ? (t - p) * 1e3 : 16.7;
|
|
890
|
-
p = t;
|
|
891
|
-
let i = Math.min(Math.max(n, 0), 50);
|
|
892
|
-
if (o.tick(i), m?.reducedMotion ? d = 0 : (d += (1.06 - d) * .04, d > 1 && (d = 1 + (d - 1) * .85)), !r.interactive || !o.active.value) {
|
|
893
|
-
l = {
|
|
894
|
-
x: 1e6,
|
|
895
|
-
y: 1e6
|
|
896
|
-
};
|
|
897
|
-
return;
|
|
898
|
-
}
|
|
899
|
-
let a = e.value, s = (a?.width || 1) / Math.max(a?.height || 1, 1), c = U(a?.height || 320, r.cellSize), u = o.smoothedPosition.value, f = o.velocity.value, h = o.burst.value, g = (u.x * 2 - 1) * s, _ = -(u.y * 2 - 1), v = .12 + Math.min(.4, h);
|
|
900
|
-
l = {
|
|
901
|
-
x: (g + f.x * v) * c,
|
|
902
|
-
y: (_ - f.y * v) * c
|
|
903
|
-
};
|
|
904
|
-
}
|
|
905
|
-
let y = () => {
|
|
906
|
-
o.onPointerEnter(), r.interactive && m?.wake();
|
|
907
|
-
}, S = (e) => {
|
|
908
|
-
o.onPointerMove(e), r.interactive && m?.wake();
|
|
909
|
-
}, C = (e) => e.parentElement ?? e;
|
|
910
|
-
function w(e) {
|
|
911
|
-
let t = C(e);
|
|
912
|
-
t.addEventListener("pointermove", S), t.addEventListener("pointerenter", y), t.addEventListener("pointerleave", o.onPointerLeave);
|
|
913
|
-
}
|
|
914
|
-
function T(e) {
|
|
915
|
-
let t = C(e);
|
|
916
|
-
t.removeEventListener("pointermove", S), t.removeEventListener("pointerenter", y), t.removeEventListener("pointerleave", o.onPointerLeave);
|
|
917
|
-
}
|
|
918
|
-
let E = () => {
|
|
919
|
-
if (g) return null;
|
|
920
|
-
let t = e.value;
|
|
921
|
-
return t ? (m || (w(t), m = s(t, {
|
|
922
|
-
mode: a,
|
|
923
|
-
respectReducedMotion: r.respectReducedMotion,
|
|
924
|
-
dprPolicy: i,
|
|
925
|
-
revealBloom: !0,
|
|
926
|
-
setupWGPU: ne({
|
|
927
|
-
canvas: t,
|
|
928
|
-
config: r,
|
|
929
|
-
getCursor: u,
|
|
930
|
-
getAmp: f,
|
|
931
|
-
shouldContinue: () => !0,
|
|
932
|
-
onFrame: v
|
|
933
|
-
}),
|
|
934
|
-
setupGL: oe({
|
|
935
|
-
canvas: t,
|
|
936
|
-
config: r,
|
|
937
|
-
getCursor: u,
|
|
938
|
-
getAmp: f,
|
|
939
|
-
shouldContinue: () => !0,
|
|
940
|
-
onFrame: v
|
|
941
|
-
}),
|
|
942
|
-
onStatus: (e) => h.value = e
|
|
943
|
-
}), m.armAsync().catch(() => void 0)), m) : null;
|
|
944
|
-
};
|
|
945
|
-
queueMicrotask(() => E());
|
|
946
|
-
let D = {
|
|
947
|
-
get backend() {
|
|
948
|
-
return E()?.backend ?? "webgpu";
|
|
949
|
-
},
|
|
950
|
-
pause: () => E()?.suspend("manual"),
|
|
951
|
-
resume: () => E()?.resume("manual"),
|
|
952
|
-
wake: () => E()?.wake(),
|
|
953
|
-
renderAt: (e) => E()?.renderAt(e),
|
|
954
|
-
get reducedMotion() {
|
|
955
|
-
return m?.reducedMotion ?? !1;
|
|
956
|
-
},
|
|
957
|
-
rendererStatus: b(h),
|
|
958
|
-
dispose: () => {
|
|
959
|
-
if (g) return;
|
|
960
|
-
g = !0;
|
|
961
|
-
let t = e.value;
|
|
962
|
-
t && T(t), o.dispose(), m?.dispose();
|
|
963
|
-
}
|
|
964
|
-
};
|
|
965
|
-
return _(() => D.dispose()), D;
|
|
966
|
-
}
|
|
967
|
-
//#endregion
|
|
968
|
-
//#region src/components/liquid-grid/constants.ts
|
|
969
|
-
var se = 16, Y = {
|
|
970
|
-
L: .62,
|
|
971
|
-
C: .05,
|
|
972
|
-
h: 62
|
|
973
|
-
}, X = {
|
|
974
|
-
L: .44,
|
|
975
|
-
C: .07,
|
|
976
|
-
h: 32
|
|
977
|
-
}, Z = {
|
|
978
|
-
L: .66,
|
|
979
|
-
C: .12,
|
|
980
|
-
h: 58
|
|
981
|
-
}, Q = {
|
|
982
|
-
L: .9,
|
|
983
|
-
C: .1,
|
|
984
|
-
h: 84
|
|
985
|
-
}, $ = {
|
|
986
|
-
cellSize: 64,
|
|
987
|
-
majorEvery: 5,
|
|
988
|
-
minorAlpha: .12,
|
|
989
|
-
majorAlpha: .22,
|
|
990
|
-
lineWidth: 1,
|
|
991
|
-
twistMax: .62,
|
|
992
|
-
waveDir: [.92, .39],
|
|
993
|
-
waveK: .62,
|
|
994
|
-
waveOmega: 1.05,
|
|
995
|
-
waveSigma: .42,
|
|
996
|
-
fieldAlpha: 1,
|
|
997
|
-
bulgeStrength: .9,
|
|
998
|
-
bulgeRadius: 2.5,
|
|
999
|
-
bulgeMode: "repel",
|
|
1000
|
-
lineColor: Y,
|
|
1001
|
-
faceAlpha: 0,
|
|
1002
|
-
faceRelief: 2.6,
|
|
1003
|
-
squashK: .42,
|
|
1004
|
-
baseInset: .14,
|
|
1005
|
-
faceWarmLo: X,
|
|
1006
|
-
faceWarmMid: Z,
|
|
1007
|
-
faceWarmHi: Q,
|
|
1008
|
-
lightDir: [.6, .8],
|
|
1009
|
-
background: "transparent",
|
|
1010
|
-
interactive: !0,
|
|
1011
|
-
respectReducedMotion: !0
|
|
1012
|
-
}, ce = /*#__PURE__*/ e(/* @__PURE__ */ m({
|
|
1013
|
-
__name: "LiquidGrid",
|
|
1014
|
-
props: {
|
|
1015
|
-
config: { default: () => $ },
|
|
1016
|
-
paused: {
|
|
1017
|
-
type: Boolean,
|
|
1018
|
-
default: !1
|
|
1019
|
-
}
|
|
1020
|
-
},
|
|
1021
|
-
emits: ["update:paused", "rendererStatus"],
|
|
1022
|
-
setup(e, { expose: t, emit: r }) {
|
|
1023
|
-
let i = r, a = S("wrapperRef"), o = S("canvasRef"), s = y({ ...e.config });
|
|
1024
|
-
C(() => e.config, (e) => Object.assign(s, e), { deep: !0 }), g(() => {
|
|
1025
|
-
if (e.config.lineColor === $.lineColor) {
|
|
1026
|
-
let e = a.value;
|
|
1027
|
-
if (e) {
|
|
1028
|
-
let t = getComputedStyle(e).getPropertyValue("--foreground").trim();
|
|
1029
|
-
if (t) try {
|
|
1030
|
-
s.lineColor = n(t);
|
|
1031
|
-
} catch {}
|
|
1032
|
-
}
|
|
1033
|
-
}
|
|
1034
|
-
});
|
|
1035
|
-
let c = J(o, { config: s });
|
|
1036
|
-
C(c.rendererStatus, (e) => i("rendererStatus", e), {
|
|
1037
|
-
immediate: !0,
|
|
1038
|
-
flush: "sync"
|
|
1039
|
-
}), C(() => e.paused, (e) => e ? c.pause() : c.resume(), { immediate: !0 });
|
|
1040
|
-
let l = d(() => {
|
|
1041
|
-
let t = e.config.background;
|
|
1042
|
-
if (t !== "transparent") return `oklch(${t.L} ${t.C} ${t.h})`;
|
|
1043
|
-
});
|
|
1044
|
-
return t({
|
|
1045
|
-
pause: c.pause,
|
|
1046
|
-
resume: c.resume,
|
|
1047
|
-
wake: c.wake,
|
|
1048
|
-
renderAt: c.renderAt,
|
|
1049
|
-
rendererStatus: c.rendererStatus
|
|
1050
|
-
}), (e, t) => (v(), f("div", {
|
|
1051
|
-
ref_key: "wrapperRef",
|
|
1052
|
-
ref: a,
|
|
1053
|
-
class: "liquid-grid-wrapper",
|
|
1054
|
-
style: h(l.value ? { background: l.value } : void 0)
|
|
1055
|
-
}, [p("canvas", {
|
|
1056
|
-
ref_key: "canvasRef",
|
|
1057
|
-
ref: o,
|
|
1058
|
-
class: "liquid-grid-canvas",
|
|
1059
|
-
"aria-hidden": "true",
|
|
1060
|
-
"data-testid": "liquid-grid-canvas"
|
|
1061
|
-
}, null, 512)], 4));
|
|
1062
|
-
}
|
|
1063
|
-
}), [["__scopeId", "data-v-4075ca62"]]);
|
|
1064
|
-
//#endregion
|
|
1065
|
-
export { M as CURL_EPS, $ as DEFAULT_LIQUID_GRID_CONFIG, Q as FACE_WARM_HI, X as FACE_WARM_LO, Z as FACE_WARM_MID, se as LIQUID_GRID_MAX_MAJOR_EVERY, ce as LiquidGrid, Y as WARM_IDENTITY_INK, R as curlFBM, V as gridCoverage, U as gridScaleFor, L as potentialFBM, H as sampleLiquidGrid, J as useLiquidGrid };
|