ropav 0.1.7 → 0.1.9

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 (167) hide show
  1. package/README.md +5 -4
  2. package/dist/ancestry.js +136 -0
  3. package/dist/calendar.css +184 -0
  4. package/dist/calendar.js +739 -0
  5. package/dist/calendar2.js +37 -0
  6. package/dist/chevron-left.js +12 -0
  7. package/dist/color-picker.js +38 -88
  8. package/dist/combobox.css +251 -0
  9. package/dist/combobox.js +410 -0
  10. package/dist/components/calendar/calendar.d.ts +30 -0
  11. package/dist/components/calendar/calendarBehavior.d.ts +49 -0
  12. package/dist/components/calendar/index.d.ts +3 -0
  13. package/dist/components/calendar/index.js +3 -0
  14. package/dist/components/calendar/types.d.ts +56 -0
  15. package/dist/components/calendar/useCalendar.d.ts +24 -0
  16. package/dist/components/color-picker/useColorPickerDrag.d.ts +1 -1
  17. package/dist/components/color-picker/useColorPickerSaturation.d.ts +1 -1
  18. package/dist/components/color-picker/useColorPickerSlider.d.ts +1 -1
  19. package/dist/components/combobox/combobox.d.ts +29 -0
  20. package/dist/components/combobox/comboboxModel.d.ts +4 -0
  21. package/dist/components/combobox/index.d.ts +3 -0
  22. package/dist/components/combobox/index.js +2 -0
  23. package/dist/components/combobox/types.d.ts +43 -0
  24. package/dist/components/combobox/useCombobox.d.ts +45 -0
  25. package/dist/components/date-picker/date-picker.d.ts +33 -0
  26. package/dist/components/date-picker/datePickerModel.d.ts +10 -0
  27. package/dist/components/date-picker/index.d.ts +4 -0
  28. package/dist/components/date-picker/index.js +2 -0
  29. package/dist/components/date-picker/types.d.ts +59 -0
  30. package/dist/components/date-picker/useDatePicker.d.ts +29 -0
  31. package/dist/components/date-picker/useDatePickerValueState.d.ts +21 -0
  32. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +2 -2
  33. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
  34. package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -2
  35. package/dist/components/dropdown-menu/dropdownMenuContext.d.ts +7 -18
  36. package/dist/components/dropdown-menu/dropdownMenuInteraction.d.ts +3 -3
  37. package/dist/components/dropdown-menu/dropdownMenuInteractionTypes.d.ts +58 -29
  38. package/dist/components/dropdown-menu/useDropdownMenuDataController.d.ts +4 -3
  39. package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +6 -4
  40. package/dist/components/dropdown-menu/useDropdownMenuPresentation.d.ts +3 -4
  41. package/dist/components/dropdown-menu/useDropdownMenuTargetBindings.d.ts +5 -5
  42. package/dist/components/dropzone/dropzone.d.ts +31 -0
  43. package/dist/components/dropzone/dropzoneModel.d.ts +16 -0
  44. package/dist/components/dropzone/index.d.ts +3 -0
  45. package/dist/components/dropzone/index.js +2 -0
  46. package/dist/components/dropzone/types.d.ts +56 -0
  47. package/dist/components/dropzone/useDropzone.d.ts +25 -0
  48. package/dist/components/file-input/file-input.d.ts +29 -0
  49. package/dist/components/file-input/index.d.ts +3 -0
  50. package/dist/components/file-input/index.js +2 -0
  51. package/dist/components/file-input/types.d.ts +37 -0
  52. package/dist/components/file-input/useFileInput.d.ts +15 -0
  53. package/dist/components/floating/index.js +1 -1
  54. package/dist/components/floating/useFloatingPosition.d.ts +1 -13
  55. package/dist/components/floating/useFloatingTargetLifecycle.d.ts +32 -0
  56. package/dist/components/floating/useHoverDisclosure.d.ts +10 -0
  57. package/dist/components/hover-card/hover-card.d.ts +25 -0
  58. package/dist/components/hover-card/index.d.ts +3 -0
  59. package/dist/components/hover-card/index.js +2 -0
  60. package/dist/components/hover-card/types.d.ts +45 -0
  61. package/dist/components/hover-card/useHoverCard.d.ts +22 -0
  62. package/dist/components/hover-card/useHoverCardDisclosure.d.ts +19 -0
  63. package/dist/components/multi-select/index.d.ts +3 -0
  64. package/dist/components/multi-select/index.js +2 -0
  65. package/dist/components/multi-select/multi-select.d.ts +30 -0
  66. package/dist/components/multi-select/multiSelectModel.d.ts +3 -0
  67. package/dist/components/multi-select/types.d.ts +49 -0
  68. package/dist/components/multi-select/useMultiSelect.d.ts +46 -0
  69. package/dist/components/number-input/useNumberInput.d.ts +1 -3
  70. package/dist/components/popover/usePopoverBindings.d.ts +3 -6
  71. package/dist/components/scroll-area/useScrollArea.d.ts +4 -4
  72. package/dist/components/scroll-area/useScrollAreaAttributes.d.ts +3 -3
  73. package/dist/components/scroll-area/useScrollAreaPointer.d.ts +1 -1
  74. package/dist/components/segmented-control/index.d.ts +3 -0
  75. package/dist/components/segmented-control/index.js +2 -0
  76. package/dist/components/segmented-control/segmented-control.d.ts +26 -0
  77. package/dist/components/segmented-control/types.d.ts +47 -0
  78. package/dist/components/segmented-control/useSegmentedControl.d.ts +15 -0
  79. package/dist/components/select/useSelect.d.ts +31 -19
  80. package/dist/components/slider/useRangeSlider.d.ts +1 -1
  81. package/dist/components/slider/useRangeSliderPointer.d.ts +1 -1
  82. package/dist/components/slider/useSlider.d.ts +1 -1
  83. package/dist/components/slider/useSliderPointer.d.ts +15 -0
  84. package/dist/components/slider/useSliderValueState.d.ts +1 -0
  85. package/dist/components/tags-input/index.d.ts +3 -0
  86. package/dist/components/tags-input/index.js +2 -0
  87. package/dist/components/tags-input/tags-input.d.ts +27 -0
  88. package/dist/components/tags-input/tagsInputModel.d.ts +12 -0
  89. package/dist/components/tags-input/types.d.ts +37 -0
  90. package/dist/components/tags-input/useTagsInput.d.ts +23 -0
  91. package/dist/components/toolbar/index.d.ts +3 -0
  92. package/dist/components/toolbar/index.js +2 -0
  93. package/dist/components/toolbar/toolbar.d.ts +24 -0
  94. package/dist/components/toolbar/types.d.ts +12 -0
  95. package/dist/components/toolbar/useToolbar.d.ts +7 -0
  96. package/dist/components/tooltip/useTooltipTargetBindings.d.ts +12 -0
  97. package/dist/date-picker.css +49 -0
  98. package/dist/date-picker.js +811 -0
  99. package/dist/dialog.js +9 -20
  100. package/dist/direction.js +6 -0
  101. package/dist/dropdown-menu.css +21 -3
  102. package/dist/dropdown-menu.js +341 -261
  103. package/dist/dropzone.css +135 -0
  104. package/dist/dropzone.js +431 -0
  105. package/dist/file-input.css +135 -0
  106. package/dist/file-input.js +198 -0
  107. package/dist/focusNavigation.js +12 -6
  108. package/dist/hover-card.css +80 -0
  109. package/dist/hover-card.js +402 -0
  110. package/dist/index.d.ts +10 -0
  111. package/dist/index.js +15 -3
  112. package/dist/internal/composables/useOverlayLayer.d.ts +12 -0
  113. package/dist/modal.js +1 -1
  114. package/dist/multi-select.css +316 -0
  115. package/dist/multi-select.js +481 -0
  116. package/dist/nativeChoice.js +169 -0
  117. package/dist/number-input.css +18 -18
  118. package/dist/number-input.js +36 -38
  119. package/dist/pagination.js +1 -10
  120. package/dist/pointerSession.js +130 -0
  121. package/dist/popover.css +21 -3
  122. package/dist/popover.js +37 -62
  123. package/dist/scroll-area.js +52 -62
  124. package/dist/segmented-control.css +176 -0
  125. package/dist/segmented-control.js +382 -0
  126. package/dist/select.css +50 -48
  127. package/dist/select.js +121 -271
  128. package/dist/slider.css +78 -69
  129. package/dist/slider.js +161 -145
  130. package/dist/tags-input.css +197 -0
  131. package/dist/tags-input.js +380 -0
  132. package/dist/toolbar.css +15 -0
  133. package/dist/toolbar.js +143 -0
  134. package/dist/tooltip.js +35 -30
  135. package/dist/useEditableOptionList.js +216 -0
  136. package/dist/useFlatOptionCollection.js +134 -0
  137. package/dist/useFloatingPosition.js +4 -160
  138. package/dist/useFloatingTargetLifecycle.js +127 -0
  139. package/dist/useFormControl.js +1 -0
  140. package/dist/{floating.js → useHoverDisclosure.js} +338 -421
  141. package/dist/useNativeChoiceTransaction.js +46 -0
  142. package/dist/useNativeFileSelection.js +86 -0
  143. package/dist/useOverlayZIndex.js +246 -15
  144. package/dist/utils/date.d.ts +13 -0
  145. package/dist/utils/dateAvailability.d.ts +7 -0
  146. package/dist/utils/dom/ancestry.d.ts +1 -0
  147. package/dist/utils/dom/direction.d.ts +2 -0
  148. package/dist/utils/dom/files.d.ts +3 -0
  149. package/dist/utils/dom/focusNavigation.d.ts +4 -1
  150. package/dist/utils/dom/nativeChoice.d.ts +17 -0
  151. package/dist/utils/dom/pointerSession.d.ts +20 -0
  152. package/dist/utils/dom/scroll.d.ts +2 -1
  153. package/dist/utils/optionFilter.d.ts +5 -0
  154. package/docs/public-floating-api.md +7 -4
  155. package/docs/public-styles-api.md +28 -12
  156. package/package.json +68 -40
  157. package/src/styles/_mixins.scss +26 -0
  158. package/src/styles/styles-manifest.json +1 -2
  159. package/dist/components/floating/hoverDisclosureInteractionModel.d.ts +0 -42
  160. package/dist/components/floating/useHoverDisclosureInteractions.d.ts +0 -32
  161. package/dist/components/floating/useHoverDisclosureOpenState.d.ts +0 -25
  162. package/dist/components/floating/useHoverDisclosureTargetBinding.d.ts +0 -27
  163. package/dist/components/select/useSelectNativeControl.d.ts +0 -9
  164. package/dist/components/select/useSelectNativeValue.d.ts +0 -9
  165. package/dist/pointer.js +0 -9
  166. package/dist/utils/dom/pointer.d.ts +0 -2
  167. package/docs/code-architecture.md +0 -118
