@yselimcan/ui 0.0.6 → 0.0.8

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 (236) hide show
  1. package/dist/index100.js +5 -32
  2. package/dist/index101.js +8 -19
  3. package/dist/index102.js +86 -4
  4. package/dist/index103.js +13 -4
  5. package/dist/index104.js +63 -5
  6. package/dist/index105.js +38 -12
  7. package/dist/index106.js +14 -19
  8. package/dist/index107.js +33 -13
  9. package/dist/index108.js +19 -297
  10. package/dist/index109.js +5 -4
  11. package/dist/index110.js +4 -39
  12. package/dist/index111.js +5 -126
  13. package/dist/index112.js +11 -4
  14. package/dist/index113.js +19 -21
  15. package/dist/index114.js +13 -77
  16. package/dist/index115.js +291 -59
  17. package/dist/index116.js +4 -45
  18. package/dist/index117.js +37 -65
  19. package/dist/index118.js +125 -8
  20. package/dist/index119.js +20 -13
  21. package/dist/index120.js +76 -3
  22. package/dist/index121.js +64 -3
  23. package/dist/index122.js +45 -5
  24. package/dist/index123.js +14 -134
  25. package/dist/index124.js +5 -27
  26. package/dist/index125.js +27 -6
  27. package/dist/index127.js +26 -11
  28. package/dist/index128.js +15 -20
  29. package/dist/index129.js +22 -14
  30. package/dist/index130.js +58 -5
  31. package/dist/index131.js +16 -28
  32. package/dist/index132.js +25 -15
  33. package/dist/index133.js +40 -21
  34. package/dist/index134.js +43 -59
  35. package/dist/index135.js +19 -15
  36. package/dist/index136.js +47 -26
  37. package/dist/index137.js +49 -38
  38. package/dist/index138.js +18 -43
  39. package/dist/index139.js +11 -21
  40. package/dist/index140.js +22 -48
  41. package/dist/index141.js +34 -50
  42. package/dist/index142.js +229 -16
  43. package/dist/index143.js +283 -11
  44. package/dist/index144.js +52 -21
  45. package/dist/index145.js +15 -35
  46. package/dist/index146.js +74 -225
  47. package/dist/index147.js +3 -283
  48. package/dist/index148.js +30 -53
  49. package/dist/index149.js +24 -16
  50. package/dist/index150.js +15 -79
  51. package/dist/index151.js +69 -3
  52. package/dist/index152.js +4 -31
  53. package/dist/index153.js +103 -22
  54. package/dist/index154.js +79 -15
  55. package/dist/index155.js +259 -65
  56. package/dist/index156.js +12 -4
  57. package/dist/index157.js +11 -105
  58. package/dist/index158.js +37 -76
  59. package/dist/index159.js +4 -263
  60. package/dist/index160.js +66 -11
  61. package/dist/index161.js +9 -10
  62. package/dist/index162.js +8 -40
  63. package/dist/index163.js +5 -4
  64. package/dist/index164.js +129 -62
  65. package/dist/index165.js +54 -10
  66. package/dist/index166.js +11 -8
  67. package/dist/index167.js +118 -6
  68. package/dist/index168.js +11 -53
  69. package/dist/index169.js +6 -6
  70. package/dist/index17.js +4 -4
  71. package/dist/index170.js +63 -114
  72. package/dist/index171.js +8 -7
  73. package/dist/index172.js +13 -12
  74. package/dist/index173.js +11 -65
  75. package/dist/index174.js +10 -11
  76. package/dist/index175.js +87 -12
  77. package/dist/index176.js +7 -8
  78. package/dist/index177.js +11 -11
  79. package/dist/index178.js +52 -83
  80. package/dist/index179.js +11 -11
  81. package/dist/index18.js +4 -4
  82. package/dist/index180.js +11 -11
  83. package/dist/index181.js +16 -54
  84. package/dist/index182.js +8 -11
  85. package/dist/index183.js +7 -10
  86. package/dist/index184.js +102 -17
  87. package/dist/index185.js +7 -8
  88. package/dist/index186.js +32 -8
  89. package/dist/index187.js +73 -102
  90. package/dist/index188.js +14 -7
  91. package/dist/index189.js +27 -31
  92. package/dist/index19.js +9 -9
  93. package/dist/index190.js +12 -74
  94. package/dist/index191.js +7 -14
  95. package/dist/index192.js +21 -27
  96. package/dist/index193.js +25 -8
  97. package/dist/index194.js +159 -21
  98. package/dist/index195.js +114 -25
  99. package/dist/index196.js +67 -152
  100. package/dist/index197.js +62 -111
  101. package/dist/index198.js +8 -75
  102. package/dist/index199.js +22 -64
  103. package/dist/index20.js +2 -2
  104. package/dist/index200.js +5 -47
  105. package/dist/index201.js +4 -200
  106. package/dist/index202.js +9 -47
  107. package/dist/index203.js +39 -20
  108. package/dist/index204.js +57 -27
  109. package/dist/index205.js +27 -5
  110. package/dist/index206.js +7 -9
  111. package/dist/index207.js +12 -11
  112. package/dist/index208.js +11 -16
  113. package/dist/index209.js +11 -6
  114. package/dist/index21.js +3 -3
  115. package/dist/index210.js +22 -4
  116. package/dist/index211.js +11 -21
  117. package/dist/index212.js +7 -127
  118. package/dist/index213.js +43 -45
  119. package/dist/index214.js +595 -16
  120. package/dist/index215.js +12 -5
  121. package/dist/index216.js +15 -179
  122. package/dist/index217.js +47 -75
  123. package/dist/index218.js +186 -385
  124. package/dist/index219.js +48 -4
  125. package/dist/index22.js +5 -5
  126. package/dist/index220.js +19 -4
  127. package/dist/index221.js +30 -12
  128. package/dist/index222.js +5 -31
  129. package/dist/index223.js +26 -38
  130. package/dist/index224.js +12 -57
  131. package/dist/index225.js +21 -27
  132. package/dist/index226.js +127 -7
  133. package/dist/index227.js +45 -13
  134. package/dist/index228.js +18 -12
  135. package/dist/index229.js +5 -12
  136. package/dist/index23.js +2 -2
  137. package/dist/index230.js +178 -19
  138. package/dist/index231.js +75 -11
  139. package/dist/index232.js +398 -7
  140. package/dist/index233.js +4 -43
  141. package/dist/index234.js +5 -597
  142. package/dist/index235.js +14 -11
  143. package/dist/index236.js +20 -208
  144. package/dist/index237.js +6 -4
  145. package/dist/index238.js +208 -13
  146. package/dist/index239.js +3 -47
  147. package/dist/index24.js +9 -9
  148. package/dist/index240.js +13 -3
  149. package/dist/index241.js +45 -10
  150. package/dist/index242.js +3 -57
  151. package/dist/index243.js +11 -28
  152. package/dist/index244.js +56 -12
  153. package/dist/index245.js +30 -9
  154. package/dist/index246.js +12 -205
  155. package/dist/index247.js +9 -15
  156. package/dist/index248.js +189 -304
  157. package/dist/index249.js +15 -3
  158. package/dist/index250.js +322 -3
  159. package/dist/index251.js +3 -21
  160. package/dist/index252.js +3 -6
  161. package/dist/index253.js +1 -1
  162. package/dist/index256.js +1 -1
  163. package/dist/index257.js +1 -1
  164. package/dist/index260.js +1 -1
  165. package/dist/index261.js +1 -1
  166. package/dist/index262.js +2 -2
  167. package/dist/index264.js +2 -2
  168. package/dist/index28.js +1 -1
  169. package/dist/index29.js +1 -1
  170. package/dist/index30.js +1 -1
  171. package/dist/index31.js +1 -1
  172. package/dist/index32.js +1 -1
  173. package/dist/index33.js +16 -16
  174. package/dist/index34.js +5 -5
  175. package/dist/index35.js +12 -12
  176. package/dist/index36.js +10 -10
  177. package/dist/index37.js +7 -7
  178. package/dist/index38.js +8 -8
  179. package/dist/index39.js +4 -4
  180. package/dist/index40.js +2 -2
  181. package/dist/index41.js +2 -2
  182. package/dist/index42.js +2 -2
  183. package/dist/index43.js +1 -1
  184. package/dist/index45.js +5 -5
  185. package/dist/index46.js +9 -9
  186. package/dist/index47.js +9 -9
  187. package/dist/index48.js +18 -18
  188. package/dist/index49.js +4 -4
  189. package/dist/index50.js +11 -11
  190. package/dist/index51.js +1 -1
  191. package/dist/index52.js +24 -24
  192. package/dist/index53.js +3 -3
  193. package/dist/index54.js +30 -30
  194. package/dist/index55.js +13 -13
  195. package/dist/index56.js +12 -12
  196. package/dist/index57.js +1 -1
  197. package/dist/index58.js +2 -2
  198. package/dist/index59.js +5 -5
  199. package/dist/index60.js +11 -11
  200. package/dist/index61.js +4 -4
  201. package/dist/index62.js +3 -3
  202. package/dist/index63.js +11 -11
  203. package/dist/index64.js +4 -4
  204. package/dist/index65.js +3 -3
  205. package/dist/index66.js +13 -13
  206. package/dist/index68.js +1 -1
  207. package/dist/index69.js +31 -31
  208. package/dist/index70.js +5 -5
  209. package/dist/index71.js +16 -16
  210. package/dist/index72.js +22 -22
  211. package/dist/index73.js +7 -7
  212. package/dist/index74.js +1 -1
  213. package/dist/index75.js +12 -12
  214. package/dist/index76.js +2 -2
  215. package/dist/index77.js +4 -4
  216. package/dist/index78.js +2 -2
  217. package/dist/index79.js +1 -1
  218. package/dist/index80.js +1 -1
  219. package/dist/index81.js +17 -17
  220. package/dist/index82.js +4 -4
  221. package/dist/index83.js +4 -4
  222. package/dist/index87.js +7 -7
  223. package/dist/index88.js +9 -9
  224. package/dist/index89.js +19 -90
  225. package/dist/index90.js +15 -18
  226. package/dist/index91.js +33 -16
  227. package/dist/index92.js +12 -33
  228. package/dist/index93.js +90 -12
  229. package/dist/index94.js +4 -7
  230. package/dist/index95.js +65 -86
  231. package/dist/index96.js +8 -12
  232. package/dist/index97.js +12 -61
  233. package/dist/index98.js +4 -38
  234. package/dist/index99.js +4 -14
  235. package/dist/styles.css +1 -1
  236. package/package.json +7 -4
