base-ui-vue 0.1.0 → 0.3.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 (253) hide show
  1. package/README.md +41 -1
  2. package/dist/button/Button.cjs +53 -12
  3. package/dist/button/Button.cjs.map +1 -1
  4. package/dist/button/Button.js +26 -15
  5. package/dist/button/Button.js.map +1 -1
  6. package/dist/button/ToolbarButton.cjs +367 -0
  7. package/dist/button/ToolbarButton.cjs.map +1 -0
  8. package/dist/button/ToolbarButton.js +320 -0
  9. package/dist/button/ToolbarButton.js.map +1 -0
  10. package/dist/button/ToolbarButtonDataAttributes.cjs +27 -0
  11. package/dist/button/ToolbarButtonDataAttributes.cjs.map +1 -0
  12. package/dist/button/ToolbarButtonDataAttributes.js +21 -0
  13. package/dist/button/ToolbarButtonDataAttributes.js.map +1 -0
  14. package/dist/checkbox/index.cjs +1173 -0
  15. package/dist/checkbox/index.cjs.map +1 -0
  16. package/dist/checkbox/index.js +1048 -0
  17. package/dist/checkbox/index.js.map +1 -0
  18. package/dist/checkbox-group/CheckboxGroup.cjs +629 -0
  19. package/dist/checkbox-group/CheckboxGroup.cjs.map +1 -0
  20. package/dist/checkbox-group/CheckboxGroup.js +540 -0
  21. package/dist/checkbox-group/CheckboxGroup.js.map +1 -0
  22. package/dist/checkbox-group/CheckboxGroupDataAttributes.cjs +18 -0
  23. package/dist/checkbox-group/CheckboxGroupDataAttributes.cjs.map +1 -0
  24. package/dist/checkbox-group/CheckboxGroupDataAttributes.js +12 -0
  25. package/dist/checkbox-group/CheckboxGroupDataAttributes.js.map +1 -0
  26. package/dist/composite/composite.cjs +167 -0
  27. package/dist/composite/composite.cjs.map +1 -1
  28. package/dist/composite/composite.js +96 -1
  29. package/dist/composite/composite.js.map +1 -1
  30. package/dist/composite/constants.cjs +12 -0
  31. package/dist/composite/constants.cjs.map +1 -0
  32. package/dist/composite/constants.js +6 -0
  33. package/dist/composite/constants.js.map +1 -0
  34. package/dist/content/ScrollAreaContent.cjs +168 -0
  35. package/dist/content/ScrollAreaContent.cjs.map +1 -0
  36. package/dist/content/ScrollAreaContent.js +133 -0
  37. package/dist/content/ScrollAreaContent.js.map +1 -0
  38. package/dist/control/FieldControl.cjs +18 -343
  39. package/dist/control/FieldControl.cjs.map +1 -1
  40. package/dist/control/FieldControl.js +14 -285
  41. package/dist/control/FieldControl.js.map +1 -1
  42. package/dist/control/SliderControl.cjs +636 -0
  43. package/dist/control/SliderControl.cjs.map +1 -0
  44. package/dist/control/SliderControl.js +553 -0
  45. package/dist/control/SliderControl.js.map +1 -0
  46. package/dist/control/SliderControlDataAttributes.cjs +47 -0
  47. package/dist/control/SliderControlDataAttributes.cjs.map +1 -0
  48. package/dist/control/SliderControlDataAttributes.js +41 -0
  49. package/dist/control/SliderControlDataAttributes.js.map +1 -0
  50. package/dist/corner/ScrollAreaCorner.cjs +77 -0
  51. package/dist/corner/ScrollAreaCorner.cjs.map +1 -0
  52. package/dist/corner/ScrollAreaCorner.js +72 -0
  53. package/dist/corner/ScrollAreaCorner.js.map +1 -0
  54. package/dist/csp-provider/CSPContext.cjs +32 -0
  55. package/dist/csp-provider/CSPContext.cjs.map +1 -0
  56. package/dist/csp-provider/CSPContext.js +21 -0
  57. package/dist/csp-provider/CSPContext.js.map +1 -0
  58. package/dist/csp-provider/CSPProvider.cjs +46 -0
  59. package/dist/csp-provider/CSPProvider.cjs.map +1 -0
  60. package/dist/csp-provider/CSPProvider.js +41 -0
  61. package/dist/csp-provider/CSPProvider.js.map +1 -0
  62. package/dist/description/FieldDescription.cjs +5 -5
  63. package/dist/description/FieldDescription.cjs.map +1 -1
  64. package/dist/description/FieldDescription.js +1 -1
  65. package/dist/direction-provider/DirectionProvider.cjs +2 -2
  66. package/dist/direction-provider/DirectionProvider.cjs.map +1 -1
  67. package/dist/direction-provider/DirectionProvider.js +1 -1
  68. package/dist/error/FieldError.cjs +10 -288
  69. package/dist/error/FieldError.cjs.map +1 -1
  70. package/dist/error/FieldError.js +4 -246
  71. package/dist/error/FieldError.js.map +1 -1
  72. package/dist/form/Form.cjs +5 -4
  73. package/dist/form/Form.cjs.map +1 -1
  74. package/dist/form/Form.js +5 -4
  75. package/dist/form/Form.js.map +1 -1
  76. package/dist/group/ToolbarGroup.cjs +92 -0
  77. package/dist/group/ToolbarGroup.cjs.map +1 -0
  78. package/dist/group/ToolbarGroup.js +87 -0
  79. package/dist/group/ToolbarGroup.js.map +1 -0
  80. package/dist/group/ToolbarGroupDataAttributes.cjs +23 -0
  81. package/dist/group/ToolbarGroupDataAttributes.cjs.map +1 -0
  82. package/dist/group/ToolbarGroupDataAttributes.js +17 -0
  83. package/dist/group/ToolbarGroupDataAttributes.js.map +1 -0
  84. package/dist/header/AccordionHeader.cjs +2 -2
  85. package/dist/header/AccordionHeader.js +1 -1
  86. package/dist/image/AvatarImage.cjs +4 -4
  87. package/dist/image/AvatarImage.cjs.map +1 -1
  88. package/dist/image/AvatarImage.js +1 -1
  89. package/dist/index.cjs +113 -10
  90. package/dist/index.d.cts +3457 -603
  91. package/dist/index.d.cts.map +1 -1
  92. package/dist/index.d.ts +3457 -603
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +17 -5
  95. package/dist/index2.cjs +5897 -424
  96. package/dist/index2.cjs.map +1 -1
  97. package/dist/index2.js +5389 -270
  98. package/dist/index2.js.map +1 -1
  99. package/package.json +8 -4
  100. package/src/accordion/root/AccordionRoot.vue +2 -1
  101. package/src/checkbox/index.ts +23 -0
  102. package/src/checkbox/indicator/CheckboxIndicator.vue +102 -0
  103. package/src/checkbox/indicator/CheckboxIndicatorDataAttributes.ts +61 -0
  104. package/src/checkbox/root/CheckboxRoot.vue +632 -0
  105. package/src/checkbox/root/CheckboxRootContext.ts +22 -0
  106. package/src/checkbox/root/CheckboxRootDataAttributes.ts +54 -0
  107. package/src/checkbox/utils/useStateAttributesMapping.ts +30 -0
  108. package/src/checkbox-group/CheckboxGroup.vue +241 -0
  109. package/src/checkbox-group/CheckboxGroupContext.ts +39 -0
  110. package/src/checkbox-group/CheckboxGroupDataAttributes.ts +6 -0
  111. package/src/checkbox-group/index.ts +11 -0
  112. package/src/checkbox-group/useCheckboxGroupParent.ts +173 -0
  113. package/src/collapsible/panel/useCollapsiblePanel.ts +2 -1
  114. package/src/collapsible/root/useCollapsibleRoot.ts +3 -1
  115. package/src/composite/composite.ts +2 -0
  116. package/src/composite/item/CompositeItem.vue +7 -8
  117. package/src/composite/root/CompositeRoot.vue +12 -1
  118. package/src/csp-provider/CSPContext.ts +26 -0
  119. package/src/csp-provider/CSPProvider.vue +40 -0
  120. package/src/csp-provider/index.ts +5 -0
  121. package/src/field/item/FieldItem.vue +6 -1
  122. package/src/field/label/FieldLabel.vue +10 -51
  123. package/src/field/root/FieldRoot.vue +16 -3
  124. package/src/floating-ui-vue/types.ts +1 -4
  125. package/src/floating-ui-vue/utils/element.ts +12 -0
  126. package/src/floating-ui-vue/utils/shadowDom.ts +44 -0
  127. package/src/floating-ui-vue/utils.ts +3 -0
  128. package/src/form/Form.vue +5 -3
  129. package/src/index.ts +13 -0
  130. package/src/input/Input.vue +37 -0
  131. package/src/input/InputDataAttributes.ts +30 -0
  132. package/src/input/index.ts +4 -0
  133. package/src/labelable-provider/LabelableContext.ts +2 -2
  134. package/src/labelable-provider/LabelableProvider.vue +21 -4
  135. package/src/labelable-provider/index.ts +2 -0
  136. package/src/labelable-provider/useAriaLabelledBy.ts +9 -9
  137. package/src/labelable-provider/useLabel.ts +115 -0
  138. package/src/labelable-provider/useLabelableId.ts +12 -10
  139. package/src/meter/index.ts +16 -0
  140. package/src/meter/indicator/MeterIndicator.vue +65 -0
  141. package/src/meter/label/MeterLabel.vue +63 -0
  142. package/src/meter/root/MeterRoot.vue +131 -0
  143. package/src/meter/root/MeterRootContext.ts +41 -0
  144. package/src/meter/track/MeterTrack.vue +46 -0
  145. package/src/meter/value/MeterValue.vue +85 -0
  146. package/src/progress/index.ts +23 -0
  147. package/src/progress/indicator/ProgressIndicator.vue +74 -0
  148. package/src/progress/label/ProgressLabel.vue +63 -0
  149. package/src/progress/root/ProgressRoot.vue +160 -0
  150. package/src/progress/root/ProgressRootContext.ts +51 -0
  151. package/src/progress/root/ProgressRootDataAttributes.ts +14 -0
  152. package/src/progress/root/stateAttributesMapping.ts +18 -0
  153. package/src/progress/track/ProgressTrack.vue +48 -0
  154. package/src/progress/value/ProgressValue.vue +92 -0
  155. package/src/scroll-area/constants.ts +2 -0
  156. package/src/scroll-area/content/ScrollAreaContent.vue +87 -0
  157. package/src/scroll-area/corner/ScrollAreaCorner.vue +64 -0
  158. package/src/scroll-area/index.ts +25 -0
  159. package/src/scroll-area/root/ScrollAreaRoot.vue +297 -0
  160. package/src/scroll-area/root/ScrollAreaRootContext.ts +89 -0
  161. package/src/scroll-area/root/ScrollAreaRootCssVars.ts +4 -0
  162. package/src/scroll-area/root/ScrollAreaRootDataAttributes.ts +9 -0
  163. package/src/scroll-area/root/stateAttributes.ts +14 -0
  164. package/src/scroll-area/scrollbar/ScrollAreaScrollbar.vue +263 -0
  165. package/src/scroll-area/scrollbar/ScrollAreaScrollbarContext.ts +20 -0
  166. package/src/scroll-area/scrollbar/ScrollAreaScrollbarCssVars.ts +4 -0
  167. package/src/scroll-area/scrollbar/ScrollAreaScrollbarDataAttributes.ts +11 -0
  168. package/src/scroll-area/thumb/ScrollAreaThumb.vue +120 -0
  169. package/src/scroll-area/thumb/ScrollAreaThumbDataAttributes.ts +3 -0
  170. package/src/scroll-area/utils/getOffset.ts +34 -0
  171. package/src/scroll-area/viewport/ScrollAreaViewport.vue +379 -0
  172. package/src/scroll-area/viewport/ScrollAreaViewportContext.ts +20 -0
  173. package/src/scroll-area/viewport/ScrollAreaViewportCssVars.ts +6 -0
  174. package/src/scroll-area/viewport/ScrollAreaViewportDataAttributes.ts +9 -0
  175. package/src/separator/Separator.vue +65 -0
  176. package/src/separator/SeparatorDataAttributes.ts +7 -0
  177. package/src/separator/index.ts +3 -0
  178. package/src/slider/control/SliderControl.vue +497 -0
  179. package/src/slider/control/SliderControlDataAttributes.ts +35 -0
  180. package/src/slider/index.ts +35 -0
  181. package/src/slider/indicator/SliderIndicator.vue +144 -0
  182. package/src/slider/indicator/SliderIndicatorDataAttributes.ts +35 -0
  183. package/src/slider/label/SliderLabel.vue +75 -0
  184. package/src/slider/root/SliderRoot.vue +557 -0
  185. package/src/slider/root/SliderRootContext.ts +126 -0
  186. package/src/slider/root/SliderRootDataAttributes.ts +35 -0
  187. package/src/slider/root/stateAttributesMapping.ts +13 -0
  188. package/src/slider/thumb/SliderThumb.vue +601 -0
  189. package/src/slider/thumb/SliderThumbDataAttributes.ts +39 -0
  190. package/src/slider/thumb/prehydrationScript.min.ts +5 -0
  191. package/src/slider/thumb/prehydrationScript.template.js +69 -0
  192. package/src/slider/track/SliderTrack.vue +48 -0
  193. package/src/slider/track/SliderTrackDataAttributes.ts +10 -0
  194. package/src/slider/utils/asc.ts +3 -0
  195. package/src/slider/utils/getMidpoint.ts +9 -0
  196. package/src/slider/utils/getPushedThumbValues.ts +68 -0
  197. package/src/slider/utils/getSliderValue.ts +25 -0
  198. package/src/slider/utils/replaceArrayItemAtIndex.ts +15 -0
  199. package/src/slider/utils/resolveThumbCollision.ts +177 -0
  200. package/src/slider/utils/roundValueToStep.ts +19 -0
  201. package/src/slider/utils/test-utils.ts +25 -0
  202. package/src/slider/utils/validateMinimumDistance.ts +20 -0
  203. package/src/slider/utils/valueArrayToPercentages.ts +10 -0
  204. package/src/slider/value/SliderValue.vue +90 -0
  205. package/src/slider/value/SliderValueDataAttributes.ts +35 -0
  206. package/src/switch/index.ts +14 -0
  207. package/src/switch/root/SwitchRoot.vue +448 -0
  208. package/src/switch/root/SwitchRootContext.ts +22 -0
  209. package/src/switch/root/SwitchRootDataAttributes.ts +46 -0
  210. package/src/switch/stateAttributesMapping.ts +23 -0
  211. package/src/switch/thumb/SwitchThumb.vue +59 -0
  212. package/src/switch/thumb/SwitchThumbDataAttributes.ts +46 -0
  213. package/src/toggle/Toggle.vue +211 -0
  214. package/src/toggle/ToggleDataAttributes.ts +6 -0
  215. package/src/toggle/index.ts +3 -0
  216. package/src/toggle-group/ToggleGroup.vue +224 -0
  217. package/src/toggle-group/ToggleGroupContext.ts +45 -0
  218. package/src/toggle-group/ToggleGroupDataAttributes.ts +15 -0
  219. package/src/toggle-group/index.ts +5 -0
  220. package/src/toolbar/button/ToolbarButton.vue +99 -0
  221. package/src/toolbar/button/ToolbarButtonDataAttributes.ts +15 -0
  222. package/src/toolbar/group/ToolbarGroup.vue +70 -0
  223. package/src/toolbar/group/ToolbarGroupContext.ts +23 -0
  224. package/src/toolbar/group/ToolbarGroupDataAttributes.ts +11 -0
  225. package/src/toolbar/index.ts +27 -0
  226. package/src/toolbar/input/ToolbarInput.vue +114 -0
  227. package/src/toolbar/input/ToolbarInputDataAttributes.ts +15 -0
  228. package/src/toolbar/link/ToolbarLink.vue +54 -0
  229. package/src/toolbar/link/ToolbarLinkDataAttributes.ts +7 -0
  230. package/src/toolbar/root/ToolbarRoot.vue +144 -0
  231. package/src/toolbar/root/ToolbarRootContext.ts +29 -0
  232. package/src/toolbar/root/ToolbarRootDataAttributes.ts +11 -0
  233. package/src/toolbar/separator/ToolbarSeparator.vue +41 -0
  234. package/src/toolbar/separator/ToolbarSeparatorDataAttributes.ts +7 -0
  235. package/src/use-button/useButton.ts +2 -1
  236. package/src/utils/areArraysEqual.ts +12 -0
  237. package/src/utils/clamp.ts +7 -0
  238. package/src/utils/createBaseUIEventDetails.ts +9 -0
  239. package/src/utils/formatNumber.ts +32 -0
  240. package/src/utils/owner.ts +5 -0
  241. package/src/utils/resolveAriaLabelledBy.ts +10 -0
  242. package/src/utils/scrollEdges.ts +33 -0
  243. package/src/utils/styles.ts +28 -0
  244. package/src/utils/useControllableState.ts +78 -14
  245. package/src/utils/useFocusableWhenDisabled.ts +6 -1
  246. package/src/utils/useMergedRefs.ts +26 -2
  247. package/src/utils/useRegisteredLabelId.ts +21 -0
  248. package/src/utils/valueToPercent.ts +7 -0
  249. package/src/utils/visuallyHidden.ts +24 -0
  250. package/dist/direction-provider/DirectionContext.cjs +0 -26
  251. package/dist/direction-provider/DirectionContext.cjs.map +0 -1
  252. package/dist/direction-provider/DirectionContext.js +0 -15
  253. package/dist/direction-provider/DirectionContext.js.map +0 -1