package/dist/slider.js CHANGED
@@ -11,8 +11,8 @@ import { o as splitCompatibilityAttributes, t as composeEventHandlers } from "./
11
11
  import { n as mergeAriaIdRefs } from "./aria.js";
12
12
  import { t as useControlState } from "./useControlState.js";
13
13
  import { t as toCssLength } from "./css.js";
14
- import { n as isMatchingPointer, t as getPointerId } from "./pointer.js";
15
14
  import { t as createRafScheduler } from "./rafScheduler.js";
15
+ import { t as createPointerSession } from "./pointerSession.js";
16
16
  import { t as getFloatingOffsetStyle } from "./floatingOffset.js";
17
17
  import { n as resolveTooltipColorStyleWithContrast, r as useDelayedOpen, t as tooltip_default } from "./tooltip.js";
18
18
  import { applyVShow, child, computed, createComponent, createFor, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, next, nextTick, on, onBeforeUnmount, onMounted, ref, renderEffect, setClass, setDynamicProps, setInsertionState, setProp, setStyle, setText, template, toDisplayString, toRef, txt, unref, useId, useSlots, watch } from "vue";
@@ -112,6 +112,63 @@ function getSliderTooltipAnchor(tooltip) {
112
112
  return typeof tooltip === "object" && tooltip.anchor === "pointer" ? "pointer" : "thumb";
113
113
  }
