@mkbabb/glass-ui 3.2.0 → 3.4.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/dist/{CardFooter-3-VGho1J.js → CardFooter-C390imy7.js} +2 -2
- package/dist/{CollapsibleContent-wlmlDujU.js → CollapsibleContent-cauTbZEM.js} +1 -1
- package/dist/{CommandShortcut-C6lsz3pG.js → CommandShortcut-BiVyqipe.js} +5 -4
- package/dist/DataTable-FfkaAg2z.js +465 -0
- package/dist/DialogContent-IQ8_BRrC.js +100 -0
- package/dist/{DiscoGlyph-B7YooI2-.js → DiscoGlyph-BaZ8OawK.js} +1 -1
- package/dist/{GlyphFace-Bvk6OIas.js → GlyphFace-B_7vOmYn.js} +1 -1
- package/dist/HoverPopover-DTSYkJtw.js +96 -0
- package/dist/{IconTooltip-DXveGjx7.js → IconTooltip-BTyYn4mr.js} +1 -1
- package/dist/Input-CU9CNKmo.js +52 -0
- package/dist/{MetricBadge-J_GBCb8e.js → MetricBadge-BlrdbOGN.js} +1 -1
- package/dist/{NumberFieldContent-B6L6YrQz.js → NumberFieldContent-iOTQ5rGO.js} +8 -4
- package/dist/{PopoverContent-CxEEUL7Y.js → PopoverContent-B8WtJECb.js} +1 -1
- package/dist/Progress-DjM86vfb.js +254 -0
- package/dist/{ScrollingText-1Qjnwz6H.js → ScrollingText-P9o_DuMn.js} +1 -1
- package/dist/{SelectScrollDownButton-BvvvAbuh.js → SelectScrollDownButton-BGn3rjs9.js} +9 -8
- package/dist/TabsIndicator-DA0x9gPr.js +97 -0
- package/dist/{ToggleGroupItem-Cy7xHFEo.js → ToggleGroupItem-gyXj998A.js} +37 -40
- package/dist/UnderlineTabs-Cq_AD03t.js +39 -0
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +2 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +454 -271
- package/dist/{button-DS3ULf5i.js → button-Ckn3eDfB.js} +27 -22
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +2 -2
- package/dist/collapsible.js +1 -1
- package/dist/color-rkK4RMx2.js +33 -0
- package/dist/color.d.ts +1 -0
- package/dist/color.js +2 -0
- package/dist/command.js +1 -1
- package/dist/compile-DVgAxagk.js +106 -0
- package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +7 -7
- package/dist/components/custom/aurora/Aurora.vue.d.ts +3 -3
- package/dist/components/custom/aurora/composables/color.d.ts +3 -25
- package/dist/components/custom/aurora/composables/cursorModel.d.ts +45 -0
- package/dist/components/custom/aurora/composables/frameLoop.d.ts +30 -0
- package/dist/components/custom/aurora/composables/glSetup.d.ts +29 -0
- package/dist/components/custom/aurora/composables/runtime.d.ts +45 -35
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +67 -0
- package/dist/components/custom/aurora/composables/useAurora.d.ts +14 -1
- package/dist/components/custom/aurora/composables/useCursorInteraction.d.ts +1 -1
- package/dist/components/custom/aurora/constants/budget.d.ts +50 -0
- package/dist/components/custom/aurora/{presets.d.ts → constants/presets.d.ts} +2 -5
- package/dist/components/custom/aurora/constants/shaders/aurora.frag.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/flow.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -0
- package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/index.d.ts +2 -2
- package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +14 -7
- package/dist/components/custom/configurator/density.d.ts +3 -8
- package/dist/components/custom/dock/DockBackgroundToggle.vue.d.ts +46 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +3 -3
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +2 -2
- package/dist/components/custom/dock/GlassDock.vue.d.ts +22 -18
- package/dist/components/custom/dock/composables/dockContext.d.ts +4 -4
- package/dist/components/custom/dock/composables/dockLayerContext.d.ts +13 -6
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +32 -8
- package/dist/components/custom/dock/index.d.ts +1 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
- package/dist/components/custom/glyph-face/keys.d.ts +3 -29
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +48 -0
- package/dist/components/custom/goo-blob/composables/easing.d.ts +6 -0
- package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +14 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +18 -0
- package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +13 -0
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +42 -0
- package/dist/components/custom/goo-blob/index.d.ts +7 -0
- package/dist/components/custom/goo-blob/shaders/metaball.frag.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/metaball.vert.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/oklch-perturb.glsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -0
- package/dist/components/custom/goo-blob/types.d.ts +77 -0
- package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +48 -9
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +2 -0
- package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -2
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +2 -2
- package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +13 -7
- package/dist/components/custom/search/FuzzySearch.vue.d.ts +1 -1
- package/dist/components/custom/search/SearchBar.vue.d.ts +1 -1
- package/dist/components/custom/sortable-list/SortableHandle.vue.d.ts +7 -1
- package/dist/components/custom/sortable-list/context.d.ts +2 -3
- package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +6 -3
- package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +7 -3
- package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +6 -3
- package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +39 -0
- package/dist/components/custom/timeline/ContinuousMarkers.vue.d.ts +49 -0
- package/dist/components/custom/timeline/ContinuousRail.vue.d.ts +26 -0
- package/dist/components/custom/timeline/ContinuousTimeline.vue.d.ts +4 -4
- package/dist/components/custom/typewriter/TypewriterText.vue.d.ts +2 -2
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +45 -0
- package/dist/components/custom/watercolor-dot/index.d.ts +3 -0
- package/dist/components/custom/watercolor-dot/prng.d.ts +5 -0
- package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +24 -0
- package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
- package/dist/components/ui/avatar/Avatar.vue.d.ts +1 -1
- package/dist/components/ui/avatar/AvatarImage.vue.d.ts +5 -1
- package/dist/components/ui/avatar/index.d.ts +1 -1
- package/dist/components/ui/badge/index.d.ts +2 -2
- package/dist/components/ui/button/Button.vue.d.ts +3 -1
- package/dist/components/ui/button/index.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
- package/dist/components/ui/combobox/Combobox.vue.d.ts +2 -2
- package/dist/components/ui/combobox/ComboboxInput.vue.d.ts +2 -1
- package/dist/components/ui/command/Command.vue.d.ts +3 -3
- package/dist/components/ui/command/CommandInput.vue.d.ts +2 -1
- package/dist/components/ui/data-table/DataTable.vue.d.ts +5 -4
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -0
- package/dist/components/ui/drawer/Drawer.vue.d.ts +4 -4
- package/dist/components/ui/input/Input.vue.d.ts +19 -1
- package/dist/components/ui/multi-select/MultiSelect.vue.d.ts +8 -4
- package/dist/components/ui/progress/Progress.vue.d.ts +26 -88
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -0
- package/dist/components/ui/progress/ProgressGradient.vue.d.ts +25 -0
- package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +36 -0
- package/dist/components/ui/progress/index.d.ts +5 -2
- package/dist/components/ui/progress/useProgressGeometry.d.ts +60 -0
- package/dist/components/ui/select/Select.vue.d.ts +2 -2
- package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/ui/select/SelectTrigger.vue.d.ts +3 -0
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/slider/index.d.ts +12 -11
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
- package/dist/components/ui/textarea/Textarea.vue.d.ts +5 -1
- package/dist/components/ui/toast/Toast.vue.d.ts +4 -4
- package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
- package/dist/components/ui/toggle/index.d.ts +1 -1
- package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +2 -3
- package/dist/composables/color/index.d.ts +49 -0
- package/dist/composables/context/createContext.d.ts +56 -0
- package/dist/composables/context/index.d.ts +1 -0
- package/dist/composables/dark/darkModeSyncScript.d.ts +23 -0
- package/dist/composables/dark/index.d.ts +3 -0
- package/dist/composables/dark/useGlobalDark.d.ts +19 -2
- package/dist/composables/dom/index.d.ts +0 -3
- package/dist/composables/dom/useClipboard.d.ts +35 -12
- package/dist/composables/dom/useDocumentVisibility.d.ts +20 -0
- package/dist/composables/glass/webgl/compile.d.ts +15 -0
- package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +3 -0
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +55 -0
- package/dist/composables/motion/core/index.d.ts +1 -1
- package/dist/composables/motion/index.d.ts +1 -1
- package/dist/composables/motion/useCountup.d.ts +29 -0
- package/dist/composables/motion/useNumericTransition.d.ts +14 -3
- package/dist/composables/motion/vReveal.d.ts +2 -0
- package/dist/composables/sidebar/useSidebarState.d.ts +2 -2
- package/dist/composables/sortable/dragController.d.ts +44 -0
- package/dist/composables/sortable/dropResolver.d.ts +34 -0
- package/dist/composables/sortable/ghostRenderer.d.ts +44 -0
- package/dist/composables/sortable/index.d.ts +1 -1
- package/dist/composables/sortable/touchGate.d.ts +26 -0
- package/dist/composables/sortable/transitionTiming.d.ts +50 -0
- package/dist/composables/sortable/types.d.ts +133 -0
- package/dist/composables/sortable/useSortable.d.ts +25 -153
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +1 -1
- package/dist/controls.js +4 -4
- package/dist/createContext-DBMGRlx4.js +25 -0
- package/dist/dark.d.ts +2 -1
- package/dist/dark.js +9 -2
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +1 -1
- package/dist/disco-glyph.js +1 -1
- package/dist/dock.js +400 -261
- package/dist/dockContext-spUj_-E5.js +9 -0
- package/dist/dom.js +6 -6
- package/dist/{dropdown-menu-naE0skDg.js → dropdown-menu-EFjl5iKo.js} +1 -1
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +26 -20
- package/dist/fonts/README.md +21 -0
- package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/dist/forms.js +68 -59
- package/dist/glass-panel.js +1 -1
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +226 -328
- package/dist/glyph-face.js +2 -2
- package/dist/goo-blob.d.ts +1 -0
- package/dist/goo-blob.js +538 -0
- package/dist/header-ribbon.js +2 -2
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/instrument-chassis.js +1 -1
- package/dist/instrument-rail.js +1 -1
- package/dist/keys-BFoma9vm.js +9 -0
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +57 -39
- package/dist/metric-badge.js +1 -1
- package/dist/motion-core.js +82 -123
- package/dist/motion.js +62 -14
- package/dist/number-field.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-BpTf63Hp.js → presets-1OhFpaIC.js} +1 -1
- package/dist/prng-Bz_1Tydc.js +15 -0
- package/dist/progress.js +2 -2
- package/dist/reactive.js +2 -2
- package/dist/responsive-tabs.js +38 -32
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +8 -8
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-wx8ifVFB.js → slider-BOh8ycfZ.js} +7 -11
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +36 -38
- package/dist/stacked-icons.js +2 -2
- package/dist/styles/animations.css +1 -1
- package/dist/styles/cards.css +1 -1
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock-controls.css +486 -0
- package/dist/styles/dock.css +284 -450
- package/dist/styles/fonts.css +25 -0
- package/dist/styles/glass-specular-track.css +154 -0
- package/dist/styles/glass.css +74 -2
- package/dist/styles/index.css +21 -2
- package/dist/styles/instrument-chassis.css +11 -4
- package/dist/styles/theme.css +73 -21
- package/dist/styles/tokens.css +271 -140
- package/dist/styles/typography.css +14 -8
- package/dist/styles/utilities.css +36 -8
- package/dist/styles/view-transition.css +10 -4
- package/dist/switch.js +1 -1
- package/dist/tabs.js +139 -112
- package/dist/timeline.js +219 -158
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tokens.d.ts +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{useAnimatedNumber-BOxrS3a6.js → useAnimatedNumber-BF6r64lA.js} +1 -1
- package/dist/useClipboard-D8vFyRCa.js +97 -0
- package/dist/{useConfiguratorState-Dq2gNv4A.js → useConfiguratorState-DUtC1jxr.js} +82 -86
- package/dist/useGlobalDark-CWiaCoEw.js +34 -0
- package/dist/useIntersectionPause-DAdVPVp4.js +53 -0
- package/dist/useSortable-DnyGXKKY.js +246 -0
- package/dist/{useTouchGate-XX8gHfay.js → useTouchGate-CS5Csc2h.js} +1 -1
- package/dist/utils/prng.d.ts +4 -0
- package/dist/vReveal-u2wSG2El.js +35 -0
- package/dist/watercolor-dot.d.ts +1 -0
- package/dist/watercolor-dot.js +129 -0
- package/package.json +101 -16
- package/src/fonts/README.md +21 -0
- package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/src/styles/animations.css +1 -1
- package/src/styles/cards.css +1 -1
- package/src/styles/dock-controls.css +486 -0
- package/src/styles/dock.css +284 -450
- package/src/styles/fonts.css +25 -0
- package/src/styles/glass-specular-track.css +154 -0
- package/src/styles/glass.css +74 -2
- package/src/styles/index.css +21 -2
- package/src/styles/instrument-chassis.css +11 -4
- package/src/styles/theme.css +73 -21
- package/src/styles/tokens.css +271 -140
- package/src/styles/typography.css +14 -8
- package/src/styles/utilities.css +36 -8
- package/src/styles/view-transition.css +10 -4
- package/dist/DataTable-BsrDYdoE.js +0 -460
- package/dist/DialogContent-B61rP8lj.js +0 -93
- package/dist/HoverPopover-BlEwqG7S.js +0 -96
- package/dist/Input-IFsIzId2.js +0 -30
- package/dist/Progress-Bs44qWEM.js +0 -126
- package/dist/UnderlineTabs-B4FV2zi_.js +0 -37
- package/dist/components/custom/aurora/shaders/aurora.frag.d.ts +0 -1
- package/dist/composables/dom/useBreakpoint.d.ts +0 -38
- package/dist/composables/dom/useIdleReady.d.ts +0 -63
- package/dist/composables/dom/useViewportReady.d.ts +0 -87
- package/dist/composables/glass/webgl/frostShader.d.ts +0 -27
- package/dist/composables/motion/useAnimatedNumberMap.d.ts +0 -29
- package/dist/composables/motion/useStagger.d.ts +0 -50
- package/dist/dockContext-DM58L1Jt.js +0 -16
- package/dist/keys-SIKQYNx1.js +0 -11
- package/dist/supportsCssTimeline-IQY3gfKD.js +0 -12
- package/dist/useGlobalDark-BUUTZvkU.js +0 -24
- package/dist/useIdleReady-sLhGo6CL.js +0 -162
- package/dist/useIntersectionPause-CUmANkoc.js +0 -39
- package/dist/useSortable-DLK9kwZp.js +0 -189
- /package/dist/{HoverCardContent-DGUhpRVt.js → HoverCardContent-ICfIMZX1.js} +0 -0
- /package/dist/{InstrumentChassis-CqKPBNqp.js → InstrumentChassis-DaHIZCqy.js} +0 -0
- /package/dist/{InstrumentRail-CCjvKkpB.js → InstrumentRail-B0qqLFN0.js} +0 -0
- /package/dist/{Label-D53EOwLE.js → Label-CZk-3nTc.js} +0 -0
- /package/dist/{PaperBackdrop-Ds-wDsKf.js → PaperBackdrop-D_YZW47j.js} +0 -0
- /package/dist/{SelectGroup-DAgcsfFw.js → SelectGroup-CMdoCjRE.js} +0 -0
- /package/dist/{SelectSeparator-DN1jzLaI.js → SelectSeparator-CaJnPF3_.js} +0 -0
- /package/dist/{Separator-DXxac0j8.js → Separator-C2XtAXRp.js} +0 -0
- /package/dist/{Switch-imA0Hdjs.js → Switch-x8n6husW.js} +0 -0
- /package/dist/{Toaster-Brs6QjBU.js → Toaster-DdhMKfus.js} +0 -0
- /package/dist/{TooltipProvider-MZFRxOvT.js → TooltipProvider-D-JrSqDu.js} +0 -0
- /package/dist/components/custom/aurora/{renderMode.d.ts → constants/renderMode.d.ts} +0 -0
- /package/dist/components/custom/aurora/{shaders → constants/shaders}/aurora.vert.d.ts +0 -0
- /package/dist/{constants-DfWPi8kh.js → constants-DsCdlK9I.js} +0 -0
- /package/dist/{sheet-BnvZRXPq.js → sheet-CQYYrkr9.js} +0 -0
- /package/dist/{useGlassRenderer-C98tZnJ7.js → useGlassRenderer-Dn3WpfG-.js} +0 -0
- /package/dist/{useInterval-B58LmYth.js → useInterval-CHVYFpXV.js} +0 -0
- /package/dist/{useResizeObserver-C_7GjpRn.js → useResizeObserver-DX-STszm.js} +0 -0
- /package/dist/{useTextHighlight-CLST6an0.js → useTextHighlight-Dmtofpk2.js} +0 -0
- /package/dist/{useTimer-6FoosoDY.js → useTimer-DGgoxTXL.js} +0 -0
- /package/dist/{useUserInvalidAria-BW5iyqWR.js → useUserInvalidAria-DmvZ_6Dx.js} +0 -0
- /package/dist/{useViewTransition-CUJM7fXT.js → useViewTransition-D4ssvnXZ.js} +0 -0
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebGL frost/refraction fragment shader for glass-ui.
|
|
3
|
-
*
|
|
4
|
-
* Features:
|
|
5
|
-
* - Frosted glass blur (Gaussian kernel with spatial variation)
|
|
6
|
-
* - Snell's law refraction displacement
|
|
7
|
-
* - Fresnel-based specular highlights
|
|
8
|
-
* - Chromatic aberration at glass edges
|
|
9
|
-
*/
|
|
10
|
-
/** Vertex shader — full-screen quad */
|
|
11
|
-
export declare const VERTEX_SHADER = "#version 300 es\nprecision highp float;\n\nin vec2 a_position;\nin vec2 a_texCoord;\n\nout vec2 v_texCoord;\n\nvoid main() {\n gl_Position = vec4(a_position, 0.0, 1.0);\n v_texCoord = a_texCoord;\n}\n";
|
|
12
|
-
/** Fragment shader — frosted glass with refraction and chromatic aberration */
|
|
13
|
-
export declare const FRAGMENT_SHADER = "#version 300 es\nprecision highp float;\n\nuniform sampler2D u_background; // Captured page content behind glass\nuniform vec2 u_resolution; // Canvas resolution (px)\nuniform vec4 u_glassBounds; // Glass panel rect (x, y, w, h) in UV space\nuniform float u_blurRadius; // Base blur radius (0-40)\nuniform float u_refractionStrength; // Refraction displacement (0-1)\nuniform float u_chromaticAberration; // Edge chromatic aberration (0-1)\nuniform vec2 u_lightPos; // Light source position (UV, 0-1)\nuniform float u_time; // Animation time (seconds)\n\nin vec2 v_texCoord;\nout vec4 fragColor;\n\n// Gaussian weight for blur kernel\nfloat gaussian(float x, float sigma) {\n return exp(-(x * x) / (2.0 * sigma * sigma));\n}\n\n// Distance from point to nearest edge of glass panel (in UV space)\nfloat edgeDistance(vec2 uv) {\n vec2 glassMin = u_glassBounds.xy;\n vec2 glassMax = u_glassBounds.xy + u_glassBounds.zw;\n vec2 d = min(uv - glassMin, glassMax - uv);\n return min(d.x, d.y);\n}\n\n// Fresnel approximation (Schlick)\nfloat fresnel(vec3 viewDir, vec3 normal, float ior) {\n float r0 = pow((1.0 - ior) / (1.0 + ior), 2.0);\n return r0 + (1.0 - r0) * pow(1.0 - max(dot(viewDir, normal), 0.0), 5.0);\n}\n\nvoid main() {\n vec2 uv = v_texCoord;\n vec2 pixelSize = 1.0 / u_resolution;\n\n // Check if fragment is inside the glass panel\n vec2 glassMin = u_glassBounds.xy;\n vec2 glassMax = u_glassBounds.xy + u_glassBounds.zw;\n\n if (uv.x < glassMin.x || uv.x > glassMax.x ||\n uv.y < glassMin.y || uv.y > glassMax.y) {\n fragColor = texture(u_background, uv);\n return;\n }\n\n // Progressive blur \u2014 stronger at center, weaker at edges\n float edgeDist = edgeDistance(uv);\n float maxEdgeDist = min(u_glassBounds.z, u_glassBounds.w) * 0.5;\n float blurFactor = smoothstep(0.0, maxEdgeDist * 0.3, edgeDist);\n float effectiveBlur = u_blurRadius * (0.4 + 0.6 * blurFactor);\n\n // Refraction displacement (Snell's law approximation)\n vec2 center = u_glassBounds.xy + u_glassBounds.zw * 0.5;\n vec2 fromCenter = uv - center;\n vec2 refractionOffset = fromCenter * u_refractionStrength * 0.02;\n\n // Gaussian blur with refraction offset\n vec3 blurColor = vec3(0.0);\n float totalWeight = 0.0;\n\n int samples = int(min(effectiveBlur * 2.0, 20.0));\n float sigma = max(effectiveBlur * 0.5, 0.1);\n\n for (int x = -10; x <= 10; x++) {\n for (int y = -10; y <= 10; y++) {\n if (abs(x) > samples || abs(y) > samples) continue;\n\n vec2 offset = vec2(float(x), float(y)) * pixelSize * effectiveBlur * 0.1;\n float weight = gaussian(float(x), sigma) * gaussian(float(y), sigma);\n\n vec2 sampleUV = uv + offset + refractionOffset;\n blurColor += texture(u_background, sampleUV).rgb * weight;\n totalWeight += weight;\n }\n }\n blurColor /= totalWeight;\n\n // Chromatic aberration at edges\n if (u_chromaticAberration > 0.0) {\n float edgeStrength = 1.0 - smoothstep(0.0, maxEdgeDist * 0.15, edgeDist);\n vec2 aberrationDir = normalize(fromCenter) * edgeStrength * u_chromaticAberration * 0.003;\n\n float r = texture(u_background, uv + refractionOffset + aberrationDir).r;\n float b = texture(u_background, uv + refractionOffset - aberrationDir).b;\n blurColor.r = mix(blurColor.r, r, edgeStrength * 0.5);\n blurColor.b = mix(blurColor.b, b, edgeStrength * 0.5);\n }\n\n // Specular highlight (Fresnel)\n vec3 viewDir = vec3(0.0, 0.0, 1.0);\n vec2 normalXY = fromCenter / (u_glassBounds.zw * 0.5);\n vec3 normal = normalize(vec3(normalXY * 0.3, 1.0));\n float spec = fresnel(viewDir, normal, 1.5);\n\n // Light-source-aware specular\n vec2 lightDir = normalize(u_lightPos - uv);\n float lightDot = max(dot(normalXY, lightDir), 0.0);\n spec *= 0.3 + 0.7 * lightDot;\n\n // Combine: frosted blur + specular + slight tint\n vec3 tint = vec3(1.0, 1.0, 1.0); // neutral tint\n vec3 result = blurColor * tint + vec3(spec * 0.15);\n\n // Glass opacity with frosted appearance\n float alpha = 0.85 + spec * 0.1;\n fragColor = vec4(result, alpha);\n}\n";
|
|
14
|
-
/** Shader program setup — compiles and links vertex + fragment shaders */
|
|
15
|
-
export declare function createFrostProgram(gl: WebGL2RenderingContext | WebGLRenderingContext): WebGLProgram | null;
|
|
16
|
-
/** Uniform locations cache for the frost program */
|
|
17
|
-
export interface FrostUniforms {
|
|
18
|
-
u_background: WebGLUniformLocation | null;
|
|
19
|
-
u_resolution: WebGLUniformLocation | null;
|
|
20
|
-
u_glassBounds: WebGLUniformLocation | null;
|
|
21
|
-
u_blurRadius: WebGLUniformLocation | null;
|
|
22
|
-
u_refractionStrength: WebGLUniformLocation | null;
|
|
23
|
-
u_chromaticAberration: WebGLUniformLocation | null;
|
|
24
|
-
u_lightPos: WebGLUniformLocation | null;
|
|
25
|
-
u_time: WebGLUniformLocation | null;
|
|
26
|
-
}
|
|
27
|
-
export declare function getFrostUniforms(gl: WebGL2RenderingContext | WebGLRenderingContext, program: WebGLProgram): FrostUniforms;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { type ComputedRef } from "vue";
|
|
2
|
-
import { type UseAnimatedNumberOptions } from "./useAnimatedNumber";
|
|
3
|
-
export interface UseAnimatedNumberMapOptions extends UseAnimatedNumberOptions {
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Fan out N independent `useAnimatedNumber` instances into a `Record<K, ...>`.
|
|
7
|
-
*
|
|
8
|
-
* Each key gets one rAF-smoothed `ComputedRef<number | null>`. The smoothing
|
|
9
|
-
* options apply identically across the set; consumers that need per-key
|
|
10
|
-
* options should call `useAnimatedNumber` per key directly.
|
|
11
|
-
*
|
|
12
|
-
* The `null` propagation is preserved: when `source(key)` resolves to `null`,
|
|
13
|
-
* the corresponding ref returns `null` rather than freezing on the last
|
|
14
|
-
* smoothed sample. This matches the per-metric `raw → smoothed` contract.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* const keys = ["ping", "jitter", "download", "upload"] as const;
|
|
18
|
-
* const smoothed = useAnimatedNumberMap({
|
|
19
|
-
* keys,
|
|
20
|
-
* source: (k) => computed(() => store.resultFor(k).value ?? null),
|
|
21
|
-
* damping: DAMPING.domPill,
|
|
22
|
-
* snapThreshold: SNAP_THRESHOLD.dom,
|
|
23
|
-
* });
|
|
24
|
-
* // smoothed.ping.value, smoothed.jitter.value, ...
|
|
25
|
-
*/
|
|
26
|
-
export declare function useAnimatedNumberMap<K extends string>(options: {
|
|
27
|
-
keys: readonly K[];
|
|
28
|
-
source: (key: K) => ComputedRef<number | null>;
|
|
29
|
-
} & UseAnimatedNumberMapOptions): Record<K, ComputedRef<number | null>>;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { type Ref } from "vue";
|
|
2
|
-
export interface UseStaggerOptions {
|
|
3
|
-
/** Count of staggered slots. Each slot maps to one boolean in `revealed`. */
|
|
4
|
-
items: number;
|
|
5
|
-
/**
|
|
6
|
-
* Delay between consecutive reveals.
|
|
7
|
-
*
|
|
8
|
-
* Default 80ms — mirrors the `--motion-stagger-default` token in
|
|
9
|
-
* `tokens.css` (AJ-W4-κ canon). Consumers driving per-row CSS
|
|
10
|
-
* `animation-delay` cascades on the same surface should also read
|
|
11
|
-
* `--motion-stagger-default` so the JS-driven cascade (this composable)
|
|
12
|
-
* and the CSS-driven cascade stay in lockstep.
|
|
13
|
-
*
|
|
14
|
-
* The two adjacent canon tiers are:
|
|
15
|
-
* - `--motion-stagger-tight: 40ms` — dense row cascades
|
|
16
|
-
* - `--motion-stagger-relaxed: 120ms` — wide series cascades
|
|
17
|
-
*/
|
|
18
|
-
delayMs?: number;
|
|
19
|
-
/** Delay before the first reveal fires. Default 0. */
|
|
20
|
-
initialDelayMs?: number;
|
|
21
|
-
/** Auto-start on creation. Default true. */
|
|
22
|
-
immediate?: boolean;
|
|
23
|
-
/**
|
|
24
|
-
* When true, honour `prefers-reduced-motion: reduce` by flipping every
|
|
25
|
-
* slot true synchronously instead of cascading the timeline. Mirrors
|
|
26
|
-
* the canonical opt-in on `useAnimatedNumber` and the global
|
|
27
|
-
* `transitions.css` / `utilities.css` reduced-motion brackets. SSR
|
|
28
|
-
* environments (no `window.matchMedia`) treat the option as a no-op.
|
|
29
|
-
* Default true.
|
|
30
|
-
*/
|
|
31
|
-
respectReducedMotion?: boolean;
|
|
32
|
-
}
|
|
33
|
-
export interface UseStaggerControls {
|
|
34
|
-
/** Per-slot reveal state. `revealed.value[i]` flips true at `initialDelayMs + i * delayMs`. */
|
|
35
|
-
revealed: Ref<boolean[]>;
|
|
36
|
-
/** Re-arm the cascade. Resets `revealed` to all-false then fires the timeline. */
|
|
37
|
-
start: () => void;
|
|
38
|
-
/** Reset to all-false. Cancels any pending reveals. */
|
|
39
|
-
reset: () => void;
|
|
40
|
-
/** True once every slot has flipped. */
|
|
41
|
-
isComplete: Ref<boolean>;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Drive a fixed-count staggered reveal off a single timer cascade.
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* const { revealed, start } = useStagger({ items: visible.value.length, delayMs: 80, initialDelayMs: 80, immediate: false });
|
|
48
|
-
* watch(allComplete, (done, prev) => { if (done && !prev) start(); });
|
|
49
|
-
*/
|
|
50
|
-
export declare function useStagger(options: UseStaggerOptions): UseStaggerControls;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { inject as e, provide as t } from "vue";
|
|
2
|
-
//#region src/components/custom/dock/composables/dockContext.ts
|
|
3
|
-
var n = Symbol("glass-ui:dock-context");
|
|
4
|
-
function r(e) {
|
|
5
|
-
t(n, e);
|
|
6
|
-
}
|
|
7
|
-
function i() {
|
|
8
|
-
let t = e(n);
|
|
9
|
-
if (!t) throw Error("[glass-ui:dock] useDockContext() called outside <GlassDock>; use useOptionalDockContext() if the primitive may render outside a dock.");
|
|
10
|
-
return t;
|
|
11
|
-
}
|
|
12
|
-
function a() {
|
|
13
|
-
return e(n, null);
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { a as i, r as n, i as r, n as t };
|
package/dist/keys-SIKQYNx1.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { inject as e, provide as t } from "vue";
|
|
2
|
-
//#region src/components/custom/glyph-face/keys.ts
|
|
3
|
-
var n = Symbol("glass-ui:glyph-face-silhouette");
|
|
4
|
-
function r(e) {
|
|
5
|
-
t(n, e);
|
|
6
|
-
}
|
|
7
|
-
function i() {
|
|
8
|
-
return e(n, null);
|
|
9
|
-
}
|
|
10
|
-
//#endregion
|
|
11
|
-
export { r as n, i as r, n as t };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
//#region src/composables/motion/supportsCssTimeline.ts
|
|
2
|
-
function e(e, t) {
|
|
3
|
-
return typeof CSS > "u" || typeof CSS.supports != "function" ? !1 : CSS.supports("animation-timeline", e) && !CSS.supports("animation-timeline", t);
|
|
4
|
-
}
|
|
5
|
-
function t() {
|
|
6
|
-
return e("scroll()", "gl-not-a-real-timeline");
|
|
7
|
-
}
|
|
8
|
-
function n() {
|
|
9
|
-
return e("view()", "gl-not-a-real-timeline");
|
|
10
|
-
}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { n, t };
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ref as e, watch as t } from "vue";
|
|
2
|
-
import { createGlobalState as n, useDark as r, useToggle as i } from "@vueuse/core";
|
|
3
|
-
//#region src/composables/dark/useGlobalDark.ts
|
|
4
|
-
var a = n(() => {
|
|
5
|
-
let n = r({ disableTransition: !1 }), a = i(n), o = e(!1);
|
|
6
|
-
function s() {
|
|
7
|
-
o.value && (document.documentElement.classList.add("no-transition"), document.documentElement.offsetHeight), a(), o.value && requestAnimationFrame(() => {
|
|
8
|
-
document.documentElement.classList.remove("no-transition");
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
function c(e) {
|
|
12
|
-
o.value = e;
|
|
13
|
-
}
|
|
14
|
-
return t(n, (e) => {
|
|
15
|
-
document.documentElement.style.colorScheme = e ? "dark" : "light";
|
|
16
|
-
}, { immediate: !0 }), {
|
|
17
|
-
isDark: n,
|
|
18
|
-
toggleDark: s,
|
|
19
|
-
disableTransitions: o,
|
|
20
|
-
setDisableTransitions: c
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
//#endregion
|
|
24
|
-
export { a as t };
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./useGlobalDark-BUUTZvkU.js";
|
|
2
|
-
import { getCurrentScope as t, onMounted as n, onScopeDispose as r, readonly as i, ref as a, toValue as o, watch as s } from "vue";
|
|
3
|
-
//#region src/composables/dom/useTokenColor.ts
|
|
4
|
-
function c(t, r = {}) {
|
|
5
|
-
let i = r.fallback ?? "", c = a(i);
|
|
6
|
-
function l() {
|
|
7
|
-
if (typeof document > "u") return i;
|
|
8
|
-
let e = o(t);
|
|
9
|
-
if (!e) return i;
|
|
10
|
-
let n = (r.element ? o(r.element) : null) ?? document.documentElement;
|
|
11
|
-
return n && getComputedStyle(n).getPropertyValue(e).trim() || i;
|
|
12
|
-
}
|
|
13
|
-
function u() {
|
|
14
|
-
c.value = l();
|
|
15
|
-
}
|
|
16
|
-
u(), n(u);
|
|
17
|
-
let { isDark: d } = e();
|
|
18
|
-
return s(d, u), s(() => o(t), u), r.element !== void 0 && s(() => o(r.element), u), {
|
|
19
|
-
value: c,
|
|
20
|
-
refresh: u
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
//#endregion
|
|
24
|
-
//#region src/composables/dom/useClipboard.ts
|
|
25
|
-
async function l(e) {
|
|
26
|
-
if (typeof navigator > "u" || !navigator.clipboard?.writeText) return !1;
|
|
27
|
-
try {
|
|
28
|
-
return await navigator.clipboard.writeText(e), !0;
|
|
29
|
-
} catch {
|
|
30
|
-
return !1;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function u(e) {
|
|
34
|
-
if (typeof document > "u") return !1;
|
|
35
|
-
let t = document.createElement("textarea");
|
|
36
|
-
t.value = e, t.setAttribute("readonly", ""), t.style.position = "fixed", t.style.top = "-9999px", document.body.appendChild(t), t.select();
|
|
37
|
-
let n = !1;
|
|
38
|
-
try {
|
|
39
|
-
n = document.execCommand("copy");
|
|
40
|
-
} catch {
|
|
41
|
-
n = !1;
|
|
42
|
-
}
|
|
43
|
-
return document.body.removeChild(t), n;
|
|
44
|
-
}
|
|
45
|
-
async function d(e, t = {}) {
|
|
46
|
-
return await l(e) || u(e);
|
|
47
|
-
}
|
|
48
|
-
function f(e = {}) {
|
|
49
|
-
let t = e.resetMs ?? 1500, n = a(!1), i = null;
|
|
50
|
-
function o() {
|
|
51
|
-
i != null && (clearTimeout(i), i = null);
|
|
52
|
-
}
|
|
53
|
-
async function s(e) {
|
|
54
|
-
let r = await d(e);
|
|
55
|
-
return r && (n.value = !0, o(), i = setTimeout(() => {
|
|
56
|
-
n.value = !1, i = null;
|
|
57
|
-
}, t)), r;
|
|
58
|
-
}
|
|
59
|
-
return r(o), {
|
|
60
|
-
copied: n,
|
|
61
|
-
copy: s
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
//#endregion
|
|
65
|
-
//#region src/composables/dom/useViewportReady.ts
|
|
66
|
-
function p(e, n = {}) {
|
|
67
|
-
let i = n.rootMargin ?? "200px", o = n.idleTimeout ?? 1e4, c = n.threshold ?? .01, l = a(!1), u = null, d, f = null, p = null, m = !1;
|
|
68
|
-
function h() {
|
|
69
|
-
m || l.value || (l.value = !0, _());
|
|
70
|
-
}
|
|
71
|
-
function g() {
|
|
72
|
-
if (!m) {
|
|
73
|
-
if (typeof window > "u") {
|
|
74
|
-
h();
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
"requestIdleCallback" in window ? f = window.requestIdleCallback(h, { timeout: o }) : p = setTimeout(h, 16);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
function _() {
|
|
81
|
-
u &&= (u.disconnect(), null), f !== null && typeof window < "u" && "cancelIdleCallback" in window && (window.cancelIdleCallback(f), f = null), p !== null && (clearTimeout(p), p = null);
|
|
82
|
-
}
|
|
83
|
-
function v(e) {
|
|
84
|
-
if (typeof window > "u" || !("IntersectionObserver" in window)) {
|
|
85
|
-
g();
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
u = new IntersectionObserver((e) => {
|
|
89
|
-
if (!m) {
|
|
90
|
-
for (let t of e) if (t.isIntersecting) {
|
|
91
|
-
g(), u?.disconnect(), u = null;
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}, {
|
|
96
|
-
rootMargin: i,
|
|
97
|
-
threshold: c
|
|
98
|
-
}), u.observe(e);
|
|
99
|
-
}
|
|
100
|
-
function y(e) {
|
|
101
|
-
m || l.value || d !== void 0 && d === e || (_(), d = e, e ? v(e) : g());
|
|
102
|
-
}
|
|
103
|
-
y(e.value);
|
|
104
|
-
let b = s(e, (e) => {
|
|
105
|
-
y(e);
|
|
106
|
-
}, { flush: "post" });
|
|
107
|
-
function x() {
|
|
108
|
-
m || (m = !0, b(), _());
|
|
109
|
-
}
|
|
110
|
-
return t() && r(x), {
|
|
111
|
-
ready: l,
|
|
112
|
-
stop: x
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
//#endregion
|
|
116
|
-
//#region src/composables/dom/useBreakpoint.ts
|
|
117
|
-
function m(e) {
|
|
118
|
-
let n = a(!1), o = null;
|
|
119
|
-
function s(e) {
|
|
120
|
-
n.value = e.matches;
|
|
121
|
-
}
|
|
122
|
-
function c() {
|
|
123
|
-
typeof window > "u" || !window.matchMedia || (o = window.matchMedia(e), n.value = o.matches, o.addEventListener("change", s));
|
|
124
|
-
}
|
|
125
|
-
function l() {
|
|
126
|
-
o?.removeEventListener("change", s), o = null;
|
|
127
|
-
}
|
|
128
|
-
return t() && r(l), c(), {
|
|
129
|
-
matches: i(n),
|
|
130
|
-
stop: l
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
//#endregion
|
|
134
|
-
//#region src/composables/dom/useIdleReady.ts
|
|
135
|
-
function h(e = {}) {
|
|
136
|
-
let n = e.timeout ?? 2e3, i = a(!1), o = null, s = null, c = !1;
|
|
137
|
-
function l() {
|
|
138
|
-
c || i.value || (i.value = !0, e.onReady?.(), u());
|
|
139
|
-
}
|
|
140
|
-
function u() {
|
|
141
|
-
o !== null && typeof window < "u" && "cancelIdleCallback" in window && (window.cancelIdleCallback(o), o = null), s !== null && (clearTimeout(s), s = null);
|
|
142
|
-
}
|
|
143
|
-
function d() {
|
|
144
|
-
if (!c) {
|
|
145
|
-
if (typeof window > "u") {
|
|
146
|
-
l();
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
"requestIdleCallback" in window ? o = window.requestIdleCallback(l, { timeout: n }) : s = setTimeout(l, 0);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
d();
|
|
153
|
-
function f() {
|
|
154
|
-
c || (c = !0, u());
|
|
155
|
-
}
|
|
156
|
-
return t() && r(f), {
|
|
157
|
-
ready: i,
|
|
158
|
-
stop: f
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
//#endregion
|
|
162
|
-
export { f as a, d as i, m as n, c as o, p as r, h as t };
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { getCurrentScope as e, onScopeDispose as t, readonly as n, ref as r, toValue as i, watch as a } from "vue";
|
|
2
|
-
//#region src/composables/motion/useIntersectionPause.ts
|
|
3
|
-
function o() {
|
|
4
|
-
return typeof document > "u" ? null : document;
|
|
5
|
-
}
|
|
6
|
-
function s(s, c, l = {}) {
|
|
7
|
-
let { root: u = null, rootMargin: d = "0px", threshold: f = 0, pauseWhenHidden: p = !0 } = l, m = o(), h = r(!0), g = r(!p || !m?.hidden), _ = r(!1), v = !1, y = null, b = null, x = null;
|
|
8
|
-
function S() {
|
|
9
|
-
if (v) return;
|
|
10
|
-
let e = !h.value || !g.value;
|
|
11
|
-
_.value = e, b !== e && (b = e, e ? c.pause() : c.resume());
|
|
12
|
-
}
|
|
13
|
-
typeof IntersectionObserver < "u" && (x = new IntersectionObserver((e) => {
|
|
14
|
-
for (let t of e) t.target === y && (h.value = t.isIntersecting || t.intersectionRatio > 0, S());
|
|
15
|
-
}, {
|
|
16
|
-
root: u,
|
|
17
|
-
rootMargin: d,
|
|
18
|
-
threshold: f
|
|
19
|
-
}));
|
|
20
|
-
let C = a(() => i(s), (e, t) => {
|
|
21
|
-
t && x && x.unobserve(t), y = e ?? null, h.value = !0, y && x && x.observe(y), S();
|
|
22
|
-
}, { immediate: !0 });
|
|
23
|
-
function w() {
|
|
24
|
-
g.value = !p || !m?.hidden, S();
|
|
25
|
-
}
|
|
26
|
-
m && p && m.addEventListener("visibilitychange", w);
|
|
27
|
-
function T() {
|
|
28
|
-
v || (v = !0, C(), x?.disconnect(), x = null, y = null, m?.removeEventListener("visibilitychange", w));
|
|
29
|
-
}
|
|
30
|
-
return e() && t(T), {
|
|
31
|
-
isIntersecting: n(h),
|
|
32
|
-
isDocumentVisible: n(g),
|
|
33
|
-
isPaused: n(_),
|
|
34
|
-
refresh: S,
|
|
35
|
-
dispose: T
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
//#endregion
|
|
39
|
-
export { s as t };
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { computed as e, onScopeDispose as t, shallowRef as n } from "vue";
|
|
2
|
-
//#region src/composables/sortable/useSortable.ts
|
|
3
|
-
function r(e) {
|
|
4
|
-
return e ? e.replace(/\//g, " ").split(/\s+/).filter(Boolean).some((e) => parseFloat(e) !== 0) : !1;
|
|
5
|
-
}
|
|
6
|
-
var i = "[data-sortable-handle]", a = "is-sortable-drop-above", o = "is-sortable-drop-below", s = "sortable-drag-ghost", c = "is-sortable-dragging", l = /* @__PURE__ */ new Set();
|
|
7
|
-
function u(e, t, n) {
|
|
8
|
-
if (!e.group) return null;
|
|
9
|
-
for (let r of l) {
|
|
10
|
-
if (r === e || r.group !== e.group) continue;
|
|
11
|
-
let i = r.getContainer();
|
|
12
|
-
if (!i) continue;
|
|
13
|
-
let a = i.getBoundingClientRect();
|
|
14
|
-
if (t >= a.left && t <= a.right && n >= a.top && n <= a.bottom) return r;
|
|
15
|
-
}
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
function d(d) {
|
|
19
|
-
let { items: f, getId: p, onReorder: m, onInsert: h, group: g, handleSelector: _ = i, axis: v = "y" } = d, y = n(null), b = n(null), x = n(null), S = null, C = null, w = 0, T = 0, E = null, D = null, O = /* @__PURE__ */ new Map(), k = /* @__PURE__ */ new Map();
|
|
20
|
-
function A() {
|
|
21
|
-
return f.value;
|
|
22
|
-
}
|
|
23
|
-
function j(e) {
|
|
24
|
-
let t = A();
|
|
25
|
-
for (let n = 0; n < t.length; n++) if (p(t[n]) === e) return n;
|
|
26
|
-
return -1;
|
|
27
|
-
}
|
|
28
|
-
function M(e, t, n, r, i) {
|
|
29
|
-
let a = i ? n : r;
|
|
30
|
-
for (let n = 0; n < t.length; n++) {
|
|
31
|
-
let r = e.get(t[n].id);
|
|
32
|
-
if (!r) continue;
|
|
33
|
-
let o = r.getBoundingClientRect();
|
|
34
|
-
if (a < (i ? o.left + o.width / 2 : o.top + o.height / 2)) return n;
|
|
35
|
-
}
|
|
36
|
-
return t.length;
|
|
37
|
-
}
|
|
38
|
-
function N(e, t) {
|
|
39
|
-
return M(O, A().map((e) => ({ id: p(e) })), e, t, v === "x");
|
|
40
|
-
}
|
|
41
|
-
function P(e) {
|
|
42
|
-
return _ === null ? !0 : e instanceof Element ? e.closest(_) !== null : !1;
|
|
43
|
-
}
|
|
44
|
-
function F(e) {
|
|
45
|
-
let t = getComputedStyle(e).borderRadius;
|
|
46
|
-
if (r(t)) return t;
|
|
47
|
-
for (let t of e.querySelectorAll("*")) {
|
|
48
|
-
let e = getComputedStyle(t).borderRadius;
|
|
49
|
-
if (r(e)) return e;
|
|
50
|
-
}
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
function I(e, t, n) {
|
|
54
|
-
let r = e.getBoundingClientRect();
|
|
55
|
-
w = t - r.left, T = n - r.top;
|
|
56
|
-
let i = e.cloneNode(!0);
|
|
57
|
-
i.classList.add(s);
|
|
58
|
-
let a = F(e);
|
|
59
|
-
a && (i.style.borderRadius = a), i.style.position = "fixed", i.style.left = `${r.left}px`, i.style.top = `${r.top}px`, i.style.width = `${r.width}px`, i.style.height = `${r.height}px`, i.style.margin = "0", i.style.pointerEvents = "none", i.style.zIndex = "9999", i.id && i.removeAttribute("id");
|
|
60
|
-
for (let e of i.querySelectorAll("[id]")) e.removeAttribute("id");
|
|
61
|
-
document.body.appendChild(i), C = i;
|
|
62
|
-
}
|
|
63
|
-
function L(e, t) {
|
|
64
|
-
C && (C.style.left = `${e - w}px`, C.style.top = `${t - T}px`);
|
|
65
|
-
}
|
|
66
|
-
function R() {
|
|
67
|
-
C && C.parentNode && C.parentNode.removeChild(C), C = null;
|
|
68
|
-
}
|
|
69
|
-
function z(e, t) {
|
|
70
|
-
let n = O.get(e);
|
|
71
|
-
if (!(n instanceof HTMLElement)) return;
|
|
72
|
-
y.value = e, b.value = {
|
|
73
|
-
x: t.clientX,
|
|
74
|
-
y: t.clientY
|
|
75
|
-
}, x.value = j(e), S = null, E = n, n.classList.add(c), I(n, t.clientX, t.clientY);
|
|
76
|
-
let r = t.currentTarget;
|
|
77
|
-
if (r && "setPointerCapture" in r) try {
|
|
78
|
-
r.setPointerCapture(t.pointerId);
|
|
79
|
-
} catch {}
|
|
80
|
-
document.addEventListener("pointermove", B), document.addEventListener("pointerup", V), document.addEventListener("pointercancel", V);
|
|
81
|
-
}
|
|
82
|
-
function B(e) {
|
|
83
|
-
if (y.value === null) return;
|
|
84
|
-
b.value = {
|
|
85
|
-
x: e.clientX,
|
|
86
|
-
y: e.clientY
|
|
87
|
-
}, L(e.clientX, e.clientY);
|
|
88
|
-
let t = u(K, e.clientX, e.clientY);
|
|
89
|
-
if (t) {
|
|
90
|
-
S && S !== t && S.setExternalDropIndex(null), S = t;
|
|
91
|
-
let n = t.getItems().map((e) => ({ id: t.getId(e) })), r = M(t.getElements(), n, e.clientX, e.clientY, v === "x");
|
|
92
|
-
t.setExternalDropIndex(r), x.value = null;
|
|
93
|
-
} else S &&= (S.setExternalDropIndex(null), null), x.value = N(e.clientX, e.clientY);
|
|
94
|
-
}
|
|
95
|
-
function V(e) {
|
|
96
|
-
let t = y.value, n = S, r = x.value;
|
|
97
|
-
if (H(), t === null) return;
|
|
98
|
-
let i = A(), a = i.findIndex((e) => p(e) === t);
|
|
99
|
-
if (a < 0) return;
|
|
100
|
-
if (n) {
|
|
101
|
-
let e = i[a], t = i.slice();
|
|
102
|
-
t.splice(a, 1), m(t);
|
|
103
|
-
let r = n.getExternalDropIndex?.() ?? null;
|
|
104
|
-
n.setExternalDropIndex(null), n.acceptExternal(r ?? 0, e);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
if (r === null) return;
|
|
108
|
-
let o = r;
|
|
109
|
-
if (o > a && --o, o === a) return;
|
|
110
|
-
let s = i.slice(), [c] = s.splice(a, 1);
|
|
111
|
-
s.splice(o, 0, c), m(s);
|
|
112
|
-
}
|
|
113
|
-
function H() {
|
|
114
|
-
R(), E &&= (E.classList.remove(c), null), S &&= (S.setExternalDropIndex(null), null), y.value = null, b.value = null, x.value = null, document.removeEventListener("pointermove", B), document.removeEventListener("pointerup", V), document.removeEventListener("pointercancel", V);
|
|
115
|
-
}
|
|
116
|
-
function U(t) {
|
|
117
|
-
let n = k.get(t);
|
|
118
|
-
if (n) return n;
|
|
119
|
-
let r = (e) => {
|
|
120
|
-
e === null ? O.delete(t) : O.set(t, e);
|
|
121
|
-
};
|
|
122
|
-
function i(e, n) {
|
|
123
|
-
let r = j(t);
|
|
124
|
-
return r < 0 ? {
|
|
125
|
-
above: !1,
|
|
126
|
-
below: !1
|
|
127
|
-
} : e === n ? {
|
|
128
|
-
above: !1,
|
|
129
|
-
below: r === n - 1
|
|
130
|
-
} : {
|
|
131
|
-
above: r === e,
|
|
132
|
-
below: !1
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
let s = e(() => {
|
|
136
|
-
let e = {
|
|
137
|
-
[a]: !1,
|
|
138
|
-
[o]: !1
|
|
139
|
-
};
|
|
140
|
-
if (y.value !== null && x.value !== null) {
|
|
141
|
-
let t = i(x.value, A().length);
|
|
142
|
-
t.above && (e[a] = !0), t.below && (e[o] = !0);
|
|
143
|
-
}
|
|
144
|
-
if (W.value !== null && y.value === null) {
|
|
145
|
-
let t = i(W.value, A().length);
|
|
146
|
-
t.above && (e[a] = !0), t.below && (e[o] = !0);
|
|
147
|
-
}
|
|
148
|
-
return e;
|
|
149
|
-
}), c = {
|
|
150
|
-
ref: r,
|
|
151
|
-
dataAttrs: { "data-sortable-id": String(t) },
|
|
152
|
-
class: s,
|
|
153
|
-
onPointerdown: (e) => {
|
|
154
|
-
e.button === 0 && P(e.target) && (e.preventDefault(), z(t, e));
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
return k.set(t, c), c;
|
|
158
|
-
}
|
|
159
|
-
let W = n(null), G = {
|
|
160
|
-
ref: (e) => {
|
|
161
|
-
D = e;
|
|
162
|
-
},
|
|
163
|
-
dataAttrs: { "data-sortable-container": g ?? "" }
|
|
164
|
-
}, K = {
|
|
165
|
-
group: g,
|
|
166
|
-
getContainer: () => D,
|
|
167
|
-
getItems: () => f.value,
|
|
168
|
-
getId: (e) => p(e),
|
|
169
|
-
getElements: () => O,
|
|
170
|
-
setExternalDropIndex: (e) => {
|
|
171
|
-
W.value = e;
|
|
172
|
-
},
|
|
173
|
-
acceptExternal: (e, t) => {
|
|
174
|
-
h && h(e, t);
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
return K.getExternalDropIndex = () => W.value, l.add(K), t(() => {
|
|
178
|
-
l.delete(K), H();
|
|
179
|
-
}), {
|
|
180
|
-
registerItem: U,
|
|
181
|
-
container: G,
|
|
182
|
-
isDragging: e(() => y.value !== null),
|
|
183
|
-
dragId: e(() => y.value),
|
|
184
|
-
dragPosition: e(() => b.value),
|
|
185
|
-
dropIndex: e(() => x.value)
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
//#endregion
|
|
189
|
-
export { d as t };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|