@orioncactuscorp/ui 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Accordion/Accordion.css +1 -1
- package/dist/components/Alert/Alert.js +1 -1
- package/dist/components/Button/Button.css +1 -1
- package/dist/components/Checkbox/Checkbox.css +1 -1
- package/dist/components/Modal/Modal.css +1 -1
- package/dist/components/Modal/Modal.js +671 -517
- package/dist/components/Modal/bottomSheetGeometry.js +88 -0
- package/dist/components/Modal/modalScrollArbitration.js +8 -7
- package/dist/components/Modal/snapPoints.js +9 -8
- package/dist/components/Modal/useModalContentBlockTransition.js +64 -0
- package/dist/components/Modal/useModalDrag.js +917 -788
- package/dist/components/Radio/Radio.css +1 -1
- package/dist/components/ScrollArea/ScrollArea.css +1 -1
- package/dist/components/ScrollArea/ScrollArea.js +250 -223
- package/dist/components/ScrollArea/useScrollAreaGeometryStabilizer.js +36 -0
- package/dist/components/TextButton/TextButton.css +1 -1
- package/dist/components/TextButton/TextButton.module.scss.js +8 -6
- package/dist/components/internal/DisclosureIndicator.js +23 -23
- package/dist/styles.css +7 -7
- package/dist/ui/src/components/Modal/Modal.d.ts +2 -2
- package/dist/ui/src/components/Modal/Modal.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/bottomSheetGeometry.d.ts +36 -0
- package/dist/ui/src/components/Modal/bottomSheetGeometry.d.ts.map +1 -0
- package/dist/ui/src/components/Modal/index.d.ts +1 -1
- package/dist/ui/src/components/Modal/index.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/modalScrollArbitration.d.ts +2 -1
- package/dist/ui/src/components/Modal/modalScrollArbitration.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/snapPoints.d.ts +1 -0
- package/dist/ui/src/components/Modal/snapPoints.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/types.d.ts +11 -1
- package/dist/ui/src/components/Modal/types.d.ts.map +1 -1
- package/dist/ui/src/components/Modal/useModalContentBlockTransition.d.ts +5 -0
- package/dist/ui/src/components/Modal/useModalContentBlockTransition.d.ts.map +1 -0
- package/dist/ui/src/components/Modal/useModalDrag.d.ts +5 -1
- package/dist/ui/src/components/Modal/useModalDrag.d.ts.map +1 -1
- package/dist/ui/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/ui/src/components/ScrollArea/useScrollAreaGeometryStabilizer.d.ts +11 -0
- package/dist/ui/src/components/ScrollArea/useScrollAreaGeometryStabilizer.d.ts.map +1 -0
- package/dist/ui/src/index.d.ts +1 -1
- package/dist/ui/src/index.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/scss/mixins/_element.scss +161 -14
- package/src/scss/mixins/_element.test.ts +94 -5
- package/src/scss/mixins/_icon.scss +27 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
function M(n, t, i) {
|
|
2
|
+
return Math.min(Math.max(n, t), i);
|
|
3
|
+
}
|
|
4
|
+
const d = 2;
|
|
5
|
+
function x(n, t) {
|
|
6
|
+
return Math.abs(n - t) <= d;
|
|
7
|
+
}
|
|
8
|
+
function m(n, t) {
|
|
9
|
+
return M(n - t, 0, n);
|
|
10
|
+
}
|
|
11
|
+
function E(...n) {
|
|
12
|
+
const t = n.filter(
|
|
13
|
+
(i) => i !== void 0 && T(i)
|
|
14
|
+
);
|
|
15
|
+
if (t.length)
|
|
16
|
+
return Math.min(...t);
|
|
17
|
+
}
|
|
18
|
+
function T(n) {
|
|
19
|
+
return Number.isFinite(n) && n > 0;
|
|
20
|
+
}
|
|
21
|
+
function N({
|
|
22
|
+
contentHeight: n,
|
|
23
|
+
maxHeight: t,
|
|
24
|
+
snapHeight: i
|
|
25
|
+
}) {
|
|
26
|
+
if (!T(n)) return 0;
|
|
27
|
+
const e = E(t, i);
|
|
28
|
+
return e === void 0 ? n : Math.min(n, e);
|
|
29
|
+
}
|
|
30
|
+
function b({
|
|
31
|
+
defaultTranslate: n,
|
|
32
|
+
sheetHeight: t,
|
|
33
|
+
snapHeights: i,
|
|
34
|
+
translate: e
|
|
35
|
+
}) {
|
|
36
|
+
if (x(e, n))
|
|
37
|
+
return { kind: "default-snap" };
|
|
38
|
+
if (e <= d && n > d)
|
|
39
|
+
return { kind: "expanded" };
|
|
40
|
+
let a = -1, u = Number.POSITIVE_INFINITY;
|
|
41
|
+
return i.forEach((c, f) => {
|
|
42
|
+
const r = Math.abs(
|
|
43
|
+
m(t, c) - e
|
|
44
|
+
);
|
|
45
|
+
r < u && (a = f, u = r);
|
|
46
|
+
}), a >= 0 && u <= d ? { kind: "snap", index: a } : { kind: "custom" };
|
|
47
|
+
}
|
|
48
|
+
function k({
|
|
49
|
+
currentTranslate: n,
|
|
50
|
+
fallbackTranslate: t,
|
|
51
|
+
restState: i,
|
|
52
|
+
previousDefaultTranslate: e,
|
|
53
|
+
previousSheetHeight: a,
|
|
54
|
+
previousSnapHeights: u,
|
|
55
|
+
targetSheetHeight: c,
|
|
56
|
+
targetDefaultTranslate: f,
|
|
57
|
+
targetSnapHeights: r
|
|
58
|
+
}) {
|
|
59
|
+
if (i.kind === "default-snap")
|
|
60
|
+
return n <= d && e > d ? 0 : f;
|
|
61
|
+
if (i.kind === "expanded")
|
|
62
|
+
return 0;
|
|
63
|
+
if (i.kind === "snap") {
|
|
64
|
+
const o = r[Math.min(i.index, r.length - 1)];
|
|
65
|
+
if (o !== void 0)
|
|
66
|
+
return m(c, o);
|
|
67
|
+
}
|
|
68
|
+
const p = M(
|
|
69
|
+
a - n,
|
|
70
|
+
0,
|
|
71
|
+
a
|
|
72
|
+
), I = 2;
|
|
73
|
+
let s = -1, h = Number.POSITIVE_INFINITY;
|
|
74
|
+
if (u.forEach((o, S) => {
|
|
75
|
+
const l = Math.abs(o - p);
|
|
76
|
+
l < h && (s = S, h = l);
|
|
77
|
+
}), s >= 0 && h <= I) {
|
|
78
|
+
const o = r[Math.min(s, r.length - 1)];
|
|
79
|
+
if (o !== void 0)
|
|
80
|
+
return m(c, o);
|
|
81
|
+
}
|
|
82
|
+
return t;
|
|
83
|
+
}
|
|
84
|
+
export {
|
|
85
|
+
b as resolveBottomSheetRestState,
|
|
86
|
+
N as resolveContentSizedBottomSheetHeight,
|
|
87
|
+
k as resolveResizedBottomSheetTranslate
|
|
88
|
+
};
|
|
@@ -83,11 +83,11 @@ function a({
|
|
|
83
83
|
const t = A(n, e ?? null), o = t?.getSelection?.() ?? t?.defaultView?.getSelection?.();
|
|
84
84
|
if (!o || o.rangeCount === 0 || o.isCollapsed)
|
|
85
85
|
return !1;
|
|
86
|
-
const
|
|
87
|
-
if (!
|
|
88
|
-
for (let
|
|
89
|
-
const D = o.getRangeAt(
|
|
90
|
-
if (
|
|
86
|
+
const u = e ?? (typeof Node < "u" && n instanceof Node ? n : null);
|
|
87
|
+
if (!u) return !0;
|
|
88
|
+
for (let l = 0; l < o.rangeCount; l += 1) {
|
|
89
|
+
const D = o.getRangeAt(l).commonAncestorContainer;
|
|
90
|
+
if (u.contains(D) || D.contains(u))
|
|
91
91
|
return !0;
|
|
92
92
|
}
|
|
93
93
|
return !1;
|
|
@@ -105,14 +105,15 @@ function E({
|
|
|
105
105
|
target: e,
|
|
106
106
|
deltaY: n,
|
|
107
107
|
chrome: t,
|
|
108
|
-
bodyNode: o
|
|
108
|
+
bodyNode: o,
|
|
109
|
+
canExpand: u
|
|
109
110
|
}) {
|
|
110
111
|
if (typeof Element > "u" || !(e instanceof Element) || s(e)) return r;
|
|
111
112
|
if (t) return T(n !== 0);
|
|
112
113
|
if (a({ target: e, boundary: o }))
|
|
113
114
|
return r;
|
|
114
115
|
const l = m(e, o);
|
|
115
|
-
return c(l) ? n > 0 ? f(l) ? i : S : n < 0 ? S : r : T(n !== 0);
|
|
116
|
+
return c(l) ? n > 0 ? f(l) ? i : S : n < 0 ? u ? i : S : r : T(n !== 0);
|
|
116
117
|
}
|
|
117
118
|
function R({
|
|
118
119
|
target: e,
|
|
@@ -12,16 +12,17 @@ function X({
|
|
|
12
12
|
if (!e?.length) return;
|
|
13
13
|
const a = e.map(
|
|
14
14
|
(c) => y(c, i)
|
|
15
|
-
), r = a.filter(v).sort((c,
|
|
15
|
+
), r = a.filter(v).sort((c, l) => c - l);
|
|
16
16
|
if (!r.length) return;
|
|
17
|
-
const n = Math.max(...r), o = t !== void 0 ? e.findIndex((c) => c === t) : -1,
|
|
17
|
+
const n = Math.max(...r), o = t !== void 0 ? e.findIndex((c) => c === t) : -1, g = o >= 0 && a[o] ? a[o] : n;
|
|
18
18
|
return {
|
|
19
19
|
snapHeights: r,
|
|
20
20
|
sheetHeight: n,
|
|
21
|
-
|
|
21
|
+
defaultHeight: g,
|
|
22
|
+
visibleTranslate: Math.max(0, n - g)
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
|
-
function
|
|
25
|
+
function u(e, t) {
|
|
25
26
|
const i = Number.parseFloat(e.getPropertyValue(t));
|
|
26
27
|
return Number.isFinite(i) ? i : 0;
|
|
27
28
|
}
|
|
@@ -72,16 +73,16 @@ function Y({
|
|
|
72
73
|
const r = a.getBoundingClientRect(), n = i.getBoundingClientRect();
|
|
73
74
|
if (r.width <= 0 || r.height <= 0 || n.width <= 0 || n.height <= 0)
|
|
74
75
|
return;
|
|
75
|
-
const o = window.getComputedStyle(a),
|
|
76
|
-
minX:
|
|
76
|
+
const o = window.getComputedStyle(a), g = u(o, "padding-left"), c = u(o, "padding-right"), l = u(o, "padding-top"), d = u(o, "padding-bottom"), m = {
|
|
77
|
+
minX: g + n.width / 2 - r.width / 2,
|
|
77
78
|
maxX: r.width - c - n.width / 2 - r.width / 2,
|
|
78
|
-
minY:
|
|
79
|
+
minY: l + n.height / 2 - r.height / 2,
|
|
79
80
|
maxY: r.height - d - n.height / 2 - r.height / 2
|
|
80
81
|
}, s = t.map((h) => {
|
|
81
82
|
const p = S({
|
|
82
83
|
position: h,
|
|
83
84
|
viewportRect: r,
|
|
84
|
-
paddingTop:
|
|
85
|
+
paddingTop: l,
|
|
85
86
|
paddingBottom: d
|
|
86
87
|
});
|
|
87
88
|
return {
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useRef as r, useCallback as d, useLayoutEffect as S, useEffect as N } from "react";
|
|
2
|
+
const w = 600, E = 4;
|
|
3
|
+
function v(t) {
|
|
4
|
+
const n = Number.parseFloat(window.getComputedStyle(t).height);
|
|
5
|
+
return Number.isFinite(n) && n > 0 ? n : t.getBoundingClientRect().height;
|
|
6
|
+
}
|
|
7
|
+
function B({
|
|
8
|
+
enabled: t,
|
|
9
|
+
node: n
|
|
10
|
+
}) {
|
|
11
|
+
const s = r(null), i = r(null), a = r(null), T = r(null), l = r(!1), o = r(0), g = r(!1), f = d(() => {
|
|
12
|
+
T.current?.(), T.current = null;
|
|
13
|
+
}, []), u = d(() => {
|
|
14
|
+
i.current !== null && (window.cancelAnimationFrame(i.current), i.current = null), a.current !== null && (window.clearTimeout(a.current), a.current = null), f();
|
|
15
|
+
}, [f]), h = d(() => {
|
|
16
|
+
const e = s.current;
|
|
17
|
+
e && (u(), e.style.removeProperty("height"), e.dataset.ocContentTransitionState = "idle", l.current = !1, o.current = v(e));
|
|
18
|
+
}, [u]), C = d(() => {
|
|
19
|
+
const e = s.current;
|
|
20
|
+
!e || !t || l.current || i.current === null && (i.current = window.requestAnimationFrame(() => {
|
|
21
|
+
i.current = null;
|
|
22
|
+
const m = o.current, c = v(e);
|
|
23
|
+
if (!g.current) {
|
|
24
|
+
g.current = !0, o.current = c;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (m <= 0 || Math.abs(c - m) <= E) {
|
|
28
|
+
o.current = c;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
l.current = !0, e.dataset.ocContentTransitionState = "changing", e.style.height = `${m}px`, e.getBoundingClientRect(), e.style.height = `${c}px`, o.current = c;
|
|
32
|
+
const p = (R) => {
|
|
33
|
+
R.target !== e || R.propertyName !== "height" || (e.removeEventListener("transitionend", p), h());
|
|
34
|
+
};
|
|
35
|
+
f(), e.addEventListener("transitionend", p), T.current = () => {
|
|
36
|
+
e.removeEventListener("transitionend", p);
|
|
37
|
+
}, a.current = window.setTimeout(() => {
|
|
38
|
+
h();
|
|
39
|
+
}, w);
|
|
40
|
+
}));
|
|
41
|
+
}, [t, h, f]);
|
|
42
|
+
S(() => {
|
|
43
|
+
s.current = n;
|
|
44
|
+
const e = s.current;
|
|
45
|
+
e && (o.current = v(e), g.current = !1, t || (u(), e.style.removeProperty("height"), e.dataset.ocContentTransitionState = "idle", l.current = !1));
|
|
46
|
+
}, [u, t, n]), N(() => {
|
|
47
|
+
if (!n || !t || typeof ResizeObserver > "u")
|
|
48
|
+
return;
|
|
49
|
+
const e = new ResizeObserver(() => {
|
|
50
|
+
C();
|
|
51
|
+
});
|
|
52
|
+
return e.observe(n), () => {
|
|
53
|
+
e.disconnect();
|
|
54
|
+
};
|
|
55
|
+
}, [t, n, C]), N(
|
|
56
|
+
() => () => {
|
|
57
|
+
u();
|
|
58
|
+
},
|
|
59
|
+
[u]
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
B as useModalContentBlockTransition
|
|
64
|
+
};
|