@onereach/ui-components 22.1.3 → 22.1.4

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.
@@ -1,7 +1,7 @@
1
1
  import { useElementBounding as ce, useElementHover as S, useDraggable as me, clamp as g } from "@vueuse/core";
2
- import { defineComponent as ve, ref as h, computed as n, toRef as he, watch as P, resolveComponent as ge, openBlock as H, createElementBlock as w, normalizeClass as m, createElementVNode as b, normalizeStyle as C, createVNode as J, mergeProps as K, withCtx as $, renderSlot as D, createTextVNode as F, toDisplayString as E, Fragment as Q, renderList as U, createCommentVNode as be } from "vue";
2
+ import { defineComponent as ve, ref as h, computed as i, toRef as he, watch as P, resolveComponent as ge, openBlock as H, createElementBlock as w, normalizeClass as m, createElementVNode as b, normalizeStyle as C, createVNode as J, mergeProps as K, withCtx as $, renderSlot as D, createTextVNode as F, toDisplayString as E, Fragment as Q, renderList as U, createCommentVNode as be } from "vue";
3
3
  import { useProxyModelValue as ke } from "@onereach/ui-components-common/hooks";
4
- import { a, S as k } from "./OrSlider.vue_vue_type_script_lang-BE2sljeF.mjs";
4
+ import { a, S as k } from "./OrSlider.vue_vue_type_script_lang-C5rLh1F0.mjs";
5
5
  import { O as fe } from "./OrTooltip-DqwjoE82.mjs";
6
6
  import { _ as ye } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
