@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.
Files changed (306) hide show
  1. package/dist/{CardFooter-3-VGho1J.js → CardFooter-C390imy7.js} +2 -2
  2. package/dist/{CollapsibleContent-wlmlDujU.js → CollapsibleContent-cauTbZEM.js} +1 -1
  3. package/dist/{CommandShortcut-C6lsz3pG.js → CommandShortcut-BiVyqipe.js} +5 -4
  4. package/dist/DataTable-FfkaAg2z.js +465 -0
  5. package/dist/DialogContent-IQ8_BRrC.js +100 -0
  6. package/dist/{DiscoGlyph-B7YooI2-.js → DiscoGlyph-BaZ8OawK.js} +1 -1
  7. package/dist/{GlyphFace-Bvk6OIas.js → GlyphFace-B_7vOmYn.js} +1 -1
  8. package/dist/HoverPopover-DTSYkJtw.js +96 -0
  9. package/dist/{IconTooltip-DXveGjx7.js → IconTooltip-BTyYn4mr.js} +1 -1
  10. package/dist/Input-CU9CNKmo.js +52 -0
  11. package/dist/{MetricBadge-J_GBCb8e.js → MetricBadge-BlrdbOGN.js} +1 -1
  12. package/dist/{NumberFieldContent-B6L6YrQz.js → NumberFieldContent-iOTQ5rGO.js} +8 -4
  13. package/dist/{PopoverContent-CxEEUL7Y.js → PopoverContent-B8WtJECb.js} +1 -1
  14. package/dist/Progress-DjM86vfb.js +254 -0
  15. package/dist/{ScrollingText-1Qjnwz6H.js → ScrollingText-P9o_DuMn.js} +1 -1
  16. package/dist/{SelectScrollDownButton-BvvvAbuh.js → SelectScrollDownButton-BGn3rjs9.js} +9 -8
  17. package/dist/TabsIndicator-DA0x9gPr.js +97 -0
  18. package/dist/{ToggleGroupItem-Cy7xHFEo.js → ToggleGroupItem-gyXj998A.js} +37 -40
  19. package/dist/UnderlineTabs-Cq_AD03t.js +39 -0
  20. package/dist/animated-digit.js +2 -2
  21. package/dist/api/index.d.ts +2 -0
  22. package/dist/api.js +1 -1
  23. package/dist/aurora.js +454 -271
  24. package/dist/{button-DS3ULf5i.js → button-Ckn3eDfB.js} +27 -22
  25. package/dist/button.js +1 -1
  26. package/dist/card.js +1 -1
  27. package/dist/carousel.js +2 -2
  28. package/dist/collapsible.js +1 -1
  29. package/dist/color-rkK4RMx2.js +33 -0
  30. package/dist/color.d.ts +1 -0
  31. package/dist/color.js +2 -0
  32. package/dist/command.js +1 -1
  33. package/dist/compile-DVgAxagk.js +106 -0
  34. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +7 -7
  35. package/dist/components/custom/aurora/Aurora.vue.d.ts +3 -3
  36. package/dist/components/custom/aurora/composables/color.d.ts +3 -25
  37. package/dist/components/custom/aurora/composables/cursorModel.d.ts +45 -0
  38. package/dist/components/custom/aurora/composables/frameLoop.d.ts +30 -0
  39. package/dist/components/custom/aurora/composables/glSetup.d.ts +29 -0
  40. package/dist/components/custom/aurora/composables/runtime.d.ts +45 -35
  41. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +67 -0
  42. package/dist/components/custom/aurora/composables/useAurora.d.ts +14 -1
  43. package/dist/components/custom/aurora/composables/useCursorInteraction.d.ts +1 -1
  44. package/dist/components/custom/aurora/constants/budget.d.ts +50 -0
  45. package/dist/components/custom/aurora/{presets.d.ts → constants/presets.d.ts} +2 -5
  46. package/dist/components/custom/aurora/constants/shaders/aurora.frag.d.ts +1 -0
  47. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -0
  48. package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -0
  49. package/dist/components/custom/aurora/constants/shaders/flow.glsl.d.ts +1 -0
  50. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -0
  51. package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -0
  52. package/dist/components/custom/aurora/index.d.ts +2 -2
  53. package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +14 -7
  54. package/dist/components/custom/configurator/density.d.ts +3 -8
  55. package/dist/components/custom/dock/DockBackgroundToggle.vue.d.ts +46 -0
  56. package/dist/components/custom/dock/DockIconButton.vue.d.ts +3 -3
  57. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +2 -2
  58. package/dist/components/custom/dock/GlassDock.vue.d.ts +22 -18
  59. package/dist/components/custom/dock/composables/dockContext.d.ts +4 -4
  60. package/dist/components/custom/dock/composables/dockLayerContext.d.ts +13 -6
  61. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +32 -8
  62. package/dist/components/custom/dock/index.d.ts +1 -0
  63. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  64. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  65. package/dist/components/custom/glyph-face/keys.d.ts +3 -29
  66. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +48 -0
  67. package/dist/components/custom/goo-blob/composables/easing.d.ts +6 -0
  68. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +14 -0
  69. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +18 -0
  70. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +13 -0
  71. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +42 -0
  72. package/dist/components/custom/goo-blob/index.d.ts +7 -0
  73. package/dist/components/custom/goo-blob/shaders/metaball.frag.d.ts +1 -0
  74. package/dist/components/custom/goo-blob/shaders/metaball.vert.d.ts +1 -0
  75. package/dist/components/custom/goo-blob/shaders/oklch-perturb.glsl.d.ts +1 -0
  76. package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -0
  77. package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -0
  78. package/dist/components/custom/goo-blob/types.d.ts +77 -0
  79. package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +48 -9
  80. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +2 -0
  81. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -2
  82. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +2 -2
  83. package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +13 -7
  84. package/dist/components/custom/search/FuzzySearch.vue.d.ts +1 -1
  85. package/dist/components/custom/search/SearchBar.vue.d.ts +1 -1
  86. package/dist/components/custom/sortable-list/SortableHandle.vue.d.ts +7 -1
  87. package/dist/components/custom/sortable-list/context.d.ts +2 -3
  88. package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +6 -3
  89. package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +7 -3
  90. package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +6 -3
  91. package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +39 -0
  92. package/dist/components/custom/timeline/ContinuousMarkers.vue.d.ts +49 -0
  93. package/dist/components/custom/timeline/ContinuousRail.vue.d.ts +26 -0
  94. package/dist/components/custom/timeline/ContinuousTimeline.vue.d.ts +4 -4
  95. package/dist/components/custom/typewriter/TypewriterText.vue.d.ts +2 -2
  96. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +45 -0
  97. package/dist/components/custom/watercolor-dot/index.d.ts +3 -0
  98. package/dist/components/custom/watercolor-dot/prng.d.ts +5 -0
  99. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +24 -0
  100. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  101. package/dist/components/ui/avatar/Avatar.vue.d.ts +1 -1
  102. package/dist/components/ui/avatar/AvatarImage.vue.d.ts +5 -1
  103. package/dist/components/ui/avatar/index.d.ts +1 -1
  104. package/dist/components/ui/badge/index.d.ts +2 -2
  105. package/dist/components/ui/button/Button.vue.d.ts +3 -1
  106. package/dist/components/ui/button/index.d.ts +2 -2
  107. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  108. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  109. package/dist/components/ui/combobox/Combobox.vue.d.ts +2 -2
  110. package/dist/components/ui/combobox/ComboboxInput.vue.d.ts +2 -1
  111. package/dist/components/ui/command/Command.vue.d.ts +3 -3
  112. package/dist/components/ui/command/CommandInput.vue.d.ts +2 -1
  113. package/dist/components/ui/data-table/DataTable.vue.d.ts +5 -4
  114. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -0
  115. package/dist/components/ui/drawer/Drawer.vue.d.ts +4 -4
  116. package/dist/components/ui/input/Input.vue.d.ts +19 -1
  117. package/dist/components/ui/multi-select/MultiSelect.vue.d.ts +8 -4
  118. package/dist/components/ui/progress/Progress.vue.d.ts +26 -88
  119. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -0
  120. package/dist/components/ui/progress/ProgressGradient.vue.d.ts +25 -0
  121. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +36 -0
  122. package/dist/components/ui/progress/index.d.ts +5 -2
  123. package/dist/components/ui/progress/useProgressGeometry.d.ts +60 -0
  124. package/dist/components/ui/select/Select.vue.d.ts +2 -2
  125. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  126. package/dist/components/ui/select/SelectTrigger.vue.d.ts +3 -0
  127. package/dist/components/ui/sheet/index.d.ts +1 -1
  128. package/dist/components/ui/slider/index.d.ts +12 -11
  129. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  130. package/dist/components/ui/textarea/Textarea.vue.d.ts +5 -1
  131. package/dist/components/ui/toast/Toast.vue.d.ts +4 -4
  132. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  133. package/dist/components/ui/toggle/index.d.ts +1 -1
  134. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +2 -3
  135. package/dist/composables/color/index.d.ts +49 -0
  136. package/dist/composables/context/createContext.d.ts +56 -0
  137. package/dist/composables/context/index.d.ts +1 -0
  138. package/dist/composables/dark/darkModeSyncScript.d.ts +23 -0
  139. package/dist/composables/dark/index.d.ts +3 -0
  140. package/dist/composables/dark/useGlobalDark.d.ts +19 -2
  141. package/dist/composables/dom/index.d.ts +0 -3
  142. package/dist/composables/dom/useClipboard.d.ts +35 -12
  143. package/dist/composables/dom/useDocumentVisibility.d.ts +20 -0
  144. package/dist/composables/glass/webgl/compile.d.ts +15 -0
  145. package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +3 -0
  146. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +55 -0
  147. package/dist/composables/motion/core/index.d.ts +1 -1
  148. package/dist/composables/motion/index.d.ts +1 -1
  149. package/dist/composables/motion/useCountup.d.ts +29 -0
  150. package/dist/composables/motion/useNumericTransition.d.ts +14 -3
  151. package/dist/composables/motion/vReveal.d.ts +2 -0
  152. package/dist/composables/sidebar/useSidebarState.d.ts +2 -2
  153. package/dist/composables/sortable/dragController.d.ts +44 -0
  154. package/dist/composables/sortable/dropResolver.d.ts +34 -0
  155. package/dist/composables/sortable/ghostRenderer.d.ts +44 -0
  156. package/dist/composables/sortable/index.d.ts +1 -1
  157. package/dist/composables/sortable/touchGate.d.ts +26 -0
  158. package/dist/composables/sortable/transitionTiming.d.ts +50 -0
  159. package/dist/composables/sortable/types.d.ts +133 -0
  160. package/dist/composables/sortable/useSortable.d.ts +25 -153
  161. package/dist/configurator.js +1 -1
  162. package/dist/confirm-dialog.js +1 -1
  163. package/dist/controls.js +4 -4
  164. package/dist/createContext-DBMGRlx4.js +25 -0
  165. package/dist/dark.d.ts +2 -1
  166. package/dist/dark.js +9 -2
  167. package/dist/data-table.js +1 -1
  168. package/dist/dialog.js +1 -1
  169. package/dist/disco-glyph.js +1 -1
  170. package/dist/dock.js +400 -261
  171. package/dist/dockContext-spUj_-E5.js +9 -0
  172. package/dist/dom.js +6 -6
  173. package/dist/{dropdown-menu-naE0skDg.js → dropdown-menu-EFjl5iKo.js} +1 -1
  174. package/dist/dropdown-menu.js +1 -1
  175. package/dist/expandable-container.js +26 -20
  176. package/dist/fonts/README.md +21 -0
  177. package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
  178. package/dist/forms.js +68 -59
  179. package/dist/glass-panel.js +1 -1
  180. package/dist/glass-ui.css +1 -1
  181. package/dist/glass-ui.js +226 -328
  182. package/dist/glyph-face.js +2 -2
  183. package/dist/goo-blob.d.ts +1 -0
  184. package/dist/goo-blob.js +538 -0
  185. package/dist/header-ribbon.js +2 -2
  186. package/dist/hover-card.js +1 -1
  187. package/dist/hover-popover.js +1 -1
  188. package/dist/icon-tooltip.js +1 -1
  189. package/dist/index.d.ts +1 -0
  190. package/dist/instrument-chassis.js +1 -1
  191. package/dist/instrument-rail.js +1 -1
  192. package/dist/keys-BFoma9vm.js +9 -0
  193. package/dist/label.js +1 -1
  194. package/dist/labeled-field.js +57 -39
  195. package/dist/metric-badge.js +1 -1
  196. package/dist/motion-core.js +82 -123
  197. package/dist/motion.js +62 -14
  198. package/dist/number-field.js +1 -1
  199. package/dist/paper-backdrop.js +1 -1
  200. package/dist/popover.js +1 -1
  201. package/dist/{presets-BpTf63Hp.js → presets-1OhFpaIC.js} +1 -1
  202. package/dist/prng-Bz_1Tydc.js +15 -0
  203. package/dist/progress.js +2 -2
  204. package/dist/reactive.js +2 -2
  205. package/dist/responsive-tabs.js +38 -32
  206. package/dist/scrolling-text.js +1 -1
  207. package/dist/search.js +8 -8
  208. package/dist/select.js +3 -3
  209. package/dist/separator.js +1 -1
  210. package/dist/sheet.js +1 -1
  211. package/dist/{slider-wx8ifVFB.js → slider-BOh8ycfZ.js} +7 -11
  212. package/dist/slider.js +1 -1
  213. package/dist/sortable-list.js +36 -38
  214. package/dist/stacked-icons.js +2 -2
  215. package/dist/styles/animations.css +1 -1
  216. package/dist/styles/cards.css +1 -1
  217. package/dist/styles/components.css +1 -1
  218. package/dist/styles/dock-controls.css +486 -0
  219. package/dist/styles/dock.css +284 -450
  220. package/dist/styles/fonts.css +25 -0
  221. package/dist/styles/glass-specular-track.css +154 -0
  222. package/dist/styles/glass.css +74 -2
  223. package/dist/styles/index.css +21 -2
  224. package/dist/styles/instrument-chassis.css +11 -4
  225. package/dist/styles/theme.css +73 -21
  226. package/dist/styles/tokens.css +271 -140
  227. package/dist/styles/typography.css +14 -8
  228. package/dist/styles/utilities.css +36 -8
  229. package/dist/styles/view-transition.css +10 -4
  230. package/dist/switch.js +1 -1
  231. package/dist/tabs.js +139 -112
  232. package/dist/timeline.js +219 -158
  233. package/dist/toast.js +1 -1
  234. package/dist/toggle-group.js +1 -1
  235. package/dist/tokens.d.ts +1 -1
  236. package/dist/tooltip.js +1 -1
  237. package/dist/{useAnimatedNumber-BOxrS3a6.js → useAnimatedNumber-BF6r64lA.js} +1 -1
  238. package/dist/useClipboard-D8vFyRCa.js +97 -0
  239. package/dist/{useConfiguratorState-Dq2gNv4A.js → useConfiguratorState-DUtC1jxr.js} +82 -86
  240. package/dist/useGlobalDark-CWiaCoEw.js +34 -0
  241. package/dist/useIntersectionPause-DAdVPVp4.js +53 -0
  242. package/dist/useSortable-DnyGXKKY.js +246 -0
  243. package/dist/{useTouchGate-XX8gHfay.js → useTouchGate-CS5Csc2h.js} +1 -1
  244. package/dist/utils/prng.d.ts +4 -0
  245. package/dist/vReveal-u2wSG2El.js +35 -0
  246. package/dist/watercolor-dot.d.ts +1 -0
  247. package/dist/watercolor-dot.js +129 -0
  248. package/package.json +101 -16
  249. package/src/fonts/README.md +21 -0
  250. package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
  251. package/src/styles/animations.css +1 -1
  252. package/src/styles/cards.css +1 -1
  253. package/src/styles/dock-controls.css +486 -0
  254. package/src/styles/dock.css +284 -450
  255. package/src/styles/fonts.css +25 -0
  256. package/src/styles/glass-specular-track.css +154 -0
  257. package/src/styles/glass.css +74 -2
  258. package/src/styles/index.css +21 -2
  259. package/src/styles/instrument-chassis.css +11 -4
  260. package/src/styles/theme.css +73 -21
  261. package/src/styles/tokens.css +271 -140
  262. package/src/styles/typography.css +14 -8
  263. package/src/styles/utilities.css +36 -8
  264. package/src/styles/view-transition.css +10 -4
  265. package/dist/DataTable-BsrDYdoE.js +0 -460
  266. package/dist/DialogContent-B61rP8lj.js +0 -93
  267. package/dist/HoverPopover-BlEwqG7S.js +0 -96
  268. package/dist/Input-IFsIzId2.js +0 -30
  269. package/dist/Progress-Bs44qWEM.js +0 -126
  270. package/dist/UnderlineTabs-B4FV2zi_.js +0 -37
  271. package/dist/components/custom/aurora/shaders/aurora.frag.d.ts +0 -1
  272. package/dist/composables/dom/useBreakpoint.d.ts +0 -38
  273. package/dist/composables/dom/useIdleReady.d.ts +0 -63
  274. package/dist/composables/dom/useViewportReady.d.ts +0 -87
  275. package/dist/composables/glass/webgl/frostShader.d.ts +0 -27
  276. package/dist/composables/motion/useAnimatedNumberMap.d.ts +0 -29
  277. package/dist/composables/motion/useStagger.d.ts +0 -50
  278. package/dist/dockContext-DM58L1Jt.js +0 -16
  279. package/dist/keys-SIKQYNx1.js +0 -11
  280. package/dist/supportsCssTimeline-IQY3gfKD.js +0 -12
  281. package/dist/useGlobalDark-BUUTZvkU.js +0 -24
  282. package/dist/useIdleReady-sLhGo6CL.js +0 -162
  283. package/dist/useIntersectionPause-CUmANkoc.js +0 -39
  284. package/dist/useSortable-DLK9kwZp.js +0 -189
  285. /package/dist/{HoverCardContent-DGUhpRVt.js → HoverCardContent-ICfIMZX1.js} +0 -0
  286. /package/dist/{InstrumentChassis-CqKPBNqp.js → InstrumentChassis-DaHIZCqy.js} +0 -0
  287. /package/dist/{InstrumentRail-CCjvKkpB.js → InstrumentRail-B0qqLFN0.js} +0 -0
  288. /package/dist/{Label-D53EOwLE.js → Label-CZk-3nTc.js} +0 -0
  289. /package/dist/{PaperBackdrop-Ds-wDsKf.js → PaperBackdrop-D_YZW47j.js} +0 -0
  290. /package/dist/{SelectGroup-DAgcsfFw.js → SelectGroup-CMdoCjRE.js} +0 -0
  291. /package/dist/{SelectSeparator-DN1jzLaI.js → SelectSeparator-CaJnPF3_.js} +0 -0
  292. /package/dist/{Separator-DXxac0j8.js → Separator-C2XtAXRp.js} +0 -0
  293. /package/dist/{Switch-imA0Hdjs.js → Switch-x8n6husW.js} +0 -0
  294. /package/dist/{Toaster-Brs6QjBU.js → Toaster-DdhMKfus.js} +0 -0
  295. /package/dist/{TooltipProvider-MZFRxOvT.js → TooltipProvider-D-JrSqDu.js} +0 -0
  296. /package/dist/components/custom/aurora/{renderMode.d.ts → constants/renderMode.d.ts} +0 -0
  297. /package/dist/components/custom/aurora/{shaders → constants/shaders}/aurora.vert.d.ts +0 -0
  298. /package/dist/{constants-DfWPi8kh.js → constants-DsCdlK9I.js} +0 -0
  299. /package/dist/{sheet-BnvZRXPq.js → sheet-CQYYrkr9.js} +0 -0
  300. /package/dist/{useGlassRenderer-C98tZnJ7.js → useGlassRenderer-Dn3WpfG-.js} +0 -0
  301. /package/dist/{useInterval-B58LmYth.js → useInterval-CHVYFpXV.js} +0 -0
  302. /package/dist/{useResizeObserver-C_7GjpRn.js → useResizeObserver-DX-STszm.js} +0 -0
  303. /package/dist/{useTextHighlight-CLST6an0.js → useTextHighlight-Dmtofpk2.js} +0 -0
  304. /package/dist/{useTimer-6FoosoDY.js → useTimer-DGgoxTXL.js} +0 -0
  305. /package/dist/{useUserInvalidAria-BW5iyqWR.js → useUserInvalidAria-DmvZ_6Dx.js} +0 -0
  306. /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 };
@@ -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