package/dist/index218.js CHANGED
@@ -1,401 +1,202 @@
1
- import { flip as st, offset as rt, size as ct, hide as lt, computePosition as ft, shift as ut, limitShift as ht } from "./index253.js";
2
- import { createCoords as w, rectToClientRect as J, floor as A, max as E, round as D, min as N } from "./index212.js";
3
- import { getOverflowAncestors as V, isElement as v, getDocumentElement as R, getWindow as L, getFrameElement as U, getComputedStyle as b, isHTMLElement as C, isWebKit as Q, isTopLayer as $, getParentNode as S, isLastTraversableNode as z, isTableElement as at, isContainingBlock as Y, getContainingBlock as dt, getNodeName as _, isOverflowElement as q, getNodeScroll as H } from "./index123.js";
4
- function Z(t) {
5
- const e = b(t);
6
- let n = parseFloat(e.width) || 0, i = parseFloat(e.height) || 0;
7
- const o = C(t), r = o ? t.offsetWidth : n, s = o ? t.offsetHeight : i, c = D(n) !== r || D(i) !== s;
8
- return c && (n = r, i = s), {
9
- width: n,
10
- height: i,
11
- $: c
12
- };
13
- }
14
- function X(t) {
15
- return v(t) ? t : t.contextElement;
16
- }
17
- function F(t) {
18
- const e = X(t);
19
- if (!C(e))
20
- return w(1);
21
- const n = e.getBoundingClientRect(), {
22
- width: i,
23
- height: o,
24
- $: r
25
- } = Z(e);
26
- let s = (r ? D(n.width) : n.width) / i, c = (r ? D(n.height) : n.height) / o;
27
- return (!s || !Number.isFinite(s)) && (s = 1), (!c || !Number.isFinite(c)) && (c = 1), {
28
- x: s,
29
- y: c
30
- };
31
- }
32
- const gt = /* @__PURE__ */ w(0);
33
- function tt(t) {
34
- const e = L(t);
35
- return !Q() || !e.visualViewport ? gt : {
36
- x: e.visualViewport.offsetLeft,
37
- y: e.visualViewport.offsetTop
38
- };
39
- }
40
- function pt(t, e, n) {
41
- return e === void 0 && (e = !1), !n || e && n !== L(t) ? !1 : e;
42
- }
43
- function T(t, e, n, i) {
44
- e === void 0 && (e = !1), n === void 0 && (n = !1);
45
- const o = t.getBoundingClientRect(), r = X(t);
46
- let s = w(1);
47
- e && (i ? v(i) && (s = F(i)) : s = F(t));
48
- const c = pt(r, n, i) ? tt(r) : w(0);
49
- let f = (o.left + c.x) / s.x, l = (o.top + c.y) / s.y, u = o.width / s.x, h = o.height / s.y;
50
- if (r) {
51
- const d = L(r), a = i && v(i) ? L(i) : i;
52
- let m = d, p = U(m);
53
- for (; p && i && a !== m; ) {
54
- const y = F(p), g = p.getBoundingClientRect(), x = b(p), O = g.left + (p.clientLeft + parseFloat(x.paddingLeft)) * y.x, W = g.top + (p.clientTop + parseFloat(x.paddingTop)) * y.y;
55
- f *= y.x, l *= y.y, u *= y.x, h *= y.y, f += O, l += W, m = L(p), p = U(m);
1
+ import * as r from "react";
2
+ import { Store as l } from "./index146.js";
3
+ import { useStore as a } from "./index145.js";
4
+ import { useStableCallback as h } from "./index127.js";
5
+ import { useIsoLayoutEffect as i } from "./index126.js";
6
+ import { NOOP as d } from "./index100.js";
7
+ class O extends l {
8
+ /**
9
+ * Creates a new ReactStore instance.
10
+ *
11
+ * @param state Initial state of the store.
12
+ * @param context Non-reactive context values.
13
+ * @param selectors Optional selectors for use with `useState`.
14
+ */
15
+ constructor(e, t = {}, s) {
16
+ super(e), this.context = t, this.selectors = s;
17
+ }
18
+ /**
19
+ * Non-reactive values such as refs, callbacks, etc.
20
+ */
21
+ /**
22
+ * Keeps track of which properties are controlled.
23
+ */
24
+ controlledValues = /* @__PURE__ */ new Map();
25
+ /**
26
+ * Synchronizes a single external value into the store.
27
+ *
28
+ * Note that the while the value in `state` is updated immediately, the value returned
29
+ * by `useState` is updated before the next render (similarly to React's `useState`).
30
+ */
31
+ useSyncedValue(e, t) {
32
+ r.useDebugValue(e), i(() => {
33
+ this.state[e] !== t && this.set(e, t);
34
+ }, [e, t]);
35
+ }
36
+ /**
37
+ * Synchronizes a single external value into the store and
38
+ * cleans it up (sets to `undefined`) on unmount.
39
+ *
40
+ * Note that the while the value in `state` is updated immediately, the value returned
41
+ * by `useState` is updated before the next render (similarly to React's `useState`).
42
+ */
43
+ useSyncedValueWithCleanup(e, t) {
44
+ i(() => (this.state[e] !== t && this.set(e, t), () => {
45
+ this.set(e, void 0);
46
+ }), [e, t]);
47
+ }
48
+ /**
49
+ * Synchronizes multiple external values into the store.
50
+ *
51
+ * Note that the while the values in `state` are updated immediately, the values returned
52
+ * by `useState` are updated before the next render (similarly to React's `useState`).
53
+ */
54
+ useSyncedValues(e) {
55
+ if (process.env.NODE_ENV !== "production") {
56
+ r.useDebugValue(e, (n) => Object.keys(n));
57
+ const s = r.useRef(Object.keys(e)).current, o = Object.keys(e);
58
+ (s.length !== o.length || s.some((n, u) => n !== o[u])) && console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable.");
56
59
  }
60
+ const t = Object.values(e);
61
+ i(() => {
62
+ this.update(e);
63
+ }, t);
57
64
  }
58
- return J({
59
- width: u,
60
- height: h,
61
- x: f,
62
- y: l
63
- });
64
- }
65
- function I(t, e) {
66
- const n = H(t).scrollLeft;
67
- return e ? e.left + n : T(R(t)).left + n;
68
- }
69
- function et(t, e) {
70
- const n = t.getBoundingClientRect(), i = n.left + e.scrollLeft - I(t, n), o = n.top + e.scrollTop;
71
- return {
72
- x: i,
73
- y: o
74
- };
75
- }
76
- function mt(t) {
77
- let {
78
- elements: e,
79
- rect: n,
80
- offsetParent: i,
81
- strategy: o
82
- } = t;
83
- const r = o === "fixed", s = R(i), c = e ? $(e.floating) : !1;
84
- if (i === s || c && r)
85
- return n;
86
- let f = {
87
- scrollLeft: 0,
88
- scrollTop: 0
89
- }, l = w(1);
90
- const u = w(0), h = C(i);
91
- if ((h || !h && !r) && ((_(i) !== "body" || q(s)) && (f = H(i)), C(i))) {
92
- const a = T(i);
93
- l = F(i), u.x = a.x + i.clientLeft, u.y = a.y + i.clientTop;
65
+ /**
66
+ * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key.
67
+ * - If `controlled` is non-undefined, the key is marked as controlled and the store's
68
+ * state at `key` is updated to match `controlled`. Local writes to that key are ignored.
69
+ * - If `controlled` is undefined, the key is marked as uncontrolled. The store's state
70
+ * is initialized to `defaultValue` on first render and can be updated with local writes.
71
+ */
72
+ useControlledProp(e, t, s) {
73
+ r.useDebugValue(e);
74
+ const o = t !== void 0;
75
+ if (process.env.NODE_ENV !== "production") {
76
+ const n = this.controlledValues.get(e);
77
+ n !== void 0 && n !== o && console.error(`A component is changing the ${o ? "" : "un"}controlled state of ${e.toString()} to be ${o ? "un" : ""}controlled. Elements should not switch from uncontrolled to controlled (or vice versa).`);
78
+ }
79
+ this.controlledValues.has(e) || (this.controlledValues.set(e, o), !o && !Object.is(this.state[e], s) && super.setState({
80
+ ...this.state,
81
+ [e]: s
82
+ })), i(() => {
83
+ o && !Object.is(this.state[e], t) && super.setState({
84
+ ...this.state,
85
+ [e]: t
86
+ });
87
+ }, [e, t, s, o]);
94
88
  }
95
- const d = s && !h && !r ? et(s, f) : w(0);
96
- return {
97
- width: n.width * l.x,
98
- height: n.height * l.y,
99
- x: n.x * l.x - f.scrollLeft * l.x + u.x + d.x,
100
- y: n.y * l.y - f.scrollTop * l.y + u.y + d.y
101
- };
102
- }
103
- function yt(t) {
104
- return Array.from(t.getClientRects());
105
- }
106
- function wt(t) {
107
- const e = R(t), n = H(t), i = t.ownerDocument.body, o = E(e.scrollWidth, e.clientWidth, i.scrollWidth, i.clientWidth), r = E(e.scrollHeight, e.clientHeight, i.scrollHeight, i.clientHeight);
108
- let s = -n.scrollLeft + I(t);
109
- const c = -n.scrollTop;
110
- return b(i).direction === "rtl" && (s += E(e.clientWidth, i.clientWidth) - o), {
111
- width: o,
112
- height: r,
113
- x: s,
114
- y: c
115
- };
116
- }
117
- const K = 25;
118
- function xt(t, e) {
119
- const n = L(t), i = R(t), o = n.visualViewport;
120
- let r = i.clientWidth, s = i.clientHeight, c = 0, f = 0;
121
- if (o) {
122
- r = o.width, s = o.height;
123
- const u = Q();
124
- (!u || u && e === "fixed") && (c = o.offsetLeft, f = o.offsetTop);
89
+ /**
90
+ * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed.
91
+ * If the key is controlled (registered via {@link useControlledProp} with a non-undefined value),
92
+ * the update is ignored and no listeners are notified.
93
+ *
94
+ * @param key The state key to update.
95
+ * @param value The new value to set for the specified key.
96
+ */
97
+ set(e, t) {
98
+ this.controlledValues.get(e) !== !0 && super.set(e, t);
125
99
  }
126
- const l = I(i);
127
- if (l <= 0) {
128
- const u = i.ownerDocument, h = u.body, d = getComputedStyle(h), a = u.compatMode === "CSS1Compat" && parseFloat(d.marginLeft) + parseFloat(d.marginRight) || 0, m = Math.abs(i.clientWidth - h.clientWidth - a);
129
- m <= K && (r -= m);
130
- } else l <= K && (r += l);
131
- return {
132
- width: r,
133
- height: s,
134
- x: c,
135
- y: f
136
- };
137
- }
138
- const vt = /* @__PURE__ */ new Set(["absolute", "fixed"]);
139
- function bt(t, e) {
140
- const n = T(t, !0, e === "fixed"), i = n.top + t.clientTop, o = n.left + t.clientLeft, r = C(t) ? F(t) : w(1), s = t.clientWidth * r.x, c = t.clientHeight * r.y, f = o * r.x, l = i * r.y;
141
- return {
142
- width: s,
143
- height: c,
144
- x: f,
145
- y: l
146
- };
147
- }
148
- function j(t, e, n) {
149
- let i;
150
- if (e === "viewport")
151
- i = xt(t, n);
152
- else if (e === "document")
153
- i = wt(R(t));
154
- else if (v(e))
155
- i = bt(e, n);
156
- else {
157
- const o = tt(t);
158
- i = {
159
- x: e.x - o.x,
160
- y: e.y - o.y,
161
- width: e.width,
162
- height: e.height
100
+ /**
101
+ * Merges the provided changes into the current state and notifies listeners if there are changes.
102
+ * Controlled keys are filtered out and not updated.
103
+ *
104
+ * @param values An object containing the changes to apply to the current state.
105
+ */
106
+ update(e) {
107
+ const t = {
108
+ ...e
163
109
  };
110
+ for (const s in t)
111
+ if (Object.hasOwn(t, s) && this.controlledValues.get(s) === !0) {
112
+ delete t[s];
113
+ continue;
114
+ }
115
+ super.update(t);
164
116
  }
165
- return J(i);
166
- }
167
- function it(t, e) {
168
- const n = S(t);
169
- return n === e || !v(n) || z(n) ? !1 : b(n).position === "fixed" || it(n, e);
170
- }
171
- function Rt(t, e) {
172
- const n = e.get(t);
173
- if (n)
174
- return n;
175
- let i = V(t, [], !1).filter((c) => v(c) && _(c) !== "body"), o = null;
176
- const r = b(t).position === "fixed";
177
- let s = r ? S(t) : t;
178
- for (; v(s) && !z(s); ) {
179
- const c = b(s), f = Y(s);
180
- !f && c.position === "fixed" && (o = null), (r ? !f && !o : !f && c.position === "static" && !!o && vt.has(o.position) || q(s) && !f && it(t, s)) ? i = i.filter((u) => u !== s) : o = c, s = S(s);
117
+ /**
118
+ * Updates the entire store's state and notifies all registered listeners.
119
+ * Controlled keys are left unchanged; only uncontrolled keys from `newState` are applied.
120
+ *
121
+ * @param newState The new state to set for the store.
122
+ */
123
+ setState(e) {
124
+ const t = {
125
+ ...e
126
+ };
127
+ for (const s in t)
128
+ if (Object.hasOwn(t, s) && this.controlledValues.get(s) === !0) {
129
+ delete t[s];
130
+ continue;
131
+ }
132
+ super.setState({
133
+ ...this.state,
134
+ ...t
135
+ });
181
136
  }
182
- return e.set(t, i), i;
183
- }
184
- function Ct(t) {
185
- let {
186
- element: e,
187
- boundary: n,
188
- rootBoundary: i,
189
- strategy: o
190
- } = t;
191
- const s = [...n === "clippingAncestors" ? $(e) ? [] : Rt(e, this._c) : [].concat(n), i], c = s[0], f = s.reduce((l, u) => {
192
- const h = j(e, u, o);
193
- return l.top = E(h.top, l.top), l.right = N(h.right, l.right), l.bottom = N(h.bottom, l.bottom), l.left = E(h.left, l.left), l;
194
- }, j(e, c, o));
195
- return {
196
- width: f.right - f.left,
197
- height: f.bottom - f.top,
198
- x: f.left,
199
- y: f.top
200
- };
201
- }
202
- function Ot(t) {
203
- const {
204
- width: e,
205
- height: n
206
- } = Z(t);
207
- return {
208
- width: e,
209
- height: n
210
- };
211
- }
212
- function Lt(t, e, n) {
213
- const i = C(e), o = R(e), r = n === "fixed", s = T(t, !0, r, e);
214
- let c = {
215
- scrollLeft: 0,
216
- scrollTop: 0
137
+ /** Gets the current value from the store using a selector with the provided key.
138
+ *
139
+ * @param key Key of the selector to use.
140
+ */
141
+ select = (e, t, s, o) => {
142
+ const n = this.selectors[e];
143
+ return n(this.state, t, s, o);
217
144
  };
218
- const f = w(0);
219
- function l() {
220
- f.x = I(o);
221
- }
222
- if (i || !i && !r)
223
- if ((_(e) !== "body" || q(o)) && (c = H(e)), i) {
224
- const a = T(e, !0, r, e);
225
- f.x = a.x + e.clientLeft, f.y = a.y + e.clientTop;
226
- } else o && l();
227
- r && !i && o && l();
228
- const u = o && !i && !r ? et(o, c) : w(0), h = s.left + c.scrollLeft - f.x - u.x, d = s.top + c.scrollTop - f.y - u.y;
229
- return {
230
- x: h,
231
- y: d,
232
- width: s.width,
233
- height: s.height
145
+ /**
146
+ * Returns a value from the store's state using a selector function.
147
+ * Used to subscribe to specific parts of the state.
148
+ * This methods causes a rerender whenever the selected state changes.
149
+ *
150
+ * @param key Key of the selector to use.
151
+ */
152
+ useState = (e, t, s, o) => {
153
+ r.useDebugValue(e);
154
+ const n = this.selectors[e];
155
+ return a(this, n, t, s, o);
234
156
  };
235
- }
236
- function M(t) {
237
- return b(t).position === "static";
238
- }
239
- function G(t, e) {
240
- if (!C(t) || b(t).position === "fixed")
241
- return null;
242
- if (e)
243
- return e(t);
244
- let n = t.offsetParent;
245
- return R(t) === n && (n = n.ownerDocument.body), n;
246
- }
247
- function nt(t, e) {
248
- const n = L(t);
249
- if ($(t))
250
- return n;
251
- if (!C(t)) {
252
- let o = S(t);
253
- for (; o && !z(o); ) {
254
- if (v(o) && !M(o))
255
- return o;
256
- o = S(o);
257
- }
258
- return n;
157
+ /**
158
+ * Wraps a function with `useStableCallback` to ensure it has a stable reference
159
+ * and assigns it to the context.
160
+ *
161
+ * @param key Key of the event callback. Must be a function in the context.
162
+ * @param fn Function to assign.
163
+ */
164
+ useContextCallback(e, t) {
165
+ r.useDebugValue(e);
166
+ const s = h(t ?? d);
167
+ this.context[e] = s;
259
168
  }
260
- let i = G(t, e);
261
- for (; i && at(i) && M(i); )
262
- i = G(i, e);
263
- return i && z(i) && M(i) && !Y(i) ? n : i || dt(t) || n;
264
- }
265
- const Tt = async function(t) {
266
- const e = this.getOffsetParent || nt, n = this.getDimensions, i = await n(t.floating);
267
- return {
268
- reference: Lt(t.reference, await e(t.floating), t.strategy),
269
- floating: {
270
- x: 0,
271
- y: 0,
272
- width: i.width,
273
- height: i.height
274
- }
275
- };
276
- };
277
- function Et(t) {
278
- return b(t).direction === "rtl";
279
- }
280
- const Ft = {
281
- convertOffsetParentRelativeRectToViewportRelativeRect: mt,
282
- getDocumentElement: R,
283
- getClippingRect: Ct,
284
- getOffsetParent: nt,
285
- getElementRects: Tt,
286
- getClientRects: yt,
287
- getDimensions: Ot,
288
- getScale: F,
289
- isElement: v,
290
- isRTL: Et
291
- };
292
- function ot(t, e) {
293
- return t.x === e.x && t.y === e.y && t.width === e.width && t.height === e.height;
294
- }
295
- function St(t, e) {
296
- let n = null, i;
297
- const o = R(t);
298
- function r() {
299
- var c;
300
- clearTimeout(i), (c = n) == null || c.disconnect(), n = null;
169
+ /**
170
+ * Returns a stable setter function for a specific key in the store's state.
171
+ * It's commonly used to pass as a ref callback to React elements.
172
+ *
173
+ * @param key Key of the state to set.
174
+ */
175
+ useStateSetter(e) {
176
+ const t = r.useRef(void 0);
177
+ return t.current === void 0 && (t.current = (s) => {
178
+ this.set(e, s);
179
+ }), t.current;
301
180
  }
302
- function s(c, f) {
303
- c === void 0 && (c = !1), f === void 0 && (f = 1), r();
304
- const l = t.getBoundingClientRect(), {
305
- left: u,
306
- top: h,
307
- width: d,
308
- height: a
309
- } = l;
310
- if (c || e(), !d || !a)
311
- return;
312
- const m = A(h), p = A(o.clientWidth - (u + d)), y = A(o.clientHeight - (h + a)), g = A(u), O = {
313
- rootMargin: -m + "px " + -p + "px " + -y + "px " + -g + "px",
314
- threshold: E(0, N(1, f)) || 1
315
- };
316
- let W = !0;
317
- function k(P) {
318
- const B = P[0].intersectionRatio;
319
- if (B !== f) {
320
- if (!W)
321
- return s();
322
- B ? s(!1, B) : i = setTimeout(() => {
323
- s(!1, 1e-7);
324
- }, 1e3);
181
+ /**
182
+ * Observes changes derived from the store's selectors and calls the listener when the selected value changes.
183
+ *
184
+ * @param key Key of the selector to observe.
185
+ * @param listener Listener function called when the selector result changes.
186
+ */
187
+ observe(e, t) {
188
+ let s;
189
+ typeof e == "function" ? s = e : s = this.selectors[e];
190
+ let o = s(this.state);
191
+ return t(o, o, this), this.subscribe((n) => {
192
+ const u = s(n);
193
+ if (!Object.is(o, u)) {
194
+ const c = o;
195
+ o = u, t(u, c, this);
325
196
  }
326
- B === 1 && !ot(l, t.getBoundingClientRect()) && s(), W = !1;
327
- }
328
- try {
329
- n = new IntersectionObserver(k, {
330
- ...O,
331
- // Handle <iframe>s
332
- root: o.ownerDocument
333
- });
334
- } catch {
335
- n = new IntersectionObserver(k, O);
336
- }
337
- n.observe(t);
197
+ });
338
198
  }
339
- return s(!0), r;
340
199
  }
341
- function Dt(t, e, n, i) {
342
- i === void 0 && (i = {});
343
- const {
344
- ancestorScroll: o = !0,
345
- ancestorResize: r = !0,
346
- elementResize: s = typeof ResizeObserver == "function",
347
- layoutShift: c = typeof IntersectionObserver == "function",
348
- animationFrame: f = !1
349
- } = i, l = X(t), u = o || r ? [...l ? V(l) : [], ...V(e)] : [];
350
- u.forEach((g) => {
351
- o && g.addEventListener("scroll", n, {
352
- passive: !0
353
- }), r && g.addEventListener("resize", n);
354
- });
355
- const h = l && c ? St(l, n) : null;
356
- let d = -1, a = null;
357
- s && (a = new ResizeObserver((g) => {
358
- let [x] = g;
359
- x && x.target === l && a && (a.unobserve(e), cancelAnimationFrame(d), d = requestAnimationFrame(() => {
360
- var O;
361
- (O = a) == null || O.observe(e);
362
- })), n();
363
- }), l && !f && a.observe(l), a.observe(e));
364
- let m, p = f ? T(t) : null;
365
- f && y();
366
- function y() {
367
- const g = T(t);
368
- p && !ot(p, g) && n(), p = g, m = requestAnimationFrame(y);
369
- }
370
- return n(), () => {
371
- var g;
372
- u.forEach((x) => {
373
- o && x.removeEventListener("scroll", n), r && x.removeEventListener("resize", n);
374
- }), h?.(), (g = a) == null || g.disconnect(), a = null, f && cancelAnimationFrame(m);
375
- };
376
- }
377
- const zt = rt, Ht = ut, It = st, Mt = ct, Nt = lt, Vt = ht, $t = (t, e, n) => {
378
- const i = /* @__PURE__ */ new Map(), o = {
379
- platform: Ft,
380
- ...n
381
- }, r = {
382
- ...o.platform,
383
- _c: i
384
- };
385
- return ft(t, e, {
386
- ...o,
387
- platform: r
388
- });
389
- };
390
200
  export {
391
- Dt as autoUpdate,
392
- $t as computePosition,
393
- It as flip,
394
- V as getOverflowAncestors,
395
- Nt as hide,
396
- Vt as limitShift,
397
- zt as offset,
398
- Ft as platform,
399
- Ht as shift,
400
- Mt as size
201
+ O as ReactStore
401
202
  };
package/dist/index219.js CHANGED
@@ -1,6 +1,50 @@
1
- let h = /* @__PURE__ */ (function(d) {
2
- return d.checked = "data-checked", d.unchecked = "data-unchecked", d.disabled = "data-disabled", d.highlighted = "data-highlighted", d;
3
- })({});
1
+ import i from "./index94.js";
2
+ class a {
3
+ constructor() {
4
+ this.elements = /* @__PURE__ */ new Set(), this.idMap = /* @__PURE__ */ new Map();
5
+ }
6
+ /**
7
+ * Adds a trigger element with the given ID.
8
+ *
9
+ * Note: The provided element is assumed to not be registered under multiple IDs.
10
+ */
11
+ add(e, t) {
12
+ const s = this.idMap.get(e);
13
+ if (s !== t && (s !== void 0 && this.elements.delete(s), this.elements.add(t), this.idMap.set(e, t), process.env.NODE_ENV !== "production" && this.elements.size !== this.idMap.size))
14
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap." : i(87));
15
+ }
16
+ /**
17
+ * Removes the trigger element with the given ID.
18
+ */
19
+ delete(e) {
20
+ const t = this.idMap.get(e);
21
+ t && (this.elements.delete(t), this.idMap.delete(e));
22
+ }
23
+ /**
24
+ * Whether the given element is registered as a trigger.
25
+ */
26
+ hasElement(e) {
27
+ return this.elements.has(e);
28
+ }
29
+ /**
30
+ * Whether there is a registered trigger element matching the given predicate.
31
+ */
32
+ hasMatchingElement(e) {
33
+ for (const t of this.elements)
34
+ if (e(t))
35
+ return !0;
36
+ return !1;
37
+ }
38
+ getById(e) {
39
+ return this.idMap.get(e);
40
+ }
41
+ entries() {
42
+ return this.idMap.entries();
43
+ }
44
+ get size() {
45
+ return this.idMap.size;
46
+ }
47
+ }
4
48
  export {
5
- h as MenuCheckboxItemDataAttributes
49
+ a as PopupTriggerMap
6
50
  };
package/dist/index22.js CHANGED
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import * as s from "react";
3
- import { inertValue as m } from "./index109.js";
4
- import { useDialogRootContext as d } from "./index96.js";
5
- import { DialogPortalContext as c } from "./index105.js";
6
- import { InternalBackdrop as u } from "./index110.js";
3
+ import { inertValue as m } from "./index116.js";
4
+ import { useDialogRootContext as d } from "./index103.js";
5
+ import { DialogPortalContext as c } from "./index112.js";
6
+ import { InternalBackdrop as u } from "./index117.js";
7
7
  import { jsx as n, jsxs as f } from "react/jsx-runtime";
8
- import { FloatingPortal as p } from "./index111.js";
8
+ import { FloatingPortal as p } from "./index118.js";
9
9
  const P = /* @__PURE__ */ s.forwardRef(function(t, a) {
10
10
  const {
11
11
  keepMounted: r = !1,