@@ -7,22 +7,129 @@ const ARROW_LEFT = "ArrowLeft";
7
7
  const ARROW_RIGHT = "ArrowRight";
8
8
  const HOME = "Home";
9
9
  const END = "End";
10
+ const PAGE_UP = "PageUp";
11
+ const PAGE_DOWN = "PageDown";
10
12
  const HORIZONTAL_KEYS = new Set([ARROW_LEFT, ARROW_RIGHT]);
13
+ const HORIZONTAL_KEYS_WITH_EXTRA_KEYS = new Set([
14
+ ARROW_LEFT,
15
+ ARROW_RIGHT,
16
+ HOME,
17
+ END
18
+ ]);
11
19
  const VERTICAL_KEYS = new Set([ARROW_UP, ARROW_DOWN]);
20
+ const VERTICAL_KEYS_WITH_EXTRA_KEYS = new Set([
21
+ ARROW_UP,
22
+ ARROW_DOWN,
23
+ HOME,
24
+ END
25
+ ]);
12
26
  const ARROW_KEYS = new Set([...HORIZONTAL_KEYS, ...VERTICAL_KEYS]);
13
27
  const ALL_KEYS = new Set([
14
28
  ...ARROW_KEYS,
15
29
  HOME,
16
30
  END
17
31
  ]);
