@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.
- package/dist/esm/{OrRangeSlider-FL1E28ec.mjs → OrRangeSlider-Dim4sU4v.mjs} +48 -48
- package/dist/esm/OrRangeSlider-Dim4sU4v.mjs.map +1 -0
- package/dist/esm/{OrSlider-24Fi9HHj.mjs → OrSlider-Cec0WpUQ.mjs} +4 -5
- package/dist/esm/OrSlider-Cec0WpUQ.mjs.map +1 -0
- package/dist/esm/{OrSlider.vue_vue_type_script_lang-BE2sljeF.mjs → OrSlider.vue_vue_type_script_lang-C5rLh1F0.mjs} +6 -4
- package/dist/esm/OrSlider.vue_vue_type_script_lang-C5rLh1F0.mjs.map +1 -0
- package/dist/esm/components/index.mjs +3 -3
- package/dist/esm/components/or-range-slider-v3/index.mjs +1 -1
- package/dist/esm/components/or-slider-v3/index.mjs +2 -2
- package/dist/esm/index.mjs +3 -3
- package/package.json +4 -4
- package/dist/esm/OrRangeSlider-FL1E28ec.mjs.map +0 -1
- package/dist/esm/OrSlider-24Fi9HHj.mjs.map +0 -1
- package/dist/esm/OrSlider.vue_vue_type_script_lang-BE2sljeF.mjs.map +0 -1
|
@@ -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
|
|
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-
|
|
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 = [],
|
|
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
|
-
},
|
|
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 =
|
|
313
|
+
const N = h(), W = i(() => [
|
|
312
314
|
"or-range-slider-v3",
|
|
313
315
|
...Ve,
|
|
314
316
|
...Re[e.orientation]
|
|
315
|
-
]),
|
|
317
|
+
]), M = h(), L = i(() => [
|
|
316
318
|
"or-range-slider-rail-v3",
|
|
317
319
|
...Se,
|
|
318
320
|
...He[e.orientation]
|
|
319
|
-
]), V = h(), s =
|
|
321
|
+
]), V = h(), s = i(() => [
|
|
320
322
|
...we,
|
|
321
|
-
...
|
|
322
|
-
]), y =
|
|
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 =
|
|
332
|
-
...
|
|
333
|
+
}), I = h(), Z = i(() => [
|
|
334
|
+
...ze,
|
|
333
335
|
...Ce[e.color]
|
|
334
|
-
]), p =
|
|
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(), _ =
|
|
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 =
|
|
351
|
+
]), ee = i(() => [
|
|
350
352
|
...Be,
|
|
351
353
|
...Te[e.color]
|
|
352
|
-
]), ae =
|
|
354
|
+
]), ae = i(() => [
|
|
353
355
|
...Pe,
|
|
354
356
|
...De[e.orientation]
|
|
355
|
-
]), te =
|
|
357
|
+
]), te = i(() => [
|
|
356
358
|
...Fe,
|
|
357
359
|
...Ee[e.orientation]
|
|
358
360
|
]), o = ke(he(e, "modelValue"), f.emit, {
|
|
359
|
-
defaultValue:
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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,
|
|
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 =
|
|
435
|
+
o.value = n;
|
|
434
436
|
break;
|
|
435
437
|
case a.HorizontalReversed:
|
|
436
438
|
case a.VerticalReversed:
|
|
437
|
-
o.value = [
|
|
439
|
+
o.value = [n[1], n[0]];
|
|
438
440
|
break;
|
|
439
441
|
}
|
|
440
442
|
}
|
|
441
|
-
}), u =
|
|
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,
|
|
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 =
|
|
453
|
+
o.value = n;
|
|
452
454
|
break;
|
|
453
455
|
case a.HorizontalReversed:
|
|
454
456
|
case a.VerticalReversed:
|
|
455
|
-
o.value = [
|
|
457
|
+
o.value = [n[1], n[0]];
|
|
456
458
|
break;
|
|
457
459
|
}
|
|
458
460
|
}
|
|
459
|
-
}), j =
|
|
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(
|
|
470
|
+
}), re = h(), v = h(), c = ce(M);
|
|
469
471
|
function T(l, t) {
|
|
470
472
|
if (e.disabled)
|
|
471
473
|
return;
|
|
472
|
-
const
|
|
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 *
|
|
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 *
|
|
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 *
|
|
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 *
|
|
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
|
|
509
|
+
function ne(l) {
|
|
508
510
|
switch (e.orientation) {
|
|
509
511
|
case a.Horizontal:
|
|
510
|
-
return { left: `${
|
|
512
|
+
return { left: `${z(l) * 100}%` };
|
|
511
513
|
case a.HorizontalReversed:
|
|
512
|
-
return { right: `${
|
|
514
|
+
return { right: `${z(l) * 100}%` };
|
|
513
515
|
case a.Vertical:
|
|
514
|
-
return { bottom: `${
|
|
516
|
+
return { bottom: `${z(l) * 100}%` };
|
|
515
517
|
case a.VerticalReversed:
|
|
516
|
-
return { top: `${
|
|
518
|
+
return { top: `${z(l) * 100}%` };
|
|
517
519
|
}
|
|
518
520
|
}
|
|
519
|
-
function
|
|
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),
|
|
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:
|
|
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:
|
|
570
|
+
getBreakpointMarkComputedStyles: ne,
|
|
569
571
|
isHoveringOffset: q,
|
|
570
572
|
isHoveringTrack: x,
|
|
571
573
|
isHoveringFiller: G,
|
|
572
|
-
isHoveringRail:
|
|
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,
|
|
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-
|
|
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-
|
|
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
|
|
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",
|
|
72
|
+
const I = /* @__PURE__ */ S(g, [["render", T]]);
|
|
74
73
|
export {
|
|
75
74
|
I as O
|
|
76
75
|
};
|
|
77
|
-
//# sourceMappingURL=OrSlider-
|
|
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
|
-
}),
|
|
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:
|
|
399
|
-
thumbStyles:
|
|
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-
|
|
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-
|
|
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-
|
|
78
|
-
import { S as Te, a as ce } from "../OrSlider.vue_vue_type_script_lang-
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import { O as e } from "../../OrSlider-
|
|
2
|
-
import { S as i, a as l } from "../../OrSlider.vue_vue_type_script_lang-
|
|
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,
|
package/dist/esm/index.mjs
CHANGED
|
@@ -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-
|
|
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-
|
|
78
|
-
import { S as Te, a as ce } from "./OrSlider.vue_vue_type_script_lang-
|
|
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
|
+
"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.
|
|
50
|
-
"@onereach/ui-components-common": "^22.1.
|
|
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": "
|
|
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":"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"}
|