ropav 0.4.0 → 0.6.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 (266) hide show
  1. package/dist/components/autocomplete/autocomplete-root.js +3 -1
  2. package/dist/components/autocomplete/index.d.ts +3 -0
  3. package/dist/components/breadcrumbs/breadcrumbs-item.js +1 -0
  4. package/dist/components/breadcrumbs/index.d.ts +1 -0
  5. package/dist/components/calendar/index.d.ts +5 -3
  6. package/dist/components/calendar-year-picker/index.d.ts +4 -2
  7. package/dist/components/checkbox/checkbox-content.js +1 -1
  8. package/dist/components/color-field/index.d.ts +1 -0
  9. package/dist/components/color-input-group/color-input-group-root.js +2 -0
  10. package/dist/components/color-input-group/color-input-group.types.d.ts +2 -0
  11. package/dist/components/color-input-group/index.d.ts +2 -0
  12. package/dist/components/combo-box/combo-box-root.js +9 -2
  13. package/dist/components/combo-box/combo-box.types.d.ts +3 -0
  14. package/dist/components/combo-box/index.d.ts +3 -0
  15. package/dist/components/date-field/index.d.ts +1 -0
  16. package/dist/components/date-input-group/date-input-group-root.js +2 -0
  17. package/dist/components/date-input-group/date-input-group-segment.js +1 -1
  18. package/dist/components/date-input-group/date-input-group.types.d.ts +2 -0
  19. package/dist/{composables → components/date-input-group}/use-date-segment.d.ts +2 -2
  20. package/dist/{composables → components/date-input-group}/use-date-segment.js +9 -9
  21. package/dist/components/date-range-picker/date-range-picker-root.js +1 -1
  22. package/dist/components/date-range-picker/index.d.ts +15 -14
  23. package/dist/{composables → components/date-range-picker}/use-date-range-picker.d.ts +7 -7
  24. package/dist/{composables → components/date-range-picker}/use-date-range-picker.js +10 -10
  25. package/dist/components/drawer/drawer-dialog.js +1 -1
  26. package/dist/{composables → components/drawer}/use-drawer-drag.d.ts +1 -1
  27. package/dist/{composables → components/drawer}/use-drawer-drag.js +1 -1
  28. package/dist/components/drop-zone/drop-zone-root.d.ts +23 -0
  29. package/dist/components/drop-zone/drop-zone-root.js +153 -0
  30. package/dist/components/drop-zone/drop-zone-trigger.d.ts +21 -0
  31. package/dist/components/drop-zone/drop-zone-trigger.js +20 -0
  32. package/dist/components/drop-zone/drop-zone.accept.d.ts +19 -0
  33. package/dist/components/drop-zone/drop-zone.accept.js +28 -0
  34. package/dist/components/drop-zone/drop-zone.context.d.ts +6 -0
  35. package/dist/components/drop-zone/drop-zone.context.js +5 -0
  36. package/dist/components/drop-zone/drop-zone.types.d.ts +30 -0
  37. package/dist/components/drop-zone/index.d.ts +86 -0
  38. package/dist/components/drop-zone/index.js +11 -0
  39. package/dist/components/dropdown/dropdown-menu.js +1 -0
  40. package/dist/components/dropdown/dropdown-submenu-trigger.js +1 -1
  41. package/dist/components/dropdown/index.d.ts +4 -2
  42. package/dist/{composables → components/dropdown}/use-safely-mouse-to-submenu.js +1 -1
  43. package/dist/components/icons/icon-overlay-arrow.js +1 -1
  44. package/dist/components/index.d.ts +5 -0
  45. package/dist/components/input/index.d.ts +2 -0
  46. package/dist/components/input/input-root.js +3 -0
  47. package/dist/components/input/input.types.d.ts +5 -0
  48. package/dist/components/input-group/index.d.ts +2 -0
  49. package/dist/components/input-group/input-group-root.js +3 -0
  50. package/dist/components/input-group/input-group.types.d.ts +5 -0
  51. package/dist/components/input-otp/index.d.ts +6 -4
  52. package/dist/components/link/index.d.ts +2 -0
  53. package/dist/components/link/link-root.js +22 -5
  54. package/dist/components/link/link.types.d.ts +14 -3
  55. package/dist/{composables → components/list-box}/drag-collection.d.ts +2 -2
  56. package/dist/{composables → components/list-box}/drag-collection.js +1 -1
  57. package/dist/components/list-box/index.d.ts +4 -0
  58. package/dist/components/list-box/list-box-root.js +53 -32
  59. package/dist/components/list-box/list-box.types.d.ts +2 -0
  60. package/dist/components/menu/index.d.ts +2 -0
  61. package/dist/components/menu/menu-root.js +5 -1
  62. package/dist/components/menu/menu.types.d.ts +3 -0
  63. package/dist/components/number-field/index.d.ts +3 -0
  64. package/dist/components/number-field/number-field-root.js +2 -0
  65. package/dist/components/number-field/number-field.types.d.ts +2 -0
  66. package/dist/components/overlay/overlay-arrow.js +64 -11
  67. package/dist/components/progress-bar/index.d.ts +4 -0
  68. package/dist/components/progress-bar/progress-bar-root.js +4 -0
  69. package/dist/components/progress-bar/progress-bar.types.d.ts +7 -0
  70. package/dist/components/radio/radio-content.js +1 -1
  71. package/dist/components/range-calendar/index.d.ts +18 -15
  72. package/dist/components/router-provider/index.d.ts +5 -0
  73. package/dist/components/router-provider/index.js +3 -0
  74. package/dist/components/router-provider/router-provider.context.d.ts +40 -0
  75. package/dist/components/router-provider/router-provider.context.js +16 -0
  76. package/dist/components/router-provider/router-provider.d.ts +21 -0
  77. package/dist/components/router-provider/router-provider.js +22 -0
  78. package/dist/components/router-provider/router-provider.types.d.ts +23 -0
  79. package/dist/components/scroll-shadow/use-scroll-shadow.js +25 -1
  80. package/dist/components/search-field/index.d.ts +2 -0
  81. package/dist/components/search-field/search-field-root.js +3 -1
  82. package/dist/components/search-field/search-field.types.d.ts +2 -0
  83. package/dist/{composables → components/search-field}/use-search-field.d.ts +2 -2
  84. package/dist/{composables → components/search-field}/use-search-field.js +3 -3
  85. package/dist/components/segmented-control/index.d.ts +134 -0
  86. package/dist/components/segmented-control/index.js +15 -0
  87. package/dist/components/segmented-control/segmented-control-indicator.d.ts +19 -0
  88. package/dist/components/segmented-control/segmented-control-indicator.js +36 -0
  89. package/dist/components/segmented-control/segmented-control-item.d.ts +21 -0
  90. package/dist/components/segmented-control/segmented-control-item.js +96 -0
  91. package/dist/components/segmented-control/segmented-control-root.d.ts +25 -0
  92. package/dist/components/segmented-control/segmented-control-root.js +112 -0
  93. package/dist/components/segmented-control/segmented-control-separator.d.ts +19 -0
  94. package/dist/components/segmented-control/segmented-control-separator.js +18 -0
  95. package/dist/components/segmented-control/segmented-control.context.d.ts +17 -0
  96. package/dist/components/segmented-control/segmented-control.context.js +12 -0
  97. package/dist/components/segmented-control/segmented-control.types.d.ts +67 -0
  98. package/dist/components/select/index.d.ts +3 -0
  99. package/dist/components/select/select-hidden-select.js +1 -1
  100. package/dist/components/select/select-root.js +2 -0
  101. package/dist/components/select/select.types.d.ts +2 -0
  102. package/dist/components/sidebar/index.d.ts +546 -0
  103. package/dist/components/sidebar/index.js +47 -0
  104. package/dist/components/sidebar/sidebar-collapsible-trigger.d.ts +21 -0
  105. package/dist/components/sidebar/sidebar-collapsible-trigger.js +70 -0
  106. package/dist/components/sidebar/sidebar-collapsible.d.ts +24 -0
  107. package/dist/components/sidebar/sidebar-collapsible.js +78 -0
  108. package/dist/components/sidebar/sidebar-content.d.ts +21 -0
  109. package/dist/components/sidebar/sidebar-content.js +37 -0
  110. package/dist/components/sidebar/sidebar-footer.d.ts +21 -0
  111. package/dist/components/sidebar/sidebar-footer.js +24 -0
  112. package/dist/components/sidebar/sidebar-group-label.d.ts +21 -0
  113. package/dist/components/sidebar/sidebar-group-label.js +32 -0
  114. package/dist/components/sidebar/sidebar-group.d.ts +21 -0
  115. package/dist/components/sidebar/sidebar-group.js +48 -0
  116. package/dist/components/sidebar/sidebar-header.d.ts +21 -0
  117. package/dist/components/sidebar/sidebar-header.js +24 -0
  118. package/dist/components/sidebar/sidebar-inset.d.ts +21 -0
  119. package/dist/components/sidebar/sidebar-inset.js +24 -0
  120. package/dist/components/sidebar/sidebar-item-icon.d.ts +21 -0
  121. package/dist/components/sidebar/sidebar-item-icon.js +20 -0
  122. package/dist/components/sidebar/sidebar-item-indicator.d.ts +21 -0
  123. package/dist/components/sidebar/sidebar-item-indicator.js +48 -0
  124. package/dist/components/sidebar/sidebar-item-label.d.ts +21 -0
  125. package/dist/components/sidebar/sidebar-item-label.js +28 -0
  126. package/dist/components/sidebar/sidebar-item-tooltip.d.ts +21 -0
  127. package/dist/components/sidebar/sidebar-item-tooltip.js +38 -0
  128. package/dist/components/sidebar/sidebar-item-trailing.d.ts +21 -0
  129. package/dist/components/sidebar/sidebar-item-trailing.js +28 -0
  130. package/dist/components/sidebar/sidebar-item.d.ts +23 -0
  131. package/dist/components/sidebar/sidebar-item.js +160 -0
  132. package/dist/components/sidebar/sidebar-panel.d.ts +21 -0
  133. package/dist/components/sidebar/sidebar-panel.js +88 -0
  134. package/dist/components/sidebar/sidebar-rail.d.ts +21 -0
  135. package/dist/components/sidebar/sidebar-rail.js +210 -0
  136. package/dist/components/sidebar/sidebar-root.d.ts +31 -0
  137. package/dist/components/sidebar/sidebar-root.js +140 -0
  138. package/dist/components/sidebar/sidebar-separator.d.ts +19 -0
  139. package/dist/components/sidebar/sidebar-separator.js +16 -0
  140. package/dist/components/sidebar/sidebar-sub-menu.d.ts +23 -0
  141. package/dist/components/sidebar/sidebar-sub-menu.js +40 -0
  142. package/dist/components/sidebar/sidebar-trigger.d.ts +21 -0
  143. package/dist/components/sidebar/sidebar-trigger.js +69 -0
  144. package/dist/components/sidebar/sidebar.context.d.ts +75 -0
  145. package/dist/components/sidebar/sidebar.context.js +30 -0
  146. package/dist/components/sidebar/sidebar.state.d.ts +73 -0
  147. package/dist/components/sidebar/sidebar.state.js +76 -0
  148. package/dist/components/sidebar/sidebar.storage.d.ts +8 -0
  149. package/dist/components/sidebar/sidebar.storage.js +45 -0
  150. package/dist/components/sidebar/sidebar.types.d.ts +273 -0
  151. package/dist/components/splitter/index.d.ts +143 -0
  152. package/dist/components/splitter/index.js +13 -0
  153. package/dist/components/splitter/splitter-handle.d.ts +21 -0
  154. package/dist/components/splitter/splitter-handle.js +209 -0
  155. package/dist/components/splitter/splitter-panel.d.ts +21 -0
  156. package/dist/components/splitter/splitter-panel.js +70 -0
  157. package/dist/components/splitter/splitter-root.d.ts +31 -0
  158. package/dist/components/splitter/splitter-root.js +152 -0
  159. package/dist/components/splitter/splitter.context.d.ts +15 -0
  160. package/dist/components/splitter/splitter.context.js +5 -0
  161. package/dist/components/splitter/splitter.state.d.ts +87 -0
  162. package/dist/components/splitter/splitter.state.js +322 -0
  163. package/dist/components/splitter/splitter.storage.d.ts +15 -0
  164. package/dist/components/splitter/splitter.storage.js +56 -0
  165. package/dist/components/splitter/splitter.types.d.ts +98 -0
  166. package/dist/components/switch/switch-content.js +1 -1
  167. package/dist/components/table/index.d.ts +10 -9
  168. package/dist/components/table/table-body.js +13 -13
  169. package/dist/components/table/table-cell.js +49 -46
  170. package/dist/components/table/table-column-resizer.js +1 -1
  171. package/dist/components/table/table-column.js +1 -1
  172. package/dist/components/table/table-content.js +37 -18
  173. package/dist/{composables → components/table}/table-drag-collection.d.ts +1 -1
  174. package/dist/{composables → components/table}/table-drag-collection.js +1 -1
  175. package/dist/components/table/table-drop-indicator.js +3 -1
  176. package/dist/components/table/table-resizable-container.d.ts +4 -5
  177. package/dist/components/table/table-row.js +45 -14
  178. package/dist/components/table/table-virtualizer-item.d.ts +2 -7
  179. package/dist/components/table/table-virtualizer-item.js +20 -9
  180. package/dist/components/table/table.context.d.ts +11 -3
  181. package/dist/components/table/table.types.d.ts +1 -1
  182. package/dist/{composables → components/table}/use-grid-keyboard.d.ts +3 -3
  183. package/dist/{composables → components/table}/use-grid-keyboard.js +57 -55
  184. package/dist/{composables → components/table}/use-grid-selection-announcement.d.ts +2 -2
  185. package/dist/{composables → components/table}/use-grid-selection-announcement.js +2 -2
  186. package/dist/{composables → components/table}/use-table-collection.d.ts +2 -2
  187. package/dist/{composables → components/table}/use-table-collection.js +4 -4
  188. package/dist/{composables → components/table}/use-table-column-layout.d.ts +13 -20
  189. package/dist/components/table/use-table-column-layout.js +115 -0
  190. package/dist/components/textarea/index.d.ts +2 -0
  191. package/dist/components/textarea/textarea-root.js +3 -0
  192. package/dist/components/textarea/textarea.types.d.ts +5 -0
  193. package/dist/components/textfield/index.d.ts +2 -0
  194. package/dist/components/textfield/textfield-root.js +5 -1
  195. package/dist/components/textfield/textfield.context.d.ts +2 -0
  196. package/dist/components/textfield/textfield.types.d.ts +5 -0
  197. package/dist/components/time-field/index.d.ts +1 -0
  198. package/dist/components/toast/index.d.ts +1 -0
  199. package/dist/components/toast/toast-default-content.js +1 -1
  200. package/dist/components/toolbar/index.d.ts +3 -2
  201. package/dist/components/tooltip/index.js +1 -1
  202. package/dist/components/tooltip/tooltip-root.js +1 -1
  203. package/dist/components/virtualizer/index.d.ts +3 -1
  204. package/dist/components/virtualizer/index.js +2 -1
  205. package/dist/components/virtualizer/use-virtualizer-item.d.ts +23 -0
  206. package/dist/components/virtualizer/use-virtualizer-item.js +45 -0
  207. package/dist/components/virtualizer/virtualizer-item.js +7 -41
  208. package/dist/components/virtualizer/virtualizer-scrollbar-track.d.ts +20 -0
  209. package/dist/components/virtualizer/virtualizer-scrollbar-track.js +141 -0
  210. package/dist/components/virtualizer/virtualizer-scrollbar.d.ts +18 -0
  211. package/dist/components/virtualizer/virtualizer-scrollbar.js +55 -0
  212. package/dist/components/virtualizer/virtualizer.context.d.ts +17 -1
  213. package/dist/composables/drag-manager.js +1 -13
  214. package/dist/composables/index.d.ts +3 -70
  215. package/dist/composables/use-collection.d.ts +22 -3
  216. package/dist/composables/use-collection.js +67 -14
  217. package/dist/composables/use-color-area.js +2 -2
  218. package/dist/composables/use-color-field.js +1 -1
  219. package/dist/composables/use-combo-box.js +1 -1
  220. package/dist/composables/use-date-field.js +1 -1
  221. package/dist/composables/use-drag.d.ts +6 -5
  222. package/dist/composables/use-draggable-item.d.ts +2 -2
  223. package/dist/composables/use-droppable-collection.js +3 -3
  224. package/dist/composables/use-droppable-item.js +1 -1
  225. package/dist/composables/use-form-reset.d.ts +6 -2
  226. package/dist/composables/use-form-reset.js +9 -5
  227. package/dist/composables/use-list-keyboard.js +64 -62
  228. package/dist/composables/use-number-field.js +1 -1
  229. package/dist/composables/use-select.js +2 -2
  230. package/dist/composables/use-selection-manager.js +4 -4
  231. package/dist/composables/use-single-select-list-state.d.ts +37 -0
  232. package/dist/composables/use-single-select-list-state.js +110 -0
  233. package/dist/composables/use-slider-thumb.js +2 -2
  234. package/dist/composables/use-slider.js +1 -1
  235. package/dist/composables/use-tab-list-state.d.ts +10 -29
  236. package/dist/composables/use-tab-list-state.js +10 -99
  237. package/dist/composables/use-text-field.js +1 -1
  238. package/dist/composables/use-virtualizer-scroll.d.ts +52 -2
  239. package/dist/composables/use-virtualizer-scroll.js +79 -13
  240. package/dist/composables/use-virtualizer.d.ts +24 -4
  241. package/dist/composables/use-virtualizer.js +40 -6
  242. package/dist/index.js +60 -83
  243. package/dist/utils/document-order.d.ts +14 -0
  244. package/dist/utils/document-order.js +17 -0
  245. package/dist/utils/flex-sizing.d.ts +41 -0
  246. package/dist/utils/flex-sizing.js +140 -0
  247. package/dist/utils/index.d.ts +2 -0
  248. package/dist/utils/open-link.d.ts +31 -0
  249. package/dist/utils/open-link.js +32 -0
  250. package/dist/utils/story-truncation.d.ts +20 -0
  251. package/dist/utils/story-users.d.ts +11 -0
  252. package/dist/utils/virtualizer-collection.d.ts +14 -4
  253. package/dist/utils/virtualizer-collection.js +9 -14
  254. package/dist/utils/virtualizer-layout-info.js +3 -2
  255. package/dist/utils/virtualizer-list-layout.d.ts +75 -29
  256. package/dist/utils/virtualizer-list-layout.js +182 -99
  257. package/dist/utils/virtualizer-offsets.d.ts +111 -0
  258. package/dist/utils/virtualizer-offsets.js +159 -0
  259. package/dist/utils/virtualizer-overscan.d.ts +9 -15
  260. package/dist/utils/virtualizer-overscan.js +14 -33
  261. package/dist/utils/virtualizer-table-layout.d.ts +50 -21
  262. package/dist/utils/virtualizer-table-layout.js +130 -89
  263. package/dist/version.js +1 -1
  264. package/package.json +25 -5
  265. package/dist/composables/use-table-column-layout.js +0 -214
  266. /package/dist/{composables → components/dropdown}/use-safely-mouse-to-submenu.d.ts +0 -0