32
+ const COMPOSITE_KEYS = new Set([
33
+ ARROW_UP,
34
+ ARROW_DOWN,
35
+ ARROW_LEFT,
36
+ ARROW_RIGHT,
37
+ HOME,
38
+ END
39
+ ]);
40
+ const SHIFT = "Shift";
41
+ const CONTROL = "Control";
42
+ const ALT = "Alt";
43
+ const META = "Meta";
44
+ const MODIFIER_KEYS = new Set([
45
+ SHIFT,
46
+ CONTROL,
47
+ ALT,
48
+ META
49
+ ]);
50
+ function isInputElement(element) {
51
+ return (0, _floating_ui_utils_dom.isHTMLElement)(element) && element.tagName === "INPUT";
52
+ }
53
+ function isNativeInput(element) {
54
+ if (isInputElement(element) && element.selectionStart != null) return true;
55
+ if ((0, _floating_ui_utils_dom.isHTMLElement)(element) && element.tagName === "TEXTAREA") return true;
56
+ return false;
57
+ }
58
+ function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) {
59
+ if (!scrollContainer || !element || !element.scrollTo) return;
60
+ let targetX = scrollContainer.scrollLeft;
61
+ let targetY = scrollContainer.scrollTop;
62
+ const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;
63
+ const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;
64
+ if (isOverflowingX && orientation !== "vertical") {
65
+ const elementOffsetLeft = getOffset(scrollContainer, element, "left");
66
+ const containerStyles = getStyles(scrollContainer);
67
+ const elementStyles = getStyles(element);
68
+ if (direction === "ltr") {
69
+ if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
70
+ else if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
71
+ }
72
+ if (direction === "rtl") {
73
+ if (elementOffsetLeft - elementStyles.scrollMarginRight < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
74
+ else if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
75
+ }
76
+ }
77
+ if (isOverflowingY && orientation !== "horizontal") {
78
+ const elementOffsetTop = getOffset(scrollContainer, element, "top");
79
+ const containerStyles = getStyles(scrollContainer);
80
+ const elementStyles = getStyles(element);
81
+ if (elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop) targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;
82
+ else if (elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom) targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom;
83
+ }
84
+ scrollContainer.scrollTo({
85
+ left: targetX,
86
+ top: targetY,
87
+ behavior: "auto"
88
+ });
89
+ }
90
+ function getOffset(ancestor, element, side) {
91
+ const propName = side === "left" ? "offsetLeft" : "offsetTop";
92
+ let result = 0;
93
+ while (element.offsetParent) {
94
+ result += element[propName];
95
+ if (element.offsetParent === ancestor) break;
96
+ element = element.offsetParent;
97
+ }
98
+ return result;
99
+ }
100
+ function getStyles(element) {
101
+ const styles = getComputedStyle(element);
102
+ return {
103
+ scrollMarginTop: Number.parseFloat(styles.scrollMarginTop) || 0,
104
+ scrollMarginRight: Number.parseFloat(styles.scrollMarginRight) || 0,
105
+ scrollMarginBottom: Number.parseFloat(styles.scrollMarginBottom) || 0,
106
+ scrollMarginLeft: Number.parseFloat(styles.scrollMarginLeft) || 0,
107
+ scrollPaddingTop: Number.parseFloat(styles.scrollPaddingTop) || 0,
108
+ scrollPaddingRight: Number.parseFloat(styles.scrollPaddingRight) || 0,
109
+ scrollPaddingBottom: Number.parseFloat(styles.scrollPaddingBottom) || 0,
110
+ scrollPaddingLeft: Number.parseFloat(styles.scrollPaddingLeft) || 0
111
+ };
112
+ }
18
113
 
19
114
  //#endregion
115
+ Object.defineProperty(exports, 'ALL_KEYS', {
116
+ enumerable: true,
117
+ get: function () {
118
+ return ALL_KEYS;
119
+ }
120
+ });
20
121
  Object.defineProperty(exports, 'ARROW_DOWN', {
21
122
  enumerable: true,
22
123
  get: function () {
23
124
  return ARROW_DOWN;
24
125
  }
25
126
  });
127
+ Object.defineProperty(exports, 'ARROW_KEYS', {
128
+ enumerable: true,
129
+ get: function () {
130
+ return ARROW_KEYS;
131
+ }
132
+ });
26
133
  Object.defineProperty(exports, 'ARROW_LEFT', {
27
134
  enumerable: true,
28
135
  get: function () {
@@ -41,6 +148,12 @@ Object.defineProperty(exports, 'ARROW_UP', {
41
148
  return ARROW_UP;
42
149
  }
43
150
  });
151
+ Object.defineProperty(exports, 'COMPOSITE_KEYS', {
152
+ enumerable: true,
153
+ get: function () {
154
+ return COMPOSITE_KEYS;
155
+ }
156
+ });
44
157
  Object.defineProperty(exports, 'END', {
45
158
  enumerable: true,
46
159
  get: function () {
@@ -53,4 +166,58 @@ Object.defineProperty(exports, 'HOME', {
53
166
  return HOME;
54
167
  }
55
168
  });
169
+ Object.defineProperty(exports, 'HORIZONTAL_KEYS', {
170
+ enumerable: true,
171
+ get: function () {
172
+ return HORIZONTAL_KEYS;
173
+ }
174
+ });
175
+ Object.defineProperty(exports, 'HORIZONTAL_KEYS_WITH_EXTRA_KEYS', {
176
+ enumerable: true,
177
+ get: function () {
178
+ return HORIZONTAL_KEYS_WITH_EXTRA_KEYS;
179
+ }
180
+ });
181
+ Object.defineProperty(exports, 'MODIFIER_KEYS', {
182
+ enumerable: true,
183
+ get: function () {
184
+ return MODIFIER_KEYS;
185
+ }
186
+ });
187
+ Object.defineProperty(exports, 'PAGE_DOWN', {
188
+ enumerable: true,
189
+ get: function () {
190
+ return PAGE_DOWN;
191
+ }
192
+ });
193
+ Object.defineProperty(exports, 'PAGE_UP', {
194
+ enumerable: true,
195
+ get: function () {
196
+ return PAGE_UP;
197
+ }
198
+ });
199
+ Object.defineProperty(exports, 'VERTICAL_KEYS', {
200
+ enumerable: true,
201
+ get: function () {
202
+ return VERTICAL_KEYS;
203
+ }
204
+ });
205
+ Object.defineProperty(exports, 'VERTICAL_KEYS_WITH_EXTRA_KEYS', {
206
+ enumerable: true,
207
+ get: function () {
208
+ return VERTICAL_KEYS_WITH_EXTRA_KEYS;
209
+ }
210
+ });
211
+ Object.defineProperty(exports, 'isNativeInput', {
212
+ enumerable: true,
213
+ get: function () {
214
+ return isNativeInput;
215
+ }
216
+ });
217
+ Object.defineProperty(exports, 'scrollIntoViewIfNeeded', {
218
+ enumerable: true,
219
+ get: function () {
220
+ return scrollIntoViewIfNeeded;
221
+ }
222
+ });
56
223
  //# sourceMappingURL=composite.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"composite.cjs","names":[],"sources":["../../src/composite/composite.ts"],"sourcesContent":[],"mappings":";;;AAqBA,MAAa,WAAW;AACxB,MAAa,aAAa;AAC1B,MAAa,aAAa;AAC1B,MAAa,cAAc;AAC3B,MAAa,OAAO;AACpB,MAAa,MAAM;AAEnB,MAAa,kBAAkB,IAAI,IAAI,CAAC,YAAY,YAAY,CAAC;AAOjE,MAAa,gBAAgB,IAAI,IAAI,CAAC,UAAU,WAAW,CAAC;AAO5D,MAAa,aAAa,IAAI,IAAI,CAAC,GAAG,iBAAiB,GAAG,cAAc,CAAC;AACzE,MAAa,WAAW,IAAI,IAAI;CAAC,GAAG;CAAY;CAAM;CAAI,CAAC"}
1
+ {"version":3,"file":"composite.cjs","names":[],"sources":["../../src/composite/composite.ts"],"sourcesContent":[],"mappings":"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"}
@@ -7,15 +7,110 @@ const ARROW_LEFT = "ArrowLeft";
7
7
  const ARROW_RIGHT = "ArrowRight";
8
8
  const HOME = "Home";
9
9
  const END = "End";
10
+ const PAGE_UP = "PageUp";
11
+ const PAGE_DOWN = "PageDown";
10
12
  const HORIZONTAL_KEYS = new Set([ARROW_LEFT, ARROW_RIGHT]);
13
+ const HORIZONTAL_KEYS_WITH_EXTRA_KEYS = new Set([
14
+ ARROW_LEFT,
15
+ ARROW_RIGHT,
16
+ HOME,
17
+ END
18
+ ]);
11
19
  const VERTICAL_KEYS = new Set([ARROW_UP, ARROW_DOWN]);
20
+ const VERTICAL_KEYS_WITH_EXTRA_KEYS = new Set([
21
+ ARROW_UP,
22
+ ARROW_DOWN,
23
+ HOME,
24
+ END
25
+ ]);
12
26
  const ARROW_KEYS = new Set([...HORIZONTAL_KEYS, ...VERTICAL_KEYS]);
13
27
  const ALL_KEYS = new Set([
14
28
  ...ARROW_KEYS,
15
29
  HOME,
16
30
  END
17
31
  ]);
32
+ const COMPOSITE_KEYS = new Set([
33
+ ARROW_UP,
34
+ ARROW_DOWN,
35
+ ARROW_LEFT,
36
+ ARROW_RIGHT,
37
+ HOME,
38
+ END
39
+ ]);
40
+ const SHIFT = "Shift";
41
+ const CONTROL = "Control";
42
+ const ALT = "Alt";
43
+ const META = "Meta";
44
+ const MODIFIER_KEYS = new Set([
45
+ SHIFT,
46
+ CONTROL,
47
+ ALT,
48
+ META
49
+ ]);
50
+ function isInputElement(element) {
51
+ return isHTMLElement(element) && element.tagName === "INPUT";
52
+ }
53
+ function isNativeInput(element) {
54
+ if (isInputElement(element) && element.selectionStart != null) return true;
55
+ if (isHTMLElement(element) && element.tagName === "TEXTAREA") return true;
56
+ return false;
57
+ }
58
+ function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) {
59
+ if (!scrollContainer || !element || !element.scrollTo) return;
60
+ let targetX = scrollContainer.scrollLeft;
61
+ let targetY = scrollContainer.scrollTop;
62
+ const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;
63
+ const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;
64
+ if (isOverflowingX && orientation !== "vertical") {
65
+ const elementOffsetLeft = getOffset(scrollContainer, element, "left");
66
+ const containerStyles = getStyles(scrollContainer);
67
+ const elementStyles = getStyles(element);
68
+ if (direction === "ltr") {
69
+ if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
70
+ else if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
71
+ }
72
+ if (direction === "rtl") {
73
+ if (elementOffsetLeft - elementStyles.scrollMarginRight < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
74
+ else if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
75
+ }
76
+ }
77
+ if (isOverflowingY && orientation !== "horizontal") {
78
+ const elementOffsetTop = getOffset(scrollContainer, element, "top");
79
+ const containerStyles = getStyles(scrollContainer);
80
+ const elementStyles = getStyles(element);
81
+ if (elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop) targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;
82
+ else if (elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom) targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom;
83
+ }
84
+ scrollContainer.scrollTo({
85
+ left: targetX,
86
+ top: targetY,
87
+ behavior: "auto"
88
+ });
89
+ }
90
+ function getOffset(ancestor, element, side) {
91
+ const propName = side === "left" ? "offsetLeft" : "offsetTop";
92
+ let result = 0;
93
+ while (element.offsetParent) {
94
+ result += element[propName];
95
+ if (element.offsetParent === ancestor) break;
96
+ element = element.offsetParent;
97
+ }
98
+ return result;
99
+ }
100
+ function getStyles(element) {
101
+ const styles = getComputedStyle(element);
102
+ return {
103
+ scrollMarginTop: Number.parseFloat(styles.scrollMarginTop) || 0,
104
+ scrollMarginRight: Number.parseFloat(styles.scrollMarginRight) || 0,
105
+ scrollMarginBottom: Number.parseFloat(styles.scrollMarginBottom) || 0,
106
+ scrollMarginLeft: Number.parseFloat(styles.scrollMarginLeft) || 0,
107
+ scrollPaddingTop: Number.parseFloat(styles.scrollPaddingTop) || 0,
108
+ scrollPaddingRight: Number.parseFloat(styles.scrollPaddingRight) || 0,
109
+ scrollPaddingBottom: Number.parseFloat(styles.scrollPaddingBottom) || 0,
110
+ scrollPaddingLeft: Number.parseFloat(styles.scrollPaddingLeft) || 0
111
+ };
112
+ }
18
113
 
19
114
  //#endregion
20
- export { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, END, HOME };
115
+ export { ALL_KEYS, ARROW_DOWN, ARROW_KEYS, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, COMPOSITE_KEYS, END, HOME, HORIZONTAL_KEYS, HORIZONTAL_KEYS_WITH_EXTRA_KEYS, MODIFIER_KEYS, PAGE_DOWN, PAGE_UP, VERTICAL_KEYS, VERTICAL_KEYS_WITH_EXTRA_KEYS, isNativeInput, scrollIntoViewIfNeeded };
21
116
  //# sourceMappingURL=composite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"composite.js","names":[],"sources":["../../src/composite/composite.ts"],"sourcesContent":[],"mappings":";;;AAqBA,MAAa,WAAW;AACxB,MAAa,aAAa;AAC1B,MAAa,aAAa;AAC1B,MAAa,cAAc;AAC3B,MAAa,OAAO;AACpB,MAAa,MAAM;AAEnB,MAAa,kBAAkB,IAAI,IAAI,CAAC,YAAY,YAAY,CAAC;AAOjE,MAAa,gBAAgB,IAAI,IAAI,CAAC,UAAU,WAAW,CAAC;AAO5D,MAAa,aAAa,IAAI,IAAI,CAAC,GAAG,iBAAiB,GAAG,cAAc,CAAC;AACzE,MAAa,WAAW,IAAI,IAAI;CAAC,GAAG;CAAY;CAAM;CAAI,CAAC"}
1
+ {"version":3,"file":"composite.js","names":[],"sources":["../../src/composite/composite.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+
2
+ //#region src/composite/constants.ts
3
+ const ACTIVE_COMPOSITE_ITEM = "data-composite-item-active";
4
+
5
+ //#endregion
6
+ Object.defineProperty(exports, 'ACTIVE_COMPOSITE_ITEM', {
7
+ enumerable: true,
8
+ get: function () {
9
+ return ACTIVE_COMPOSITE_ITEM;
10
+ }
11
+ });
12
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.cjs","names":[],"sources":["../../src/composite/constants.ts"],"sourcesContent":[],"mappings":";;AAAA,MAAa,wBAAwB"}
@@ -0,0 +1,6 @@
1
+ //#region src/composite/constants.ts
2
+ const ACTIVE_COMPOSITE_ITEM = "data-composite-item-active";
3
+
4
+ //#endregion
5
+ export { ACTIVE_COMPOSITE_ITEM };
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../../src/composite/constants.ts"],"sourcesContent":[],"mappings":";AAAA,MAAa,wBAAwB"}
@@ -0,0 +1,168 @@
1
+ const require_button_Button = require('../button/Button.cjs');
2
+ let vue = require("vue");
3
+
4
+ //#region src/scroll-area/root/ScrollAreaRootContext.ts
5
+ const scrollAreaRootContextKey = Symbol("ScrollAreaRootContext");
6
+ function useScrollAreaRootContext() {
7
+ const context = (0, vue.inject)(scrollAreaRootContextKey);
8
+ if (context === void 0) throw new Error("Base UI: ScrollAreaRootContext is missing. ScrollArea parts must be placed within <ScrollAreaRoot>.");
9
+ return context;
10
+ }
11
+
12
+ //#endregion
13
+ //#region src/scroll-area/root/ScrollAreaRootDataAttributes.ts
14
+ let ScrollAreaRootDataAttributes = /* @__PURE__ */ function(ScrollAreaRootDataAttributes) {
15
+ ScrollAreaRootDataAttributes["scrolling"] = "data-scrolling";
16
+ ScrollAreaRootDataAttributes["hasOverflowX"] = "data-has-overflow-x";
17
+ ScrollAreaRootDataAttributes["hasOverflowY"] = "data-has-overflow-y";
18
+ ScrollAreaRootDataAttributes["overflowXStart"] = "data-overflow-x-start";
19
+ ScrollAreaRootDataAttributes["overflowXEnd"] = "data-overflow-x-end";
20
+ ScrollAreaRootDataAttributes["overflowYStart"] = "data-overflow-y-start";
21
+ ScrollAreaRootDataAttributes["overflowYEnd"] = "data-overflow-y-end";
22
+ return ScrollAreaRootDataAttributes;
23
+ }({});
24
+
25
+ //#endregion
26
+ //#region src/scroll-area/root/stateAttributes.ts
27
+ const scrollAreaStateAttributesMapping = {
28
+ scrolling: (value) => value ? { [ScrollAreaRootDataAttributes.scrolling]: "" } : null,
29
+ hasOverflowX: (value) => value ? { [ScrollAreaRootDataAttributes.hasOverflowX]: "" } : null,
30
+ hasOverflowY: (value) => value ? { [ScrollAreaRootDataAttributes.hasOverflowY]: "" } : null,
31
+ overflowXStart: (value) => value ? { [ScrollAreaRootDataAttributes.overflowXStart]: "" } : null,
32
+ overflowXEnd: (value) => value ? { [ScrollAreaRootDataAttributes.overflowXEnd]: "" } : null,
33
+ overflowYStart: (value) => value ? { [ScrollAreaRootDataAttributes.overflowYStart]: "" } : null,
34
+ overflowYEnd: (value) => value ? { [ScrollAreaRootDataAttributes.overflowYEnd]: "" } : null,
35
+ cornerHidden: () => null
36
+ };
37
+
38
+ //#endregion
39
+ //#region src/scroll-area/viewport/ScrollAreaViewportContext.ts
40
+ const scrollAreaViewportContextKey = Symbol("ScrollAreaViewportContext");
41
+ function useScrollAreaViewportContext() {
42
+ const context = (0, vue.inject)(scrollAreaViewportContextKey);
43
+ if (context === void 0) throw new Error("Base UI: ScrollAreaViewportContext is missing. ScrollArea.Content must be placed within <ScrollAreaViewport>.");
44
+ return context;
45
+ }
46
+
47
+ //#endregion
48
+ //#region src/scroll-area/content/ScrollAreaContent.vue?vue&type=script&setup=true&lang.ts
49
+ var ScrollAreaContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
50
+ name: "ScrollAreaContent",
51
+ inheritAttrs: false,
52
+ __name: "ScrollAreaContent",
53
+ props: {
54
+ as: {
55
+ type: null,
56
+ required: false,
57
+ default: "div"
58
+ },
59
+ class: {
60
+ type: Function,
61
+ required: false,
62
+ skipCheck: true
63
+ },
64
+ style: {
65
+ type: [
66
+ Boolean,
67
+ null,
68
+ String,
69
+ Object,
70
+ Array,
71
+ Function
72
+ ],
73
+ required: false,
74
+ skipCheck: true
75
+ }
76
+ },
77
+ setup(__props) {
78
+ const props = __props;
79
+ const attrs = (0, vue.useAttrs)();
80
+ const contentWrapperRef = (0, vue.shallowRef)(null);
81
+ const { computeThumbPosition } = useScrollAreaViewportContext();
82
+ const { viewportState } = useScrollAreaRootContext();
83
+ let resizeObserver;
84
+ (0, vue.onMounted)(() => {
85
+ if (typeof ResizeObserver === "undefined") return;
86
+ let hasInitialized = false;
87
+ resizeObserver = new ResizeObserver(() => {
88
+ if (!hasInitialized) {
89
+ hasInitialized = true;
90
+ return;
91
+ }
92
+ computeThumbPosition();
93
+ });
94
+ if (contentWrapperRef.value) resizeObserver.observe(contentWrapperRef.value);
95
+ });
96
+ (0, vue.onBeforeUnmount)(() => {
97
+ resizeObserver?.disconnect();
98
+ });
99
+ const { tag, mergedProps, renderless, ref: renderRef } = require_button_Button.useRenderElement({
100
+ componentProps: props,
101
+ state: viewportState,
102
+ props: (0, vue.computed)(() => require_button_Button.mergeProps(attrs, {
103
+ role: "presentation",
104
+ style: { minWidth: "fit-content" }
105
+ })),
106
+ stateAttributesMapping: scrollAreaStateAttributesMapping,
107
+ defaultTagName: "div",
108
+ ref: contentWrapperRef
109
+ });
110
+ return (_ctx, _cache) => {
111
+ return (0, vue.unref)(renderless) ? (0, vue.renderSlot)(_ctx.$slots, "default", {
112
+ key: 0,
113
+ ref: (0, vue.unref)(renderRef),
114
+ props: (0, vue.unref)(mergedProps),
115
+ state: (0, vue.unref)(viewportState)
116
+ }) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(tag)), (0, vue.mergeProps)({
117
+ key: 1,
118
+ ref: (0, vue.unref)(renderRef)
119
+ }, (0, vue.unref)(mergedProps)), {
120
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]),
121
+ _: 3
122
+ }, 16));
123
+ };
124
+ }
125
+ });
126
+
127
+ //#endregion
128
+ //#region src/scroll-area/content/ScrollAreaContent.vue
129
+ var ScrollAreaContent_default = ScrollAreaContent_vue_vue_type_script_setup_true_lang_default;
130
+
131
+ //#endregion
132
+ Object.defineProperty(exports, 'ScrollAreaContent_default', {
133
+ enumerable: true,
134
+ get: function () {
135
+ return ScrollAreaContent_default;
136
+ }
137
+ });
138
+ Object.defineProperty(exports, 'ScrollAreaRootDataAttributes', {
139
+ enumerable: true,
140
+ get: function () {
141
+ return ScrollAreaRootDataAttributes;
142
+ }
143
+ });
144
+ Object.defineProperty(exports, 'scrollAreaRootContextKey', {
145
+ enumerable: true,
146
+ get: function () {
147
+ return scrollAreaRootContextKey;
148
+ }
149
+ });
150
+ Object.defineProperty(exports, 'scrollAreaStateAttributesMapping', {
151
+ enumerable: true,
152
+ get: function () {
153
+ return scrollAreaStateAttributesMapping;
154
+ }
155
+ });
156
+ Object.defineProperty(exports, 'scrollAreaViewportContextKey', {
157
+ enumerable: true,
158
+ get: function () {
159
+ return scrollAreaViewportContextKey;
160
+ }
161
+ });
162
+ Object.defineProperty(exports, 'useScrollAreaRootContext', {
163
+ enumerable: true,
164
+ get: function () {
165
+ return useScrollAreaRootContext;
166
+ }
167
+ });
168
+ //# sourceMappingURL=ScrollAreaContent.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollAreaContent.cjs","names":[],"sources":["../../src/scroll-area/root/ScrollAreaRootContext.ts","../../src/scroll-area/root/ScrollAreaRootDataAttributes.ts","../../src/scroll-area/root/stateAttributes.ts","../../src/scroll-area/viewport/ScrollAreaViewportContext.ts","../../src/scroll-area/content/ScrollAreaContent.vue","../../src/scroll-area/content/ScrollAreaContent.vue"],"sourcesContent":[],"mappings":";;;;AA4EA,MAAa,2BAA2B,OACtC,wBACD;AAED,SAAgB,2BAAkD;CAChE,MAAM,0BAAiB,yBAAyB;AAChD,KAAI,YAAY,OACd,OAAM,IAAI,MACR,sGACD;AAEH,QAAO;;;;;ACvFT,IAAY,sFAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACHF,MAAa,mCAAgF;CAC3F,YAAW,UAAU,QAAQ,GAAG,6BAA6B,YAAY,IAAI,GAAG;CAChF,eAAc,UAAU,QAAQ,GAAG,6BAA6B,eAAe,IAAI,GAAG;CACtF,eAAc,UAAU,QAAQ,GAAG,6BAA6B,eAAe,IAAI,GAAG;CACtF,iBAAgB,UAAU,QAAQ,GAAG,6BAA6B,iBAAiB,IAAI,GAAG;CAC1F,eAAc,UAAU,QAAQ,GAAG,6BAA6B,eAAe,IAAI,GAAG;CACtF,iBAAgB,UAAU,QAAQ,GAAG,6BAA6B,iBAAiB,IAAI,GAAG;CAC1F,eAAc,UAAU,QAAQ,GAAG,6BAA6B,eAAe,IAAI,GAAG;CACtF,oBAAoB;CACrB;;;;ACND,MAAa,+BAA+B,OAC1C,4BACD;AAED,SAAgB,+BAA0D;CACxE,MAAM,0BAAiB,6BAA6B;AACpD,KAAI,YAAY,OACd,OAAM,IAAI,MACR,gHACD;AAEH,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECCT,MAAM,QAAQ;EAId,MAAM,2BAAiB;EAEvB,MAAM,wCAAsD,KAAI;EAChE,MAAM,EAAE,yBAAyB,8BAA6B;EAC9D,MAAM,EAAE,kBAAkB,0BAAyB;EAEnD,IAAI;AAEJ,2BAAgB;AACd,OAAI,OAAO,mBAAmB,YAC5B;GAEF,IAAI,iBAAiB;AACrB,oBAAiB,IAAI,qBAAqB;AACxC,QAAI,CAAC,gBAAgB;AACnB,sBAAiB;AACjB;;AAEF,0BAAqB;KACtB;AAED,OAAI,kBAAkB,MACpB,gBAAe,QAAQ,kBAAkB,MAAK;IAEjD;AAED,iCAAsB;AACpB,mBAAgB,YAAW;IAC5B;EAUD,MAAM,EACJ,KACA,aACA,YACA,KAAK,cACH,uCAAiB;GACnB,gBAAgB;GAChB,OAAO;GACP,+BAhBkC,iCAClC,OACA;IACE,MAAM;IACN,OAAO,EAAE,UAAU,eAAe;IACnC,CACF,CAAA;GAWC,wBAAwB;GACxB,gBAAgB;GAChB,KAAK;GACN,CAAA;;yBAIa,WAAU,uBAAiE,KAAA,QAAA,WAAA;;IAA9D,oBAAK,UAAS;IAAG,sBAAO,YAAW;IAAG,sBAAO,cAAa;oGAE5E,IAAG,CAAA,sBAME;;IAJT,oBAAK,UAAS;qBACP,YAAW,CAAA,EAAA;oCAEX,qBAAA,KAAA,QAAA,UAAA"}
@@ -0,0 +1,133 @@
1
+ import { mergeProps as mergeProps$1, useRenderElement } from "../button/Button.js";
2
+ import { computed, createBlock, createCommentVNode, defineComponent, inject, mergeProps, onBeforeUnmount, onMounted, openBlock, renderSlot, resolveDynamicComponent, shallowRef, unref, useAttrs, withCtx } from "vue";
3
+
4
+ //#region src/scroll-area/root/ScrollAreaRootContext.ts
5
+ const scrollAreaRootContextKey = Symbol("ScrollAreaRootContext");
6
+ function useScrollAreaRootContext() {
7
+ const context = inject(scrollAreaRootContextKey);
8
+ if (context === void 0) throw new Error("Base UI: ScrollAreaRootContext is missing. ScrollArea parts must be placed within <ScrollAreaRoot>.");
9
+ return context;
10
+ }
11
+
12
+ //#endregion
13
+ //#region src/scroll-area/root/ScrollAreaRootDataAttributes.ts
14
+ let ScrollAreaRootDataAttributes = /* @__PURE__ */ function(ScrollAreaRootDataAttributes) {
15
+ ScrollAreaRootDataAttributes["scrolling"] = "data-scrolling";
16
+ ScrollAreaRootDataAttributes["hasOverflowX"] = "data-has-overflow-x";
17
+ ScrollAreaRootDataAttributes["hasOverflowY"] = "data-has-overflow-y";
18
+ ScrollAreaRootDataAttributes["overflowXStart"] = "data-overflow-x-start";
19
+ ScrollAreaRootDataAttributes["overflowXEnd"] = "data-overflow-x-end";
20
+ ScrollAreaRootDataAttributes["overflowYStart"] = "data-overflow-y-start";
21
+ ScrollAreaRootDataAttributes["overflowYEnd"] = "data-overflow-y-end";
22
+ return ScrollAreaRootDataAttributes;
23
+ }({});
24
+
25
+ //#endregion
26
+ //#region src/scroll-area/root/stateAttributes.ts
27
+ const scrollAreaStateAttributesMapping = {
28
+ scrolling: (value) => value ? { [ScrollAreaRootDataAttributes.scrolling]: "" } : null,
29
+ hasOverflowX: (value) => value ? { [ScrollAreaRootDataAttributes.hasOverflowX]: "" } : null,
30
+ hasOverflowY: (value) => value ? { [ScrollAreaRootDataAttributes.hasOverflowY]: "" } : null,
31
+ overflowXStart: (value) => value ? { [ScrollAreaRootDataAttributes.overflowXStart]: "" } : null,
32
+ overflowXEnd: (value) => value ? { [ScrollAreaRootDataAttributes.overflowXEnd]: "" } : null,
33
+ overflowYStart: (value) => value ? { [ScrollAreaRootDataAttributes.overflowYStart]: "" } : null,
34
+ overflowYEnd: (value) => value ? { [ScrollAreaRootDataAttributes.overflowYEnd]: "" } : null,
35
+ cornerHidden: () => null
36
+ };
37
+
38
+ //#endregion
39
+ //#region src/scroll-area/viewport/ScrollAreaViewportContext.ts
40
+ const scrollAreaViewportContextKey = Symbol("ScrollAreaViewportContext");
41
+ function useScrollAreaViewportContext() {
42
+ const context = inject(scrollAreaViewportContextKey);
43
+ if (context === void 0) throw new Error("Base UI: ScrollAreaViewportContext is missing. ScrollArea.Content must be placed within <ScrollAreaViewport>.");
44
+ return context;
45
+ }
46
+
47
+ //#endregion
48
+ //#region src/scroll-area/content/ScrollAreaContent.vue?vue&type=script&setup=true&lang.ts
49
+ var ScrollAreaContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
50
+ name: "ScrollAreaContent",
51
+ inheritAttrs: false,
52
+ __name: "ScrollAreaContent",
53
+ props: {
54
+ as: {
55
+ type: null,
56
+ required: false,
57
+ default: "div"
58
+ },
59
+ class: {
60
+ type: Function,
61
+ required: false,
62
+ skipCheck: true
63
+ },
64
+ style: {
65
+ type: [
66
+ Boolean,
67
+ null,
68
+ String,
69
+ Object,
70
+ Array,
71
+ Function
72
+ ],
73
+ required: false,
74
+ skipCheck: true
75
+ }
76
+ },
77
+ setup(__props) {
78
+ const props = __props;
79
+ const attrs = useAttrs();
80
+ const contentWrapperRef = shallowRef(null);
81
+ const { computeThumbPosition } = useScrollAreaViewportContext();
82
+ const { viewportState } = useScrollAreaRootContext();
83
+ let resizeObserver;
84
+ onMounted(() => {
85
+ if (typeof ResizeObserver === "undefined") return;
86
+ let hasInitialized = false;
87
+ resizeObserver = new ResizeObserver(() => {
88
+ if (!hasInitialized) {
89
+ hasInitialized = true;
90
+ return;
91
+ }
92
+ computeThumbPosition();
93
+ });
94
+ if (contentWrapperRef.value) resizeObserver.observe(contentWrapperRef.value);
95
+ });
96
+ onBeforeUnmount(() => {
97
+ resizeObserver?.disconnect();
98
+ });
99
+ const { tag, mergedProps, renderless, ref: renderRef } = useRenderElement({
100
+ componentProps: props,
101
+ state: viewportState,
102
+ props: computed(() => mergeProps$1(attrs, {
103
+ role: "presentation",
104
+ style: { minWidth: "fit-content" }
105
+ })),
106
+ stateAttributesMapping: scrollAreaStateAttributesMapping,
107
+ defaultTagName: "div",
108
+ ref: contentWrapperRef
109
+ });
110
+ return (_ctx, _cache) => {
111
+ return unref(renderless) ? renderSlot(_ctx.$slots, "default", {
112
+ key: 0,
113
+ ref: unref(renderRef),
114
+ props: unref(mergedProps),
115
+ state: unref(viewportState)
116
+ }) : (openBlock(), createBlock(resolveDynamicComponent(unref(tag)), mergeProps({
117
+ key: 1,
118
+ ref: unref(renderRef)
119
+ }, unref(mergedProps)), {
120
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
121
+ _: 3
122
+ }, 16));
123
+ };
124
+ }
125
+ });
126
+
127
+ //#endregion
128
+ //#region src/scroll-area/content/ScrollAreaContent.vue
129
+ var ScrollAreaContent_default = ScrollAreaContent_vue_vue_type_script_setup_true_lang_default;
130
+
131
+ //#endregion
132
+ export { ScrollAreaContent_default, ScrollAreaRootDataAttributes, scrollAreaRootContextKey, scrollAreaStateAttributesMapping, scrollAreaViewportContextKey, useScrollAreaRootContext };
133
+ //# sourceMappingURL=ScrollAreaContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollAreaContent.js","names":[],"sources":["../../src/scroll-area/root/ScrollAreaRootContext.ts","../../src/scroll-area/root/ScrollAreaRootDataAttributes.ts","../../src/scroll-area/root/stateAttributes.ts","../../src/scroll-area/viewport/ScrollAreaViewportContext.ts","../../src/scroll-area/content/ScrollAreaContent.vue","../../src/scroll-area/content/ScrollAreaContent.vue"],"sourcesContent":[],"mappings":";;;;AA4EA,MAAa,2BAA2B,OACtC,wBACD;AAED,SAAgB,2BAAkD;CAChE,MAAM,UAAU,OAAO,yBAAyB;AAChD,KAAI,YAAY,OACd,OAAM,IAAI,MACR,sGACD;AAEH,QAAO;;;;;ACvFT,IAAY,sFAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACHF,MAAa,mCAAgF;CAC3F,YAAW,UAAU,QAAQ,GAAG,6BAA6B,YAAY,IAAI,GAAG;CAChF,eAAc,UAAU,QAAQ,GAAG,6BAA6B,eAAe,IAAI,GAAG;CACtF,eAAc,UAAU,QAAQ,GAAG,6BAA6B,eAAe,IAAI,GAAG;CACtF,iBAAgB,UAAU,QAAQ,GAAG,6BAA6B,iBAAiB,IAAI,GAAG;CAC1F,eAAc,UAAU,QAAQ,GAAG,6BAA6B,eAAe,IAAI,GAAG;CACtF,iBAAgB,UAAU,QAAQ,GAAG,6BAA6B,iBAAiB,IAAI,GAAG;CAC1F,eAAc,UAAU,QAAQ,GAAG,6BAA6B,eAAe,IAAI,GAAG;CACtF,oBAAoB;CACrB;;;;ACND,MAAa,+BAA+B,OAC1C,4BACD;AAED,SAAgB,+BAA0D;CACxE,MAAM,UAAU,OAAO,6BAA6B;AACpD,KAAI,YAAY,OACd,OAAM,IAAI,MACR,gHACD;AAEH,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECCT,MAAM,QAAQ;EAId,MAAM,QAAQ,UAAS;EAEvB,MAAM,oBAAoB,WAAkC,KAAI;EAChE,MAAM,EAAE,yBAAyB,8BAA6B;EAC9D,MAAM,EAAE,kBAAkB,0BAAyB;EAEnD,IAAI;AAEJ,kBAAgB;AACd,OAAI,OAAO,mBAAmB,YAC5B;GAEF,IAAI,iBAAiB;AACrB,oBAAiB,IAAI,qBAAqB;AACxC,QAAI,CAAC,gBAAgB;AACnB,sBAAiB;AACjB;;AAEF,0BAAqB;KACtB;AAED,OAAI,kBAAkB,MACpB,gBAAe,QAAQ,kBAAkB,MAAK;IAEjD;AAED,wBAAsB;AACpB,mBAAgB,YAAW;IAC5B;EAUD,MAAM,EACJ,KACA,aACA,YACA,KAAK,cACH,iBAAiB;GACnB,gBAAgB;GAChB,OAAO;GACP,OAhBmB,eAAe,aAClC,OACA;IACE,MAAM;IACN,OAAO,EAAE,UAAU,eAAe;IACnC,CACF,CAAA;GAWC,wBAAwB;GACxB,gBAAgB;GAChB,KAAK;GACN,CAAA;;UAIa,MAAA,WAAU,GAAtB,WAAuF,KAAA,QAAA,WAAA;;IAA9D,KAAK,MAAA,UAAS;IAAG,OAAO,MAAA,YAAW;IAAG,OAAO,MAAA,cAAa;sBACnF,YAOY,wBANL,MAAA,IAAG,CAAA,EADV,WAOY;;IAJT,KAAK,MAAA,UAAS;MACP,MAAA,YAAW,CAAA,EAAA;2BAEX,CAAR,WAAQ,KAAA,QAAA,UAAA"}