114
114
  //#endregion
115
+ //#region src/components/slider/useSliderPointer.ts
116
+ function readPointerGeometry(track, orientation) {
117
+ const vertical = orientation === "vertical";
118
+ const thumbTravelRect = track.querySelector(".rp-slider__thumb")?.getBoundingClientRect();
119
+ const rect = thumbTravelRect && (vertical ? thumbTravelRect.height > 0 : thumbTravelRect.width > 0) ? thumbTravelRect : track.getBoundingClientRect();
120
+ const length = vertical ? rect.height : rect.width;
121
+ if (length <= 0) return;
122
+ return {
123
+ length,
124
+ start: vertical ? rect.bottom : rect.left,
125
+ vertical
126
+ };
127
+ }
128
+ function getPointerValue(event, geometry, bounds, step) {
129
+ const pointerPosition = geometry.vertical ? event.clientY : event.clientX;
130
+ const ratio = clamp((geometry.vertical ? geometry.start - pointerPosition : pointerPosition - geometry.start) / geometry.length, 0, 1);
131
+ return normalizeSliderValue(bounds.min + ratio * (bounds.max - bounds.min), bounds.min, bounds.max, step);
132
+ }
133
+ function useSliderPointer(options) {
134
+ function refreshGeometry(currentSession) {
135
+ const geometry = readPointerGeometry(currentSession.track, options.orientation());
136
+ if (!geometry) return false;
137
+ currentSession.geometry = geometry;
138
+ return true;
139
+ }
140
+ function updateFromPointer(event, currentSession) {
141
+ options.updateValue(getPointerValue(event, currentSession.geometry, options.bounds.value, options.step.value));
142
+ }
143
+ const pointerSession = createPointerSession({
144
+ onStart(event, currentSession) {
145
+ event.preventDefault();
146
+ options.inputRef.value?.focus({ preventScroll: true });
147
+ updateFromPointer(event, currentSession);
148
+ },
149
+ onUpdate: updateFromPointer,
150
+ refreshGeometry
151
+ });
152
+ function onPointerDown(event) {
153
+ return pointerSession.start(event, () => {
154
+ if (options.disabled()) return;
155
+ const track = event.currentTarget;
156
+ if (!track) return;
157
+ const geometry = readPointerGeometry(track, options.orientation());
158
+ if (!geometry) return;
159
+ return {
160
+ state: {
161
+ geometry,
162
+ track
163
+ },
164
+ target: track
165
+ };
166
+ });
167
+ }
168
+ onBeforeUnmount(pointerSession.stop);
169
+ return { onPointerDown };
170
+ }
171
+ //#endregion
115
172
  //#region src/components/slider/useSliderPointerPreview.ts