7
7
  const Ve = [
@@ -83,7 +83,7 @@ const Ve = [
83
83
  "mx-md+",
84
84
  "my-0"
85
85
  ]
86
- }, we = [], ze = {
86
+ }, we = [], Me = {
87
87
  [a.Horizontal]: [
88
88
  // Box
89
89
  "h-full"
@@ -100,7 +100,7 @@ const Ve = [
100
100
  // Box
101
101
  "w-full"
102
102
  ]
103
- }, Me = [
103
+ }, ze = [
104
104
  // Shape
105
105
  "rounded-full",
106
106
  // Box
@@ -120,6 +120,8 @@ const Ve = [
120
120
  }, $e = [
121
121
  // Layout
122
122
  "shrink-0",
123
+ // Position
124
+ "z-10",
123
125
  // Shape
124
126
  "rounded-full",
125
127
  // Box
@@ -308,18 +310,18 @@ const Ve = [
308
310
  "root"
309
311
  ],
310
312
  setup(e, f) {
311
- const N = h(), W = n(() => [
313
+ const N = h(), W = i(() => [
312
314
  "or-range-slider-v3",
313
315
  ...Ve,
314
316
  ...Re[e.orientation]
315
- ]), z = h(), L = n(() => [
317
+ ]), M = h(), L = i(() => [
316
318
  "or-range-slider-rail-v3",
317
319
  ...Se,
318
320
  ...He[e.orientation]
319
- ]), V = h(), s = n(() => [
321
+ ]), V = h(), s = i(() => [
320
322
  ...we,
321
- ...ze[e.orientation]
322
- ]), y = n(() => {
323
+ ...Me[e.orientation]
324
+ ]), y = i(() => {
323
325
  switch (e.orientation) {
324
326
  case a.Horizontal:
325
327
  case a.HorizontalReversed:
@@ -328,10 +330,10 @@ const Ve = [
328
330
  case a.VerticalReversed:
329
331
  return { height: `${d.value * 100}%` };
330
332
  }
331
- }), I = h(), Z = n(() => [
332
- ...Me,
333
+ }), I = h(), Z = i(() => [
334
+ ...ze,
333
335
  ...Ce[e.color]
334
- ]), p = n(() => {
336
+ ]), p = i(() => {
335
337
  switch (e.orientation) {
336
338
  case a.Horizontal:
337
339
  case a.HorizontalReversed:
@@ -340,23 +342,23 @@ const Ve = [
340
342
  case a.VerticalReversed:
341
343
  return { height: `${(u.value - d.value) * 100}%` };
342
344
  }
343
- }), X = h(), O = h(), B = h(), _ = n(() => [
345
+ }), X = h(), O = h(), B = h(), _ = i(() => [
344
346
  "or-range-slider-thumb-v3",
345
347
  ...$e,
346
348
  ...Oe[e.color],
347
349
  "touch-none"
348
350
  // Required for proper work on mobile
349
- ]), ee = n(() => [
351
+ ]), ee = i(() => [
350
352
  ...Be,
351
353
  ...Te[e.color]
352
- ]), ae = n(() => [
354
+ ]), ae = i(() => [
353
355
  ...Pe,
354
356
  ...De[e.orientation]
355
- ]), te = n(() => [
357
+ ]), te = i(() => [
356
358
  ...Fe,
357
359
  ...Ee[e.orientation]
358
360
  ]), o = ke(he(e, "modelValue"), f.emit, {
359
- defaultValue: n(() => [e.minValue, e.maxValue])
361
+ defaultValue: i(() => [e.minValue, e.maxValue])
360
362
  });
361
363
  P(o, ([l, t]) => {
362
364
  switch (e.orientation) {
@@ -370,7 +372,7 @@ const Ve = [
370
372
  break;
371
373
  }
372
374
  });
373
- const Y = n({
375
+ const Y = i({
374
376
  get: () => {
375
377
  switch (e.orientation) {
376
378
  case a.Horizontal:
@@ -395,7 +397,7 @@ const Ve = [
395
397
  break;
396
398
  }
397
399
  }
398
- }), A = n({
400
+ }), A = i({
399
401
  get: () => {
400
402
  switch (e.orientation) {
401
403
  case a.Horizontal:
@@ -420,43 +422,43 @@ const Ve = [
420
422
  break;
421
423
  }
422
424
  }
423
- }), d = n({
425
+ }), d = i({
424
426
  get: () => (Y.value - e.minValue) / (e.maxValue - e.minValue),
425
427
  set: (l) => {
426
- const t = l * (e.maxValue - e.minValue) + e.minValue, i = [
428
+ const t = l * (e.maxValue - e.minValue) + e.minValue, n = [
427
429
  j.value.reduce((r, R) => Math.abs(r - t) < Math.abs(R - t) ? r : R),
428
430
  u.value * (e.maxValue - e.minValue) + e.minValue
429
431
  ];
430
432
  switch (e.orientation) {
431
433
  case a.Horizontal:
432
434
  case a.Vertical:
433
- o.value = i;
435
+ o.value = n;
434
436
  break;
435
437
  case a.HorizontalReversed:
436
438
  case a.VerticalReversed:
437
- o.value = [i[1], i[0]];
439
+ o.value = [n[1], n[0]];
438
440
  break;
439
441
  }
440
442
  }
441
- }), u = n({
443
+ }), u = i({
442
444
  get: () => (A.value - e.minValue) / (e.maxValue - e.minValue),
443
445
  set: (l) => {
444
- const t = l * (e.maxValue - e.minValue) + e.minValue, i = [
446
+ const t = l * (e.maxValue - e.minValue) + e.minValue, n = [
445
447
  d.value * (e.maxValue - e.minValue) + e.minValue,
446
448
  j.value.reduce((r, R) => Math.abs(r - t) < Math.abs(R - t) ? r : R)
447
449
  ];
448
450
  switch (e.orientation) {
449
451
  case a.Horizontal:
450
452
  case a.Vertical:
451
- o.value = i;
453
+ o.value = n;
452
454
  break;
453
455
  case a.HorizontalReversed:
454
456
  case a.VerticalReversed:
455
- o.value = [i[1], i[0]];
457
+ o.value = [n[1], n[0]];
456
458
  break;
457
459
  }
458
460
  }
459
- }), j = n(() => e.step ? Array(Math.ceil(Math.abs(e.maxValue - e.minValue) / e.step)).fill(void 0).map((l, t) => Math.floor((e.minValue + e.step * t) * 1e3) / 1e3).concat(...e.breakpoints, e.maxValue).sort((l, t) => l - t) : [e.minValue, ...e.breakpoints, e.maxValue]), le = n(() => {
461
+ }), j = i(() => e.step ? Array(Math.ceil(Math.abs(e.maxValue - e.minValue) / e.step)).fill(void 0).map((l, t) => Math.floor((e.minValue + e.step * t) * 1e3) / 1e3).concat(...e.breakpoints, e.maxValue).sort((l, t) => l - t) : [e.minValue, ...e.breakpoints, e.maxValue]), le = i(() => {
460
462
  switch (e.orientation) {
461
463
  case a.Horizontal:
462
464
  case a.HorizontalReversed:
@@ -465,18 +467,18 @@ const Ve = [
465
467
  case a.VerticalReversed:
466
468
  return "right";
467
469
  }
468
- }), re = h(), v = h(), c = ce(z);
470
+ }), re = h(), v = h(), c = ce(M);
469
471
  function T(l, t) {
470
472
  if (e.disabled)
471
473
  return;
472
- const i = c.width.value, r = c.height.value;
474
+ const n = c.width.value, r = c.height.value;
473
475
  if (v.value === "from")
474
476
  switch (e.orientation) {
475
477
  case a.Horizontal:
476
- d.value = g(t.clientX - c.left.value, 0, u.value * i) / i;
478
+ d.value = g(t.clientX - c.left.value, 0, u.value * n) / n;
477
479
  break;
478
480
  case a.HorizontalReversed:
479
- d.value = g(c.right.value - t.clientX, 0, u.value * i) / i;
481
+ d.value = g(c.right.value - t.clientX, 0, u.value * n) / n;
480
482
  break;
481
483
  case a.Vertical:
482
484
  d.value = g(r - (t.clientY - c.top.value), 0, u.value * r) / r;
@@ -488,10 +490,10 @@ const Ve = [
488
490
  else
489
491
  switch (e.orientation) {
490
492
  case a.Horizontal:
491
- u.value = g(t.clientX - c.left.value, d.value * i, i) / i;
493
+ u.value = g(t.clientX - c.left.value, d.value * n, n) / n;
492
494
  break;
493
495
  case a.HorizontalReversed:
494
- u.value = g(c.right.value - t.clientX, d.value * i, i) / i;
496
+ u.value = g(c.right.value - t.clientX, d.value * n, n) / n;
495
497
  break;
496
498
  case a.Vertical:
497
499
  u.value = g(r - (t.clientY - c.top.value), d.value * r, r) / r;
@@ -504,22 +506,22 @@ const Ve = [
504
506
  function oe(l) {
505
507
  v.value === "from" ? (Y.value = l, v.value = "to") : (A.value = l, v.value = "from");
506
508
  }
507
- function ie(l) {
509
+ function ne(l) {
508
510
  switch (e.orientation) {
509
511
  case a.Horizontal:
510
- return { left: `${M(l) * 100}%` };
512
+ return { left: `${z(l) * 100}%` };
511
513
  case a.HorizontalReversed:
512
- return { right: `${M(l) * 100}%` };
514
+ return { right: `${z(l) * 100}%` };
513
515
  case a.Vertical:
514
- return { bottom: `${M(l) * 100}%` };
516
+ return { bottom: `${z(l) * 100}%` };
515
517
  case a.VerticalReversed:
516
- return { top: `${M(l) * 100}%` };
518
+ return { top: `${z(l) * 100}%` };
517
519
  }
518
520
  }
519
- function M(l) {
521
+ function z(l) {
520
522
  return (l - e.minValue) / (e.maxValue - e.minValue);
521
523
  }
522
- const q = S(V), x = S(I), G = S(X), ne = n(() => q.value || x.value || G.value), se = S(O), de = S(B), { isDragging: ue } = me(z, {
524
+ const q = S(V), x = S(I), G = S(X), ie = i(() => q.value || x.value || G.value), se = S(O), de = S(B), { isDragging: ue } = me(M, {
523
525
  onStart: (l, t) => {
524
526
  switch (t.target) {
525
527
  case O.value:
@@ -545,7 +547,7 @@ const Ve = [
545
547
  }, { immediate: !0 }), {
546
548
  root: N,
547
549
  rootStyles: W,
548
- rail: z,
550
+ rail: M,
549
551
  railStyles: L,
550
552
  offset: V,
551
553
  offsetStyles: s,
@@ -565,18 +567,18 @@ const Ve = [
565
567
  highlightedBreakpoint: re,
566
568
  selectedControl: v,
567
569
  onClick: oe,
568
- getBreakpointMarkComputedStyles: ie,
570
+ getBreakpointMarkComputedStyles: ne,
569
571
  isHoveringOffset: q,
570
572
  isHoveringTrack: x,
571
573
  isHoveringFiller: G,
572
- isHoveringRail: ne,
574
+ isHoveringRail: ie,
573
575
  isHoveringThumbFrom: se,
574
576
  isHoveringThumbTo: de,
575
577
  isDragging: ue
576
578
  };
577
579
  }
578
580
  }), We = ["disabled"], Le = ["disabled"], Ie = ["disabled"], Xe = ["disabled"], Ye = ["disabled"], Ae = ["disabled"], je = ["disabled"], qe = ["activated", "disabled", "onMouseenter"], xe = ["disabled", "force-state", "onMouseenter", "onClick"];
579
- function Ge(e, f, N, W, z, L) {
581
+ function Ge(e, f, N, W, M, L) {
580
582
  const V = ge("OrTooltip");
581
583
  return H(), w("div", {
582
584
  ref: "root",
@@ -595,7 +597,6 @@ function Ge(e, f, N, W, z, L) {
595
597
  disabled: e.disabled
596
598
  }, null, 14, Ie),
597
599
  J(V, K({
598
- class: ["relative", "z-10"],
599
600
  "is-open": !e.isDragging && (e.isHoveringRail || e.isHoveringThumbFrom) || e.isDragging && e.selectedControl === "from",
600
601
  placement: e.tooltipPlacement,
601
602
  offset: 24,
@@ -624,7 +625,6 @@ function Ge(e, f, N, W, z, L) {
624
625
  disabled: e.disabled
625
626
  }, null, 14, Ye),
626
627
  J(V, K({
627
- class: ["relative", "z-10"],
628
628
  "is-open": !e.isDragging && (e.isHoveringRail || e.isHoveringThumbTo) || e.isDragging && e.selectedControl === "to",
629
629
  placement: e.tooltipPlacement,
630
630
  offset: 24,
@@ -685,4 +685,4 @@ const _e = /* @__PURE__ */ ye(Ne, [["render", Ge]]);
685
685
  export {
686
686
  _e as O
687
687
  };
688
- //# sourceMappingURL=OrRangeSlider-FL1E28ec.mjs.map
688
+ //# sourceMappingURL=OrRangeSlider-Dim4sU4v.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrRangeSlider-Dim4sU4v.mjs","sources":["../../../components/or-range-slider-v3/src/styles.ts","../../../components/or-range-slider-v3/src/OrRangeSlider.vue"],"sourcesContent":["import { SliderColor, SliderOrientation } from '@onereach/ui-components.or-slider-v3';\n\nexport const RangeSlider: string[] = [\n // Interactivity\n 'interactivity-default',\n];\n\nexport const RangeSliderOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-column',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-column',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-row',\n\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-row',\n\n // Box\n 'h-full',\n ],\n};\n\nexport const RangeSliderRail: string[] = [\n // Position\n 'relative',\n\n // Interactivity\n 'interactivity-click',\n\n // Shape\n 'rounded-full',\n\n // Theme\n 'theme-background-disabled',\n 'dark:theme-background-disabled-dark',\n];\n\nexport const RangeSliderRailOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-row',\n\n // Box\n 'w-full',\n 'h-xs',\n\n // Spacing\n 'mx-0',\n 'my-md+',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-row-reverse',\n\n // Box\n 'w-full',\n 'h-xs',\n\n // Spacing\n 'mx-0',\n 'my-md+',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-column-reverse items-center',\n\n // Box\n 'w-xs',\n 'h-full',\n\n // Spacing\n 'mx-md+',\n 'my-0',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-column items-center',\n\n // Box\n 'w-xs',\n 'h-full',\n\n // Spacing\n 'mx-md+',\n 'my-0',\n ],\n};\n\nexport const RangeSliderOffset: string[] = [];\n\nexport const RangeSliderOffsetOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Box\n 'w-full',\n ],\n};\n\nexport const RangeSliderTrack: string[] = [\n // Shape\n 'rounded-full',\n\n // Box\n 'w-full',\n 'h-full',\n];\n\nexport const RangeSliderTrackColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-background-primary',\n 'dark:theme-background-primary-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-background-secondary',\n 'dark:theme-background-secondary-dark',\n ],\n};\n\nexport const RangeSliderThumb: string[] = [\n // Layout\n 'shrink-0',\n\n // Position\n 'z-10',\n\n // Shape\n 'rounded-full',\n\n // Box\n 'w-[20px]',\n 'h-[20px]',\n\n // Spacing\n '-mx-[10px]',\n '-my-[10px]',\n\n // Theme\n 'theme-background-base',\n 'dark:theme-background-base-dark',\n];\n\nexport const RangeSliderThumbColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-border-primary border-4',\n 'dark:theme-border-primary-dark',\n\n // Theme (hover)\n 'hover:theme-background-primary',\n 'dark:hover:theme-background-primary-dark',\n\n // Theme (active)\n 'active:theme-background-primary',\n 'dark:active:theme-background-primary-dark',\n\n 'active:theme-outline-primary active:outline-10',\n 'dark:active:theme-outline-primary-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-border-secondary border-4',\n 'dark:theme-border-secondary-dark',\n\n // Theme (hover)\n 'hover:theme-background-secondary',\n 'dark:hover:theme-background-secondary-dark',\n\n // Theme (active)\n 'active:theme-background-secondary',\n 'dark:active:theme-background-secondary-dark',\n\n 'active:theme-outline-secondary active:outline-10',\n 'dark:active:theme-outline-secondary-dark',\n ],\n};\n\nexport const RangeSliderBreakpointMark: string[] = [\n // Position\n 'absolute',\n\n // Shape\n 'rounded-full',\n\n // Box\n 'w-[2px]',\n 'h-[2px]',\n\n // Spacing\n '-mx-[1px]',\n '-my-[1px]',\n];\n\nexport const RangeSliderBreakpointMarkColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-background-primary',\n 'dark:theme-background-primary-dark',\n\n // Theme (activated)\n 'activated:theme-background-primary-container',\n 'dark:activated:theme-background-primary-container-dark',\n\n // Theme (disabled)\n 'disabled:!bg-on-disabled',\n 'dark:disabled:!bg-on-disabled-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-background-secondary',\n 'dark:theme-background-secondary-dark',\n\n // Theme (activated)\n 'activated:theme-background-secondary-container',\n 'dark:activated:theme-background-secondary-container-dark',\n\n // Theme (disabled)\n 'disabled:!bg-on-disabled',\n 'dark:disabled:!bg-on-disabled-dark',\n ],\n};\n\nexport const RangeSliderLabel: string[] = [\n // Position\n 'relative',\n];\n\nexport const RangeSliderLabelOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-row',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-row-reverse',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-column-reverse items-center',\n\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-column items-center',\n\n // Box\n 'h-full',\n ],\n};\n\nexport const RangeSliderLabelMark: string[] = [\n // Position\n 'absolute',\n\n // Interactivity\n 'interactivity-click',\n\n // Typography\n 'typography-caption-regular whitespace-nowrap',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n\n // Theme (hover)\n 'hover:theme-foreground-default',\n 'dark:hover:theme-foreground-default-dark',\n];\n\nexport const RangeSliderLabelMarkOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Position\n '-translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Position\n 'translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.Vertical]: [\n // Position\n 'translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Position\n 'translate-x-1/2',\n '-translate-y-1/2',\n ],\n};\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n :disabled=\"disabled\"\n >\n <div\n :ref=\"'rail'\"\n :class=\"railStyles\"\n :disabled=\"disabled\"\n >\n <div\n :ref=\"'offset'\"\n :class=\"offsetStyles\"\n :style=\"offsetInlineStyles\"\n :disabled=\"disabled\"\n />\n\n <OrTooltip\n :is-open=\"(!isDragging && (isHoveringRail || isHoveringThumbFrom)) || (isDragging && selectedControl === 'from')\"\n :placement=\"tooltipPlacement\"\n :offset=\"24\"\n :external-control=\"true\"\n v-bind=\"tooltip\"\n >\n <div\n :ref=\"'thumbFrom'\"\n :class=\"thumbStyles\"\n :disabled=\"disabled\"\n />\n\n <template v-slot:content>\n <slot\n name=\"tooltipContent\"\n :value=\"proxyModelValue[orientation.endsWith('-reversed') ? 1 : 0]\"\n >\n {{ proxyModelValue[orientation.endsWith('-reversed') ? 1 : 0] }}\n </slot>\n </template>\n </OrTooltip>\n\n <div\n :ref=\"'track'\"\n :class=\"trackStyles\"\n :style=\"trackInlineStyles\"\n :disabled=\"disabled\"\n />\n\n <OrTooltip\n :is-open=\"(!isDragging && (isHoveringRail || isHoveringThumbTo)) || (isDragging && selectedControl === 'to')\"\n :placement=\"tooltipPlacement\"\n :offset=\"24\"\n :external-control=\"true\"\n v-bind=\"tooltip\"\n >\n <div\n :ref=\"'thumbTo'\"\n :class=\"thumbStyles\"\n :disabled=\"disabled\"\n />\n\n <template v-slot:content>\n <slot\n name=\"tooltipContent\"\n :value=\"proxyModelValue[orientation.endsWith('-reversed') ? 0 : 1]\"\n >\n {{ proxyModelValue[orientation.endsWith('-reversed') ? 0 : 1] }}\n </slot>\n </template>\n </OrTooltip>\n\n <div\n :ref=\"'filler'\"\n :class=\"['grow', ...offsetStyles]\"\n :disabled=\"disabled\"\n />\n\n <template v-if=\"breakpoints.length > 0\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"breakpointMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :activated=\"breakpoint >= proxyModelValue[orientation.endsWith('-reversed') ? 1 : 0] && breakpoint <= proxyModelValue[orientation.endsWith('-reversed') ? 0 : 1]\"\n :disabled=\"disabled\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n />\n </template>\n </div>\n\n <div :class=\"labelStyles\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"labelMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :disabled=\"disabled\"\n :force-state=\"highlightedBreakpoint === breakpoint ? 'hover' : undefined\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n @click=\"onClick(breakpoint)\"\n >\n <slot\n :name=\"`${breakpoint}-label`\"\n :value=\"breakpoint\"\n >\n {{ breakpoint }}\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { Position, clamp, useDraggable, useElementBounding, useElementHover } from '@vueuse/core';\nimport { PropType, computed, defineComponent, ref, toRef, watch } from 'vue';\nimport { useProxyModelValue } from '@onereach/ui-components-common/hooks';\nimport { SliderColor, SliderOrientation } from '@onereach/ui-components.or-slider-v3';\nimport { OrTooltipV3 as OrTooltip } from '@onereach/ui-components.or-tooltip-v3';\nimport * as Styles from './styles';\nimport { RangeSliderModelValue } from './types';\n\nexport default defineComponent({\n name: 'OrRangeSlider',\n\n components: {\n OrTooltip,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: undefined as unknown as PropType<RangeSliderModelValue>,\n default: undefined,\n },\n\n minValue: {\n type: Number,\n default: 0,\n },\n\n maxValue: {\n type: Number,\n default: 100,\n },\n\n step: {\n type: Number,\n default: 1,\n },\n\n breakpoints: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n\n color: {\n type: String as PropType<`${SliderColor}`>,\n default: () => SliderColor.Primary,\n },\n\n orientation: {\n type: String as PropType<`${SliderOrientation}`>,\n default: () => SliderOrientation.Horizontal,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n tooltip: {\n type: Object as PropType<Pick<InstanceType<typeof OrTooltip>['$props'], 'placement' | 'offset' | 'debounce'>>,\n default: undefined,\n },\n },\n\n emits: [\n 'update:modelValue',\n ],\n\n expose: [\n 'root',\n ],\n\n setup(props, context) {\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const rootStyles = computed(() => [\n 'or-range-slider-v3',\n ...Styles.RangeSlider,\n ...Styles.RangeSliderOrientations[props.orientation],\n ]);\n\n const rail = ref<HTMLElement>();\n\n const railStyles = computed(() => [\n 'or-range-slider-rail-v3',\n ...Styles.RangeSliderRail,\n ...Styles.RangeSliderRailOrientations[props.orientation],\n ]);\n\n const offset = ref<HTMLElement>();\n\n const offsetStyles = computed(() => [\n ...Styles.RangeSliderOffset,\n ...Styles.RangeSliderOffsetOrientations[props.orientation],\n ]);\n\n // eslint-disable-next-line vue/return-in-computed-property\n const offsetInlineStyles = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return { width: `${internalModelValueFrom.value * 100}%` };\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return { height: `${internalModelValueFrom.value * 100}%` };\n }\n });\n\n const track = ref<HTMLElement>();\n\n const trackStyles = computed(() => [\n ...Styles.RangeSliderTrack,\n ...Styles.RangeSliderTrackColors[props.color],\n ]);\n\n // eslint-disable-next-line vue/return-in-computed-property\n const trackInlineStyles = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return { width: `${(internalModelValueTo.value - internalModelValueFrom.value) * 100}%` };\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return { height: `${(internalModelValueTo.value - internalModelValueFrom.value) * 100}%` };\n }\n });\n\n const filler = ref<HTMLElement>();\n\n const thumbFrom = ref<HTMLElement>();\n const thumbTo = ref<HTMLElement>();\n\n const thumbStyles = computed(() => [\n 'or-range-slider-thumb-v3',\n ...Styles.RangeSliderThumb,\n ...Styles.RangeSliderThumbColors[props.color],\n 'touch-none', // Required for proper work on mobile\n ]);\n\n const breakpointMarkStyles = computed(() => [\n ...Styles.RangeSliderBreakpointMark,\n ...Styles.RangeSliderBreakpointMarkColors[props.color],\n ]);\n\n const labelStyles = computed(() => [\n ...Styles.RangeSliderLabel,\n ...Styles.RangeSliderLabelOrientations[props.orientation],\n ]);\n\n const labelMarkStyles = computed(() => [\n ...Styles.RangeSliderLabelMark,\n ...Styles.RangeSliderLabelMarkOrientations[props.orientation],\n ]);\n\n // State\n const proxyModelValue = useProxyModelValue(toRef(props, 'modelValue'), context.emit, {\n defaultValue: computed<[number, number]>(() => [props.minValue, props.maxValue]),\n });\n\n watch(proxyModelValue, ([a, b]) => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n if (a > b) proxyModelValue.value = [b, a];\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n if (a < b) proxyModelValue.value = [b, a];\n break;\n }\n });\n\n const proxyModelValueFrom = computed({\n get: () => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n return proxyModelValue.value[0];\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n return proxyModelValue.value[1];\n }\n\n return props.minValue;\n },\n\n set: (value) => {\n const draftProxyModelValue = [value ?? props.minValue, proxyModelValue.value[1]] as [number, number];\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n proxyModelValue.value = draftProxyModelValue;\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n proxyModelValue.value = [draftProxyModelValue[1], draftProxyModelValue[0]];\n break;\n }\n },\n });\n\n const proxyModelValueTo = computed({\n get: () => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n return proxyModelValue.value[1];\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n return proxyModelValue.value[0];\n }\n\n return props.maxValue;\n },\n\n set: (value) => {\n const draftProxyModelValue = [proxyModelValue.value[0], value ?? props.maxValue] as [number, number];\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n proxyModelValue.value = draftProxyModelValue;\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n proxyModelValue.value = [draftProxyModelValue[1], draftProxyModelValue[0]];\n break;\n }\n },\n });\n\n const internalModelValueFrom = computed({\n get: () => (proxyModelValueFrom.value - props.minValue) / (props.maxValue - props.minValue),\n\n set: (value) => {\n const modelValue = value * (props.maxValue - props.minValue) + props.minValue;\n\n const draftProxyModelValue = [\n internalBreakpoints.value.reduce((a, b) => {\n return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;\n }),\n\n internalModelValueTo.value * (props.maxValue - props.minValue) + props.minValue,\n ] as [number, number];\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n proxyModelValue.value = draftProxyModelValue;\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n proxyModelValue.value = [draftProxyModelValue[1], draftProxyModelValue[0]];\n break;\n }\n },\n });\n\n const internalModelValueTo = computed({\n get: () => (proxyModelValueTo.value - props.minValue) / (props.maxValue - props.minValue),\n\n set: (value) => {\n const modelValue = value * (props.maxValue - props.minValue) + props.minValue;\n\n const draftProxyModelValue = [\n internalModelValueFrom.value * (props.maxValue - props.minValue) + props.minValue,\n\n internalBreakpoints.value.reduce((a, b) => {\n return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;\n }),\n ] as [number, number];\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n proxyModelValue.value = draftProxyModelValue;\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n proxyModelValue.value = [draftProxyModelValue[1], draftProxyModelValue[0]];\n break;\n }\n },\n });\n\n const internalBreakpoints = computed(() => {\n if (!props.step) {\n return [props.minValue, ...props.breakpoints, props.maxValue];\n }\n\n return Array(Math.ceil(Math.abs(props.maxValue - props.minValue) / props.step))\n .fill(undefined)\n .map((value, index) => Math.floor((props.minValue + props.step * index) * 1000) / 1000)\n .concat(...props.breakpoints, props.maxValue)\n .sort((a, b) => a - b);\n });\n\n // eslint-disable-next-line vue/return-in-computed-property\n const tooltipPlacement = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return 'top';\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return 'right';\n }\n });\n\n const highlightedBreakpoint = ref<number>();\n const selectedControl = ref<'from' | 'to'>();\n\n const railBoundingBox = useElementBounding(rail);\n\n // Handlers\n function onDrag(position: Position, event: MouseEvent | PointerEvent): void {\n if (props.disabled) {\n return;\n }\n\n const totalWidth = railBoundingBox.width.value;\n const totalHeight = railBoundingBox.height.value;\n\n if (selectedControl.value === 'from') {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n internalModelValueFrom.value = clamp(event.clientX - railBoundingBox.left.value, 0, internalModelValueTo.value * totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.HorizontalReversed:\n internalModelValueFrom.value = clamp(railBoundingBox.right.value - event.clientX, 0, internalModelValueTo.value * totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.Vertical:\n internalModelValueFrom.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), 0, internalModelValueTo.value * totalHeight) / totalHeight;\n break;\n\n case SliderOrientation.VerticalReversed:\n internalModelValueFrom.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), 0, internalModelValueTo.value * totalHeight) / totalHeight;\n break;\n }\n } else {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n internalModelValueTo.value = clamp(event.clientX - railBoundingBox.left.value, internalModelValueFrom.value * totalWidth, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.HorizontalReversed:\n internalModelValueTo.value = clamp(railBoundingBox.right.value - event.clientX, internalModelValueFrom.value * totalWidth, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.Vertical:\n internalModelValueTo.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), internalModelValueFrom.value * totalHeight, totalHeight) / totalHeight;\n break;\n\n case SliderOrientation.VerticalReversed:\n internalModelValueTo.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), internalModelValueFrom.value * totalHeight, totalHeight) / totalHeight;\n break;\n }\n }\n }\n\n function onClick(breakpoint: number): void {\n if (selectedControl.value === 'from') {\n proxyModelValueFrom.value = breakpoint;\n selectedControl.value = 'to';\n } else {\n proxyModelValueTo.value = breakpoint;\n selectedControl.value = 'from';\n }\n }\n\n // Methods\n function getBreakpointMarkComputedStyles(breakpoint: number): Partial<CSSStyleDeclaration> | undefined {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n return { left: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.HorizontalReversed:\n return { right: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.Vertical:\n return { bottom: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.VerticalReversed:\n return { top: `${getBreakpointOffset(breakpoint) * 100}%` };\n }\n }\n\n // Helpers\n function getBreakpointOffset(breakpoint: number): number {\n return (breakpoint - props.minValue) / (props.maxValue - props.minValue);\n }\n\n // Effects\n const isHoveringOffset = useElementHover(offset);\n const isHoveringTrack = useElementHover(track);\n const isHoveringFiller = useElementHover(filler);\n\n const isHoveringRail = computed(() => {\n return isHoveringOffset.value || isHoveringTrack.value || isHoveringFiller.value;\n });\n\n const isHoveringThumbFrom = useElementHover(thumbFrom);\n const isHoveringThumbTo = useElementHover(thumbTo);\n\n const { isDragging } = useDraggable(rail, {\n onStart: (position, event) => {\n switch (event.target) {\n case thumbFrom.value:\n selectedControl.value = 'from';\n break;\n\n case thumbTo.value:\n selectedControl.value = 'to';\n break;\n\n default:\n selectedControl.value = selectedControl.value === 'from' ? 'to' : 'from';\n }\n\n onDrag(position, event);\n },\n\n onMove: onDrag,\n onEnd: onDrag,\n });\n\n // Constraints\n watch(() => props.minValue, (value) => {\n if (value >= props.maxValue) {\n throw new Error('[OrRangeSlider]: `minValue` must be lesser than `maxValue`.');\n }\n }, { immediate: true });\n\n watch(() => props.maxValue, (value) => {\n if (value <= props.minValue) {\n throw new Error('[OrRangeSlider]: `maxValue` must be greater than `minValue`.');\n }\n }, { immediate: true });\n\n return {\n root,\n rootStyles,\n\n rail,\n railStyles,\n\n offset,\n offsetStyles,\n offsetInlineStyles,\n\n track,\n trackStyles,\n trackInlineStyles,\n\n filler,\n\n thumbFrom,\n thumbTo,\n thumbStyles,\n\n breakpointMarkStyles,\n\n labelStyles,\n labelMarkStyles,\n\n proxyModelValue,\n tooltipPlacement,\n highlightedBreakpoint,\n selectedControl,\n\n onClick,\n\n getBreakpointMarkComputedStyles,\n\n isHoveringOffset,\n isHoveringTrack,\n isHoveringFiller,\n isHoveringRail,\n isHoveringThumbFrom,\n isHoveringThumbTo,\n isDragging,\n };\n },\n});\n</script>\n"],"names":["RangeSlider","RangeSliderOrientations","SliderOrientation","RangeSliderRail","RangeSliderRailOrientations","RangeSliderOffset","RangeSliderOffsetOrientations","RangeSliderTrack","RangeSliderTrackColors","SliderColor","RangeSliderThumb","RangeSliderThumbColors","RangeSliderBreakpointMark","RangeSliderBreakpointMarkColors","RangeSliderLabel","RangeSliderLabelOrientations","RangeSliderLabelMark","RangeSliderLabelMarkOrientations","_sfc_main","defineComponent","OrTooltip","props","context","root","ref","rootStyles","computed","Styles.RangeSlider","Styles.RangeSliderOrientations","rail","railStyles","Styles.RangeSliderRail","Styles.RangeSliderRailOrientations","offset","offsetStyles","Styles.RangeSliderOffset","Styles.RangeSliderOffsetOrientations","offsetInlineStyles","internalModelValueFrom","track","trackStyles","Styles.RangeSliderTrack","Styles.RangeSliderTrackColors","trackInlineStyles","internalModelValueTo","filler","thumbFrom","thumbTo","thumbStyles","Styles.RangeSliderThumb","Styles.RangeSliderThumbColors","breakpointMarkStyles","Styles.RangeSliderBreakpointMark","Styles.RangeSliderBreakpointMarkColors","labelStyles","Styles.RangeSliderLabel","Styles.RangeSliderLabelOrientations","labelMarkStyles","Styles.RangeSliderLabelMark","Styles.RangeSliderLabelMarkOrientations","proxyModelValue","useProxyModelValue","toRef","watch","a","b","proxyModelValueFrom","value","draftProxyModelValue","proxyModelValueTo","modelValue","internalBreakpoints","index","tooltipPlacement","highlightedBreakpoint","selectedControl","railBoundingBox","useElementBounding","onDrag","position","event","totalWidth","totalHeight","clamp","onClick","breakpoint","getBreakpointMarkComputedStyles","getBreakpointOffset","isHoveringOffset","useElementHover","isHoveringTrack","isHoveringFiller","isHoveringRail","isHoveringThumbFrom","isHoveringThumbTo","isDragging","useDraggable","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_normalizeStyle","_hoisted_3","_createVNode","_component_OrTooltip","_mergeProps","_withCtx","_renderSlot","_createElementVNode","_hoisted_5","_hoisted_7","_Fragment","_renderList","$event","_createCommentVNode","_hoisted_2","_cache"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { _ as g } from "./OrSlider.vue_vue_type_script_lang-BE2sljeF.mjs";
1
+ import { _ as g } from "./OrSlider.vue_vue_type_script_lang-C5rLh1F0.mjs";
2
2
  import { resolveComponent as b, openBlock as s, createElementBlock as t, normalizeClass as o, createElementVNode as d, normalizeStyle as r, createVNode as f, mergeProps as k, withCtx as n, renderSlot as u, createTextVNode as p, toDisplayString as m, Fragment as v, renderList as h, createCommentVNode as M } from "vue";
3
3
  import { _ as S } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
4
4
  const V = ["disabled"], $ = ["disabled"], B = ["disabled"], C = ["disabled"], N = ["activated", "disabled", "onMouseenter"], O = ["disabled", "force-state", "onMouseenter", "onClick"];
5
- function z(e, i, T, D, E, P) {
5
+ function T(e, i, z, D, E, P) {
6
6
  const y = b("OrTooltip");
7
7
  return s(), t("div", {
8
8
  ref: "root",
@@ -20,7 +20,6 @@ function z(e, i, T, D, E, P) {
20
20
  disabled: e.disabled
21
21
  }, null, 14, B),
22
22
  f(y, k({
23
- class: ["relative", "z-10"],
24
23
  "is-open": e.isHovering || e.isDragging,
25
24
  placement: e.tooltipPlacement,
26
25
  offset: 24,
@@ -70,8 +69,8 @@ function z(e, i, T, D, E, P) {
70
69
  ], 2)
71
70
  ], 10, V);
72
71
  }
73
- const I = /* @__PURE__ */ S(g, [["render", z]]);
72
+ const I = /* @__PURE__ */ S(g, [["render", T]]);
74
73
  export {
75
74
  I as O
76
75
  };
77
- //# sourceMappingURL=OrSlider-24Fi9HHj.mjs.map
76
+ //# sourceMappingURL=OrSlider-Cec0WpUQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrSlider-Cec0WpUQ.mjs","sources":["../../../components/or-slider-v3/src/OrSlider.vue"],"sourcesContent":["<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n :disabled=\"disabled\"\n >\n <div\n :ref=\"'rail'\"\n :class=\"railStyles\"\n :disabled=\"disabled\"\n >\n <div\n :class=\"trackStyles\"\n :style=\"trackInlineStyles\"\n :disabled=\"disabled\"\n />\n\n <OrTooltip\n :is-open=\"isHovering || isDragging\"\n :placement=\"tooltipPlacement\"\n :offset=\"24\"\n :external-control=\"true\"\n v-bind=\"tooltip\"\n >\n <div\n :ref=\"'thumb'\"\n :class=\"thumbStyles\"\n :disabled=\"disabled\"\n />\n\n <template v-slot:content>\n <slot\n name=\"tooltipContent\"\n :value=\"proxyModelValue\"\n >\n {{ proxyModelValue }}\n </slot>\n </template>\n </OrTooltip>\n\n <template v-if=\"breakpoints.length > 0\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"breakpointMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :activated=\"breakpoint <= proxyModelValue\"\n :disabled=\"disabled\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n />\n </template>\n </div>\n\n <div :class=\"labelStyles\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"labelMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :disabled=\"disabled\"\n :force-state=\"highlightedBreakpoint === breakpoint ? 'hover' : undefined\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n @click=\"proxyModelValue = breakpoint\"\n >\n <slot\n :name=\"`${breakpoint}-label`\"\n :value=\"breakpoint\"\n >\n {{ breakpoint }}\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { Position, clamp, useDraggable, useElementBounding, useElementHover } from '@vueuse/core';\nimport { PropType, computed, defineComponent, ref, toRef, watch } from 'vue';\nimport { useProxyModelValue } from '@onereach/ui-components-common/hooks';\nimport { OrTooltipV3 as OrTooltip } from '@onereach/ui-components.or-tooltip-v3';\nimport * as Styles from './styles';\nimport { SliderColor, SliderModelValue, SliderOrientation } from './types';\n\nexport default defineComponent({\n name: 'OrSlider',\n\n components: {\n OrTooltip,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: undefined as unknown as PropType<SliderModelValue>,\n default: undefined,\n },\n\n minValue: {\n type: Number,\n default: 0,\n },\n\n maxValue: {\n type: Number,\n default: 100,\n },\n\n step: {\n type: Number,\n default: 1,\n },\n\n breakpoints: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n\n color: {\n type: String as PropType<`${SliderColor}`>,\n default: () => SliderColor.Primary,\n },\n\n orientation: {\n type: String as PropType<`${SliderOrientation}`>,\n default: () => SliderOrientation.Horizontal,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n tooltip: {\n type: Object as PropType<Pick<InstanceType<typeof OrTooltip>['$props'], 'placement' | 'offset' | 'debounce'>>,\n default: undefined,\n },\n },\n\n emits: [\n 'update:modelValue',\n ],\n\n expose: [\n 'root',\n ],\n\n setup(props, context) {\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const rootStyles = computed(() => [\n 'or-slider-v3',\n ...Styles.Slider,\n ...Styles.SliderOrientations[props.orientation],\n ]);\n\n const rail = ref<HTMLElement>();\n\n const railStyles = computed(() => [\n 'or-slider-rail-v3',\n ...Styles.SliderRail,\n ...Styles.SliderRailOrientations[props.orientation],\n ]);\n\n const trackStyles = computed(() => [\n ...Styles.SliderTrack,\n ...Styles.SliderTrackColors[props.color],\n ]);\n\n // eslint-disable-next-line vue/return-in-computed-property\n const trackInlineStyles = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return { width: `${internalModelValue.value * 100}%` };\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return { height: `${internalModelValue.value * 100}%` };\n }\n });\n\n const thumb = ref<HTMLElement>();\n\n const thumbStyles = computed(() => [\n 'or-slider-thumb-v3',\n ...Styles.SliderThumb,\n ...Styles.SliderThumbColors[props.color],\n 'touch-none', // Required for proper work on mobile\n ]);\n\n const breakpointMarkStyles = computed(() => [\n ...Styles.SliderBreakpointMark,\n ...Styles.SliderBreakpointMarkColors[props.color],\n ]);\n\n const labelStyles = computed(() => [\n ...Styles.SliderLabel,\n ...Styles.SliderLabelOrientations[props.orientation],\n ]);\n\n const labelMarkStyles = computed(() => [\n ...Styles.SliderLabelMark,\n ...Styles.SliderLabelMarkOrientations[props.orientation],\n ]);\n\n // State\n const proxyModelValue = useProxyModelValue(toRef(props, 'modelValue'), context.emit, {\n defaultValue: toRef(props, 'minValue'),\n });\n\n const internalModelValue = computed({\n get: () => (proxyModelValue.value - props.minValue) / (props.maxValue - props.minValue),\n\n set: (value) => {\n const modelValue = value * (props.maxValue - props.minValue) + props.minValue;\n\n proxyModelValue.value = internalBreakpoints.value.reduce((a, b) => {\n return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;\n });\n },\n });\n\n const internalBreakpoints = computed(() => {\n if (!props.step) {\n return [props.minValue, ...props.breakpoints, props.maxValue];\n }\n\n return Array(Math.ceil(Math.abs(props.maxValue - props.minValue) / props.step))\n .fill(undefined)\n .map((value, index) => Math.floor((props.minValue + props.step * index) * 1000) / 1000)\n .concat(...props.breakpoints, props.maxValue)\n .sort((a, b) => a - b);\n });\n\n // eslint-disable-next-line vue/return-in-computed-property\n const tooltipPlacement = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return 'top';\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return 'right';\n }\n });\n\n const highlightedBreakpoint = ref<number>();\n\n const railBoundingBox = useElementBounding(rail);\n\n // Handlers\n function onDrag(position: Position, event: MouseEvent | PointerEvent): void {\n if (props.disabled) {\n return;\n }\n\n const totalWidth = railBoundingBox.width.value;\n const totalHeight = railBoundingBox.height.value;\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n internalModelValue.value = clamp(event.clientX - railBoundingBox.left.value, 0, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.HorizontalReversed:\n internalModelValue.value = clamp(railBoundingBox.right.value - event.clientX, 0, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.Vertical:\n internalModelValue.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), 0, totalHeight) / totalHeight;\n break;\n\n case SliderOrientation.VerticalReversed:\n internalModelValue.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), 0, totalHeight) / totalHeight;\n break;\n }\n }\n\n // Methods\n function getBreakpointMarkComputedStyles(breakpoint: number): Partial<CSSStyleDeclaration> | undefined {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n return { left: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.HorizontalReversed:\n return { right: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.Vertical:\n return { bottom: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.VerticalReversed:\n return { top: `${getBreakpointOffset(breakpoint) * 100}%` };\n }\n }\n\n // Helpers\n function getBreakpointOffset(breakpoint: number): number {\n return (breakpoint - props.minValue) / (props.maxValue - props.minValue);\n }\n\n // Effects\n const isHovering = useElementHover(rail);\n\n const { isDragging } = useDraggable(rail, {\n onStart: onDrag,\n onMove: onDrag,\n onEnd: onDrag,\n });\n\n // Constraints\n watch(() => props.minValue, (value) => {\n if (value >= props.maxValue) {\n throw new Error('[OrSlider]: `minValue` must be lesser than `maxValue`.');\n }\n }, { immediate: true });\n\n watch(() => props.maxValue, (value) => {\n if (value <= props.minValue) {\n throw new Error('[OrSlider]: `maxValue` must be greater than `minValue`.');\n }\n }, { immediate: true });\n\n return {\n root,\n rootStyles,\n\n rail,\n railStyles,\n\n trackStyles,\n trackInlineStyles,\n\n thumb,\n thumbStyles,\n\n breakpointMarkStyles,\n\n labelStyles,\n labelMarkStyles,\n\n proxyModelValue,\n tooltipPlacement,\n highlightedBreakpoint,\n\n getBreakpointMarkComputedStyles,\n\n isHovering,\n isDragging,\n };\n },\n});\n</script>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_normalizeStyle","_hoisted_3","_createVNode","_component_OrTooltip","_mergeProps","_withCtx","_createElementVNode","_Fragment","_renderList","breakpoint","$event","_createCommentVNode","_hoisted_2","_cache"],"mappings":";;;;;YACEA,EAyEM,WAAA;SAvEEC,EAAY,GAAAC,EAAA,OAAA;AAAA,IACjB,KAAA;AAAA,IAAA,OAAAC,EAAAC,EAAA,UAAA;AAAA,IAED,UAAAA,EAAA;AAAA,EAAA,GAAA;AAAA,MAEQ,OAAE;AAAA,MACP,KAAA;AAAA,MAAA,OAAAD,EAAAC,EAAA,UAAA;AAAA,MAED,UAAAA,EAAA;AAAA,IAAA,GAAA;AAAA,QAEQ,OAAE;AAAA,QACP,OAAkBD,EAAAC,EAAA,WAAA;AAAA,QAAA,OAAAC,EAAAD,EAAA,iBAAA;AAAA,QAGrB,UAqBYA,EAAA;AAAA,MAAA,GApBT,MAAS,IAAAE,CAAA;AAAA,MAAAC,EACEC,GAAgBC,EAAA;AAAA,QAC3B,WAAUL,EAAA,cAAAA,EAAA;AAAA,QACV,WAAAA,EAAA;AAAA,QACO,QAAA;AAAA,QAQS,oBAMR;AAAA,MAAA,GAAAA,EALP,OAKO,GAAA;AAAA,QAAA,SAAAM,EAAA,MAAA;AAAA;;;;iBAXDA,EAAO,MAAA;AAAA,UAAAC,EACP,OAAE;AAAA,YACP,KAAA;AAAA,YAAA,OAAAR,EAAAC,EAAA,WAAA;AAAA;;;QAaW,GAAA;AAAA,MACd,GAAA,IAAA,CAAA,WAAA,WAAA,CAAA;AAAA,MAAAA,EAAA,YAAA,SAAA,KAAAH,EAEQ,EAAU,GAAAC,EAAAU,GAAA,EAAA,KAAA,EAAA,GAAAC,EAAA,CAAAT,EAAA,UAAA,GAAAA,EAAA,aAAAA,EAAA,QAAA,GAAA,CAAAU,OACVb,EAAE,GAAAC,EAAA,OAAA;AAAA,QACP,KAAKY;AAAA,QACL,OAAAX,EAAqBC,EAAI,oBAAe;AAAA,QACxC,OAAkBC,EAAAD,EAAA,gCAAAU,CAAA,CAAA;AAAA,QAClB,WAAYA,KAAAV,EAAA;AAAA,QACZ,UAAUA,EAAA;AAAA,QAAA,cAAA,CAAAW,MAAAX,EAAA,wBAAAU;AAAA;iCAKjBE,EAmBM,IAAA,EAAA;AAAA,IAAA,GAnBA,IAAKC,CAAA;AAAA,IAAAN,EAAA,OAAA;AAAA,eACTP,EAiBM,WAAA;AAAA,IAAA,GAAA;AAAA,SAfE,EAAU,GAAAF,EAAAU,GAAA,MAAAC,EAAA,CAAAT,EAAA,UAAA,GAAAA,EAAA,aAAAA,EAAA,QAAA,GAAA,CAAAU,OACVb,EAAA,GAAAC,EAAE,OAAe;AAAA,QACtB,KAAKY;AAAA,QACL,OAAkBX,EAAAC,EAAA,eAAA;AAAA,QAClB,OAAAC,EAAaD,kCAAoCU,CAAa,CAAA;AAAA,QAC9D,UAAUV,EAAA;AAAA,QACV,eAAUA,EAAE,0BAAAU,IAAA,UAAA;AAAA,QACZ,cAAK,OAAEV,EAA4B,wBAAAU;AAAA,QAAA,cAAAI,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAH,MAAAX,EAAA,wBAAA;AAAA,QAEpC,SAAA,CAAAW,MAKOX,EAJe,kBAAAU;AAAA,MAAA,GAAA;AAAA;;;;;;;;"}
@@ -102,6 +102,8 @@ const Y = [
102
102
  }, F = [
103
103
  // Layout
104
104
  "shrink-0",
105
+ // Position
106
+ "z-10",
105
107
  // Shape
106
108
  "rounded-full",
107
109
  // Box
@@ -310,7 +312,7 @@ const Y = [
310
312
  case a.VerticalReversed:
311
313
  return { height: `${d.value * 100}%` };
312
314
  }
313
- }), H = h(), z = o(() => [
315
+ }), z = h(), H = o(() => [
314
316
  "or-slider-thumb-v3",
315
317
  ...F,
316
318
  ...G[e.color],
@@ -395,8 +397,8 @@ const Y = [
395
397
  railStyles: x,
396
398
  trackStyles: w,
397
399
  trackInlineStyles: S,
398
- thumb: H,
399
- thumbStyles: z,
400
+ thumb: z,
401
+ thumbStyles: H,
400
402
  breakpointMarkStyles: R,
401
403
  labelStyles: M,
402
404
  labelMarkStyles: B,
@@ -414,4 +416,4 @@ export {
414
416
  le as _,
415
417
  a
416
418
  };
417
- //# sourceMappingURL=OrSlider.vue_vue_type_script_lang-BE2sljeF.mjs.map
419
+ //# sourceMappingURL=OrSlider.vue_vue_type_script_lang-C5rLh1F0.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrSlider.vue_vue_type_script_lang-C5rLh1F0.mjs","sources":["../../../components/or-slider-v3/src/types.ts","../../../components/or-slider-v3/src/styles.ts","../../../components/or-slider-v3/src/OrSlider.vue"],"sourcesContent":["import { ModelValue } from '@onereach/ui-components-common/types';\n\nexport type SliderModelValue = ModelValue<number>;\n\nexport enum SliderColor {\n Primary = 'primary',\n Secondary = 'secondary',\n}\n\nexport enum SliderOrientation {\n Horizontal = 'horizontal',\n HorizontalReversed = 'horizontal-reversed',\n Vertical = 'vertical',\n VerticalReversed = 'vertical-reversed',\n}\n","import { SliderColor, SliderOrientation } from './types';\n\nexport const Slider: string[] = [\n // Interactivity\n 'interactivity-default',\n];\n\nexport const SliderOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-column',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-column',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-row',\n\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-row',\n\n // Box\n 'h-full',\n ],\n};\n\nexport const SliderRail: string[] = [\n // Position\n 'relative',\n\n // Interactivity\n 'interactivity-click',\n\n // Shape\n 'rounded-full',\n\n // Theme\n 'theme-background-disabled',\n 'dark:theme-background-disabled-dark',\n];\n\nexport const SliderRailOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-row',\n\n // Box\n 'w-full',\n 'h-xs',\n\n // Spacing\n 'mx-0',\n 'my-md+',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-row-reverse',\n\n // Box\n 'w-full',\n 'h-xs',\n\n // Spacing\n 'mx-0',\n 'my-md+',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-column-reverse items-center',\n\n // Box\n 'w-xs',\n 'h-full',\n\n // Spacing\n 'mx-md+',\n 'my-0',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-column items-center',\n\n // Box\n 'w-xs',\n 'h-full',\n\n // Spacing\n 'mx-md+',\n 'my-0',\n ],\n};\n\nexport const SliderTrack: string[] = [\n // Shape\n 'rounded-full',\n\n // Box\n 'w-full',\n 'h-full',\n];\n\nexport const SliderTrackColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-background-primary',\n 'dark:theme-background-primary-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-background-secondary',\n 'dark:theme-background-secondary-dark',\n ],\n};\n\nexport const SliderThumb: string[] = [\n // Layout\n 'shrink-0',\n // Position\n 'z-10',\n\n // Shape\n 'rounded-full',\n\n // Box\n 'w-[20px]',\n 'h-[20px]',\n\n // Spacing\n '-mx-[10px]',\n '-my-[10px]',\n\n // Theme\n 'theme-background-base',\n 'dark:theme-background-base-dark',\n];\n\nexport const SliderThumbColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-border-primary border-4',\n 'dark:theme-border-primary-dark',\n\n // Theme (hover)\n 'hover:theme-background-primary',\n 'dark:hover:theme-background-primary-dark',\n\n // Theme (active)\n 'active:theme-background-primary',\n 'dark:active:theme-background-primary-dark',\n\n 'active:theme-outline-primary active:outline-10',\n 'dark:active:theme-outline-primary-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-border-secondary border-4',\n 'dark:theme-border-secondary-dark',\n\n // Theme (hover)\n 'hover:theme-background-secondary',\n 'dark:hover:theme-background-secondary-dark',\n\n // Theme (active)\n 'active:theme-background-secondary',\n 'dark:active:theme-background-secondary-dark',\n\n 'active:theme-outline-secondary active:outline-10',\n 'dark:active:theme-outline-secondary-dark',\n ],\n};\n\nexport const SliderBreakpointMark: string[] = [\n // Position\n 'absolute',\n\n // Shape\n 'rounded-full',\n\n // Box\n 'w-[2px]',\n 'h-[2px]',\n\n // Spacing\n '-mx-[1px]',\n '-my-[1px]',\n];\n\nexport const SliderBreakpointMarkColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-background-primary',\n 'dark:theme-background-primary-dark',\n\n // Theme (activated)\n 'activated:theme-background-primary-container',\n 'dark:activated:theme-background-primary-container-dark',\n\n // Theme (disabled)\n 'disabled:!bg-on-disabled',\n 'dark:disabled:!bg-on-disabled-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-background-secondary',\n 'dark:theme-background-secondary-dark',\n\n // Theme (activated)\n 'activated:theme-background-secondary-container',\n 'dark:activated:theme-background-secondary-container-dark',\n\n // Theme (disabled)\n 'disabled:!bg-on-disabled',\n 'dark:disabled:!bg-on-disabled-dark',\n ],\n};\n\nexport const SliderLabel: string[] = [\n // Position\n 'relative',\n];\n\nexport const SliderLabelOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-row',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-row-reverse',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-column-reverse items-center',\n\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-column items-center',\n\n // Box\n 'h-full',\n ],\n};\n\nexport const SliderLabelMark: string[] = [\n // Position\n 'absolute',\n\n // Interactivity\n 'interactivity-click',\n\n // Typography\n 'typography-caption-regular whitespace-nowrap',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n\n // Theme (hover)\n 'hover:theme-foreground-default',\n 'dark:hover:theme-foreground-default-dark',\n];\n\nexport const SliderLabelMarkOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Position\n '-translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Position\n 'translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.Vertical]: [\n // Position\n 'translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Position\n 'translate-x-1/2',\n '-translate-y-1/2',\n ],\n};\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n :disabled=\"disabled\"\n >\n <div\n :ref=\"'rail'\"\n :class=\"railStyles\"\n :disabled=\"disabled\"\n >\n <div\n :class=\"trackStyles\"\n :style=\"trackInlineStyles\"\n :disabled=\"disabled\"\n />\n\n <OrTooltip\n :is-open=\"isHovering || isDragging\"\n :placement=\"tooltipPlacement\"\n :offset=\"24\"\n :external-control=\"true\"\n v-bind=\"tooltip\"\n >\n <div\n :ref=\"'thumb'\"\n :class=\"thumbStyles\"\n :disabled=\"disabled\"\n />\n\n <template v-slot:content>\n <slot\n name=\"tooltipContent\"\n :value=\"proxyModelValue\"\n >\n {{ proxyModelValue }}\n </slot>\n </template>\n </OrTooltip>\n\n <template v-if=\"breakpoints.length > 0\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"breakpointMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :activated=\"breakpoint <= proxyModelValue\"\n :disabled=\"disabled\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n />\n </template>\n </div>\n\n <div :class=\"labelStyles\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"labelMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :disabled=\"disabled\"\n :force-state=\"highlightedBreakpoint === breakpoint ? 'hover' : undefined\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n @click=\"proxyModelValue = breakpoint\"\n >\n <slot\n :name=\"`${breakpoint}-label`\"\n :value=\"breakpoint\"\n >\n {{ breakpoint }}\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { Position, clamp, useDraggable, useElementBounding, useElementHover } from '@vueuse/core';\nimport { PropType, computed, defineComponent, ref, toRef, watch } from 'vue';\nimport { useProxyModelValue } from '@onereach/ui-components-common/hooks';\nimport { OrTooltipV3 as OrTooltip } from '@onereach/ui-components.or-tooltip-v3';\nimport * as Styles from './styles';\nimport { SliderColor, SliderModelValue, SliderOrientation } from './types';\n\nexport default defineComponent({\n name: 'OrSlider',\n\n components: {\n OrTooltip,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: undefined as unknown as PropType<SliderModelValue>,\n default: undefined,\n },\n\n minValue: {\n type: Number,\n default: 0,\n },\n\n maxValue: {\n type: Number,\n default: 100,\n },\n\n step: {\n type: Number,\n default: 1,\n },\n\n breakpoints: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n\n color: {\n type: String as PropType<`${SliderColor}`>,\n default: () => SliderColor.Primary,\n },\n\n orientation: {\n type: String as PropType<`${SliderOrientation}`>,\n default: () => SliderOrientation.Horizontal,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n tooltip: {\n type: Object as PropType<Pick<InstanceType<typeof OrTooltip>['$props'], 'placement' | 'offset' | 'debounce'>>,\n default: undefined,\n },\n },\n\n emits: [\n 'update:modelValue',\n ],\n\n expose: [\n 'root',\n ],\n\n setup(props, context) {\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const rootStyles = computed(() => [\n 'or-slider-v3',\n ...Styles.Slider,\n ...Styles.SliderOrientations[props.orientation],\n ]);\n\n const rail = ref<HTMLElement>();\n\n const railStyles = computed(() => [\n 'or-slider-rail-v3',\n ...Styles.SliderRail,\n ...Styles.SliderRailOrientations[props.orientation],\n ]);\n\n const trackStyles = computed(() => [\n ...Styles.SliderTrack,\n ...Styles.SliderTrackColors[props.color],\n ]);\n\n // eslint-disable-next-line vue/return-in-computed-property\n const trackInlineStyles = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return { width: `${internalModelValue.value * 100}%` };\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return { height: `${internalModelValue.value * 100}%` };\n }\n });\n\n const thumb = ref<HTMLElement>();\n\n const thumbStyles = computed(() => [\n 'or-slider-thumb-v3',\n ...Styles.SliderThumb,\n ...Styles.SliderThumbColors[props.color],\n 'touch-none', // Required for proper work on mobile\n ]);\n\n const breakpointMarkStyles = computed(() => [\n ...Styles.SliderBreakpointMark,\n ...Styles.SliderBreakpointMarkColors[props.color],\n ]);\n\n const labelStyles = computed(() => [\n ...Styles.SliderLabel,\n ...Styles.SliderLabelOrientations[props.orientation],\n ]);\n\n const labelMarkStyles = computed(() => [\n ...Styles.SliderLabelMark,\n ...Styles.SliderLabelMarkOrientations[props.orientation],\n ]);\n\n // State\n const proxyModelValue = useProxyModelValue(toRef(props, 'modelValue'), context.emit, {\n defaultValue: toRef(props, 'minValue'),\n });\n\n const internalModelValue = computed({\n get: () => (proxyModelValue.value - props.minValue) / (props.maxValue - props.minValue),\n\n set: (value) => {\n const modelValue = value * (props.maxValue - props.minValue) + props.minValue;\n\n proxyModelValue.value = internalBreakpoints.value.reduce((a, b) => {\n return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;\n });\n },\n });\n\n const internalBreakpoints = computed(() => {\n if (!props.step) {\n return [props.minValue, ...props.breakpoints, props.maxValue];\n }\n\n return Array(Math.ceil(Math.abs(props.maxValue - props.minValue) / props.step))\n .fill(undefined)\n .map((value, index) => Math.floor((props.minValue + props.step * index) * 1000) / 1000)\n .concat(...props.breakpoints, props.maxValue)\n .sort((a, b) => a - b);\n });\n\n // eslint-disable-next-line vue/return-in-computed-property\n const tooltipPlacement = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return 'top';\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return 'right';\n }\n });\n\n const highlightedBreakpoint = ref<number>();\n\n const railBoundingBox = useElementBounding(rail);\n\n // Handlers\n function onDrag(position: Position, event: MouseEvent | PointerEvent): void {\n if (props.disabled) {\n return;\n }\n\n const totalWidth = railBoundingBox.width.value;\n const totalHeight = railBoundingBox.height.value;\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n internalModelValue.value = clamp(event.clientX - railBoundingBox.left.value, 0, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.HorizontalReversed:\n internalModelValue.value = clamp(railBoundingBox.right.value - event.clientX, 0, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.Vertical:\n internalModelValue.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), 0, totalHeight) / totalHeight;\n break;\n\n case SliderOrientation.VerticalReversed:\n internalModelValue.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), 0, totalHeight) / totalHeight;\n break;\n }\n }\n\n // Methods\n function getBreakpointMarkComputedStyles(breakpoint: number): Partial<CSSStyleDeclaration> | undefined {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n return { left: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.HorizontalReversed:\n return { right: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.Vertical:\n return { bottom: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.VerticalReversed:\n return { top: `${getBreakpointOffset(breakpoint) * 100}%` };\n }\n }\n\n // Helpers\n function getBreakpointOffset(breakpoint: number): number {\n return (breakpoint - props.minValue) / (props.maxValue - props.minValue);\n }\n\n // Effects\n const isHovering = useElementHover(rail);\n\n const { isDragging } = useDraggable(rail, {\n onStart: onDrag,\n onMove: onDrag,\n onEnd: onDrag,\n });\n\n // Constraints\n watch(() => props.minValue, (value) => {\n if (value >= props.maxValue) {\n throw new Error('[OrSlider]: `minValue` must be lesser than `maxValue`.');\n }\n }, { immediate: true });\n\n watch(() => props.maxValue, (value) => {\n if (value <= props.minValue) {\n throw new Error('[OrSlider]: `maxValue` must be greater than `minValue`.');\n }\n }, { immediate: true });\n\n return {\n root,\n rootStyles,\n\n rail,\n railStyles,\n\n trackStyles,\n trackInlineStyles,\n\n thumb,\n thumbStyles,\n\n breakpointMarkStyles,\n\n labelStyles,\n labelMarkStyles,\n\n proxyModelValue,\n tooltipPlacement,\n highlightedBreakpoint,\n\n getBreakpointMarkComputedStyles,\n\n isHovering,\n isDragging,\n };\n },\n});\n</script>\n"],"names":["SliderColor","SliderOrientation","Slider","SliderOrientations","SliderRail","SliderRailOrientations","SliderTrack","SliderTrackColors","SliderThumb","SliderThumbColors","SliderBreakpointMark","SliderBreakpointMarkColors","SliderLabel","SliderLabelOrientations","SliderLabelMark","SliderLabelMarkOrientations","_sfc_main","defineComponent","OrTooltip","props","context","root","ref","rootStyles","computed","Styles.Slider","Styles.SliderOrientations","rail","railStyles","Styles.SliderRail","Styles.SliderRailOrientations","trackStyles","Styles.SliderTrack","Styles.SliderTrackColors","trackInlineStyles","internalModelValue","thumb","thumbStyles","Styles.SliderThumb","Styles.SliderThumbColors","breakpointMarkStyles","Styles.SliderBreakpointMark","Styles.SliderBreakpointMarkColors","labelStyles","Styles.SliderLabel","Styles.SliderLabelOrientations","labelMarkStyles","Styles.SliderLabelMark","Styles.SliderLabelMarkOrientations","proxyModelValue","useProxyModelValue","toRef","value","modelValue","internalBreakpoints","a","b","index","tooltipPlacement","highlightedBreakpoint","railBoundingBox","useElementBounding","onDrag","position","event","totalWidth","totalHeight","clamp","getBreakpointMarkComputedStyles","breakpoint","getBreakpointOffset","isHovering","useElementHover","isDragging","useDraggable","watch"],"mappings":"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"}
@@ -63,7 +63,7 @@ import { O as Ia, a as ga, P as Da, i as ba } from "../OrPopover-DbygLPtT.mjs";
63
63
  import { O as Ra, P as Ba, a as Ea } from "../OrProgress-cgGfaP0m.mjs";
64
64
  import { O as Fa } from "../OrRadioGroup-_n_7vdJU.mjs";
65
65
  import { O as za } from "../OrRadio-CJLJrxIS.mjs";
66
- import { O as Ma } from "../OrRangeSlider-FL1E28ec.mjs";
66
+ import { O as Ma } from "../OrRangeSlider-Dim4sU4v.mjs";
67
67
  import { O as ya, R as Ga } from "../OrRating-BhuvRBRy.mjs";
68
68
  import { O as Na, R as ja, a as Ha } from "../OrResizeablePanel-DuGgwmhB.mjs";
69
69
  import { F as Wa, O as qa, R as Ja, a as Ka } from "../OrRichTextEditor-CvbqTzyJ.mjs";
@@ -74,8 +74,8 @@ import { O as ee } from "../OrSelect-Cnklh9us.mjs";
74
74
  import { O as se, S as Oe } from "../props-BxqD8LGb.mjs";
75
75
  import { O as pe, a as me } from "../OrSkeletonRect-D9sTxEc-.mjs";
76
76
  import { O as xe } from "../OrSkeletonText-WYaAaljl.mjs";
77
- import { O as fe } from "../OrSlider-24Fi9HHj.mjs";
78
- import { S as Te, a as ce } from "../OrSlider.vue_vue_type_script_lang-BE2sljeF.mjs";
77
+ import { O as fe } from "../OrSlider-Cec0WpUQ.mjs";
78
+ import { S as Te, a as ce } from "../OrSlider.vue_vue_type_script_lang-C5rLh1F0.mjs";
79
79
  import { O as Se } from "../OrSorting-DCAarSF1.mjs";
80
80
  import { O as Pe, a as Ce, S as Ie } from "../OrStatus-D4QIuE7R.mjs";
81
81
  import { O as De } from "../OrSwitch-Cmi57-QB.mjs";
@@ -1,4 +1,4 @@
1
- import { O as a } from "../../OrRangeSlider-FL1E28ec.mjs";
1
+ import { O as a } from "../../OrRangeSlider-Dim4sU4v.mjs";
2
2
  export {
3
3
  a as OrRangeSliderV3
4
4
  };
@@ -1,5 +1,5 @@
1
- import { O as e } from "../../OrSlider-24Fi9HHj.mjs";
2
- import { S as i, a as l } from "../../OrSlider.vue_vue_type_script_lang-BE2sljeF.mjs";
1
+ import { O as e } from "../../OrSlider-Cec0WpUQ.mjs";
2
+ import { S as i, a as l } from "../../OrSlider.vue_vue_type_script_lang-C5rLh1F0.mjs";
3
3
  export {
4
4
  e as OrSliderV3,
5
5
  i as SliderColor,
@@ -63,7 +63,7 @@ import { O as Ia, a as ga, P as Da, i as ba } from "./OrPopover-DbygLPtT.mjs";
63
63
  import { O as Ra, P as Ba, a as Ea } from "./OrProgress-cgGfaP0m.mjs";
64
64
  import { O as Fa } from "./OrRadioGroup-_n_7vdJU.mjs";
65
65
  import { O as za } from "./OrRadio-CJLJrxIS.mjs";
66
- import { O as Ma } from "./OrRangeSlider-FL1E28ec.mjs";
66
+ import { O as Ma } from "./OrRangeSlider-Dim4sU4v.mjs";
67
67
  import { O as ya, R as Ga } from "./OrRating-BhuvRBRy.mjs";
68
68
  import { O as Na, R as ja, a as Ha } from "./OrResizeablePanel-DuGgwmhB.mjs";
69
69
  import { F as Wa, O as qa, R as Ja, a as Ka } from "./OrRichTextEditor-CvbqTzyJ.mjs";
@@ -74,8 +74,8 @@ import { O as ee } from "./OrSelect-Cnklh9us.mjs";
74
74
  import { O as se, S as Oe } from "./props-BxqD8LGb.mjs";
75
75
  import { O as pe, a as me } from "./OrSkeletonRect-D9sTxEc-.mjs";
76
76
  import { O as xe } from "./OrSkeletonText-WYaAaljl.mjs";
77
- import { O as fe } from "./OrSlider-24Fi9HHj.mjs";
78
- import { S as Te, a as ce } from "./OrSlider.vue_vue_type_script_lang-BE2sljeF.mjs";
77
+ import { O as fe } from "./OrSlider-Cec0WpUQ.mjs";
78
+ import { S as Te, a as ce } from "./OrSlider.vue_vue_type_script_lang-C5rLh1F0.mjs";
79
79
  import { O as Se } from "./OrSorting-DCAarSF1.mjs";
80
80
  import { O as Pe, a as Ce, S as Ie } from "./OrStatus-D4QIuE7R.mjs";
81
81
  import { O as De } from "./OrSwitch-Cmi57-QB.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onereach/ui-components",
3
- "version": "22.1.3",
3
+ "version": "22.1.4",
4
4
  "description": "Vue components library for v3",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -46,8 +46,8 @@
46
46
  "@codemirror/view": "^6",
47
47
  "@floating-ui/dom": "1.5.3",
48
48
  "@lezer/highlight": "*",
49
- "@onereach/styles": "^22.1.3",
50
- "@onereach/ui-components-common": "^22.1.3",
49
+ "@onereach/styles": "^22.1.4",
50
+ "@onereach/ui-components-common": "^22.1.4",
51
51
  "@splidejs/splide": "4.0.6",
52
52
  "@tiptap/core": "2.0.3",
53
53
  "@tiptap/extension-blockquote": "2.0.3",
@@ -103,5 +103,5 @@
103
103
  "access": "public"
104
104
  },
105
105
  "npmUnpacked": "4.15.2",
106
- "gitHead": "965dffdcd327c7af809ef019c1a72371c31638d8"
106
+ "gitHead": "72c08e4d2e5cb6aab71823f7ce9a1af524d986f8"
107
107
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrRangeSlider-FL1E28ec.mjs","sources":["../../../components/or-range-slider-v3/src/styles.ts","../../../components/or-range-slider-v3/src/OrRangeSlider.vue"],"sourcesContent":["import { SliderColor, SliderOrientation } from '@onereach/ui-components.or-slider-v3';\n\nexport const RangeSlider: string[] = [\n // Interactivity\n 'interactivity-default',\n];\n\nexport const RangeSliderOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-column',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-column',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-row',\n\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-row',\n\n // Box\n 'h-full',\n ],\n};\n\nexport const RangeSliderRail: string[] = [\n // Position\n 'relative',\n\n // Interactivity\n 'interactivity-click',\n\n // Shape\n 'rounded-full',\n\n // Theme\n 'theme-background-disabled',\n 'dark:theme-background-disabled-dark',\n];\n\nexport const RangeSliderRailOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-row',\n\n // Box\n 'w-full',\n 'h-xs',\n\n // Spacing\n 'mx-0',\n 'my-md+',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-row-reverse',\n\n // Box\n 'w-full',\n 'h-xs',\n\n // Spacing\n 'mx-0',\n 'my-md+',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-column-reverse items-center',\n\n // Box\n 'w-xs',\n 'h-full',\n\n // Spacing\n 'mx-md+',\n 'my-0',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-column items-center',\n\n // Box\n 'w-xs',\n 'h-full',\n\n // Spacing\n 'mx-md+',\n 'my-0',\n ],\n};\n\nexport const RangeSliderOffset: string[] = [];\n\nexport const RangeSliderOffsetOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Box\n 'w-full',\n ],\n};\n\nexport const RangeSliderTrack: string[] = [\n // Shape\n 'rounded-full',\n\n // Box\n 'w-full',\n 'h-full',\n];\n\nexport const RangeSliderTrackColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-background-primary',\n 'dark:theme-background-primary-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-background-secondary',\n 'dark:theme-background-secondary-dark',\n ],\n};\n\nexport const RangeSliderThumb: string[] = [\n // Layout\n 'shrink-0',\n\n // Shape\n 'rounded-full',\n\n // Box\n 'w-[20px]',\n 'h-[20px]',\n\n // Spacing\n '-mx-[10px]',\n '-my-[10px]',\n\n // Theme\n 'theme-background-base',\n 'dark:theme-background-base-dark',\n];\n\nexport const RangeSliderThumbColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-border-primary border-4',\n 'dark:theme-border-primary-dark',\n\n // Theme (hover)\n 'hover:theme-background-primary',\n 'dark:hover:theme-background-primary-dark',\n\n // Theme (active)\n 'active:theme-background-primary',\n 'dark:active:theme-background-primary-dark',\n\n 'active:theme-outline-primary active:outline-10',\n 'dark:active:theme-outline-primary-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-border-secondary border-4',\n 'dark:theme-border-secondary-dark',\n\n // Theme (hover)\n 'hover:theme-background-secondary',\n 'dark:hover:theme-background-secondary-dark',\n\n // Theme (active)\n 'active:theme-background-secondary',\n 'dark:active:theme-background-secondary-dark',\n\n 'active:theme-outline-secondary active:outline-10',\n 'dark:active:theme-outline-secondary-dark',\n ],\n};\n\nexport const RangeSliderBreakpointMark: string[] = [\n // Position\n 'absolute',\n\n // Shape\n 'rounded-full',\n\n // Box\n 'w-[2px]',\n 'h-[2px]',\n\n // Spacing\n '-mx-[1px]',\n '-my-[1px]',\n];\n\nexport const RangeSliderBreakpointMarkColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-background-primary',\n 'dark:theme-background-primary-dark',\n\n // Theme (activated)\n 'activated:theme-background-primary-container',\n 'dark:activated:theme-background-primary-container-dark',\n\n // Theme (disabled)\n 'disabled:!bg-on-disabled',\n 'dark:disabled:!bg-on-disabled-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-background-secondary',\n 'dark:theme-background-secondary-dark',\n\n // Theme (activated)\n 'activated:theme-background-secondary-container',\n 'dark:activated:theme-background-secondary-container-dark',\n\n // Theme (disabled)\n 'disabled:!bg-on-disabled',\n 'dark:disabled:!bg-on-disabled-dark',\n ],\n};\n\nexport const RangeSliderLabel: string[] = [\n // Position\n 'relative',\n];\n\nexport const RangeSliderLabelOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-row',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-row-reverse',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-column-reverse items-center',\n\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-column items-center',\n\n // Box\n 'h-full',\n ],\n};\n\nexport const RangeSliderLabelMark: string[] = [\n // Position\n 'absolute',\n\n // Interactivity\n 'interactivity-click',\n\n // Typography\n 'typography-caption-regular whitespace-nowrap',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n\n // Theme (hover)\n 'hover:theme-foreground-default',\n 'dark:hover:theme-foreground-default-dark',\n];\n\nexport const RangeSliderLabelMarkOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Position\n '-translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Position\n 'translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.Vertical]: [\n // Position\n 'translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Position\n 'translate-x-1/2',\n '-translate-y-1/2',\n ],\n};\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n :disabled=\"disabled\"\n >\n <div\n :ref=\"'rail'\"\n :class=\"railStyles\"\n :disabled=\"disabled\"\n >\n <div\n :ref=\"'offset'\"\n :class=\"offsetStyles\"\n :style=\"offsetInlineStyles\"\n :disabled=\"disabled\"\n />\n\n <OrTooltip\n :class=\"['relative', 'z-10']\"\n :is-open=\"(!isDragging && (isHoveringRail || isHoveringThumbFrom)) || (isDragging && selectedControl === 'from')\"\n :placement=\"tooltipPlacement\"\n :offset=\"24\"\n :external-control=\"true\"\n v-bind=\"tooltip\"\n >\n <div\n :ref=\"'thumbFrom'\"\n :class=\"thumbStyles\"\n :disabled=\"disabled\"\n />\n\n <template v-slot:content>\n <slot\n name=\"tooltipContent\"\n :value=\"proxyModelValue[orientation.endsWith('-reversed') ? 1 : 0]\"\n >\n {{ proxyModelValue[orientation.endsWith('-reversed') ? 1 : 0] }}\n </slot>\n </template>\n </OrTooltip>\n\n <div\n :ref=\"'track'\"\n :class=\"trackStyles\"\n :style=\"trackInlineStyles\"\n :disabled=\"disabled\"\n />\n\n <OrTooltip\n :class=\"['relative', 'z-10']\"\n :is-open=\"(!isDragging && (isHoveringRail || isHoveringThumbTo)) || (isDragging && selectedControl === 'to')\"\n :placement=\"tooltipPlacement\"\n :offset=\"24\"\n :external-control=\"true\"\n v-bind=\"tooltip\"\n >\n <div\n :ref=\"'thumbTo'\"\n :class=\"thumbStyles\"\n :disabled=\"disabled\"\n />\n\n <template v-slot:content>\n <slot\n name=\"tooltipContent\"\n :value=\"proxyModelValue[orientation.endsWith('-reversed') ? 0 : 1]\"\n >\n {{ proxyModelValue[orientation.endsWith('-reversed') ? 0 : 1] }}\n </slot>\n </template>\n </OrTooltip>\n\n <div\n :ref=\"'filler'\"\n :class=\"['grow', ...offsetStyles]\"\n :disabled=\"disabled\"\n />\n\n <template v-if=\"breakpoints.length > 0\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"breakpointMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :activated=\"breakpoint >= proxyModelValue[orientation.endsWith('-reversed') ? 1 : 0] && breakpoint <= proxyModelValue[orientation.endsWith('-reversed') ? 0 : 1]\"\n :disabled=\"disabled\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n />\n </template>\n </div>\n\n <div :class=\"labelStyles\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"labelMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :disabled=\"disabled\"\n :force-state=\"highlightedBreakpoint === breakpoint ? 'hover' : undefined\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n @click=\"onClick(breakpoint)\"\n >\n <slot\n :name=\"`${breakpoint}-label`\"\n :value=\"breakpoint\"\n >\n {{ breakpoint }}\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { Position, clamp, useDraggable, useElementBounding, useElementHover } from '@vueuse/core';\nimport { PropType, computed, defineComponent, ref, toRef, watch } from 'vue';\nimport { useProxyModelValue } from '@onereach/ui-components-common/hooks';\nimport { SliderColor, SliderOrientation } from '@onereach/ui-components.or-slider-v3';\nimport { OrTooltipV3 as OrTooltip } from '@onereach/ui-components.or-tooltip-v3';\nimport * as Styles from './styles';\nimport { RangeSliderModelValue } from './types';\n\nexport default defineComponent({\n name: 'OrRangeSlider',\n\n components: {\n OrTooltip,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: undefined as unknown as PropType<RangeSliderModelValue>,\n default: undefined,\n },\n\n minValue: {\n type: Number,\n default: 0,\n },\n\n maxValue: {\n type: Number,\n default: 100,\n },\n\n step: {\n type: Number,\n default: 1,\n },\n\n breakpoints: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n\n color: {\n type: String as PropType<`${SliderColor}`>,\n default: () => SliderColor.Primary,\n },\n\n orientation: {\n type: String as PropType<`${SliderOrientation}`>,\n default: () => SliderOrientation.Horizontal,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n tooltip: {\n type: Object as PropType<Pick<InstanceType<typeof OrTooltip>['$props'], 'placement' | 'offset' | 'debounce'>>,\n default: undefined,\n },\n },\n\n emits: [\n 'update:modelValue',\n ],\n\n expose: [\n 'root',\n ],\n\n setup(props, context) {\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const rootStyles = computed(() => [\n 'or-range-slider-v3',\n ...Styles.RangeSlider,\n ...Styles.RangeSliderOrientations[props.orientation],\n ]);\n\n const rail = ref<HTMLElement>();\n\n const railStyles = computed(() => [\n 'or-range-slider-rail-v3',\n ...Styles.RangeSliderRail,\n ...Styles.RangeSliderRailOrientations[props.orientation],\n ]);\n\n const offset = ref<HTMLElement>();\n\n const offsetStyles = computed(() => [\n ...Styles.RangeSliderOffset,\n ...Styles.RangeSliderOffsetOrientations[props.orientation],\n ]);\n\n // eslint-disable-next-line vue/return-in-computed-property\n const offsetInlineStyles = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return { width: `${internalModelValueFrom.value * 100}%` };\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return { height: `${internalModelValueFrom.value * 100}%` };\n }\n });\n\n const track = ref<HTMLElement>();\n\n const trackStyles = computed(() => [\n ...Styles.RangeSliderTrack,\n ...Styles.RangeSliderTrackColors[props.color],\n ]);\n\n // eslint-disable-next-line vue/return-in-computed-property\n const trackInlineStyles = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return { width: `${(internalModelValueTo.value - internalModelValueFrom.value) * 100}%` };\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return { height: `${(internalModelValueTo.value - internalModelValueFrom.value) * 100}%` };\n }\n });\n\n const filler = ref<HTMLElement>();\n\n const thumbFrom = ref<HTMLElement>();\n const thumbTo = ref<HTMLElement>();\n\n const thumbStyles = computed(() => [\n 'or-range-slider-thumb-v3',\n ...Styles.RangeSliderThumb,\n ...Styles.RangeSliderThumbColors[props.color],\n 'touch-none', // Required for proper work on mobile\n ]);\n\n const breakpointMarkStyles = computed(() => [\n ...Styles.RangeSliderBreakpointMark,\n ...Styles.RangeSliderBreakpointMarkColors[props.color],\n ]);\n\n const labelStyles = computed(() => [\n ...Styles.RangeSliderLabel,\n ...Styles.RangeSliderLabelOrientations[props.orientation],\n ]);\n\n const labelMarkStyles = computed(() => [\n ...Styles.RangeSliderLabelMark,\n ...Styles.RangeSliderLabelMarkOrientations[props.orientation],\n ]);\n\n // State\n const proxyModelValue = useProxyModelValue(toRef(props, 'modelValue'), context.emit, {\n defaultValue: computed<[number, number]>(() => [props.minValue, props.maxValue]),\n });\n\n watch(proxyModelValue, ([a, b]) => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n if (a > b) proxyModelValue.value = [b, a];\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n if (a < b) proxyModelValue.value = [b, a];\n break;\n }\n });\n\n const proxyModelValueFrom = computed({\n get: () => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n return proxyModelValue.value[0];\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n return proxyModelValue.value[1];\n }\n\n return props.minValue;\n },\n\n set: (value) => {\n const draftProxyModelValue = [value ?? props.minValue, proxyModelValue.value[1]] as [number, number];\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n proxyModelValue.value = draftProxyModelValue;\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n proxyModelValue.value = [draftProxyModelValue[1], draftProxyModelValue[0]];\n break;\n }\n },\n });\n\n const proxyModelValueTo = computed({\n get: () => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n return proxyModelValue.value[1];\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n return proxyModelValue.value[0];\n }\n\n return props.maxValue;\n },\n\n set: (value) => {\n const draftProxyModelValue = [proxyModelValue.value[0], value ?? props.maxValue] as [number, number];\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n proxyModelValue.value = draftProxyModelValue;\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n proxyModelValue.value = [draftProxyModelValue[1], draftProxyModelValue[0]];\n break;\n }\n },\n });\n\n const internalModelValueFrom = computed({\n get: () => (proxyModelValueFrom.value - props.minValue) / (props.maxValue - props.minValue),\n\n set: (value) => {\n const modelValue = value * (props.maxValue - props.minValue) + props.minValue;\n\n const draftProxyModelValue = [\n internalBreakpoints.value.reduce((a, b) => {\n return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;\n }),\n\n internalModelValueTo.value * (props.maxValue - props.minValue) + props.minValue,\n ] as [number, number];\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n proxyModelValue.value = draftProxyModelValue;\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n proxyModelValue.value = [draftProxyModelValue[1], draftProxyModelValue[0]];\n break;\n }\n },\n });\n\n const internalModelValueTo = computed({\n get: () => (proxyModelValueTo.value - props.minValue) / (props.maxValue - props.minValue),\n\n set: (value) => {\n const modelValue = value * (props.maxValue - props.minValue) + props.minValue;\n\n const draftProxyModelValue = [\n internalModelValueFrom.value * (props.maxValue - props.minValue) + props.minValue,\n\n internalBreakpoints.value.reduce((a, b) => {\n return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;\n }),\n ] as [number, number];\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.Vertical:\n proxyModelValue.value = draftProxyModelValue;\n break;\n\n case SliderOrientation.HorizontalReversed:\n case SliderOrientation.VerticalReversed:\n proxyModelValue.value = [draftProxyModelValue[1], draftProxyModelValue[0]];\n break;\n }\n },\n });\n\n const internalBreakpoints = computed(() => {\n if (!props.step) {\n return [props.minValue, ...props.breakpoints, props.maxValue];\n }\n\n return Array(Math.ceil(Math.abs(props.maxValue - props.minValue) / props.step))\n .fill(undefined)\n .map((value, index) => Math.floor((props.minValue + props.step * index) * 1000) / 1000)\n .concat(...props.breakpoints, props.maxValue)\n .sort((a, b) => a - b);\n });\n\n // eslint-disable-next-line vue/return-in-computed-property\n const tooltipPlacement = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return 'top';\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return 'right';\n }\n });\n\n const highlightedBreakpoint = ref<number>();\n const selectedControl = ref<'from' | 'to'>();\n\n const railBoundingBox = useElementBounding(rail);\n\n // Handlers\n function onDrag(position: Position, event: MouseEvent | PointerEvent): void {\n if (props.disabled) {\n return;\n }\n\n const totalWidth = railBoundingBox.width.value;\n const totalHeight = railBoundingBox.height.value;\n\n if (selectedControl.value === 'from') {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n internalModelValueFrom.value = clamp(event.clientX - railBoundingBox.left.value, 0, internalModelValueTo.value * totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.HorizontalReversed:\n internalModelValueFrom.value = clamp(railBoundingBox.right.value - event.clientX, 0, internalModelValueTo.value * totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.Vertical:\n internalModelValueFrom.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), 0, internalModelValueTo.value * totalHeight) / totalHeight;\n break;\n\n case SliderOrientation.VerticalReversed:\n internalModelValueFrom.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), 0, internalModelValueTo.value * totalHeight) / totalHeight;\n break;\n }\n } else {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n internalModelValueTo.value = clamp(event.clientX - railBoundingBox.left.value, internalModelValueFrom.value * totalWidth, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.HorizontalReversed:\n internalModelValueTo.value = clamp(railBoundingBox.right.value - event.clientX, internalModelValueFrom.value * totalWidth, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.Vertical:\n internalModelValueTo.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), internalModelValueFrom.value * totalHeight, totalHeight) / totalHeight;\n break;\n\n case SliderOrientation.VerticalReversed:\n internalModelValueTo.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), internalModelValueFrom.value * totalHeight, totalHeight) / totalHeight;\n break;\n }\n }\n }\n\n function onClick(breakpoint: number): void {\n if (selectedControl.value === 'from') {\n proxyModelValueFrom.value = breakpoint;\n selectedControl.value = 'to';\n } else {\n proxyModelValueTo.value = breakpoint;\n selectedControl.value = 'from';\n }\n }\n\n // Methods\n function getBreakpointMarkComputedStyles(breakpoint: number): Partial<CSSStyleDeclaration> | undefined {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n return { left: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.HorizontalReversed:\n return { right: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.Vertical:\n return { bottom: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.VerticalReversed:\n return { top: `${getBreakpointOffset(breakpoint) * 100}%` };\n }\n }\n\n // Helpers\n function getBreakpointOffset(breakpoint: number): number {\n return (breakpoint - props.minValue) / (props.maxValue - props.minValue);\n }\n\n // Effects\n const isHoveringOffset = useElementHover(offset);\n const isHoveringTrack = useElementHover(track);\n const isHoveringFiller = useElementHover(filler);\n\n const isHoveringRail = computed(() => {\n return isHoveringOffset.value || isHoveringTrack.value || isHoveringFiller.value;\n });\n\n const isHoveringThumbFrom = useElementHover(thumbFrom);\n const isHoveringThumbTo = useElementHover(thumbTo);\n\n const { isDragging } = useDraggable(rail, {\n onStart: (position, event) => {\n switch (event.target) {\n case thumbFrom.value:\n selectedControl.value = 'from';\n break;\n\n case thumbTo.value:\n selectedControl.value = 'to';\n break;\n\n default:\n selectedControl.value = selectedControl.value === 'from' ? 'to' : 'from';\n }\n\n onDrag(position, event);\n },\n\n onMove: onDrag,\n onEnd: onDrag,\n });\n\n // Constraints\n watch(() => props.minValue, (value) => {\n if (value >= props.maxValue) {\n throw new Error('[OrRangeSlider]: `minValue` must be lesser than `maxValue`.');\n }\n }, { immediate: true });\n\n watch(() => props.maxValue, (value) => {\n if (value <= props.minValue) {\n throw new Error('[OrRangeSlider]: `maxValue` must be greater than `minValue`.');\n }\n }, { immediate: true });\n\n return {\n root,\n rootStyles,\n\n rail,\n railStyles,\n\n offset,\n offsetStyles,\n offsetInlineStyles,\n\n track,\n trackStyles,\n trackInlineStyles,\n\n filler,\n\n thumbFrom,\n thumbTo,\n thumbStyles,\n\n breakpointMarkStyles,\n\n labelStyles,\n labelMarkStyles,\n\n proxyModelValue,\n tooltipPlacement,\n highlightedBreakpoint,\n selectedControl,\n\n onClick,\n\n getBreakpointMarkComputedStyles,\n\n isHoveringOffset,\n isHoveringTrack,\n isHoveringFiller,\n isHoveringRail,\n isHoveringThumbFrom,\n isHoveringThumbTo,\n isDragging,\n };\n },\n});\n</script>\n"],"names":["RangeSlider","RangeSliderOrientations","SliderOrientation","RangeSliderRail","RangeSliderRailOrientations","RangeSliderOffset","RangeSliderOffsetOrientations","RangeSliderTrack","RangeSliderTrackColors","SliderColor","RangeSliderThumb","RangeSliderThumbColors","RangeSliderBreakpointMark","RangeSliderBreakpointMarkColors","RangeSliderLabel","RangeSliderLabelOrientations","RangeSliderLabelMark","RangeSliderLabelMarkOrientations","_sfc_main","defineComponent","OrTooltip","props","context","root","ref","rootStyles","computed","Styles.RangeSlider","Styles.RangeSliderOrientations","rail","railStyles","Styles.RangeSliderRail","Styles.RangeSliderRailOrientations","offset","offsetStyles","Styles.RangeSliderOffset","Styles.RangeSliderOffsetOrientations","offsetInlineStyles","internalModelValueFrom","track","trackStyles","Styles.RangeSliderTrack","Styles.RangeSliderTrackColors","trackInlineStyles","internalModelValueTo","filler","thumbFrom","thumbTo","thumbStyles","Styles.RangeSliderThumb","Styles.RangeSliderThumbColors","breakpointMarkStyles","Styles.RangeSliderBreakpointMark","Styles.RangeSliderBreakpointMarkColors","labelStyles","Styles.RangeSliderLabel","Styles.RangeSliderLabelOrientations","labelMarkStyles","Styles.RangeSliderLabelMark","Styles.RangeSliderLabelMarkOrientations","proxyModelValue","useProxyModelValue","toRef","watch","a","b","proxyModelValueFrom","value","draftProxyModelValue","proxyModelValueTo","modelValue","internalBreakpoints","index","tooltipPlacement","highlightedBreakpoint","selectedControl","railBoundingBox","useElementBounding","onDrag","position","event","totalWidth","totalHeight","clamp","onClick","breakpoint","getBreakpointMarkComputedStyles","getBreakpointOffset","isHoveringOffset","useElementHover","isHoveringTrack","isHoveringFiller","isHoveringRail","isHoveringThumbFrom","isHoveringThumbTo","isDragging","useDraggable","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_normalizeStyle","_hoisted_3","_createVNode","_component_OrTooltip","_mergeProps","_withCtx","_renderSlot","_createElementVNode","_hoisted_5","_hoisted_7","_Fragment","_renderList","$event","_createCommentVNode","_hoisted_2","_cache"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrSlider-24Fi9HHj.mjs","sources":["../../../components/or-slider-v3/src/OrSlider.vue"],"sourcesContent":["<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n :disabled=\"disabled\"\n >\n <div\n :ref=\"'rail'\"\n :class=\"railStyles\"\n :disabled=\"disabled\"\n >\n <div\n :class=\"trackStyles\"\n :style=\"trackInlineStyles\"\n :disabled=\"disabled\"\n />\n\n <OrTooltip\n :class=\"['relative', 'z-10']\"\n :is-open=\"isHovering || isDragging\"\n :placement=\"tooltipPlacement\"\n :offset=\"24\"\n :external-control=\"true\"\n v-bind=\"tooltip\"\n >\n <div\n :ref=\"'thumb'\"\n :class=\"thumbStyles\"\n :disabled=\"disabled\"\n />\n\n <template v-slot:content>\n <slot\n name=\"tooltipContent\"\n :value=\"proxyModelValue\"\n >\n {{ proxyModelValue }}\n </slot>\n </template>\n </OrTooltip>\n\n <template v-if=\"breakpoints.length > 0\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"breakpointMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :activated=\"breakpoint <= proxyModelValue\"\n :disabled=\"disabled\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n />\n </template>\n </div>\n\n <div :class=\"labelStyles\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"labelMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :disabled=\"disabled\"\n :force-state=\"highlightedBreakpoint === breakpoint ? 'hover' : undefined\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n @click=\"proxyModelValue = breakpoint\"\n >\n <slot\n :name=\"`${breakpoint}-label`\"\n :value=\"breakpoint\"\n >\n {{ breakpoint }}\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { Position, clamp, useDraggable, useElementBounding, useElementHover } from '@vueuse/core';\nimport { PropType, computed, defineComponent, ref, toRef, watch } from 'vue';\nimport { useProxyModelValue } from '@onereach/ui-components-common/hooks';\nimport { OrTooltipV3 as OrTooltip } from '@onereach/ui-components.or-tooltip-v3';\nimport * as Styles from './styles';\nimport { SliderColor, SliderModelValue, SliderOrientation } from './types';\n\nexport default defineComponent({\n name: 'OrSlider',\n\n components: {\n OrTooltip,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: undefined as unknown as PropType<SliderModelValue>,\n default: undefined,\n },\n\n minValue: {\n type: Number,\n default: 0,\n },\n\n maxValue: {\n type: Number,\n default: 100,\n },\n\n step: {\n type: Number,\n default: 1,\n },\n\n breakpoints: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n\n color: {\n type: String as PropType<`${SliderColor}`>,\n default: () => SliderColor.Primary,\n },\n\n orientation: {\n type: String as PropType<`${SliderOrientation}`>,\n default: () => SliderOrientation.Horizontal,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n tooltip: {\n type: Object as PropType<Pick<InstanceType<typeof OrTooltip>['$props'], 'placement' | 'offset' | 'debounce'>>,\n default: undefined,\n },\n },\n\n emits: [\n 'update:modelValue',\n ],\n\n expose: [\n 'root',\n ],\n\n setup(props, context) {\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const rootStyles = computed(() => [\n 'or-slider-v3',\n ...Styles.Slider,\n ...Styles.SliderOrientations[props.orientation],\n ]);\n\n const rail = ref<HTMLElement>();\n\n const railStyles = computed(() => [\n 'or-slider-rail-v3',\n ...Styles.SliderRail,\n ...Styles.SliderRailOrientations[props.orientation],\n ]);\n\n const trackStyles = computed(() => [\n ...Styles.SliderTrack,\n ...Styles.SliderTrackColors[props.color],\n ]);\n\n // eslint-disable-next-line vue/return-in-computed-property\n const trackInlineStyles = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return { width: `${internalModelValue.value * 100}%` };\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return { height: `${internalModelValue.value * 100}%` };\n }\n });\n\n const thumb = ref<HTMLElement>();\n\n const thumbStyles = computed(() => [\n 'or-slider-thumb-v3',\n ...Styles.SliderThumb,\n ...Styles.SliderThumbColors[props.color],\n 'touch-none', // Required for proper work on mobile\n ]);\n\n const breakpointMarkStyles = computed(() => [\n ...Styles.SliderBreakpointMark,\n ...Styles.SliderBreakpointMarkColors[props.color],\n ]);\n\n const labelStyles = computed(() => [\n ...Styles.SliderLabel,\n ...Styles.SliderLabelOrientations[props.orientation],\n ]);\n\n const labelMarkStyles = computed(() => [\n ...Styles.SliderLabelMark,\n ...Styles.SliderLabelMarkOrientations[props.orientation],\n ]);\n\n // State\n const proxyModelValue = useProxyModelValue(toRef(props, 'modelValue'), context.emit, {\n defaultValue: toRef(props, 'minValue'),\n });\n\n const internalModelValue = computed({\n get: () => (proxyModelValue.value - props.minValue) / (props.maxValue - props.minValue),\n\n set: (value) => {\n const modelValue = value * (props.maxValue - props.minValue) + props.minValue;\n\n proxyModelValue.value = internalBreakpoints.value.reduce((a, b) => {\n return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;\n });\n },\n });\n\n const internalBreakpoints = computed(() => {\n if (!props.step) {\n return [props.minValue, ...props.breakpoints, props.maxValue];\n }\n\n return Array(Math.ceil(Math.abs(props.maxValue - props.minValue) / props.step))\n .fill(undefined)\n .map((value, index) => Math.floor((props.minValue + props.step * index) * 1000) / 1000)\n .concat(...props.breakpoints, props.maxValue)\n .sort((a, b) => a - b);\n });\n\n // eslint-disable-next-line vue/return-in-computed-property\n const tooltipPlacement = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return 'top';\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return 'right';\n }\n });\n\n const highlightedBreakpoint = ref<number>();\n\n const railBoundingBox = useElementBounding(rail);\n\n // Handlers\n function onDrag(position: Position, event: MouseEvent | PointerEvent): void {\n if (props.disabled) {\n return;\n }\n\n const totalWidth = railBoundingBox.width.value;\n const totalHeight = railBoundingBox.height.value;\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n internalModelValue.value = clamp(event.clientX - railBoundingBox.left.value, 0, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.HorizontalReversed:\n internalModelValue.value = clamp(railBoundingBox.right.value - event.clientX, 0, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.Vertical:\n internalModelValue.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), 0, totalHeight) / totalHeight;\n break;\n\n case SliderOrientation.VerticalReversed:\n internalModelValue.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), 0, totalHeight) / totalHeight;\n break;\n }\n }\n\n // Methods\n function getBreakpointMarkComputedStyles(breakpoint: number): Partial<CSSStyleDeclaration> | undefined {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n return { left: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.HorizontalReversed:\n return { right: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.Vertical:\n return { bottom: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.VerticalReversed:\n return { top: `${getBreakpointOffset(breakpoint) * 100}%` };\n }\n }\n\n // Helpers\n function getBreakpointOffset(breakpoint: number): number {\n return (breakpoint - props.minValue) / (props.maxValue - props.minValue);\n }\n\n // Effects\n const isHovering = useElementHover(rail);\n\n const { isDragging } = useDraggable(rail, {\n onStart: onDrag,\n onMove: onDrag,\n onEnd: onDrag,\n });\n\n // Constraints\n watch(() => props.minValue, (value) => {\n if (value >= props.maxValue) {\n throw new Error('[OrSlider]: `minValue` must be lesser than `maxValue`.');\n }\n }, { immediate: true });\n\n watch(() => props.maxValue, (value) => {\n if (value <= props.minValue) {\n throw new Error('[OrSlider]: `maxValue` must be greater than `minValue`.');\n }\n }, { immediate: true });\n\n return {\n root,\n rootStyles,\n\n rail,\n railStyles,\n\n trackStyles,\n trackInlineStyles,\n\n thumb,\n thumbStyles,\n\n breakpointMarkStyles,\n\n labelStyles,\n labelMarkStyles,\n\n proxyModelValue,\n tooltipPlacement,\n highlightedBreakpoint,\n\n getBreakpointMarkComputedStyles,\n\n isHovering,\n isDragging,\n };\n },\n});\n</script>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_normalizeStyle","_hoisted_3","_createVNode","_component_OrTooltip","_mergeProps","_withCtx","_createElementVNode","_Fragment","_renderList","breakpoint","$event","_createCommentVNode","_hoisted_2","_cache"],"mappings":";;;;;YACEA,EA0EM,WAAA;SAxEEC,EAAY,GAAAC,EAAA,OAAA;AAAA,IACjB,KAAA;AAAA,IAAA,OAAAC,EAAAC,EAAA,UAAA;AAAA,IAED,UAAAA,EAAA;AAAA,EAAA,GAAA;AAAA,MAEQ,OAAE;AAAA,MACP,KAAA;AAAA,MAAA,OAAAD,EAAAC,EAAA,UAAA;AAAA,MAED,UAAAA,EAAA;AAAA,IAAA,GAAA;AAAA,QAEQ,OAAE;AAAA,QACP,OAAkBD,EAAAC,EAAA,WAAA;AAAA,QAAA,OAAAC,EAAAD,EAAA,iBAAA;AAAA,QAGrB,UAsBYA,EAAA;AAAA,MAAA,GArBT,MAAO,IAAAE,CAAA;AAAA,MAAAC,EACEC,GAAcC,EAAU;AAAA,QACjC,OAAW,CAAA,YAAA,MAAA;AAAA,QACX,WAAUL,EAAA,cAAAA,EAAA;AAAA,QACV,WAAAA,EAAA;AAAA,QACO,QAAA;AAAA,QAQS,oBAMR;AAAA,MAAA,GAAAA,EALP,OAKO,GAAA;AAAA,QAAA,SAAAM,EAAA,MAAA;AAAA;;;;iBAXDA,EAAO,MAAA;AAAA,UAAAC,EACP,OAAE;AAAA,YACP,KAAA;AAAA,YAAA,OAAAR,EAAAC,EAAA,WAAA;AAAA;;;QAaW,GAAA;AAAA,MACd,GAAA,IAAA,CAAA,WAAA,WAAA,CAAA;AAAA,MAAAA,EAAA,YAAA,SAAA,KAAAH,EAEQ,EAAU,GAAAC,EAAAU,GAAA,EAAA,KAAA,EAAA,GAAAC,EAAA,CAAAT,EAAA,UAAA,GAAAA,EAAA,aAAAA,EAAA,QAAA,GAAA,CAAAU,OACVb,EAAE,GAAAC,EAAA,OAAA;AAAA,QACP,KAAKY;AAAA,QACL,OAAAX,EAAqBC,EAAI,oBAAe;AAAA,QACxC,OAAkBC,EAAAD,EAAA,gCAAAU,CAAA,CAAA;AAAA,QAClB,WAAYA,KAAAV,EAAA;AAAA,QACZ,UAAUA,EAAA;AAAA,QAAA,cAAA,CAAAW,MAAAX,EAAA,wBAAAU;AAAA;iCAKjBE,EAmBM,IAAA,EAAA;AAAA,IAAA,GAnBA,IAAKC,CAAA;AAAA,IAAAN,EAAA,OAAA;AAAA,eACTP,EAiBM,WAAA;AAAA,IAAA,GAAA;AAAA,SAfE,EAAU,GAAAF,EAAAU,GAAA,MAAAC,EAAA,CAAAT,EAAA,UAAA,GAAAA,EAAA,aAAAA,EAAA,QAAA,GAAA,CAAAU,OACVb,EAAA,GAAAC,EAAE,OAAe;AAAA,QACtB,KAAKY;AAAA,QACL,OAAkBX,EAAAC,EAAA,eAAA;AAAA,QAClB,OAAAC,EAAaD,kCAAoCU,CAAa,CAAA;AAAA,QAC9D,UAAUV,EAAA;AAAA,QACV,eAAUA,EAAE,0BAAAU,IAAA,UAAA;AAAA,QACZ,cAAK,OAAEV,EAA4B,wBAAAU;AAAA,QAAA,cAAAI,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAH,MAAAX,EAAA,wBAAA;AAAA,QAEpC,SAAA,CAAAW,MAKOX,EAJe,kBAAAU;AAAA,MAAA,GAAA;AAAA;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrSlider.vue_vue_type_script_lang-BE2sljeF.mjs","sources":["../../../components/or-slider-v3/src/types.ts","../../../components/or-slider-v3/src/styles.ts","../../../components/or-slider-v3/src/OrSlider.vue"],"sourcesContent":["import { ModelValue } from '@onereach/ui-components-common/types';\n\nexport type SliderModelValue = ModelValue<number>;\n\nexport enum SliderColor {\n Primary = 'primary',\n Secondary = 'secondary',\n}\n\nexport enum SliderOrientation {\n Horizontal = 'horizontal',\n HorizontalReversed = 'horizontal-reversed',\n Vertical = 'vertical',\n VerticalReversed = 'vertical-reversed',\n}\n","import { SliderColor, SliderOrientation } from './types';\n\nexport const Slider: string[] = [\n // Interactivity\n 'interactivity-default',\n];\n\nexport const SliderOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-column',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-column',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-row',\n\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-row',\n\n // Box\n 'h-full',\n ],\n};\n\nexport const SliderRail: string[] = [\n // Position\n 'relative',\n\n // Interactivity\n 'interactivity-click',\n\n // Shape\n 'rounded-full',\n\n // Theme\n 'theme-background-disabled',\n 'dark:theme-background-disabled-dark',\n];\n\nexport const SliderRailOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-row',\n\n // Box\n 'w-full',\n 'h-xs',\n\n // Spacing\n 'mx-0',\n 'my-md+',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-row-reverse',\n\n // Box\n 'w-full',\n 'h-xs',\n\n // Spacing\n 'mx-0',\n 'my-md+',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-column-reverse items-center',\n\n // Box\n 'w-xs',\n 'h-full',\n\n // Spacing\n 'mx-md+',\n 'my-0',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-column items-center',\n\n // Box\n 'w-xs',\n 'h-full',\n\n // Spacing\n 'mx-md+',\n 'my-0',\n ],\n};\n\nexport const SliderTrack: string[] = [\n // Shape\n 'rounded-full',\n\n // Box\n 'w-full',\n 'h-full',\n];\n\nexport const SliderTrackColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-background-primary',\n 'dark:theme-background-primary-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-background-secondary',\n 'dark:theme-background-secondary-dark',\n ],\n};\n\nexport const SliderThumb: string[] = [\n // Layout\n 'shrink-0',\n\n // Shape\n 'rounded-full',\n\n // Box\n 'w-[20px]',\n 'h-[20px]',\n\n // Spacing\n '-mx-[10px]',\n '-my-[10px]',\n\n // Theme\n 'theme-background-base',\n 'dark:theme-background-base-dark',\n];\n\nexport const SliderThumbColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-border-primary border-4',\n 'dark:theme-border-primary-dark',\n\n // Theme (hover)\n 'hover:theme-background-primary',\n 'dark:hover:theme-background-primary-dark',\n\n // Theme (active)\n 'active:theme-background-primary',\n 'dark:active:theme-background-primary-dark',\n\n 'active:theme-outline-primary active:outline-10',\n 'dark:active:theme-outline-primary-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-border-secondary border-4',\n 'dark:theme-border-secondary-dark',\n\n // Theme (hover)\n 'hover:theme-background-secondary',\n 'dark:hover:theme-background-secondary-dark',\n\n // Theme (active)\n 'active:theme-background-secondary',\n 'dark:active:theme-background-secondary-dark',\n\n 'active:theme-outline-secondary active:outline-10',\n 'dark:active:theme-outline-secondary-dark',\n ],\n};\n\nexport const SliderBreakpointMark: string[] = [\n // Position\n 'absolute',\n\n // Shape\n 'rounded-full',\n\n // Box\n 'w-[2px]',\n 'h-[2px]',\n\n // Spacing\n '-mx-[1px]',\n '-my-[1px]',\n];\n\nexport const SliderBreakpointMarkColors: Record<SliderColor, string[]> = {\n [SliderColor.Primary]: [\n // Theme\n 'theme-background-primary',\n 'dark:theme-background-primary-dark',\n\n // Theme (activated)\n 'activated:theme-background-primary-container',\n 'dark:activated:theme-background-primary-container-dark',\n\n // Theme (disabled)\n 'disabled:!bg-on-disabled',\n 'dark:disabled:!bg-on-disabled-dark',\n ],\n\n [SliderColor.Secondary]: [\n // Theme\n 'theme-background-secondary',\n 'dark:theme-background-secondary-dark',\n\n // Theme (activated)\n 'activated:theme-background-secondary-container',\n 'dark:activated:theme-background-secondary-container-dark',\n\n // Theme (disabled)\n 'disabled:!bg-on-disabled',\n 'dark:disabled:!bg-on-disabled-dark',\n ],\n};\n\nexport const SliderLabel: string[] = [\n // Position\n 'relative',\n];\n\nexport const SliderLabelOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Layout\n 'layout-row',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Layout\n 'layout-row-reverse',\n\n // Box\n 'w-full',\n ],\n\n [SliderOrientation.Vertical]: [\n // Layout\n 'layout-column-reverse items-center',\n\n // Box\n 'h-full',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Layout\n 'layout-column items-center',\n\n // Box\n 'h-full',\n ],\n};\n\nexport const SliderLabelMark: string[] = [\n // Position\n 'absolute',\n\n // Interactivity\n 'interactivity-click',\n\n // Typography\n 'typography-caption-regular whitespace-nowrap',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n\n // Theme (hover)\n 'hover:theme-foreground-default',\n 'dark:hover:theme-foreground-default-dark',\n];\n\nexport const SliderLabelMarkOrientations: Record<SliderOrientation, string[]> = {\n [SliderOrientation.Horizontal]: [\n // Position\n '-translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.HorizontalReversed]: [\n // Position\n 'translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.Vertical]: [\n // Position\n 'translate-x-1/2',\n 'translate-y-1/2',\n ],\n\n [SliderOrientation.VerticalReversed]: [\n // Position\n 'translate-x-1/2',\n '-translate-y-1/2',\n ],\n};\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n :disabled=\"disabled\"\n >\n <div\n :ref=\"'rail'\"\n :class=\"railStyles\"\n :disabled=\"disabled\"\n >\n <div\n :class=\"trackStyles\"\n :style=\"trackInlineStyles\"\n :disabled=\"disabled\"\n />\n\n <OrTooltip\n :class=\"['relative', 'z-10']\"\n :is-open=\"isHovering || isDragging\"\n :placement=\"tooltipPlacement\"\n :offset=\"24\"\n :external-control=\"true\"\n v-bind=\"tooltip\"\n >\n <div\n :ref=\"'thumb'\"\n :class=\"thumbStyles\"\n :disabled=\"disabled\"\n />\n\n <template v-slot:content>\n <slot\n name=\"tooltipContent\"\n :value=\"proxyModelValue\"\n >\n {{ proxyModelValue }}\n </slot>\n </template>\n </OrTooltip>\n\n <template v-if=\"breakpoints.length > 0\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"breakpointMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :activated=\"breakpoint <= proxyModelValue\"\n :disabled=\"disabled\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n />\n </template>\n </div>\n\n <div :class=\"labelStyles\">\n <div\n v-for=\"breakpoint of [minValue, ...breakpoints, maxValue]\"\n :key=\"breakpoint\"\n :class=\"labelMarkStyles\"\n :style=\"getBreakpointMarkComputedStyles(breakpoint)\"\n :disabled=\"disabled\"\n :force-state=\"highlightedBreakpoint === breakpoint ? 'hover' : undefined\"\n @mouseenter=\"highlightedBreakpoint = breakpoint\"\n @mouseleave=\"highlightedBreakpoint = undefined\"\n @click=\"proxyModelValue = breakpoint\"\n >\n <slot\n :name=\"`${breakpoint}-label`\"\n :value=\"breakpoint\"\n >\n {{ breakpoint }}\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { Position, clamp, useDraggable, useElementBounding, useElementHover } from '@vueuse/core';\nimport { PropType, computed, defineComponent, ref, toRef, watch } from 'vue';\nimport { useProxyModelValue } from '@onereach/ui-components-common/hooks';\nimport { OrTooltipV3 as OrTooltip } from '@onereach/ui-components.or-tooltip-v3';\nimport * as Styles from './styles';\nimport { SliderColor, SliderModelValue, SliderOrientation } from './types';\n\nexport default defineComponent({\n name: 'OrSlider',\n\n components: {\n OrTooltip,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: undefined as unknown as PropType<SliderModelValue>,\n default: undefined,\n },\n\n minValue: {\n type: Number,\n default: 0,\n },\n\n maxValue: {\n type: Number,\n default: 100,\n },\n\n step: {\n type: Number,\n default: 1,\n },\n\n breakpoints: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n\n color: {\n type: String as PropType<`${SliderColor}`>,\n default: () => SliderColor.Primary,\n },\n\n orientation: {\n type: String as PropType<`${SliderOrientation}`>,\n default: () => SliderOrientation.Horizontal,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n tooltip: {\n type: Object as PropType<Pick<InstanceType<typeof OrTooltip>['$props'], 'placement' | 'offset' | 'debounce'>>,\n default: undefined,\n },\n },\n\n emits: [\n 'update:modelValue',\n ],\n\n expose: [\n 'root',\n ],\n\n setup(props, context) {\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const rootStyles = computed(() => [\n 'or-slider-v3',\n ...Styles.Slider,\n ...Styles.SliderOrientations[props.orientation],\n ]);\n\n const rail = ref<HTMLElement>();\n\n const railStyles = computed(() => [\n 'or-slider-rail-v3',\n ...Styles.SliderRail,\n ...Styles.SliderRailOrientations[props.orientation],\n ]);\n\n const trackStyles = computed(() => [\n ...Styles.SliderTrack,\n ...Styles.SliderTrackColors[props.color],\n ]);\n\n // eslint-disable-next-line vue/return-in-computed-property\n const trackInlineStyles = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return { width: `${internalModelValue.value * 100}%` };\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return { height: `${internalModelValue.value * 100}%` };\n }\n });\n\n const thumb = ref<HTMLElement>();\n\n const thumbStyles = computed(() => [\n 'or-slider-thumb-v3',\n ...Styles.SliderThumb,\n ...Styles.SliderThumbColors[props.color],\n 'touch-none', // Required for proper work on mobile\n ]);\n\n const breakpointMarkStyles = computed(() => [\n ...Styles.SliderBreakpointMark,\n ...Styles.SliderBreakpointMarkColors[props.color],\n ]);\n\n const labelStyles = computed(() => [\n ...Styles.SliderLabel,\n ...Styles.SliderLabelOrientations[props.orientation],\n ]);\n\n const labelMarkStyles = computed(() => [\n ...Styles.SliderLabelMark,\n ...Styles.SliderLabelMarkOrientations[props.orientation],\n ]);\n\n // State\n const proxyModelValue = useProxyModelValue(toRef(props, 'modelValue'), context.emit, {\n defaultValue: toRef(props, 'minValue'),\n });\n\n const internalModelValue = computed({\n get: () => (proxyModelValue.value - props.minValue) / (props.maxValue - props.minValue),\n\n set: (value) => {\n const modelValue = value * (props.maxValue - props.minValue) + props.minValue;\n\n proxyModelValue.value = internalBreakpoints.value.reduce((a, b) => {\n return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;\n });\n },\n });\n\n const internalBreakpoints = computed(() => {\n if (!props.step) {\n return [props.minValue, ...props.breakpoints, props.maxValue];\n }\n\n return Array(Math.ceil(Math.abs(props.maxValue - props.minValue) / props.step))\n .fill(undefined)\n .map((value, index) => Math.floor((props.minValue + props.step * index) * 1000) / 1000)\n .concat(...props.breakpoints, props.maxValue)\n .sort((a, b) => a - b);\n });\n\n // eslint-disable-next-line vue/return-in-computed-property\n const tooltipPlacement = computed(() => {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n case SliderOrientation.HorizontalReversed:\n return 'top';\n\n case SliderOrientation.Vertical:\n case SliderOrientation.VerticalReversed:\n return 'right';\n }\n });\n\n const highlightedBreakpoint = ref<number>();\n\n const railBoundingBox = useElementBounding(rail);\n\n // Handlers\n function onDrag(position: Position, event: MouseEvent | PointerEvent): void {\n if (props.disabled) {\n return;\n }\n\n const totalWidth = railBoundingBox.width.value;\n const totalHeight = railBoundingBox.height.value;\n\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n internalModelValue.value = clamp(event.clientX - railBoundingBox.left.value, 0, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.HorizontalReversed:\n internalModelValue.value = clamp(railBoundingBox.right.value - event.clientX, 0, totalWidth) / totalWidth;\n break;\n\n case SliderOrientation.Vertical:\n internalModelValue.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), 0, totalHeight) / totalHeight;\n break;\n\n case SliderOrientation.VerticalReversed:\n internalModelValue.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), 0, totalHeight) / totalHeight;\n break;\n }\n }\n\n // Methods\n function getBreakpointMarkComputedStyles(breakpoint: number): Partial<CSSStyleDeclaration> | undefined {\n switch (props.orientation) {\n case SliderOrientation.Horizontal:\n return { left: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.HorizontalReversed:\n return { right: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.Vertical:\n return { bottom: `${getBreakpointOffset(breakpoint) * 100}%` };\n\n case SliderOrientation.VerticalReversed:\n return { top: `${getBreakpointOffset(breakpoint) * 100}%` };\n }\n }\n\n // Helpers\n function getBreakpointOffset(breakpoint: number): number {\n return (breakpoint - props.minValue) / (props.maxValue - props.minValue);\n }\n\n // Effects\n const isHovering = useElementHover(rail);\n\n const { isDragging } = useDraggable(rail, {\n onStart: onDrag,\n onMove: onDrag,\n onEnd: onDrag,\n });\n\n // Constraints\n watch(() => props.minValue, (value) => {\n if (value >= props.maxValue) {\n throw new Error('[OrSlider]: `minValue` must be lesser than `maxValue`.');\n }\n }, { immediate: true });\n\n watch(() => props.maxValue, (value) => {\n if (value <= props.minValue) {\n throw new Error('[OrSlider]: `maxValue` must be greater than `minValue`.');\n }\n }, { immediate: true });\n\n return {\n root,\n rootStyles,\n\n rail,\n railStyles,\n\n trackStyles,\n trackInlineStyles,\n\n thumb,\n thumbStyles,\n\n breakpointMarkStyles,\n\n labelStyles,\n labelMarkStyles,\n\n proxyModelValue,\n tooltipPlacement,\n highlightedBreakpoint,\n\n getBreakpointMarkComputedStyles,\n\n isHovering,\n isDragging,\n };\n },\n});\n</script>\n"],"names":["SliderColor","SliderOrientation","Slider","SliderOrientations","SliderRail","SliderRailOrientations","SliderTrack","SliderTrackColors","SliderThumb","SliderThumbColors","SliderBreakpointMark","SliderBreakpointMarkColors","SliderLabel","SliderLabelOrientations","SliderLabelMark","SliderLabelMarkOrientations","_sfc_main","defineComponent","OrTooltip","props","context","root","ref","rootStyles","computed","Styles.Slider","Styles.SliderOrientations","rail","railStyles","Styles.SliderRail","Styles.SliderRailOrientations","trackStyles","Styles.SliderTrack","Styles.SliderTrackColors","trackInlineStyles","internalModelValue","thumb","thumbStyles","Styles.SliderThumb","Styles.SliderThumbColors","breakpointMarkStyles","Styles.SliderBreakpointMark","Styles.SliderBreakpointMarkColors","labelStyles","Styles.SliderLabel","Styles.SliderLabelOrientations","labelMarkStyles","Styles.SliderLabelMark","Styles.SliderLabelMarkOrientations","proxyModelValue","useProxyModelValue","toRef","value","modelValue","internalBreakpoints","a","b","index","tooltipPlacement","highlightedBreakpoint","railBoundingBox","useElementBounding","onDrag","position","event","totalWidth","totalHeight","clamp","getBreakpointMarkComputedStyles","breakpoint","getBreakpointOffset","isHovering","useElementHover","isDragging","useDraggable","watch"],"mappings":";;;;AAIY,IAAAA,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,YAAY,aAFFA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACVA,EAAA,aAAa,cACbA,EAAA,qBAAqB,uBACrBA,EAAA,WAAW,YACXA,EAAA,mBAAmB,qBAJTA,IAAAA,KAAA,CAAA,CAAA;ACPL,MAAMC,IAAmB;AAAA;AAAA,EAE9B;AACF,GAEaC,IAA0D;AAAA,EACrE,CAACF,EAAkB,UAAU,GAAG;AAAA;AAAA,IAE9B;AAAA;AAAA,IAGA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,kBAAkB,GAAG;AAAA;AAAA,IAEtC;AAAA;AAAA,IAGA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,QAAQ,GAAG;AAAA;AAAA,IAE5B;AAAA;AAAA,IAGA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,gBAAgB,GAAG;AAAA;AAAA,IAEpC;AAAA;AAAA,IAGA;AAAA,EACF;AACF,GAEaG,IAAuB;AAAA;AAAA,EAElC;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EACA;AACF,GAEaC,IAA8D;AAAA,EACzE,CAACJ,EAAkB,UAAU,GAAG;AAAA;AAAA,IAE9B;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,kBAAkB,GAAG;AAAA;AAAA,IAEtC;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,QAAQ,GAAG;AAAA;AAAA,IAE5B;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,gBAAgB,GAAG;AAAA;AAAA,IAEpC;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,EACF;AACF,GAEaK,IAAwB;AAAA;AAAA,EAEnC;AAAA;AAAA,EAGA;AAAA,EACA;AACF,GAEaC,IAAmD;AAAA,EAC9D,CAACP,EAAY,OAAO,GAAG;AAAA;AAAA,IAErB;AAAA,IACA;AAAA,EACF;AAAA,EAEA,CAACA,EAAY,SAAS,GAAG;AAAA;AAAA,IAEvB;AAAA,IACA;AAAA,EACF;AACF,GAEaQ,IAAwB;AAAA;AAAA,EAEnC;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AACF,GAEaC,IAAmD;AAAA,EAC9D,CAACT,EAAY,OAAO,GAAG;AAAA;AAAA,IAErB;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,CAACA,EAAY,SAAS,GAAG;AAAA;AAAA,IAEvB;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AACF,GAEaU,IAAiC;AAAA;AAAA,EAE5C;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AACF,GAEaC,IAA4D;AAAA,EACvE,CAACX,EAAY,OAAO,GAAG;AAAA;AAAA,IAErB;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,CAACA,EAAY,SAAS,GAAG;AAAA;AAAA,IAEvB;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,EACF;AACF,GAEaY,IAAwB;AAAA;AAAA,EAEnC;AACF,GAEaC,IAA+D;AAAA,EAC1E,CAACZ,EAAkB,UAAU,GAAG;AAAA;AAAA,IAE9B;AAAA;AAAA,IAGA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,kBAAkB,GAAG;AAAA;AAAA,IAEtC;AAAA;AAAA,IAGA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,QAAQ,GAAG;AAAA;AAAA,IAE5B;AAAA;AAAA,IAGA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,gBAAgB,GAAG;AAAA;AAAA,IAEpC;AAAA;AAAA,IAGA;AAAA,EACF;AACF,GAEaa,IAA4B;AAAA;AAAA,EAEvC;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AACF,GAEaC,KAAmE;AAAA,EAC9E,CAACd,EAAkB,UAAU,GAAG;AAAA;AAAA,IAE9B;AAAA,IACA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,kBAAkB,GAAG;AAAA;AAAA,IAEtC;AAAA,IACA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,QAAQ,GAAG;AAAA;AAAA,IAE5B;AAAA,IACA;AAAA,EACF;AAAA,EAEA,CAACA,EAAkB,gBAAgB,GAAG;AAAA;AAAA,IAEpC;AAAA,IACA;AAAA,EACF;AACF,GCvOAe,KAAeC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,WAAAC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAMlB,EAAY;AAAA,IAC7B;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,MAAMC,EAAkB;AAAA,IACnC;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IAEA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,EACF;AAAA,EAEA,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EAEA,MAAMkB,GAAOC,GAAS;AAEpB,UAAMC,IAAOC,KAEPC,IAAaC,EAAS,MAAM;AAAA,MAChC;AAAA,MACA,GAAGC;AAAAA,MACH,GAAGC,EAA0BP,EAAM,WAAW;AAAA,IAAA,CAC/C,GAEKQ,IAAOL,KAEPM,IAAaJ,EAAS,MAAM;AAAA,MAChC;AAAA,MACA,GAAGK;AAAAA,MACH,GAAGC,EAA8BX,EAAM,WAAW;AAAA,IAAA,CACnD,GAEKY,IAAcP,EAAS,MAAM;AAAA,MACjC,GAAGQ;AAAAA,MACH,GAAGC,EAAyBd,EAAM,KAAK;AAAA,IAAA,CACxC,GAGKe,IAAoBV,EAAS,MAAM;AACvC,cAAQL,EAAM,aAAa;AAAA,QACzB,KAAKlB,EAAkB;AAAA,QACvB,KAAKA,EAAkB;AACrB,iBAAO,EAAE,OAAO,GAAGkC,EAAmB,QAAQ,GAAG;QAEnD,KAAKlC,EAAkB;AAAA,QACvB,KAAKA,EAAkB;AACrB,iBAAO,EAAE,QAAQ,GAAGkC,EAAmB,QAAQ,GAAG;MACtD;AAAA,IAAA,CACD,GAEKC,IAAQd,KAERe,IAAcb,EAAS,MAAM;AAAA,MACjC;AAAA,MACA,GAAGc;AAAAA,MACH,GAAGC,EAAyBpB,EAAM,KAAK;AAAA,MACvC;AAAA;AAAA,IAAA,CACD,GAEKqB,IAAuBhB,EAAS,MAAM;AAAA,MAC1C,GAAGiB;AAAAA,MACH,GAAGC,EAAkCvB,EAAM,KAAK;AAAA,IAAA,CACjD,GAEKwB,IAAcnB,EAAS,MAAM;AAAA,MACjC,GAAGoB;AAAAA,MACH,GAAGC,EAA+B1B,EAAM,WAAW;AAAA,IAAA,CACpD,GAEK2B,IAAkBtB,EAAS,MAAM;AAAA,MACrC,GAAGuB;AAAAA,MACH,GAAGC,GAAmC7B,EAAM,WAAW;AAAA,IAAA,CACxD,GAGK8B,IAAkBC,EAAmBC,EAAMhC,GAAO,YAAY,GAAGC,EAAQ,MAAM;AAAA,MACnF,cAAc+B,EAAMhC,GAAO,UAAU;AAAA,IAAA,CACtC,GAEKgB,IAAqBX,EAAS;AAAA,MAClC,KAAK,OAAOyB,EAAgB,QAAQ9B,EAAM,aAAaA,EAAM,WAAWA,EAAM;AAAA,MAE9E,KAAK,CAACiC,MAAU;AACd,cAAMC,IAAaD,KAASjC,EAAM,WAAWA,EAAM,YAAYA,EAAM;AAErE,QAAA8B,EAAgB,QAAQK,EAAoB,MAAM,OAAO,CAACC,GAAGC,MACpD,KAAK,IAAID,IAAIF,CAAU,IAAI,KAAK,IAAIG,IAAIH,CAAU,IAAIE,IAAIC,CAClE;AAAA,MACH;AAAA,IAAA,CACD,GAEKF,IAAsB9B,EAAS,MAC9BL,EAAM,OAIJ,MAAM,KAAK,KAAK,KAAK,IAAIA,EAAM,WAAWA,EAAM,QAAQ,IAAIA,EAAM,IAAI,CAAC,EAC3E,KAAK,MAAS,EACd,IAAI,CAACiC,GAAOK,MAAU,KAAK,OAAOtC,EAAM,WAAWA,EAAM,OAAOsC,KAAS,GAAI,IAAI,GAAI,EACrF,OAAO,GAAGtC,EAAM,aAAaA,EAAM,QAAQ,EAC3C,KAAK,CAACoC,GAAGC,MAAMD,IAAIC,CAAC,IAPd,CAACrC,EAAM,UAAU,GAAGA,EAAM,aAAaA,EAAM,QAAQ,CAQ/D,GAGKuC,IAAmBlC,EAAS,MAAM;AACtC,cAAQL,EAAM,aAAa;AAAA,QACzB,KAAKlB,EAAkB;AAAA,QACvB,KAAKA,EAAkB;AACd,iBAAA;AAAA,QAET,KAAKA,EAAkB;AAAA,QACvB,KAAKA,EAAkB;AACd,iBAAA;AAAA,MACX;AAAA,IAAA,CACD,GAEK0D,IAAwBrC,KAExBsC,IAAkBC,EAAmBlC,CAAI;AAGtC,aAAAmC,EAAOC,GAAoBC,GAAwC;AAC1E,UAAI7C,EAAM;AACR;AAGI,YAAA8C,IAAaL,EAAgB,MAAM,OACnCM,IAAcN,EAAgB,OAAO;AAE3C,cAAQzC,EAAM,aAAa;AAAA,QACzB,KAAKlB,EAAkB;AACF,UAAAkC,EAAA,QAAQgC,EAAMH,EAAM,UAAUJ,EAAgB,KAAK,OAAO,GAAGK,CAAU,IAAIA;AAC9F;AAAA,QAEF,KAAKhE,EAAkB;AACF,UAAAkC,EAAA,QAAQgC,EAAMP,EAAgB,MAAM,QAAQI,EAAM,SAAS,GAAGC,CAAU,IAAIA;AAC/F;AAAA,QAEF,KAAKhE,EAAkB;AACF,UAAAkC,EAAA,QAAQgC,EAAMD,KAAeF,EAAM,UAAUJ,EAAgB,IAAI,QAAQ,GAAGM,CAAW,IAAIA;AAC9G;AAAA,QAEF,KAAKjE,EAAkB;AACF,UAAAkC,EAAA,QAAQgC,EAAMD,KAAeN,EAAgB,OAAO,QAAQI,EAAM,UAAU,GAAGE,CAAW,IAAIA;AACjH;AAAA,MACJ;AAAA,IACF;AAGA,aAASE,EAAgCC,GAA8D;AACrG,cAAQlD,EAAM,aAAa;AAAA,QACzB,KAAKlB,EAAkB;AACrB,iBAAO,EAAE,MAAM,GAAGqE,EAAoBD,CAAU,IAAI,GAAG;QAEzD,KAAKpE,EAAkB;AACrB,iBAAO,EAAE,OAAO,GAAGqE,EAAoBD,CAAU,IAAI,GAAG;QAE1D,KAAKpE,EAAkB;AACrB,iBAAO,EAAE,QAAQ,GAAGqE,EAAoBD,CAAU,IAAI,GAAG;QAE3D,KAAKpE,EAAkB;AACrB,iBAAO,EAAE,KAAK,GAAGqE,EAAoBD,CAAU,IAAI,GAAG;MAC1D;AAAA,IACF;AAGA,aAASC,EAAoBD,GAA4B;AACvD,cAAQA,IAAalD,EAAM,aAAaA,EAAM,WAAWA,EAAM;AAAA,IACjE;AAGM,UAAAoD,IAAaC,EAAgB7C,CAAI,GAEjC,EAAE,YAAA8C,EAAA,IAAeC,EAAa/C,GAAM;AAAA,MACxC,SAASmC;AAAA,MACT,QAAQA;AAAA,MACR,OAAOA;AAAA,IAAA,CACR;AAGD,WAAAa,EAAM,MAAMxD,EAAM,UAAU,CAACiC,MAAU;AACjC,UAAAA,KAASjC,EAAM;AACX,cAAA,IAAI,MAAM,wDAAwD;AAAA,IAC1E,GACC,EAAE,WAAW,GAAA,CAAM,GAEtBwD,EAAM,MAAMxD,EAAM,UAAU,CAACiC,MAAU;AACjC,UAAAA,KAASjC,EAAM;AACX,cAAA,IAAI,MAAM,yDAAyD;AAAA,IAC3E,GACC,EAAE,WAAW,GAAA,CAAM,GAEf;AAAA,MACL,MAAAE;AAAA,MACA,YAAAE;AAAA,MAEA,MAAAI;AAAA,MACA,YAAAC;AAAA,MAEA,aAAAG;AAAA,MACA,mBAAAG;AAAA,MAEA,OAAAE;AAAA,MACA,aAAAC;AAAA,MAEA,sBAAAG;AAAA,MAEA,aAAAG;AAAA,MACA,iBAAAG;AAAA,MAEA,iBAAAG;AAAA,MACA,kBAAAS;AAAA,MACA,uBAAAC;AAAA,MAEA,iCAAAS;AAAA,MAEA,YAAAG;AAAA,MACA,YAAAE;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}