@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.
Files changed (44) hide show
  1. package/dist/components/Accordion/Accordion.css +1 -1
  2. package/dist/components/Alert/Alert.js +1 -1
  3. package/dist/components/Button/Button.css +1 -1
  4. package/dist/components/Checkbox/Checkbox.css +1 -1
  5. package/dist/components/Modal/Modal.css +1 -1
  6. package/dist/components/Modal/Modal.js +671 -517
  7. package/dist/components/Modal/bottomSheetGeometry.js +88 -0
  8. package/dist/components/Modal/modalScrollArbitration.js +8 -7
  9. package/dist/components/Modal/snapPoints.js +9 -8
  10. package/dist/components/Modal/useModalContentBlockTransition.js +64 -0
  11. package/dist/components/Modal/useModalDrag.js +917 -788
  12. package/dist/components/Radio/Radio.css +1 -1
  13. package/dist/components/ScrollArea/ScrollArea.css +1 -1
  14. package/dist/components/ScrollArea/ScrollArea.js +250 -223
  15. package/dist/components/ScrollArea/useScrollAreaGeometryStabilizer.js +36 -0
  16. package/dist/components/TextButton/TextButton.css +1 -1
  17. package/dist/components/TextButton/TextButton.module.scss.js +8 -6
  18. package/dist/components/internal/DisclosureIndicator.js +23 -23
  19. package/dist/styles.css +7 -7
  20. package/dist/ui/src/components/Modal/Modal.d.ts +2 -2
  21. package/dist/ui/src/components/Modal/Modal.d.ts.map +1 -1
  22. package/dist/ui/src/components/Modal/bottomSheetGeometry.d.ts +36 -0
  23. package/dist/ui/src/components/Modal/bottomSheetGeometry.d.ts.map +1 -0
  24. package/dist/ui/src/components/Modal/index.d.ts +1 -1
  25. package/dist/ui/src/components/Modal/index.d.ts.map +1 -1
  26. package/dist/ui/src/components/Modal/modalScrollArbitration.d.ts +2 -1
  27. package/dist/ui/src/components/Modal/modalScrollArbitration.d.ts.map +1 -1
  28. package/dist/ui/src/components/Modal/snapPoints.d.ts +1 -0
  29. package/dist/ui/src/components/Modal/snapPoints.d.ts.map +1 -1
  30. package/dist/ui/src/components/Modal/types.d.ts +11 -1
  31. package/dist/ui/src/components/Modal/types.d.ts.map +1 -1
  32. package/dist/ui/src/components/Modal/useModalContentBlockTransition.d.ts +5 -0
  33. package/dist/ui/src/components/Modal/useModalContentBlockTransition.d.ts.map +1 -0
  34. package/dist/ui/src/components/Modal/useModalDrag.d.ts +5 -1
  35. package/dist/ui/src/components/Modal/useModalDrag.d.ts.map +1 -1
  36. package/dist/ui/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  37. package/dist/ui/src/components/ScrollArea/useScrollAreaGeometryStabilizer.d.ts +11 -0
  38. package/dist/ui/src/components/ScrollArea/useScrollAreaGeometryStabilizer.d.ts.map +1 -0
  39. package/dist/ui/src/index.d.ts +1 -1
  40. package/dist/ui/src/index.d.ts.map +1 -1
  41. package/package.json +2 -1
  42. package/src/scss/mixins/_element.scss +161 -14
  43. package/src/scss/mixins/_element.test.ts +94 -5
  44. 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 l = e ?? (typeof Node < "u" && n instanceof Node ? n : null);
87
- if (!l) return !0;
88
- for (let u = 0; u < o.rangeCount; u += 1) {
89
- const D = o.getRangeAt(u).commonAncestorContainer;
90
- if (l.contains(D) || D.contains(l))
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, g) => c - g);
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, u = o >= 0 && a[o] ? a[o] : n;
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
- visibleTranslate: Math.max(0, n - u)
21
+ defaultHeight: g,
22
+ visibleTranslate: Math.max(0, n - g)
22
23
  };
23
24
  }
24
- function l(e, t) {
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), u = l(o, "padding-left"), c = l(o, "padding-right"), g = l(o, "padding-top"), d = l(o, "padding-bottom"), m = {
76
- minX: u + n.width / 2 - r.width / 2,
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: g + n.height / 2 - r.height / 2,
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: g,
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
+ };