116
173
  function getPreviewRect(track, vertical) {
117
174
  const travelRect = track.querySelector(".rp-slider__travel")?.getBoundingClientRect();
@@ -122,9 +179,7 @@ function useSliderPointerPreview(options) {
122
179
  const dragging = ref(false);
123
180
  const previewAvailable = ref(false);
124
181
  const previewValue = ref(options.initialValue);
125
- let dragView = null;
126
- let dragPointerId;
127
- let dragTrack = null;
182
+ let disposing = false;
128
183
  let pendingPreview;
129
184
  const previewScheduler = createRafScheduler(applyScheduledPreview, () => pendingPreview?.track.ownerDocument.defaultView);
130
185
  function updateFromPointer(pointer, track) {
@@ -158,43 +213,36 @@ function useSliderPointerPreview(options) {
158
213
  previewScheduler.cancel();
159
214
  pendingPreview = void 0;
160
215
  }
161
- function removeDragListeners() {
162
- dragView?.removeEventListener("pointermove", onWindowPointerMove);
163
- dragView?.removeEventListener("pointerup", onPointerEnd);
164
- dragView?.removeEventListener("pointercancel", onPointerEnd);
165
- dragView = null;
166
- dragPointerId = void 0;
167
- dragTrack = null;
168
- }
216
+ const pointerSession = createPointerSession({
217
+ endUpdate: "event",
218
+ onStart(event, track) {
219
+ cancelScheduledPreview();
220
+ dragging.value = true;
221
+ updateFromPointer(event, track);
222
+ },
223
+ onStop() {
224
+ dragging.value = false;
225
+ if (!disposing) options.onStateChange();
226
+ },
227
+ onUpdate(event, track) {
228
+ if (updateFromPointer(event, track) && event.type === "pointermove") options.onStateChange();
229
+ }
230
+ });
169
231
  function onPointerMove(event) {
170
- if (dragging.value && !isMatchingPointer(event, dragPointerId)) return;
232
+ if (dragging.value) return;
171
233
  const track = event.currentTarget;
172
234
  if (track) schedulePreview(event, track);
173
235
  }
174
- function onWindowPointerMove(event) {
175
- if (!isMatchingPointer(event, dragPointerId)) return;
176
- if (dragTrack) schedulePreview(event, dragTrack);
177
- }
178
- function onPointerEnd(event) {
179
- if (!isMatchingPointer(event, dragPointerId)) return;
180
- cancelScheduledPreview();
181
- if (dragTrack) updateFromPointer(event, dragTrack);
182
- dragging.value = false;
183
- removeDragListeners();
184
- options.onStateChange();
185
- }
186
236
  function onPointerDown(event) {
187
- if (options.disabled() || event.button !== 0 || event.isPrimary === false) return false;
188
- removeDragListeners();
189
- dragging.value = true;
190
- dragPointerId = getPointerId(event);
191
- dragTrack = event.currentTarget;
192
- if (dragTrack) updateFromPointer(event, dragTrack);
193
- dragView = dragTrack?.ownerDocument.defaultView ?? null;
194
- dragView?.addEventListener("pointermove", onWindowPointerMove);
195
- dragView?.addEventListener("pointerup", onPointerEnd);
196
- dragView?.addEventListener("pointercancel", onPointerEnd);
197
- return true;
237
+ return pointerSession.start(event, () => {
238
+ if (options.disabled()) return;
239
+ const track = event.currentTarget;
240
+ if (!track) return;
241
+ return {
242
+ state: track,
243
+ target: track
244
+ };
245
+ });
198
246
  }
199
247
  function onTrackEnter(event) {
200
248
  if (!options.enabled()) return;
@@ -207,7 +255,8 @@ function useSliderPointerPreview(options) {
207
255
  if (!dragging.value && options.enabled()) cancelScheduledPreview();
208
256
  }
209
257
  onBeforeUnmount(() => {
210
- removeDragListeners();
258
+ disposing = true;
259
+ pointerSession.stop();
211
260
  cancelScheduledPreview();
212
261
  });
213
262
  return {
@@ -365,7 +414,11 @@ function useSliderValueState(props, onChange) {
365
414
  function onInput(event) {
366
415
  if (control.disabled) return;
367
416
  const input = event.target;
368
- controllable.setValue(normalizeSliderValue(input.valueAsNumber, bounds.value.min, bounds.value.max, nativeStep.value));
417
+ updateValue(input.valueAsNumber);
418
+ }
419
+ function updateValue(value) {
420
+ if (control.disabled) return;
421
+ controllable.setValue(normalizeSliderValue(value, bounds.value.min, bounds.value.max, nativeStep.value));
369
422
  }
370
423
  useFormControl({
371
424
  elements: () => [inputRef.value],
@@ -399,7 +452,8 @@ function useSliderValueState(props, onChange) {
399
452
  markItems,
400
453
  hasMarkLabels,
401
454
  trackSlotProps,
402
- onInput
455
+ onInput,
456
+ updateValue
403
457
  };
404
458
  }
405
459
  //#endregion
@@ -444,6 +498,19 @@ function useSlider(props, onChange) {
444
498
  invalid: valueState.control.invalid
445
499
  }));
446
500
  const trackStyle = computed(() => getSliderTrackStyle(props, valueState.valuePercent.value, tooltipState.tooltipPercent.value));
501
+ const pointerState = useSliderPointer({
502
+ bounds: valueState.bounds,
503
+ disabled: () => valueState.control.disabled,
504
+ inputRef: valueState.inputRef,
505
+ orientation: () => props.orientation,
506
+ step: valueState.nativeStep,
507
+ updateValue: valueState.updateValue
508
+ });
509
+ function onTrackPointerDown(event) {
510
+ const started = pointerState.onPointerDown(event);
511
+ tooltipState.onTooltipPointerDown(event);
512
+ return started;
513
+ }
447
514
  return {
448
515
  inputRef: valueState.inputRef,
449
516
  focus: valueState.focus,
@@ -478,7 +545,7 @@ function useSlider(props, onChange) {
478
545
  tooltipFormattedValue: tooltipState.tooltipFormattedValue,
479
546
  tooltipContent: tooltipState.tooltipContent,
480
547
  onInput: valueState.onInput,
481
- onTooltipPointerDown: tooltipState.onTooltipPointerDown,
548
+ onTrackPointerDown,
482
549
  onTooltipPointerMove: tooltipState.onTooltipPointerMove,
483
550
  onTooltipTrackEnter: tooltipState.onTooltipTrackEnter,
484
551
  onTooltipTrackLeave: tooltipState.onTooltipTrackLeave,
@@ -489,17 +556,17 @@ function useSlider(props, onChange) {
489
556
  }
490
557
  //#endregion
491
558
  //#region src/components/slider/slider.vue?vue&type=script&setup=true&vapor=true&lang.ts
492
- var t0$2 = template("<span data-v-f21fa11c>");
493
- var t1$2 = template("<span data-v-f21fa11c class=rp-slider__header>");
494
- var t2$2 = template("<span data-v-f21fa11c class=\"rp-slider__track-layer rp-slider__track-underlay\"aria-hidden=true>");
495
- var t3$2 = template("<span data-v-f21fa11c class=\"rp-slider__track-layer rp-slider__track-overlay\"aria-hidden=true>");
496
- var t4$2 = template("<span data-v-f21fa11c class=rp-slider__travel aria-hidden=true>", 2);
497
- var t5$1 = template("<span data-v-f21fa11c> ");
498
- var t6$1 = template("<span data-v-f21fa11c><span data-v-f21fa11c class=rp-slider__mark-dot></span>");
499
- var t7$1 = template("<span data-v-f21fa11c class=rp-slider__marks aria-hidden=true>");
500
- var t8$1 = template("<span data-v-f21fa11c class=rp-slider__tooltip-anchor aria-hidden=true></span>", 2);
559
+ var t0$2 = template("<span data-v-0fbfb274>");
560
+ var t1$2 = template("<span data-v-0fbfb274 class=rp-slider__header>");
561
+ var t2$2 = template("<span data-v-0fbfb274 class=\"rp-slider__track-layer rp-slider__track-underlay\"aria-hidden=true>");
562
+ var t3$2 = template("<span data-v-0fbfb274 class=\"rp-slider__track-layer rp-slider__track-overlay\"aria-hidden=true>");
563
+ var t4$2 = template("<span data-v-0fbfb274 class=rp-slider__travel aria-hidden=true>", 2);
564
+ var t5$1 = template("<span data-v-0fbfb274> ");
565
+ var t6$1 = template("<span data-v-0fbfb274><span data-v-0fbfb274 class=rp-slider__mark-dot></span>");
566
+ var t7$1 = template("<span data-v-0fbfb274 class=rp-slider__marks aria-hidden=true>");
567
+ var t8$1 = template("<span data-v-0fbfb274 class=rp-slider__tooltip-anchor aria-hidden=true></span>", 2);
501
568
  var t9$1 = template(" ");
502
- var t10 = template("<label data-v-f21fa11c><span data-v-f21fa11c><span data-v-f21fa11c class=rp-slider__rail aria-hidden=true></span><!><span data-v-f21fa11c></span><!><input data-v-f21fa11c><!><span data-v-f21fa11c><span data-v-f21fa11c class=rp-slider__thumb-content>", 1);
569
+ var t10 = template("<label data-v-0fbfb274><span data-v-0fbfb274><span data-v-0fbfb274 class=rp-slider__rail aria-hidden=true></span><!><span data-v-0fbfb274></span><!><input data-v-0fbfb274><!><span data-v-0fbfb274><span data-v-0fbfb274 class=rp-slider__thumb-content>", 1);
503
570
  //#endregion
504
571
  //#region src/components/slider/slider.vue
505
572
  var slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -562,7 +629,7 @@ var slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
562
629
  const slots = useSlots();
563
630
  const props = __props;
564
631
  const emit = __emit;
565
- const { inputRef, focus, control, nativeMin, nativeMax, nativeStep, rootClass, normalizedValue, valuePercent, formattedValue, ariaValueText, markItems, thumbMode, trackSlotProps, trackStyle, trackHovered, dragging, tooltipVisible, tooltipOpen, tooltipAnchor, tooltipPlacement, tooltipId, tooltipColor, tooltipAutoContrast, tooltipContrastColor, tooltipOffset, tooltipOpenDelay, tooltipArrow, tooltipValue, tooltipPercent, tooltipFormattedValue, tooltipContent, onInput, onTooltipPointerDown, onTooltipPointerMove, onTooltipTrackEnter, onTooltipTrackLeave, onTooltipFocusIn, onTooltipFocusOut, onTooltipKeydown } = useSlider(props, (value) => emit("update:modelValue", value));
632
+ const { inputRef, focus, control, nativeMin, nativeMax, nativeStep, rootClass, normalizedValue, valuePercent, formattedValue, ariaValueText, markItems, thumbMode, trackSlotProps, trackStyle, trackHovered, dragging, tooltipVisible, tooltipOpen, tooltipAnchor, tooltipPlacement, tooltipId, tooltipColor, tooltipAutoContrast, tooltipContrastColor, tooltipOffset, tooltipOpenDelay, tooltipArrow, tooltipValue, tooltipPercent, tooltipFormattedValue, tooltipContent, onInput, onTrackPointerDown, onTooltipPointerMove, onTooltipTrackEnter, onTooltipTrackLeave, onTooltipFocusIn, onTooltipFocusOut, onTooltipKeydown } = useSlider(props, (value) => emit("update:modelValue", value));
566
633
  const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
567
634
  const rootAttrs = computed(() => getRootAttrs({
568
635
  class: [rootClass.value, { "rp-slider--custom-thumb": Boolean(slots.thumb) }],
@@ -749,7 +816,7 @@ var slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
749
816
  }
750
817
  });
751
818
  });
752
- on(n45, "pointerdown", (e) => unref(onTooltipPointerDown)(e));
819
+ on(n45, "pointerdown", (e) => unref(onTrackPointerDown)(e));
753
820
  on(n45, "pointerenter", (e) => unref(onTooltipTrackEnter)(e));
754
821
  on(n45, "pointerleave", (e) => unref(onTooltipTrackLeave)(e));
755
822
  on(n45, "pointermove", (e) => unref(onTooltipPointerMove)(e));
@@ -758,7 +825,7 @@ var slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
758
825
  on(n45, "keydown", (e) => unref(onTooltipKeydown)(e));
759
826
  return n48;
760
827
  }
761
- }), [["__scopeId", "data-v-f21fa11c"]]);
828
+ }), [["__scopeId", "data-v-0fbfb274"]]);
762
829
  //#endregion