@@ -0,0 +1,28 @@
1
+ import { composeSlotClassName } from "../../utils/compose.js";
2
+ import { dataAttr } from "../../utils/assertion.js";
3
+ import { useSidebarContext } from "./sidebar.context.js";
4
+ import { createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, template, unref } from "vue";
5
+ //#region src/components/sidebar/sidebar-item-label.vue?vue&type=script&setup=true&vapor=true&lang.ts
6
+ var t0 = template("<span data-slot=sidebar-item-label>", 1);
7
+ var sidebar_item_label_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
8
+ __name: "sidebar-item-label",
9
+ props: { class: {} },
10
+ setup(__props) {
11
+ const props = __props;
12
+ const { slots, state } = useSidebarContext();
13
+ const n1 = t0();
14
+ renderEffect(() => {
15
+ setClass(n1, unref(composeSlotClassName)(unref(slots).itemLabel, props.class));
16
+ setAttr(n1, "data-collapsed", unref(dataAttr)(unref(state).isCollapsed.value));
17
+ });
18
+ setInsertionState(n1);
19
+ createSlot("default", {
20
+ isCollapsed: () => unref(state).isCollapsed.value,
21
+ isMobile: () => unref(state).isMobile.value,
22
+ isOpen: () => unref(state).isOpen.value
23
+ });
24
+ return n1;
25
+ }
26
+ });
27
+ //#endregion
28
+ export { sidebar_item_label_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
@@ -0,0 +1,21 @@
1
+ import type { SidebarItemTooltipProps } from "./sidebar.types.js";
2
+ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>['props'], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, 'attrs' | 'emit' | 'slots'>>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
3
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<SidebarItemTooltipProps> & (typeof globalThis extends {
4
+ __VLS_PROPS_FALLBACK: infer P;
5
+ } ? P : {});
6
+ expose: (exposed: {}) => void;
7
+ attrs: any;
8
+ slots: {
9
+ default?: () => unknown;
10
+ };
11
+ emit: {};
12
+ }>) => import('vue').VNode & {
13
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
14
+ };
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
18
+ [K in keyof T]: T[K];
19
+ } : {
20
+ [K in keyof T as K]: T[K];
21
+ }) & {};
@@ -0,0 +1,38 @@
1
+ import { composeSlotClassName } from "../../utils/compose.js";
2
+ import { useSidebarContext } from "./sidebar.context.js";
3
+ import tooltip_content_default from "../tooltip/tooltip-content.js";
4
+ import tooltip_root_default from "../tooltip/tooltip-root.js";
5
+ import tooltip_trigger_default from "../tooltip/tooltip-trigger.js";
6
+ import { computed, createComponent, createSlot, defineVaporComponent, extend, renderEffect, setText, template, toDisplayString, unref } from "vue";
7
+ //#region src/components/sidebar/sidebar-item-tooltip.vue?vue&type=script&setup=true&vapor=true&lang.ts
8
+ var t0 = template(" ");
9
+ var sidebar_item_tooltip_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
10
+ __name: "sidebar-item-tooltip",
11
+ props: {
12
+ class: {},
13
+ label: {},
14
+ delay: {},
15
+ closeDelay: {}
16
+ },
17
+ setup(__props) {
18
+ const props = __props;
19
+ const { side, slots, state } = useSidebarContext();
20
+ const isDisabled = computed(() => !state.isCollapsed.value);
21
+ const placement = computed(() => side.value === "left" ? "end" : "start");
22
+ return createComponent(tooltip_root_default, {
23
+ "close-delay": () => props.closeDelay,
24
+ delay: () => props.delay,
25
+ "is-disabled": () => isDisabled.value
26
+ }, () => {
27
+ return [createComponent(tooltip_trigger_default, { class: () => unref(composeSlotClassName)(unref(slots).itemTooltip, props.class) }, extend(() => {
28
+ return createSlot("default", null, null, 36);
29
+ }, { _: 8 })), createComponent(tooltip_content_default, { placement: () => placement.value }, () => {
30
+ const n2 = t0();
31
+ renderEffect(() => setText(n2, toDisplayString(props.label)));
32
+ return n2;
33
+ })];
34
+ }, true);
35
+ }
36
+ });
37
+ //#endregion
38
+ export { sidebar_item_tooltip_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
@@ -0,0 +1,21 @@
1
+ import type { SidebarItemTrailingProps, SidebarPartSlotProps } from "./sidebar.types.js";
2
+ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>['props'], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, 'attrs' | 'emit' | 'slots'>>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
3
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<SidebarItemTrailingProps> & (typeof globalThis extends {
4
+ __VLS_PROPS_FALLBACK: infer P;
5
+ } ? P : {});
6
+ expose: (exposed: {}) => void;
7
+ attrs: any;
8
+ slots: {
9
+ default?: (props: SidebarPartSlotProps) => unknown;
10
+ };
11
+ emit: {};
12
+ }>) => import('vue').VNode & {
13
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
14
+ };
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
18
+ [K in keyof T]: T[K];
19
+ } : {
20
+ [K in keyof T as K]: T[K];
21
+ }) & {};
@@ -0,0 +1,28 @@
1
+ import { composeSlotClassName } from "../../utils/compose.js";
2
+ import { dataAttr } from "../../utils/assertion.js";
3
+ import { useSidebarContext } from "./sidebar.context.js";
4
+ import { createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, template, unref } from "vue";
5
+ //#region src/components/sidebar/sidebar-item-trailing.vue?vue&type=script&setup=true&vapor=true&lang.ts
6
+ var t0 = template("<span data-slot=sidebar-item-trailing>", 1);
7
+ var sidebar_item_trailing_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
8
+ __name: "sidebar-item-trailing",
9
+ props: { class: {} },
10
+ setup(__props) {
11
+ const props = __props;
12
+ const { slots, state } = useSidebarContext();
13
+ const n1 = t0();
14
+ renderEffect(() => {
15
+ setClass(n1, unref(composeSlotClassName)(unref(slots).itemTrailing, props.class));
16
+ setAttr(n1, "data-collapsed", unref(dataAttr)(unref(state).isCollapsed.value));
17
+ });
18
+ setInsertionState(n1);
19
+ createSlot("default", {
20
+ isCollapsed: () => unref(state).isCollapsed.value,
21
+ isMobile: () => unref(state).isMobile.value,
22
+ isOpen: () => unref(state).isOpen.value
23
+ });
24
+ return n1;
25
+ }
26
+ });
27
+ //#endregion
28
+ export { sidebar_item_trailing_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
@@ -0,0 +1,23 @@
1
+ import type { SidebarItemProps, SidebarItemSlotProps } from "./sidebar.types.js";
2
+ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>['props'], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, 'attrs' | 'emit' | 'slots'>>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
3
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<SidebarItemProps & {
4
+ onPress?: ((event: import("../../index.js").PressEvent) => any) | undefined;
5
+ }> & (typeof globalThis extends {
6
+ __VLS_PROPS_FALLBACK: infer P;
7
+ } ? P : {});
8
+ expose: (exposed: {}) => void;
9
+ attrs: any;
10
+ slots: {
11
+ default?: (props: SidebarItemSlotProps) => unknown;
12
+ };
13
+ emit: (evt: "press", event: import("../../index.js").PressEvent) => void;
14
+ }>) => import('vue').VNode & {
15
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
16
+ };
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
20
+ [K in keyof T]: T[K];
21
+ } : {
22
+ [K in keyof T as K]: T[K];
23
+ }) & {};
@@ -0,0 +1,160 @@
1
+ import { composeSlotClassName } from "../../utils/compose.js";
2
+ import { dataAttr } from "../../utils/assertion.js";
3
+ import { useInteractionStates } from "../../composables/use-interaction-states.js";
4
+ import { usePress } from "../../composables/use-press.js";
5
+ import { openLink } from "../../utils/open-link.js";
6
+ import { useRouterContext } from "../router-provider/router-provider.context.js";
7
+ import { useSidebarContext, useSidebarSubMenuContext } from "./sidebar.context.js";
8
+ import { computed, createIf, createSlot, defineVaporComponent, on, renderEffect, setAttr, setClass, setInsertionState, setProp, template, unref } from "vue";
9
+ //#region src/components/sidebar/sidebar-item.vue?vue&type=script&setup=true&vapor=true&lang.ts
10
+ var t0 = template("<a data-slot=sidebar-item>", 1);
11
+ var t1 = template("<button data-slot=sidebar-item type=button>", 1);
12
+ var sidebar_item_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
13
+ __name: "sidebar-item",
14
+ props: {
15
+ class: {},
16
+ href: {},
17
+ target: {},
18
+ rel: {},
19
+ ariaCurrent: {
20
+ type: [Boolean, String],
21
+ default: void 0
22
+ },
23
+ routerOptions: {},
24
+ isDisabled: {
25
+ type: Boolean,
26
+ default: void 0
27
+ },
28
+ ariaLabel: {},
29
+ ariaLabelledby: {},
30
+ ariaDescribedby: {}
31
+ },
32
+ emits: ["press"],
33
+ setup(__props, { emit: __emit }) {
34
+ const props = __props;
35
+ const emit = __emit;
36
+ const { slots, state } = useSidebarContext();
37
+ const router = useRouterContext();
38
+ const isSub = useSidebarSubMenuContext();
39
+ const className = computed(() => composeSlotClassName(slots.value.item, props.class, { isSub }));
40
+ const isDisabled = computed(() => Boolean(props.isDisabled));
41
+ const press = usePress({
42
+ isDisabled,
43
+ onPress: (event) => emit("press", event)
44
+ });
45
+ const interaction = useInteractionStates({ isDisabled });
46
+ const isAnchor = computed(() => Boolean(props.href) && !isDisabled.value);
47
+ const ariaCurrent = computed(() => {
48
+ if (props.ariaCurrent !== "auto") return props.ariaCurrent;
49
+ return props.href && router?.isCurrent(props.href) ? "page" : void 0;
50
+ });
51
+ const isCurrent = computed(() => Boolean(ariaCurrent.value));
52
+ const resolvedHref = computed(() => props.href === void 0 ? void 0 : router?.resolveHref(props.href) ?? props.href);
53
+ const tabindex = computed(() => isDisabled.value ? void 0 : 0);
54
+ const onPointerenter = (event) => {
55
+ interaction.onPointerenter(event);
56
+ press.handlers.onPointerenter(event);
57
+ };
58
+ const onPointerleave = (event) => {
59
+ interaction.onPointerleave();
60
+ press.handlers.onPointerleave(event);
61
+ };
62
+ const onClick = (event) => {
63
+ press.handlers.onClick(event);
64
+ openLink(event, {
65
+ href: props.href,
66
+ router,
67
+ routerOptions: props.routerOptions
68
+ });
69
+ };
70
+ return createIf(() => isAnchor.value, () => {
71
+ const n3 = t0();
72
+ renderEffect(() => {
73
+ const _props = props;
74
+ const _dataAttr = unref(dataAttr);
75
+ const _interaction = unref(interaction);
76
+ setAttr(n3, "aria-current", ariaCurrent.value);
77
+ setAttr(n3, "aria-describedby", _props.ariaDescribedby);
78
+ setAttr(n3, "aria-label", _props.ariaLabel);
79
+ setAttr(n3, "aria-labelledby", _props.ariaLabelledby);
80
+ setClass(n3, className.value);
81
+ setAttr(n3, "data-collapsed", _dataAttr(unref(state).isCollapsed.value));
82
+ setAttr(n3, "data-current", _dataAttr(isCurrent.value));
83
+ setAttr(n3, "data-focus-visible", _dataAttr(_interaction.isFocusVisible.value));
84
+ setAttr(n3, "data-focused", _dataAttr(_interaction.isFocused.value));
85
+ setAttr(n3, "data-hovered", _dataAttr(_interaction.isHovered.value));
86
+ setAttr(n3, "data-pressed", _dataAttr(unref(press).isPressed.value));
87
+ setProp(n3, "href", resolvedHref.value);
88
+ setProp(n3, "rel", _props.rel);
89
+ setProp(n3, "tabindex", tabindex.value);
90
+ setProp(n3, "target", _props.target);
91
+ });
92
+ setInsertionState(n3);
93
+ createSlot("default", {
94
+ isCollapsed: () => unref(state).isCollapsed.value,
95
+ isCurrent: () => isCurrent.value,
96
+ isDisabled: () => isDisabled.value,
97
+ isFocusVisible: () => unref(interaction).isFocusVisible.value,
98
+ isFocused: () => unref(interaction).isFocused.value,
99
+ isHovered: () => unref(interaction).isHovered.value,
100
+ isPressed: () => unref(press).isPressed.value
101
+ });
102
+ on(n3, "blur", (e) => unref(interaction).onBlur(e));
103
+ on(n3, "click", onClick);
104
+ on(n3, "dragstart", (e) => unref(press).handlers.onDragstart(e));
105
+ on(n3, "focus", (e) => unref(interaction).onFocus(e));
106
+ on(n3, "keydown", (e) => unref(press).handlers.onKeydown(e));
107
+ on(n3, "mousedown", (e) => unref(press).handlers.onMousedown(e));
108
+ on(n3, "pointerdown", (e) => unref(press).handlers.onPointerdown(e));
109
+ on(n3, "pointerenter", onPointerenter);
110
+ on(n3, "pointerleave", onPointerleave);
111
+ on(n3, "pointerup", (e) => unref(press).handlers.onPointerup(e));
112
+ return n3;
113
+ }, () => {
114
+ const n6 = t1();
115
+ renderEffect(() => {
116
+ const _props = props;
117
+ const _dataAttr = unref(dataAttr);
118
+ const _isDisabled = isDisabled.value;
119
+ const _interaction = unref(interaction);
120
+ setAttr(n6, "aria-current", ariaCurrent.value);
121
+ setAttr(n6, "aria-describedby", _props.ariaDescribedby);
122
+ setAttr(n6, "aria-label", _props.ariaLabel);
123
+ setAttr(n6, "aria-labelledby", _props.ariaLabelledby);
124
+ setClass(n6, className.value);
125
+ setAttr(n6, "data-collapsed", _dataAttr(unref(state).isCollapsed.value));
126
+ setAttr(n6, "data-current", _dataAttr(isCurrent.value));
127
+ setAttr(n6, "data-disabled", _dataAttr(_isDisabled));
128
+ setAttr(n6, "data-focus-visible", _dataAttr(_interaction.isFocusVisible.value));
129
+ setAttr(n6, "data-focused", _dataAttr(_interaction.isFocused.value));
130
+ setAttr(n6, "data-hovered", _dataAttr(_interaction.isHovered.value));
131
+ setAttr(n6, "data-pressed", _dataAttr(unref(press).isPressed.value));
132
+ setProp(n6, "disabled", _isDisabled || void 0);
133
+ setProp(n6, "tabindex", tabindex.value);
134
+ });
135
+ setInsertionState(n6);
136
+ createSlot("default", {
137
+ isCollapsed: () => unref(state).isCollapsed.value,
138
+ isCurrent: () => isCurrent.value,
139
+ isDisabled: () => isDisabled.value,
140
+ isFocusVisible: () => unref(interaction).isFocusVisible.value,
141
+ isFocused: () => unref(interaction).isFocused.value,
142
+ isHovered: () => unref(interaction).isHovered.value,
143
+ isPressed: () => unref(press).isPressed.value
144
+ });
145
+ on(n6, "blur", (e) => unref(interaction).onBlur(e));
146
+ on(n6, "click", (e) => unref(press).handlers.onClick(e));
147
+ on(n6, "dragstart", (e) => unref(press).handlers.onDragstart(e));
148
+ on(n6, "focus", (e) => unref(interaction).onFocus(e));
149
+ on(n6, "keydown", (e) => unref(press).handlers.onKeydown(e));
150
+ on(n6, "mousedown", (e) => unref(press).handlers.onMousedown(e));
151
+ on(n6, "pointerdown", (e) => unref(press).handlers.onPointerdown(e));
152
+ on(n6, "pointerenter", onPointerenter);
153
+ on(n6, "pointerleave", onPointerleave);
154
+ on(n6, "pointerup", (e) => unref(press).handlers.onPointerup(e));
155
+ return n6;
156
+ }, 261);
157
+ }
158
+ });
159
+ //#endregion
160
+ export { sidebar_item_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
@@ -0,0 +1,21 @@
1
+ import type { SidebarPanelProps, SidebarPartSlotProps } from "./sidebar.types.js";
2
+ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>['props'], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, 'attrs' | 'emit' | 'slots'>>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
3
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<SidebarPanelProps> & (typeof globalThis extends {
4
+ __VLS_PROPS_FALLBACK: infer P;
5
+ } ? P : {});
6
+ expose: (exposed: {}) => void;
7
+ attrs: any;
8
+ slots: {
9
+ default?: (props: SidebarPartSlotProps) => unknown;
10
+ };
11
+ emit: {};
12
+ }>) => import('vue').VNode & {
13
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
14
+ };
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
18
+ [K in keyof T]: T[K];
19
+ } : {
20
+ [K in keyof T as K]: T[K];
21
+ }) & {};
@@ -0,0 +1,88 @@
1
+ import { composeSlotClassName } from "../../utils/compose.js";
2
+ import { dataAttr } from "../../utils/assertion.js";
3
+ import drawer_backdrop_default from "../drawer/drawer-backdrop.js";
4
+ import drawer_content_default from "../drawer/drawer-content.js";
5
+ import drawer_dialog_default from "../drawer/drawer-dialog.js";
6
+ import drawer_heading_default from "../drawer/drawer-heading.js";
7
+ import drawer_root_default from "../drawer/drawer-root.js";
8
+ import { useSidebarContext } from "./sidebar.context.js";
9
+ import { computed, createComponent, createIf, createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, setProp, setTemplateRefBinding, setText, template, toDisplayString, unref } from "vue";
10
+ //#region src/components/sidebar/sidebar-panel.vue?vue&type=script&setup=true&vapor=true&lang.ts
11
+ var t0 = template(" ");
12
+ var t1 = template("<nav data-slot=sidebar-panel>");
13
+ var t2 = template("<nav data-slot=sidebar-panel>", 1);
14
+ var sidebar_panel_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
15
+ __name: "sidebar-panel",
16
+ props: {
17
+ class: {},
18
+ ariaLabel: {},
19
+ ariaLabelledby: {}
20
+ },
21
+ setup(__props) {
22
+ const props = __props;
23
+ const { panelId, setPanelEl, side, slots, state } = useSidebarContext();
24
+ const setElement = (next) => setPanelEl(next ?? null);
25
+ const isHidden = computed(() => state.collapsible.value === "offcanvas" && state.isCollapsed.value);
26
+ const label = computed(() => props.ariaLabel ?? "Sidebar");
27
+ const ariaLabel = computed(() => props.ariaLabelledby ? void 0 : label.value);
28
+ const panelClass = computed(() => composeSlotClassName(slots.value.panel, props.class, { inDrawer: state.isMobile.value }));
29
+ return createIf(() => unref(state).isMobile.value, () => {
30
+ return createComponent(drawer_root_default, {
31
+ "is-open": () => unref(state).isMobileOpen.value,
32
+ onOpenChange: () => unref(state).setOpen
33
+ }, () => {
34
+ return createComponent(drawer_backdrop_default, null, () => {
35
+ return createComponent(drawer_content_default, { placement: () => unref(side) }, () => {
36
+ return createComponent(drawer_dialog_default, { class: "p-0" }, () => {
37
+ const n3 = createComponent(drawer_heading_default, { class: "sr-only" }, () => {
38
+ const n2 = t0();
39
+ renderEffect(() => setText(n2, toDisplayString(label.value)));
40
+ return n2;
41
+ });
42
+ const n5 = t1();
43
+ renderEffect(() => {
44
+ setProp(n5, "id", unref(panelId));
45
+ setAttr(n5, "aria-label", ariaLabel.value);
46
+ setAttr(n5, "aria-labelledby", props.ariaLabelledby);
47
+ setClass(n5, panelClass.value);
48
+ setAttr(n5, "data-side", unref(side));
49
+ });
50
+ setInsertionState(n5);
51
+ createSlot("default", {
52
+ isCollapsed: false,
53
+ isMobile: true,
54
+ isOpen: () => unref(state).isOpen.value
55
+ });
56
+ setTemplateRefBinding(n5, () => setElement);
57
+ return [n3, n5];
58
+ });
59
+ });
60
+ });
61
+ }, true);
62
+ }, () => {
63
+ const n12 = t2();
64
+ renderEffect(() => {
65
+ const _dataAttr = unref(dataAttr);
66
+ const _state = unref(state);
67
+ setProp(n12, "id", unref(panelId));
68
+ setAttr(n12, "aria-label", ariaLabel.value);
69
+ setAttr(n12, "aria-labelledby", props.ariaLabelledby);
70
+ setClass(n12, panelClass.value);
71
+ setAttr(n12, "data-collapsed", _dataAttr(_state.isCollapsed.value));
72
+ setAttr(n12, "data-resizing", _dataAttr(_state.isResizing.value));
73
+ setAttr(n12, "data-side", unref(side));
74
+ setProp(n12, "inert", isHidden.value || void 0);
75
+ });
76
+ setInsertionState(n12);
77
+ createSlot("default", {
78
+ isCollapsed: () => unref(state).isCollapsed.value,
79
+ isMobile: false,
80
+ isOpen: () => unref(state).isOpen.value
81
+ });
82
+ setTemplateRefBinding(n12, () => setElement);
83
+ return n12;
84
+ }, 261);
85
+ }
86
+ });
87
+ //#endregion
88
+ export { sidebar_panel_vue_vue_type_script_setup_true_vapor_true_lang_default as default };
@@ -0,0 +1,21 @@
1
+ import type { SidebarRailProps, SidebarRailSlotProps } from "./sidebar.types.js";
2
+ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>['props'], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, 'attrs' | 'emit' | 'slots'>>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>['expose'], __VLS_setup?: Promise<{
3
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<SidebarRailProps> & (typeof globalThis extends {
4
+ __VLS_PROPS_FALLBACK: infer P;
5
+ } ? P : {});
6
+ expose: (exposed: {}) => void;
7
+ attrs: any;
8
+ slots: {
9
+ default?: (props: SidebarRailSlotProps) => unknown;
10
+ };
11
+ emit: {};
12
+ }>) => import('vue').VNode & {
13
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
14
+ };
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
18
+ [K in keyof T]: T[K];
19
+ } : {
20
+ [K in keyof T as K]: T[K];
21
+ }) & {};
@@ -0,0 +1,210 @@
1
+ import { composeSlotClassName } from "../../utils/compose.js";
2
+ import { dataAttr } from "../../utils/assertion.js";
3
+ import { useInteractionStates } from "../../composables/use-interaction-states.js";
4
+ import { useMove } from "../../composables/use-move.js";
5
+ import { useSidebarContext } from "./sidebar.context.js";
6
+ import { child, computed, createIf, createSlot, defineVaporComponent, on, onMounted, renderEffect, setAttr, setClass, setInsertionState, setProp, shallowRef, template, unref, watch } from "vue";
7
+ //#region src/components/sidebar/sidebar-rail.vue?vue&type=script&setup=true&vapor=true&lang.ts
8
+ var t0 = template("<div data-slot=sidebar-rail><span aria-hidden=true data-slot=sidebar-rail-target></span>", 1);
9
+ var sidebar_rail_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE__*/ defineVaporComponent({
10
+ __name: "sidebar-rail",
11
+ props: {
12
+ class: {},
13
+ isResizable: {
14
+ type: Boolean,
15
+ default: void 0
16
+ },
17
+ isDisabled: {
18
+ type: Boolean,
19
+ default: void 0
20
+ },
21
+ minWidth: {},
22
+ maxWidth: {},
23
+ keyboardStep: {},
24
+ keyboardLargeStep: {},
25
+ ariaLabel: {},
26
+ ariaLabelledby: {}
27
+ },
28
+ setup(__props) {
29
+ const props = __props;
30
+ const { panelEl, panelId, side, slots, state } = useSidebarContext();
31
+ const isResizable = computed(() => Boolean(props.isResizable));
32
+ const isDisabled = computed(() => Boolean(props.isDisabled));
33
+ const minWidth = computed(() => props.minWidth ?? 180);
34
+ const maxWidth = computed(() => props.maxWidth ?? 480);
35
+ const states = useInteractionStates({ isDisabled });
36
+ const isDragging = shallowRef(false);
37
+ /**
38
+ * The declared width, when it is the plain pixel length the rail itself writes.
39
+ *
40
+ * Preferred over measuring, and not as an optimisation: the panel eases towards a new width, so
41
+ * `offsetWidth` read any time after a change reports a frame of the animation rather than the
42
+ * width that was asked for. This is the number the user moved the edge to.
43
+ */
44
+ const declaredWidth = computed(() => {
45
+ const value = state.width.value;
46
+ const pixels = value?.endsWith("px") ? Number.parseFloat(value) : NaN;
47
+ return Number.isFinite(pixels) ? Math.round(pixels) : null;
48
+ });
49
+ /**
50
+ * The starting point, for a sidebar sized by the stylesheet with no declared width to read.
51
+ *
52
+ * Read on mount and never during setup, which is not a detail: a watcher's immediate run happens
53
+ * synchronously while the tree is still being built, and an element that is not in the document
54
+ * yet measures zero. Nothing would correct it either — the panel is registered by then, so the
55
+ * element never changes and the watcher never fires again. A rail left holding that zero starts
56
+ * every first drag from nothing and snaps the panel straight to its minimum, where it stays until
57
+ * the pointer has travelled the whole width back.
58
+ *
59
+ * The watcher stays for the panel actually changing — the drawer handing it back on the way out of
60
+ * a narrow viewport — where post-flush is the right moment and there is a new element to measure.
61
+ */
62
+ const measuredWidth = shallowRef(0);
63
+ const measure = () => {
64
+ measuredWidth.value = panelEl.value?.offsetWidth ?? 0;
65
+ };
66
+ onMounted(measure);
67
+ watch(panelEl, measure, { flush: "post" });
68
+ const width = computed(() => declaredWidth.value ?? measuredWidth.value);
69
+ /** The width the gesture opened at; every delta is measured against it. */
70
+ let startWidth = 0;
71
+ /** The width to go back to if the gesture is abandoned. */
72
+ let startDeclared;
73
+ let total = 0;
74
+ /** Resolved once per gesture — reading it per `pointermove` would force a style recalc a frame. */
75
+ let isReversed = false;
76
+ /** Whether the pointer actually travelled, which is what separates a drag from a click. */
77
+ let hasMoved = false;
78
+ const readDirection = () => {
79
+ const panel = panelEl.value;
80
+ isReversed = !!panel && getComputedStyle(panel).direction === "rtl";
81
+ };
82
+ const apply = (width) => {
83
+ state.setWidth(`${Math.round(Math.min(Math.max(width, minWidth.value), maxWidth.value))}px`);
84
+ };
85
+ const openGesture = () => {
86
+ startWidth = width.value;
87
+ startDeclared = state.width.value;
88
+ total = 0;
89
+ isDragging.value = true;
90
+ state.setResizing(true);
91
+ readDirection();
92
+ };
93
+ const { handlers: moveHandlers } = useMove({
94
+ onMove: ({ deltaX, pointerType, shiftKey }) => {
95
+ let delta = deltaX;
96
+ if (pointerType === "keyboard") delta *= shiftKey ? props.keyboardLargeStep ?? 50 : props.keyboardStep ?? 10;
97
+ if (isReversed) delta = -delta;
98
+ if (side.value === "right") delta = -delta;
99
+ if (delta === 0) return;
100
+ hasMoved = true;
101
+ total += delta;
102
+ apply(startWidth + total);
103
+ },
104
+ onMoveEnd: () => {
105
+ isDragging.value = false;
106
+ state.setResizing(false);
107
+ total = 0;
108
+ },
109
+ onMoveStart: () => {
110
+ openGesture();
111
+ }
112
+ });
113
+ const jump = (target) => {
114
+ startWidth = width.value;
115
+ apply(target);
116
+ };
117
+ const onKeydown = (event) => {
118
+ if (isDisabled.value) return;
119
+ if (event.key === "Enter" || event.key === " " || event.key === "Spacebar") {
120
+ event.preventDefault();
121
+ state.toggle();
122
+ return;
123
+ }
124
+ if (!isResizable.value) return;
125
+ if (event.key === "Home" || event.key === "End") {
126
+ event.preventDefault();
127
+ jump(event.key === "Home" ? minWidth.value : maxWidth.value);
128
+ return;
129
+ }
130
+ if (event.key === "Escape" && isDragging.value) {
131
+ event.preventDefault();
132
+ isDragging.value = false;
133
+ state.setResizing(false);
134
+ if (startDeclared === void 0) state.resetWidth();
135
+ else state.setWidth(startDeclared);
136
+ return;
137
+ }
138
+ if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
139
+ readDirection();
140
+ moveHandlers.onKeydown(event);
141
+ };
142
+ const onPointerdown = (event) => {
143
+ if (isDisabled.value) return;
144
+ hasMoved = false;
145
+ states.onPointerdown(event);
146
+ if (isResizable.value) moveHandlers.onPointerdown(event);
147
+ };
148
+ const onClick = () => {
149
+ if (isDisabled.value || hasMoved) return;
150
+ state.toggle();
151
+ };
152
+ const onDblclick = () => {
153
+ if (isDisabled.value || !isResizable.value) return;
154
+ state.resetWidth();
155
+ };
156
+ const railClass = computed(() => composeSlotClassName(slots.value.rail, props.class, { isResizable: isResizable.value }));
157
+ return createIf(() => !unref(state).isMobile.value, () => {
158
+ const n4 = t0();
159
+ const n2 = child(n4);
160
+ renderEffect(() => {
161
+ const _isDisabled = isDisabled.value;
162
+ const _isResizable = isResizable.value;
163
+ const _state = unref(state);
164
+ const _props = props;
165
+ const _dataAttr = unref(dataAttr);
166
+ const _states = unref(states);
167
+ setAttr(n4, "aria-controls", unref(panelId));
168
+ setAttr(n4, "aria-disabled", _isDisabled || void 0);
169
+ setAttr(n4, "aria-expanded", _isResizable ? void 0 : _state.isOpen.value);
170
+ setAttr(n4, "aria-label", _props.ariaLabel ?? (_isResizable ? "Resize sidebar" : "Toggle sidebar"));
171
+ setAttr(n4, "aria-labelledby", _props.ariaLabelledby);
172
+ setAttr(n4, "aria-orientation", _isResizable ? "vertical" : void 0);
173
+ setAttr(n4, "aria-valuemax", _isResizable ? maxWidth.value : void 0);
174
+ setAttr(n4, "aria-valuemin", _isResizable ? minWidth.value : void 0);
175
+ setAttr(n4, "aria-valuenow", _isResizable ? width.value : void 0);
176
+ setClass(n4, railClass.value);
177
+ setAttr(n4, "data-collapsed", _dataAttr(_state.isCollapsed.value));
178
+ setAttr(n4, "data-disabled", _dataAttr(_isDisabled));
179
+ setAttr(n4, "data-dragging", _dataAttr(isDragging.value));
180
+ setAttr(n4, "data-focus-visible", _dataAttr(_states.isFocusVisible.value));
181
+ setAttr(n4, "data-focused", _dataAttr(_states.isFocused.value));
182
+ setAttr(n4, "data-hovered", _dataAttr(_states.isHovered.value));
183
+ setProp(n4, "role", _isResizable ? "separator" : "button");
184
+ setProp(n4, "tabindex", _isDisabled ? -1 : 0);
185
+ setClass(n2, unref(composeSlotClassName)(unref(slots).railTarget));
186
+ });
187
+ setInsertionState(n4, 1);
188
+ createSlot("default", {
189
+ isCollapsed: () => unref(state).isCollapsed.value,
190
+ isDisabled: () => isDisabled.value,
191
+ isDragging: () => isDragging.value,
192
+ isFocusVisible: () => unref(states).isFocusVisible.value,
193
+ isFocused: () => unref(states).isFocused.value,
194
+ isHovered: () => unref(states).isHovered.value,
195
+ isResizable: () => isResizable.value
196
+ });
197
+ on(n4, "blur", (e) => unref(states).onBlur(e));
198
+ on(n4, "click", onClick);
199
+ on(n4, "dblclick", onDblclick);
200
+ on(n4, "focus", (e) => unref(states).onFocus(e));
201
+ on(n4, "keydown", onKeydown);
202
+ on(n4, "pointerdown", onPointerdown);
203
+ on(n4, "pointerenter", (e) => unref(states).onPointerenter(e));
204
+ on(n4, "pointerleave", (e) => unref(states).onPointerleave(e));
205
+ return n4;
206
+ });
207
+ }
208
+ });
209
+ //#endregion
210
+ export { sidebar_rail_vue_vue_type_script_setup_true_vapor_true_lang_default as default };