763
830
  //#region src/components/slider/useRangeSliderTooltipCollision.ts
764
831
  var TOOLTIP_COLLISION_GAP = 4;
@@ -1240,113 +1307,62 @@ function getRangeSliderPointerValue(pointer, geometry, bounds) {
1240
1307
  //#endregion
1241
1308
  //#region src/components/slider/useRangeSliderPointer.ts
1242
1309
  function useRangeSliderPointer(options) {
1243
- let session;
1244
- let pendingPointerEvent;
1245
- let geometryDirty = false;
1246
- function refreshGeometry() {
1247
- const currentSession = session;
1248
- if (!currentSession) return false;
1249
- if (!geometryDirty) return true;
1310
+ function refreshGeometry(currentSession) {
1250
1311
  const geometry = options.getPointerGeometry(currentSession.track);
1251
1312
  if (geometry === void 0) return false;
1252
- geometryDirty = false;
1253
1313
  currentSession.geometry = geometry;
1254
1314
  return true;
1255
1315
  }
1256
- function applyScheduledUpdate() {
1257
- if (!refreshGeometry()) return;
1258
- const event = pendingPointerEvent;
1259
- pendingPointerEvent = void 0;
1260
- if (event && isCurrentPointer(event)) updateFromPointer(event);
1261
- }
1262
- const updateScheduler = createRafScheduler(applyScheduledUpdate, () => session?.view);
1263
- function flushScheduledUpdate() {
1264
- updateScheduler.cancel();
1265
- applyScheduledUpdate();
1266
- }
1267
- function scheduleUpdate() {
1268
- if (session) updateScheduler.schedule();
1269
- }
1270
- function onGeometryChange() {
1271
- if (!session) return;
1272
- geometryDirty = true;
1273
- scheduleUpdate();
1274
- }
1275
- function stopDragging() {
1276
- const stoppedSession = session;
1277
- if (!stoppedSession) return;
1278
- stoppedSession.view?.removeEventListener("pointermove", onPointerMove);
1279
- stoppedSession.view?.removeEventListener("pointerup", onPointerEnd);
1280
- stoppedSession.view?.removeEventListener("pointercancel", onPointerEnd);
1281
- stoppedSession.view?.removeEventListener("resize", onGeometryChange);
1282
- stoppedSession.view?.removeEventListener("scroll", onGeometryChange, true);
1283
- updateScheduler.cancel();
1284
- pendingPointerEvent = void 0;
1285
- geometryDirty = false;
1286
- session = void 0;
1287
- options.endDrag(stoppedSession.thumb);
1288
- }
1289
- function switchDraggingThumb(nextThumb) {
1290
- const currentSession = session;
1291
- if (!currentSession || currentSession.thumb === nextThumb) return;
1316
+ function switchDraggingThumb(currentSession, nextThumb) {
1317
+ if (currentSession.thumb === nextThumb) return;
1292
1318
  const previousThumb = currentSession.thumb;
1293
1319
  currentSession.thumb = nextThumb;
1294
1320
  options.transferDrag(previousThumb, nextThumb);
1295
1321
  options.setActiveThumb(nextThumb);
1296
1322
  options.transferFocusedThumb(currentSession.track, previousThumb, nextThumb);
1297
1323
  }
1298
- function updateFromPointer(event) {
1299
- const currentSession = session;
1300
- if (!currentSession) return;
1324
+ function updateFromPointer(event, currentSession) {
1301
1325
  const value = options.getPointerValue(event, currentSession.geometry);
1302
1326
  if (value == null) return;
1303
- switchDraggingThumb(options.updateThumb(currentSession.thumb, value, currentSession.anchorValue));
1304
- }
1305
- function isCurrentPointer(event) {
1306
- return isMatchingPointer(event, session?.pointerId);
1307
- }
1308
- function onPointerMove(event) {
1309
- if (!isCurrentPointer(event)) return;
1310
- if (!session) return;
1311
- pendingPointerEvent = event;
1312
- scheduleUpdate();
1313
- }
1314
- function onPointerEnd(event) {
1315
- if (!isCurrentPointer(event)) return;
1316
- if (event.type === "pointerup") flushScheduledUpdate();
1317
- stopDragging();
1318
- }
1327
+ switchDraggingThumb(currentSession, options.updateThumb(currentSession.thumb, value, currentSession.anchorValue));
1328
+ }
1329
+ const pointerSession = createPointerSession({
1330
+ onStart(event, currentSession) {
1331
+ event.preventDefault();
1332
+ options.setActiveThumb(currentSession.thumb);
1333
+ options.focusThumb(currentSession.track, currentSession.thumb);
1334
+ options.startDrag(currentSession.thumb);
1335
+ switchDraggingThumb(currentSession, options.updateThumb(currentSession.thumb, currentSession.initialValue, currentSession.anchorValue));
1336
+ },
1337
+ onStop(currentSession) {
1338
+ options.endDrag(currentSession.thumb);
1339
+ },
1340
+ onUpdate: updateFromPointer,
1341
+ refreshGeometry
1342
+ });
1319
1343
  function onTrackPointerDown(event) {
1320
- if (options.disabled() || event.button !== 0 || event.isPrimary === false) return;
1321
- const track = event.currentTarget;
1322
- if (!track) return;
1323
- const geometry = options.getPointerGeometry(track);
1324
- if (geometry === void 0) return;
1325
- const pointerValue = options.getPointerValue(event, geometry);
1326
- if (pointerValue == null) return;
1327
- const thumb = options.getThumb(event, pointerValue);
1328
- event.preventDefault();
1329
- stopDragging();
1330
- options.setActiveThumb(thumb);
1331
- options.focusThumb(track, thumb);
1332
- session = {
1333
- view: track.ownerDocument.defaultView,
1334
- track,
1335
- geometry,
1336
- thumb,
1337
- anchorValue: options.getAnchorValue(thumb),
1338
- pointerId: getPointerId(event)
1339
- };
1340
- options.startDrag(thumb);
1341
- switchDraggingThumb(options.updateThumb(thumb, pointerValue, session.anchorValue));
1342
- const view = session?.view;
1343
- view?.addEventListener("pointermove", onPointerMove);
1344
- view?.addEventListener("pointerup", onPointerEnd);
1345
- view?.addEventListener("pointercancel", onPointerEnd);
1346
- view?.addEventListener("resize", onGeometryChange);
1347
- view?.addEventListener("scroll", onGeometryChange, true);
1344
+ return pointerSession.start(event, () => {
1345
+ if (options.disabled()) return;
1346
+ const track = event.currentTarget;
1347
+ if (!track) return;
1348
+ const geometry = options.getPointerGeometry(track);
1349
+ if (geometry === void 0) return;
1350
+ const initialValue = options.getPointerValue(event, geometry);
1351
+ if (initialValue == null) return;
1352
+ const thumb = options.getThumb(event, initialValue);
1353
+ return {
1354
+ state: {
1355
+ anchorValue: options.getAnchorValue(thumb),
1356
+ geometry,
1357
+ initialValue,
1358
+ thumb,
1359
+ track
1360
+ },
1361
+ target: track
1362
+ };
1363
+ });
1348
1364
  }
1349
- onBeforeUnmount(stopDragging);
1365
+ onBeforeUnmount(pointerSession.stop);
1350
1366
  return { onTrackPointerDown };
1351
1367
  }
1352
1368
  //#endregion
@@ -0,0 +1,197 @@
1
+ @layer ropav.components {
2
+ .rp-tags-input[data-v-9fbac28f] {
3
+ --_rp-tags-input-height: var(--rp-size-control-md);
4
+ --_rp-tags-input-padding-x: calc(var(--rp-size-control-md) / 3);
5
+ --_rp-tags-input-font-size: var(--rp-font-size-md);
6
+ --_rp-tags-input-radius: var(--rp-radius-sm);
7
+ --_rp-tags-input-invalid-border: var(--rp-color-red-outline);
8
+ --_rp-tags-input-invalid-ring: color-mix(in srgb, var(--rp-color-red-outline) 32%, transparent);
9
+ position: relative;
10
+ display: inline-flex;
11
+ align-items: center;
12
+ box-sizing: border-box;
13
+ min-width: 180px;
14
+ min-height: var(--_rp-tags-input-height);
15
+ padding: var(--rp-spacing-1) var(--_rp-tags-input-padding-x);
16
+ gap: var(--rp-spacing-2);
17
+ font-family: var(--rp-font-family);
18
+ font-size: var(--_rp-tags-input-font-size);
19
+ font-weight: var(--rp-font-weight-normal);
20
+ line-height: 1;
21
+ background-color: var(--rp-color-control-bg);
22
+ border: var(--rp-border-width-thin) solid var(--rp-color-control-border);
23
+ border-radius: var(--_rp-tags-input-radius);
24
+ cursor: text;
25
+ transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
26
+ }
27
+ .rp-tags-input[data-v-9fbac28f]:hover:not(.rp-tags-input--disabled):not(.rp-tags-input--invalid) {
28
+ border-color: var(--rp-color-control-border-hover);
29
+ }
30
+ .rp-tags-input[data-v-9fbac28f]:focus-within:not(.rp-tags-input--disabled):not(.rp-tags-input--invalid) {
31
+ border-color: var(--rp-color-control-border-focus);
32
+ box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
33
+ }
34
+ .rp-tags-input__native[data-v-9fbac28f] {
35
+ position: absolute;
36
+ width: 1px;
37
+ height: 1px;
38
+ padding: 0;
39
+ margin: -1px;
40
+ overflow: hidden;
41
+ clip: rect(0, 0, 0, 0);
42
+ white-space: nowrap;
43
+ border-width: 0;
44
+ }
45
+ .rp-tags-input--size-xs[data-v-9fbac28f] {
46
+ --_rp-tags-input-height: var(--rp-size-control-xs);
47
+ --_rp-tags-input-padding-x: calc(var(--rp-size-control-xs) / 3);
48
+ --_rp-tags-input-font-size: var(--rp-font-size-xs);
49
+ }
50
+ .rp-tags-input--size-sm[data-v-9fbac28f] {
51
+ --_rp-tags-input-height: var(--rp-size-control-sm);
52
+ --_rp-tags-input-padding-x: calc(var(--rp-size-control-sm) / 3);
53
+ --_rp-tags-input-font-size: var(--rp-font-size-sm);
54
+ }
55
+ .rp-tags-input--size-md[data-v-9fbac28f] {
56
+ --_rp-tags-input-height: var(--rp-size-control-md);
57
+ --_rp-tags-input-padding-x: calc(var(--rp-size-control-md) / 3);
58
+ --_rp-tags-input-font-size: var(--rp-font-size-md);
59
+ }
60
+ .rp-tags-input--size-lg[data-v-9fbac28f] {
61
+ --_rp-tags-input-height: var(--rp-size-control-lg);
62
+ --_rp-tags-input-padding-x: calc(var(--rp-size-control-lg) / 3);
63
+ --_rp-tags-input-font-size: var(--rp-font-size-lg);
64
+ }
65
+ .rp-tags-input--size-xl[data-v-9fbac28f] {
66
+ --_rp-tags-input-height: var(--rp-size-control-xl);
67
+ --_rp-tags-input-padding-x: calc(var(--rp-size-control-xl) / 3);
68
+ --_rp-tags-input-font-size: var(--rp-font-size-xl);
69
+ }
70
+ .rp-tags-input--radius-xs[data-v-9fbac28f] {
71
+ --_rp-tags-input-radius: var(--rp-radius-xs);
72
+ }
73
+ .rp-tags-input--radius-sm[data-v-9fbac28f] {
74
+ --_rp-tags-input-radius: var(--rp-radius-sm);
75
+ }
76
+ .rp-tags-input--radius-md[data-v-9fbac28f] {
77
+ --_rp-tags-input-radius: var(--rp-radius-md);
78
+ }
79
+ .rp-tags-input--radius-lg[data-v-9fbac28f] {
80
+ --_rp-tags-input-radius: var(--rp-radius-lg);
81
+ }
82
+ .rp-tags-input--radius-xl[data-v-9fbac28f] {
83
+ --_rp-tags-input-radius: var(--rp-radius-xl);
84
+ }
85
+ .rp-tags-input--disabled[data-v-9fbac28f] {
86
+ opacity: var(--rp-opacity-disabled);
87
+ cursor: not-allowed;
88
+ }
89
+ .rp-tags-input--readonly[data-v-9fbac28f] {
90
+ background-color: var(--rp-color-control-readonly-bg);
91
+ }
92
+ .rp-tags-input--invalid[data-v-9fbac28f] {
93
+ border-color: var(--_rp-tags-input-invalid-border);
94
+ }
95
+ .rp-tags-input--invalid[data-v-9fbac28f]:focus-within:not(.rp-tags-input--disabled) {
96
+ border-color: var(--_rp-tags-input-invalid-border);
97
+ box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-tags-input-invalid-ring);
98
+ }
99
+ .rp-tags-input__tags[data-v-9fbac28f] {
100
+ display: flex;
101
+ flex: 1;
102
+ flex-wrap: wrap;
103
+ align-items: center;
104
+ min-width: 0;
105
+ gap: var(--rp-spacing-1);
106
+ }
107
+ .rp-tags-input__tag[data-v-9fbac28f] {
108
+ display: inline-flex;
109
+ align-items: center;
110
+ box-sizing: border-box;
111
+ max-width: 100%;
112
+ min-height: calc(var(--_rp-tags-input-height) - var(--rp-spacing-3));
113
+ padding-inline: var(--rp-spacing-2) var(--rp-spacing-1);
114
+ gap: var(--rp-spacing-1);
115
+ color: var(--rp-color-control-fg);
116
+ background-color: var(--rp-color-default-hover);
117
+ border-radius: var(--_rp-tags-input-radius);
118
+ }
119
+ .rp-tags-input__tag-label[data-v-9fbac28f] {
120
+ overflow: hidden;
121
+ text-overflow: ellipsis;
122
+ white-space: nowrap;
123
+ }
124
+ .rp-tags-input__tag-remove[data-v-9fbac28f] {
125
+ display: inline-flex;
126
+ align-items: center;
127
+ justify-content: center;
128
+ padding: 0;
129
+ font: inherit;
130
+ background: none;
131
+ border: none;
132
+ cursor: pointer;
133
+ color: inherit;
134
+ opacity: 0.6;
135
+ flex-shrink: 0;
136
+ transition: opacity var(--rp-transition-fast);
137
+ }
138
+ .rp-tags-input__tag-remove[data-v-9fbac28f]:hover {
139
+ opacity: 1;
140
+ }
141
+ .rp-tags-input__tag-remove svg[data-v-9fbac28f] {
142
+ width: 100%;
143
+ height: 100%;
144
+ }
145
+ .rp-tags-input__tag-remove[data-v-9fbac28f] {
146
+ width: 1em;
147
+ height: 1em;
148
+ }
149
+ .rp-tags-input__tag-remove[data-v-9fbac28f]:disabled {
150
+ cursor: not-allowed;
151
+ }
152
+ .rp-tags-input__input[data-v-9fbac28f] {
153
+ box-sizing: border-box;
154
+ flex: 1 0 4rem;
155
+ width: 4rem;
156
+ min-width: 4rem;
157
+ min-height: calc(var(--_rp-tags-input-height) - var(--rp-spacing-2));
158
+ padding: 0;
159
+ border: none;
160
+ outline: none;
161
+ background: transparent;
162
+ font: inherit;
163
+ color: var(--rp-color-control-fg);
164
+ line-height: 1;
165
+ }
166
+ .rp-tags-input__input[data-v-9fbac28f]::placeholder {
167
+ color: var(--rp-color-control-placeholder);
168
+ }
169
+ .rp-tags-input__input[data-v-9fbac28f]:disabled {
170
+ cursor: not-allowed;
171
+ }
172
+ .rp-tags-input__clear[data-v-9fbac28f] {
173
+ padding: 0;
174
+ font: inherit;
175
+ background: none;
176
+ border: none;
177
+ cursor: pointer;
178
+ display: inline-flex;
179
+ align-items: center;
180
+ width: 1em;
181
+ height: 1em;
182
+ flex-shrink: 0;
183
+ }
184
+ .rp-tags-input__clear svg[data-v-9fbac28f] {
185
+ width: 100%;
186
+ height: 100%;
187
+ }
188
+ .rp-tags-input__clear[data-v-9fbac28f] {
189
+ flex-shrink: 0;
190
+ color: var(--rp-color-control-icon);
191
+ transform: translateX(var(--rp-spacing-1));
192
+ transition: color var(--rp-transition-fast);
193
+ }
194
+ .rp-tags-input__clear[data-v-9fbac28f]:hover {
195
+ color: var(--rp-color-control-fg);
196
+ }
197
+ }