@bioturing/components 0.42.0 → 0.44.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 (136) hide show
  1. package/dist/components/button/component.d.ts.map +1 -1
  2. package/dist/components/button/component.js +41 -34
  3. package/dist/components/button/component.js.map +1 -1
  4. package/dist/components/button/style.css +1 -1
  5. package/dist/components/combobox/component.d.ts.map +1 -1
  6. package/dist/components/combobox/component.js +136 -126
  7. package/dist/components/combobox/component.js.map +1 -1
  8. package/dist/components/command-palette/component.d.ts +7 -0
  9. package/dist/components/command-palette/component.d.ts.map +1 -1
  10. package/dist/components/command-palette/component.js +35 -33
  11. package/dist/components/command-palette/component.js.map +1 -1
  12. package/dist/components/dialog/Dialog.d.ts +53 -0
  13. package/dist/components/dialog/Dialog.d.ts.map +1 -0
  14. package/dist/components/dialog/Dialog.js +231 -0
  15. package/dist/components/dialog/Dialog.js.map +1 -0
  16. package/dist/components/dialog/constants.d.ts +20 -0
  17. package/dist/components/dialog/constants.d.ts.map +1 -0
  18. package/dist/components/dialog/constants.js +20 -0
  19. package/dist/components/dialog/constants.js.map +1 -0
  20. package/dist/components/dialog/dialog.css +1 -0
  21. package/dist/components/dialog/index.d.ts +4 -0
  22. package/dist/components/dialog/index.d.ts.map +1 -0
  23. package/dist/components/dialog/index.js +8 -0
  24. package/dist/components/dialog/index.js.map +1 -0
  25. package/dist/components/dropdown-menu/component.d.ts +8 -1
  26. package/dist/components/dropdown-menu/component.d.ts.map +1 -1
  27. package/dist/components/dropdown-menu/component.js +165 -141
  28. package/dist/components/dropdown-menu/component.js.map +1 -1
  29. package/dist/components/dropdown-menu/style.css +1 -1
  30. package/dist/components/ds-root/component.d.ts +6 -1
  31. package/dist/components/ds-root/component.d.ts.map +1 -1
  32. package/dist/components/ds-root/component.js +15 -14
  33. package/dist/components/ds-root/component.js.map +1 -1
  34. package/dist/components/form/style.css +1 -1
  35. package/dist/components/hooks/index.d.ts +0 -1
  36. package/dist/components/hooks/index.d.ts.map +1 -1
  37. package/dist/components/icon-button/style.css +1 -1
  38. package/dist/components/index.d.ts +2 -0
  39. package/dist/components/index.d.ts.map +1 -1
  40. package/dist/components/label-with-help/component.d.ts +20 -0
  41. package/dist/components/label-with-help/component.d.ts.map +1 -0
  42. package/dist/components/label-with-help/component.js +39 -0
  43. package/dist/components/label-with-help/component.js.map +1 -0
  44. package/dist/components/label-with-help/index.d.ts +2 -0
  45. package/dist/components/label-with-help/index.d.ts.map +1 -0
  46. package/dist/components/label-with-help/style.css +1 -0
  47. package/dist/components/modal/Modal.d.ts.map +1 -1
  48. package/dist/components/modal/Modal.js +157 -133
  49. package/dist/components/modal/Modal.js.map +1 -1
  50. package/dist/components/popup-panel/component.d.ts +2 -111
  51. package/dist/components/popup-panel/component.d.ts.map +1 -1
  52. package/dist/components/popup-panel/component.js +259 -143
  53. package/dist/components/popup-panel/component.js.map +1 -1
  54. package/dist/components/popup-panel/constants.d.ts +1 -0
  55. package/dist/components/popup-panel/constants.d.ts.map +1 -1
  56. package/dist/components/popup-panel/constants.js +2 -0
  57. package/dist/components/popup-panel/constants.js.map +1 -1
  58. package/dist/components/popup-panel/index.d.ts +1 -0
  59. package/dist/components/popup-panel/index.d.ts.map +1 -1
  60. package/dist/components/popup-panel/types.d.ts +124 -0
  61. package/dist/components/popup-panel/types.d.ts.map +1 -0
  62. package/dist/components/popup-panel/utils.d.ts +1 -1
  63. package/dist/components/popup-panel/utils.d.ts.map +1 -1
  64. package/dist/components/popup-panel/utils.js +5 -5
  65. package/dist/components/popup-panel/utils.js.map +1 -1
  66. package/dist/components/resizable/component.d.ts.map +1 -1
  67. package/dist/components/resizable/component.js +28 -28
  68. package/dist/components/resizable/component.js.map +1 -1
  69. package/dist/components/select/component.d.ts.map +1 -1
  70. package/dist/components/select/component.js +130 -120
  71. package/dist/components/select/component.js.map +1 -1
  72. package/dist/components/select-trigger/style.css +1 -1
  73. package/dist/components/spin/Indicator/Looper.d.ts +6 -0
  74. package/dist/components/spin/Indicator/Looper.d.ts.map +1 -0
  75. package/dist/components/spin/Indicator/Looper.js +15 -0
  76. package/dist/components/spin/Indicator/Looper.js.map +1 -0
  77. package/dist/components/spin/Indicator/Progress.d.ts +6 -0
  78. package/dist/components/spin/Indicator/Progress.d.ts.map +1 -0
  79. package/dist/components/spin/Indicator/Progress.js +59 -0
  80. package/dist/components/spin/Indicator/Progress.js.map +1 -0
  81. package/dist/components/spin/Indicator/index.d.ts +8 -0
  82. package/dist/components/spin/Indicator/index.d.ts.map +1 -0
  83. package/dist/components/spin/Indicator/index.js +20 -0
  84. package/dist/components/spin/Indicator/index.js.map +1 -0
  85. package/dist/components/spin/component.d.ts +28 -4
  86. package/dist/components/spin/component.d.ts.map +1 -1
  87. package/dist/components/spin/component.js +162 -14
  88. package/dist/components/spin/component.js.map +1 -1
  89. package/dist/components/spin/style.css +1 -1
  90. package/dist/components/spin/usePercent.d.ts +2 -0
  91. package/dist/components/spin/usePercent.d.ts.map +1 -0
  92. package/dist/components/spin/usePercent.js +27 -0
  93. package/dist/components/spin/usePercent.js.map +1 -0
  94. package/dist/components/theme-provider/style.css +1 -1
  95. package/dist/components/toast/component.d.ts +2 -2
  96. package/dist/components/toast/component.d.ts.map +1 -1
  97. package/dist/components/toast/component.js +14 -20
  98. package/dist/components/toast/component.js.map +1 -1
  99. package/dist/components/toast/function.d.ts +7 -8
  100. package/dist/components/toast/function.d.ts.map +1 -1
  101. package/dist/components/toast/function.js.map +1 -1
  102. package/dist/components/toast/style.css +1 -1
  103. package/dist/components/toast/types.d.ts +4 -0
  104. package/dist/components/toast/types.d.ts.map +1 -1
  105. package/dist/components/utils/cn.d.ts.map +1 -1
  106. package/dist/components/utils/cn.js +112 -20
  107. package/dist/components/utils/cn.js.map +1 -1
  108. package/dist/components/utils/placement.d.ts +9 -2
  109. package/dist/components/utils/placement.d.ts.map +1 -1
  110. package/dist/components/utils/placement.js +29 -18
  111. package/dist/components/utils/placement.js.map +1 -1
  112. package/dist/components/utils/reactElement.d.ts +2 -0
  113. package/dist/components/utils/reactElement.d.ts.map +1 -1
  114. package/dist/components/utils/reactElement.js +10 -2
  115. package/dist/components/utils/reactElement.js.map +1 -1
  116. package/dist/components/utils/renderProp.d.ts.map +1 -1
  117. package/dist/components/utils/renderProp.js +9 -8
  118. package/dist/components/utils/renderProp.js.map +1 -1
  119. package/dist/components/utils/theme.d.ts.map +1 -1
  120. package/dist/components/utils/theme.js +3 -1
  121. package/dist/components/utils/theme.js.map +1 -1
  122. package/dist/index.js +239 -235
  123. package/dist/index.js.map +1 -1
  124. package/dist/metadata.d.ts +28 -1
  125. package/dist/metadata.d.ts.map +1 -1
  126. package/dist/metadata.js +52 -1
  127. package/dist/metadata.js.map +1 -1
  128. package/dist/stats.html +1 -1
  129. package/dist/tokens/and-theme/tokens.d.ts.map +1 -1
  130. package/dist/tokens/and-theme/tokens.js +61 -56
  131. package/dist/tokens/and-theme/tokens.js.map +1 -1
  132. package/package.json +3 -3
  133. package/dist/components/hooks/useBaseUIPlacement.d.ts +0 -64
  134. package/dist/components/hooks/useBaseUIPlacement.d.ts.map +0 -1
  135. package/dist/components/hooks/useBaseUIPlacement.js +0 -61
  136. package/dist/components/hooks/useBaseUIPlacement.js.map +0 -1
@@ -1,186 +1,302 @@
1
1
  "use client";
2
- import { jsx as r, jsxs as t } from "react/jsx-runtime";
3
- import { Popover as n } from "@base-ui/react/popover";
4
- import { mergeProps as y } from "@base-ui/react";
5
- import { X as Y } from "@bioturing/assets";
6
- import { useMemo as z, useState as Z, useCallback as _ } from "react";
7
- import { Stack as ee } from "../stack/index.js";
8
- import { PopupPanelSize as re } from "./constants.js";
2
+ import { jsx as n, jsxs as u, Fragment as de } from "react/jsx-runtime";
3
+ import { Popover as f } from "@base-ui/react/popover";
4
+ import { mergeProps as V } from "@base-ui/react";
5
+ import { useStableCallback as ae } from "@base-ui/utils/useStableCallback";
6
+ import { X as me } from "@bioturing/assets";
7
+ import { useRef as Z, useCallback as k, useMemo as s, useEffect as ge } from "react";
8
+ import { Stack as he } from "../stack/index.js";
9
+ import { PopupPanelSize as Oe, DEFAULT_SIDE_OFFSET as be } from "./constants.js";
9
10
  import './style.css';/* empty css */
10
- import { anchorToResizeHandles as oe } from "./utils.js";
11
- import { useDraggable as ne } from "../hooks/useDraggable.js";
12
- import { Resizable as pe } from "../resizable/component.js";
13
- import { useControlledState as ie } from "../hooks/useControlledState.js";
14
- import { useCls as te } from "../utils/antdUtils.js";
15
- import { useTheme as le } from "../theme-provider/context/themeStore.js";
16
- import { parseAntdPlacement as ae } from "../utils/placement.js";
17
- import { useBaseUIPlacement as se } from "../hooks/useBaseUIPlacement.js";
18
- import { clsx as p } from "../utils/cn.js";
19
- import { IconButton as ce } from "../icon-button/component.js";
20
- const we = ({
21
- children: H,
22
- placement: I,
23
- openOnHover: b = !1,
24
- open: k,
25
- onOpenChange: w,
26
- content: f,
27
- title: l,
28
- trigger: A = "click",
29
- className: h,
30
- anchor: T,
31
- beforeCloseButton: g,
32
- afterCloseButton: P,
33
- afterTitle: m,
34
- size: a = "medium",
35
- footer: i,
36
- defaultOpen: j = !1,
37
- resizable: v = !1,
38
- draggable: K = !1,
39
- maintainAspectRatio: U = !1,
11
+ import { anchorToResizeHandles as Ee } from "./utils.js";
12
+ import { useDraggable as Se } from "../hooks/useDraggable.js";
13
+ import { Resizable as Re } from "../resizable/component.js";
14
+ import { parseAntdPlacement as Pe, buildAntdPlacement as ve } from "../utils/placement.js";
15
+ import { useControlledState as ye } from "../hooks/useControlledState.js";
16
+ import { useCls as Te } from "../utils/antdUtils.js";
17
+ import { useTheme as ke } from "../theme-provider/context/themeStore.js";
18
+ import { clsx as d } from "../utils/cn.js";
19
+ import { IconButton as Ce } from "../icon-button/component.js";
20
+ const H = {};
21
+ function W({
22
+ side: g,
23
+ align: P,
24
+ onPlacementChange: h
25
+ }) {
26
+ const v = Z(void 0);
27
+ return ge(() => {
28
+ const O = ve({
29
+ side: g,
30
+ align: P
31
+ });
32
+ O !== v.current && (v.current = O, h?.(O));
33
+ }, [g, P, h]), null;
34
+ }
35
+ const Ye = ({
36
+ children: g,
37
+ placement: P,
38
+ openOnHover: h = !1,
39
+ open: v,
40
+ onOpenChange: O,
41
+ content: I,
42
+ title: y,
43
+ trigger: z = "click",
44
+ className: A,
45
+ anchor: o,
46
+ beforeCloseButton: M,
47
+ afterCloseButton: $,
48
+ afterTitle: C,
49
+ size: b = "medium",
50
+ footer: E,
51
+ defaultOpen: N = !1,
52
+ resizable: x = !1,
53
+ draggable: ee = !1,
54
+ maintainAspectRatio: j = !1,
40
55
  classNames: e,
41
- modal: D = !1,
42
- closeOnClickOutside: E = !0,
43
- onPlacementChange: M,
44
- positionerProps: X = {},
45
- triggerProps: $ = {},
46
- portalProps: q = {},
47
- ...B
56
+ modal: te = !1,
57
+ closeOnClickOutside: re = !0,
58
+ onPlacementChange: _,
59
+ positionerProps: i = H,
60
+ triggerProps: ne = H,
61
+ portalProps: oe = H,
62
+ offsetFrom: S,
63
+ nativeButton: K = !0,
64
+ ...le
48
65
  }) => {
49
- const [C, u] = ie(
50
- k,
51
- w,
52
- j
66
+ const [ie, D] = ye(
67
+ v,
68
+ O,
69
+ N
53
70
  // Always provide a default value to prevent undefined
54
- ), o = te(), { className: F } = le(), s = ae(I), S = z(() => /* @__PURE__ */ r(Y, { size: 16 }), []), [G, J] = Z(
55
- null
56
- ), { currentSide: L, currentAlign: N, placementChangeKey: Q } = se({
57
- positionerRef: G,
58
- open: C,
59
- initialSide: s.side,
60
- initialAlign: s.align,
61
- onPlacementChange: M
62
- }), R = _(() => /* @__PURE__ */ t("div", { className: p(o("popup-panel-header"), e?.header), children: [
63
- /* @__PURE__ */ t(
64
- ee,
71
+ ), t = Te(), { className: U } = ke(), T = Pe(P), w = Z(null), B = k((r) => {
72
+ r === null || w.current === r || (w.current = r);
73
+ }, []), F = k(() => {
74
+ if (o instanceof Element) return o;
75
+ if (o != null && "current" in o) return o.current;
76
+ if (typeof o == "function") {
77
+ const r = o();
78
+ return r instanceof Element ? r : null;
79
+ }
80
+ return w.current;
81
+ }, [o]), J = s(() => {
82
+ if (typeof i.sideOffset == "function")
83
+ return i.sideOffset;
84
+ const r = typeof i.sideOffset == "number" ? i.sideOffset : 0, l = be + r;
85
+ return S ? ({ side: Q }) => {
86
+ const R = S.current, p = F();
87
+ if (!R || !p) return l;
88
+ const c = R.getBoundingClientRect(), a = p.getBoundingClientRect();
89
+ let m;
90
+ switch (Q) {
91
+ case "bottom":
92
+ m = c.bottom - a.bottom;
93
+ break;
94
+ case "top":
95
+ m = a.top - c.top;
96
+ break;
97
+ case "right":
98
+ m = c.right - a.right;
99
+ break;
100
+ case "left":
101
+ m = a.left - c.left;
102
+ break;
103
+ default:
104
+ m = 0;
105
+ }
106
+ return Math.max(0, m) + l;
107
+ } : l;
108
+ }, [S, F, i.sideOffset]), L = s(() => /* @__PURE__ */ n(me, { size: 16 }), []), X = k(() => /* @__PURE__ */ u("div", { className: d(t("popup-panel-header"), e?.header), children: [
109
+ /* @__PURE__ */ u(
110
+ he,
65
111
  {
66
112
  align: "center",
67
113
  gap: 8,
68
- className: o("popup-panel-title-wrapper"),
114
+ className: t("popup-panel-title-wrapper"),
69
115
  children: [
70
- /* @__PURE__ */ r(
71
- n.Title,
116
+ /* @__PURE__ */ n(
117
+ f.Title,
72
118
  {
73
- render: /* @__PURE__ */ r("div", { className: p(o("grow", "truncate"), e?.title), children: l })
119
+ render: /* @__PURE__ */ n("div", { className: d(t("grow", "truncate"), e?.title), children: y })
74
120
  }
75
121
  ),
76
- /* @__PURE__ */ t("div", { className: "flex items-center gap-2", children: [
77
- g,
78
- /* @__PURE__ */ r(
79
- n.Close,
122
+ /* @__PURE__ */ u("div", { className: "flex items-center gap-2", children: [
123
+ M,
124
+ /* @__PURE__ */ n(
125
+ f.Close,
80
126
  {
81
- render: /* @__PURE__ */ r(ce, { children: S })
127
+ render: /* @__PURE__ */ n(Ce, { children: L })
82
128
  }
83
129
  ),
84
- P
130
+ $
85
131
  ] })
86
132
  ]
87
133
  }
88
134
  ),
89
- m || null
135
+ C || null
90
136
  ] }), [
91
- P,
92
- m,
93
- g,
94
- o,
137
+ $,
138
+ C,
139
+ M,
140
+ t,
95
141
  e?.header,
96
142
  e?.title,
97
- S,
98
- l
99
- ]), { ref: x } = ne(K), V = z(
100
- () => /* @__PURE__ */ t(
101
- n.Popup,
143
+ L,
144
+ y
145
+ ]), { ref: Y } = Se(ee), ce = s(
146
+ () => /* @__PURE__ */ u(
147
+ f.Popup,
102
148
  {
103
- className: p(
104
- o("popup-panel"),
105
- o(`popup-panel-size-${a}`),
106
- h,
149
+ className: d(
150
+ t("popup-panel"),
151
+ t(`popup-panel-size-${b}`),
152
+ A,
107
153
  e?.popup
108
154
  ),
109
- ref: x,
155
+ ref: Y,
110
156
  children: [
111
- l && R(),
112
- /* @__PURE__ */ r("div", { className: p(o("popup-panel-content"), e?.content), children: /* @__PURE__ */ r("div", { className: o("popup-panel-content-inner"), children: f }) }),
113
- i && /* @__PURE__ */ r("div", { className: p(o("popup-panel-footer"), e?.footer), children: typeof i == "function" ? i({ close: () => u(!1) }) : i })
157
+ y && X(),
158
+ /* @__PURE__ */ n("div", { className: d(t("popup-panel-content"), e?.content), children: /* @__PURE__ */ n("div", { className: t("popup-panel-content-inner"), children: I }) }),
159
+ E && /* @__PURE__ */ n("div", { className: d(t("popup-panel-footer"), e?.footer), children: typeof E == "function" ? E({ close: () => D(!1) }) : E })
114
160
  ]
115
161
  }
116
162
  ),
117
163
  [
118
- h,
164
+ A,
119
165
  e?.content,
120
166
  e?.footer,
121
167
  e?.popup,
122
- o,
123
- f,
124
- x,
125
- i,
126
- R,
127
- u,
128
- a,
129
- l
168
+ t,
169
+ I,
170
+ Y,
171
+ E,
172
+ X,
173
+ D,
174
+ b,
175
+ y
130
176
  ]
131
- ), W = {
132
- ref: J,
133
- className: p(o("popup-panel-root"), F, e?.root),
134
- side: s.side,
135
- align: s.align,
136
- sideOffset: 4,
137
- anchor: T,
138
- style: {
139
- "--size-width": a ? re[a] : void 0
177
+ ), q = k(
178
+ ({
179
+ children: r,
180
+ onDragEnd: l,
181
+ onDragStart: Q,
182
+ ...R
183
+ }, { side: p, align: c }) => {
184
+ const a = `${p}-${c}`;
185
+ return x ? /* @__PURE__ */ u(de, { children: [
186
+ /* @__PURE__ */ n(
187
+ W,
188
+ {
189
+ side: p,
190
+ align: c,
191
+ onPlacementChange: _
192
+ }
193
+ ),
194
+ /* @__PURE__ */ n(
195
+ Re,
196
+ {
197
+ resizable: x,
198
+ resetKey: a,
199
+ maintainAspectRatio: j,
200
+ classNames: {
201
+ resizeHandle: e?.resizeHandle
202
+ },
203
+ handles: Ee(p),
204
+ ...R,
205
+ children: r
206
+ }
207
+ )
208
+ ] }) : /* @__PURE__ */ u("div", { ...R, children: [
209
+ /* @__PURE__ */ n(
210
+ W,
211
+ {
212
+ side: p,
213
+ align: c,
214
+ onPlacementChange: _
215
+ }
216
+ ),
217
+ r
218
+ ] });
140
219
  },
141
- render: ({ children: c, onDragEnd: d, onDragStart: de, ...O }) => v ? /* @__PURE__ */ r(
142
- pe,
143
- {
144
- resizable: v,
145
- resetKey: Q,
146
- maintainAspectRatio: U,
147
- classNames: {
148
- resizeHandle: e?.resizeHandle
149
- },
150
- handles: oe(L, N),
151
- ...O,
152
- children: c
153
- }
154
- ) : /* @__PURE__ */ r("div", { ...O, children: c })
155
- };
156
- return /* @__PURE__ */ t(
157
- n.Root,
220
+ [
221
+ x,
222
+ j,
223
+ e?.resizeHandle,
224
+ _
225
+ ]
226
+ ), G = s(
227
+ () => ({
228
+ "--size-width": b ? Oe[b] : void 0
229
+ }),
230
+ [b]
231
+ ), pe = s(
232
+ () => ({
233
+ className: d(
234
+ t("popup-panel-root"),
235
+ U,
236
+ e?.root
237
+ ),
238
+ side: T.side,
239
+ align: T.align,
240
+ sideOffset: J,
241
+ anchor: o,
242
+ style: G,
243
+ render: q
244
+ }),
245
+ [
246
+ t,
247
+ U,
248
+ e?.root,
249
+ T.side,
250
+ T.align,
251
+ J,
252
+ o,
253
+ G,
254
+ q
255
+ ]
256
+ ), ue = s(
257
+ () => S ? (({ sideOffset: r, ...l }) => l)(i) : i,
258
+ [S, i]
259
+ ), fe = ae(
260
+ (r, l) => {
261
+ (l.reason === "outside-press" || l.reason === "focus-out") && !re || D(r, l);
262
+ }
263
+ ), se = s(
264
+ () => ({
265
+ ref: B,
266
+ render: g,
267
+ nativeButton: K,
268
+ className: d(t("popup-panel-trigger"), e?.trigger),
269
+ openOnHover: z === "hover" ? !0 : h
270
+ }),
271
+ [
272
+ B,
273
+ g,
274
+ K,
275
+ t,
276
+ e?.trigger,
277
+ z,
278
+ h
279
+ ]
280
+ );
281
+ return /* @__PURE__ */ u(
282
+ f.Root,
158
283
  {
159
- open: C,
160
- onOpenChange: (c, d) => {
161
- (d.reason === "outside-press" || d.reason === "focus-out") && !E || u(c, d);
162
- },
163
- modal: D,
164
- ...B,
284
+ open: ie,
285
+ onOpenChange: fe,
286
+ modal: te,
287
+ ...le,
165
288
  children: [
166
- /* @__PURE__ */ r(
167
- n.Trigger,
289
+ /* @__PURE__ */ n(
290
+ f.Trigger,
168
291
  {
169
- ...y(
170
- {
171
- render: H,
172
- className: p(o("popup-panel-trigger"), e?.trigger),
173
- openOnHover: A === "hover" ? !0 : b
174
- },
175
- $
176
- )
292
+ ...V(se, ne)
177
293
  }
178
294
  ),
179
- /* @__PURE__ */ r(n.Portal, { ...q, children: /* @__PURE__ */ r(
180
- n.Positioner,
295
+ /* @__PURE__ */ n(f.Portal, { ...oe, children: /* @__PURE__ */ n(
296
+ f.Positioner,
181
297
  {
182
- ...y(W, X),
183
- children: V
298
+ ...V(pe, ue),
299
+ children: ce
184
300
  }
185
301
  ) })
186
302
  ]
@@ -188,6 +304,6 @@ const we = ({
188
304
  );
189
305
  };
190
306
  export {
191
- we as PopupPanel
307
+ Ye as PopupPanel
192
308
  };
193
309
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/popup-panel/component.tsx"],"sourcesContent":["\"use client\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport { clsx, parseAntdPlacement, useCls } from \"../utils\";\n\nimport { mergeProps } from \"@base-ui/react\";\nimport { X } from \"@bioturing/assets\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useControlledState, useDraggable, useBaseUIPlacement } from \"../hooks\";\nimport { IconButton } from \"../icon-button\";\nimport { Resizable } from \"../resizable\";\nimport { Stack } from \"../stack\";\nimport { PopupPanelSize } from \"./constants\";\n\n// Import component-specific styles\nimport { useTheme } from \"../theme-provider\";\nimport \"./style.css\";\nimport { anchorToResizeHandles } from \"./utils\";\n\nexport type PopupPanelPlacement =\n | \"top\"\n | \"left\"\n | \"right\"\n | \"bottom\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\"\n | \"leftTop\"\n | \"leftBottom\"\n | \"rightTop\"\n | \"rightBottom\";\n\nexport interface PopupPanelProps\n extends Omit<\n React.ComponentPropsWithRef<\"div\">,\n \"title\" | \"content\" | \"children\"\n >,\n Omit<Popover.Root.Props, \"children\"> {\n /** The trigger element that opens the popup panel */\n children?: React.ComponentProps<typeof Popover.Trigger>[\"render\"];\n /** Placement of the popup panel relative to its trigger */\n placement?: PopupPanelPlacement;\n /** Whether to open the popup panel on hover */\n openOnHover?: boolean;\n /** Controls the open state of the popup panel */\n open?: boolean;\n /** Callback fired when the open state changes */\n onOpenChange?: Popover.Root.Props[\"onOpenChange\"];\n /** Content to display inside the popup panel */\n content?: React.ReactNode;\n /** Title text or element to display in the panel header */\n title?: React.ReactNode;\n /** The event that triggers the popup panel */\n /**\n * @default \"click\"\n */\n trigger?: \"click\" | \"hover\";\n /** Custom anchor element for positioning the panel */\n anchor?: Popover.Positioner.Props[\"anchor\"];\n /** Content to display before the close button */\n beforeCloseButton?: React.ReactNode;\n /** Content to display after the close button */\n afterCloseButton?: React.ReactNode;\n /** Content to display after the title */\n afterTitle?: React.ReactNode;\n /**\n * Predefined sizes for the popup panel\n * - xsmall: 320px\n * - small: 400px\n * - medium: 480px (default)\n * - large: 640px\n * - xlarge: 840px\n * @default \"medium\" for default type, \"xsmall\" for other types\n */\n size?: keyof typeof PopupPanelSize;\n /**\n * Footer content for the popup panel\n * Can be a React node or a function that returns a React node\n */\n footer?:\n | React.ReactNode\n | ((props: { close: () => void }) => React.ReactNode);\n /**\n * Whether the panel should be open by default when uncontrolled\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Whether the panel should be resizable\n * @default false\n */\n resizable?: boolean;\n /**\n * Whether the panel should be draggable\n * @default false\n */\n draggable?: boolean;\n /**\n * Whether to maintain aspect ratio when resizing\n * Only applies when resizable is true\n * @default false\n */\n maintainAspectRatio?: boolean;\n /**\n * Custom class names for different parts of the popup panel\n * @default {}\n */\n classNames?: {\n root?: string;\n trigger?: string;\n popup?: string;\n header?: string;\n title?: string;\n content?: string;\n footer?: string;\n resizeHandle?: string;\n };\n /**\n * Whether to close the panel when clicking outside\n * @default true\n */\n closeOnClickOutside?: boolean;\n /**\n * Whether to use modal mode\n * @default false\n */\n modal?: Popover.Root.Props[\"modal\"];\n /**\n * Callback function when the placement changes\n */\n onPlacementChange?: (placement: PopupPanelPlacement) => void;\n /**\n * Props to pass to the positioner\n */\n positionerProps?: Popover.Positioner.Props;\n /**\n * Props to pass to the trigger\n */\n triggerProps?: Popover.Trigger.Props;\n /**\n * Props to pass to the portal\n */\n portalProps?: Popover.Portal.Props;\n}\n\nexport const PopupPanel = ({\n children,\n placement,\n openOnHover = false,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n content,\n title,\n trigger = \"click\",\n className,\n anchor,\n beforeCloseButton,\n afterCloseButton,\n afterTitle,\n size = \"medium\",\n footer,\n defaultOpen = false,\n resizable = false,\n draggable = false,\n maintainAspectRatio = false,\n classNames,\n modal = false,\n closeOnClickOutside = true,\n onPlacementChange,\n positionerProps = {},\n triggerProps = {},\n portalProps = {},\n ...rest\n}: PopupPanelProps) => {\n // Use controlled state with proper initialization to prevent switching between controlled/uncontrolled\n const [open, setOpen] = useControlledState(\n outsideOpen,\n outsideOnOpenChange,\n defaultOpen // Always provide a default value to prevent undefined\n );\n\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const baseUIPlacement = parseAntdPlacement(placement);\n\n const defaultCloseIcon = useMemo(() => <X size={16} />, []);\n\n const [positionerRef, setPositionerRef] = useState<HTMLDivElement | null>(\n null\n );\n\n // Track Base UI placement changes\n const { currentSide, currentAlign, placementChangeKey } = useBaseUIPlacement({\n positionerRef,\n open,\n initialSide: baseUIPlacement.side,\n initialAlign: baseUIPlacement.align,\n onPlacementChange,\n });\n\n const renderTitle = useCallback(() => {\n return (\n <div className={clsx(cls(\"popup-panel-header\"), classNames?.header)}>\n <Stack\n align=\"center\"\n gap={8}\n className={cls(\"popup-panel-title-wrapper\")}\n >\n <Popover.Title\n render={\n <div className={clsx(cls(\"grow\", \"truncate\"), classNames?.title)}>\n {title}\n </div>\n }\n ></Popover.Title>\n <div className=\"flex items-center gap-2\">\n {beforeCloseButton}\n <Popover.Close\n render={<IconButton>{defaultCloseIcon}</IconButton>}\n />\n {afterCloseButton}\n </div>\n </Stack>\n {afterTitle ? afterTitle : null}\n </div>\n );\n }, [\n afterCloseButton,\n afterTitle,\n beforeCloseButton,\n cls,\n classNames?.header,\n classNames?.title,\n defaultCloseIcon,\n title,\n ]);\n\n const { ref: draggableRef } = useDraggable(draggable);\n\n const popup = useMemo(\n () => (\n <Popover.Popup\n className={clsx(\n cls(\"popup-panel\"),\n cls(`popup-panel-size-${size}`),\n className,\n classNames?.popup\n )}\n ref={draggableRef}\n >\n {title && renderTitle()}\n <div className={clsx(cls(\"popup-panel-content\"), classNames?.content)}>\n <div className={cls(\"popup-panel-content-inner\")}>{content}</div>\n </div>\n {footer && (\n <div className={clsx(cls(\"popup-panel-footer\"), classNames?.footer)}>\n {typeof footer === \"function\"\n ? footer({ close: () => setOpen(false) })\n : footer}\n </div>\n )}\n </Popover.Popup>\n ),\n [\n className,\n classNames?.content,\n classNames?.footer,\n classNames?.popup,\n cls,\n content,\n draggableRef,\n footer,\n renderTitle,\n setOpen,\n size,\n title,\n ]\n );\n\n const defaultPositionerProps = {\n ref: setPositionerRef,\n className: clsx(cls(\"popup-panel-root\"), themeClassName, classNames?.root),\n side: baseUIPlacement.side,\n align: baseUIPlacement.align,\n sideOffset: 4,\n anchor,\n style: {\n \"--size-width\": size ? PopupPanelSize[size] : undefined,\n } as React.CSSProperties,\n render: ({ children, onDragEnd, onDragStart, ...props }) => {\n return resizable ? (\n <Resizable\n resizable={resizable}\n resetKey={placementChangeKey}\n maintainAspectRatio={maintainAspectRatio}\n classNames={{\n resizeHandle: classNames?.resizeHandle,\n }}\n handles={anchorToResizeHandles(currentSide, currentAlign)}\n {...props}\n >\n {children}\n </Resizable>\n ) : (\n <div {...props}>{children}</div>\n );\n },\n };\n\n return (\n <Popover.Root\n open={open}\n onOpenChange={(open, eventDetails) => {\n if (\n (eventDetails.reason === \"outside-press\" ||\n eventDetails.reason === \"focus-out\") &&\n !closeOnClickOutside\n )\n return;\n setOpen(open, eventDetails);\n }}\n modal={modal}\n {...rest}\n >\n <Popover.Trigger\n {...mergeProps(\n {\n render: children,\n className: clsx(cls(\"popup-panel-trigger\"), classNames?.trigger),\n openOnHover: trigger === \"hover\" ? true : openOnHover,\n },\n triggerProps\n )}\n ></Popover.Trigger>\n <Popover.Portal {...portalProps}>\n <Popover.Positioner\n {...mergeProps(defaultPositionerProps, positionerProps)}\n >\n {popup}\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["PopupPanel","children","placement","openOnHover","outsideOpen","outsideOnOpenChange","content","title","trigger","className","anchor","beforeCloseButton","afterCloseButton","afterTitle","size","footer","defaultOpen","resizable","draggable","maintainAspectRatio","classNames","modal","closeOnClickOutside","onPlacementChange","positionerProps","triggerProps","portalProps","rest","open","setOpen","useControlledState","cls","useCls","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","defaultCloseIcon","useMemo","jsx","X","positionerRef","setPositionerRef","useState","currentSide","currentAlign","placementChangeKey","useBaseUIPlacement","renderTitle","useCallback","jsxs","clsx","Stack","Popover","IconButton","draggableRef","useDraggable","popup","defaultPositionerProps","PopupPanelSize","onDragEnd","onDragStart","props","Resizable","anchorToResizeHandles","eventDetails","mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;AAiJO,MAAMA,KAAa,CAAC;AAAA,EACzB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,MAAMC;AAAA,EACN,cAAcC;AAAA,EACd,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,QAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AAAA,EACZ,qBAAAC,IAAsB;AAAA,EACtB,YAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,qBAAAC,IAAsB;AAAA,EACtB,mBAAAC;AAAA,EACA,iBAAAC,IAAkB,CAAA;AAAA,EAClB,cAAAC,IAAe,CAAA;AAAA,EACf,aAAAC,IAAc,CAAA;AAAA,EACd,GAAGC;AACL,MAAuB;AAErB,QAAM,CAACC,GAAMC,CAAO,IAAIC;AAAA,IACtB1B;AAAA,IACAC;AAAA,IACAW;AAAA;AAAA,EAAA,GAGIe,IAAMC,GAAA,GACN,EAAE,WAAWC,EAAA,IAAmBC,GAAA,GAChCC,IAAkBC,GAAmBlC,CAAS,GAE9CmC,IAAmBC,EAAQ,MAAM,gBAAAC,EAACC,KAAE,MAAM,IAAI,GAAI,EAAE,GAEpD,CAACC,GAAeC,CAAgB,IAAIC;AAAA,IACxC;AAAA,EAAA,GAII,EAAE,aAAAC,GAAa,cAAAC,GAAc,oBAAAC,EAAA,IAAuBC,GAAmB;AAAA,IAC3E,eAAAN;AAAA,IACA,MAAAb;AAAA,IACA,aAAaO,EAAgB;AAAA,IAC7B,cAAcA,EAAgB;AAAA,IAC9B,mBAAAZ;AAAA,EAAA,CACD,GAEKyB,IAAcC,EAAY,MAE5B,gBAAAC,EAAC,SAAI,WAAWC,EAAKpB,EAAI,oBAAoB,GAAGX,GAAY,MAAM,GAChE,UAAA;AAAA,IAAA,gBAAA8B;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,KAAK;AAAA,QACL,WAAWrB,EAAI,2BAA2B;AAAA,QAE1C,UAAA;AAAA,UAAA,gBAAAQ;AAAA,YAACc,EAAQ;AAAA,YAAR;AAAA,cACC,QACE,gBAAAd,EAAC,OAAA,EAAI,WAAWY,EAAKpB,EAAI,QAAQ,UAAU,GAAGX,GAAY,KAAK,GAC5D,UAAAb,EAAA,CACH;AAAA,YAAA;AAAA,UAAA;AAAA,UAGJ,gBAAA2C,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,YAAAvC;AAAA,YACD,gBAAA4B;AAAA,cAACc,EAAQ;AAAA,cAAR;AAAA,gBACC,QAAQ,gBAAAd,EAACe,IAAA,EAAY,UAAAjB,EAAA,CAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,YAEvCzB;AAAA,UAAA,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEDC,KAA0B;AAAA,EAAA,GAC7B,GAED;AAAA,IACDD;AAAA,IACAC;AAAA,IACAF;AAAA,IACAoB;AAAA,IACAX,GAAY;AAAA,IACZA,GAAY;AAAA,IACZiB;AAAA,IACA9B;AAAA,EAAA,CACD,GAEK,EAAE,KAAKgD,MAAiBC,GAAatC,CAAS,GAE9CuC,IAAQnB;AAAA,IACZ,MACE,gBAAAY;AAAA,MAACG,EAAQ;AAAA,MAAR;AAAA,QACC,WAAWF;AAAA,UACTpB,EAAI,aAAa;AAAA,UACjBA,EAAI,oBAAoBjB,CAAI,EAAE;AAAA,UAC9BL;AAAA,UACAW,GAAY;AAAA,QAAA;AAAA,QAEd,KAAKmC;AAAA,QAEJ,UAAA;AAAA,UAAAhD,KAASyC,EAAA;AAAA,4BACT,OAAA,EAAI,WAAWG,EAAKpB,EAAI,qBAAqB,GAAGX,GAAY,OAAO,GAClE,4BAAC,OAAA,EAAI,WAAWW,EAAI,2BAA2B,GAAI,aAAQ,GAC7D;AAAA,UACChB,uBACE,OAAA,EAAI,WAAWoC,EAAKpB,EAAI,oBAAoB,GAAGX,GAAY,MAAM,GAC/D,iBAAOL,KAAW,aACfA,EAAO,EAAE,OAAO,MAAMc,EAAQ,EAAK,GAAG,IACtCd,EAAA,CACN;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAIN;AAAA,MACEN;AAAA,MACAW,GAAY;AAAA,MACZA,GAAY;AAAA,MACZA,GAAY;AAAA,MACZW;AAAA,MACAzB;AAAA,MACAiD;AAAA,MACAxC;AAAA,MACAiC;AAAA,MACAnB;AAAA,MACAf;AAAA,MACAP;AAAA,IAAA;AAAA,EACF,GAGImD,IAAyB;AAAA,IAC7B,KAAKhB;AAAA,IACL,WAAWS,EAAKpB,EAAI,kBAAkB,GAAGE,GAAgBb,GAAY,IAAI;AAAA,IACzE,MAAMe,EAAgB;AAAA,IACtB,OAAOA,EAAgB;AAAA,IACvB,YAAY;AAAA,IACZ,QAAAzB;AAAA,IACA,OAAO;AAAA,MACL,gBAAgBI,IAAO6C,GAAe7C,CAAI,IAAI;AAAA,IAAA;AAAA,IAEhD,QAAQ,CAAC,EAAE,UAAAb,GAAU,WAAA2D,GAAW,aAAAC,IAAa,GAAGC,QACvC7C,IACL,gBAAAsB;AAAA,MAACwB;AAAA,MAAA;AAAA,QACC,WAAA9C;AAAA,QACA,UAAU6B;AAAA,QACV,qBAAA3B;AAAA,QACA,YAAY;AAAA,UACV,cAAcC,GAAY;AAAA,QAAA;AAAA,QAE5B,SAAS4C,GAAsBpB,GAAaC,CAAY;AAAA,QACvD,GAAGiB;AAAA,QAEH,UAAA7D;AAAAA,MAAA;AAAA,IAAA,IAGH,gBAAAsC,EAAC,OAAA,EAAK,GAAGuB,GAAQ,UAAA7D,GAAS;AAAA,EAE9B;AAGF,SACE,gBAAAiD;AAAA,IAACG,EAAQ;AAAA,IAAR;AAAA,MACC,MAAAzB;AAAA,MACA,cAAc,CAACA,GAAMqC,MAAiB;AACpC,SACGA,EAAa,WAAW,mBACvBA,EAAa,WAAW,gBAC1B,CAAC3C,KAGHO,EAAQD,GAAMqC,CAAY;AAAA,MAC5B;AAAA,MACA,OAAA5C;AAAA,MACC,GAAGM;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAY;AAAA,UAACc,EAAQ;AAAA,UAAR;AAAA,YACE,GAAGa;AAAA,cACF;AAAA,gBACE,QAAQjE;AAAA,gBACR,WAAWkD,EAAKpB,EAAI,qBAAqB,GAAGX,GAAY,OAAO;AAAA,gBAC/D,aAAaZ,MAAY,UAAU,KAAOL;AAAA,cAAA;AAAA,cAE5CsB;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAEF,gBAAAc,EAACc,EAAQ,QAAR,EAAgB,GAAG3B,GAClB,UAAA,gBAAAa;AAAA,UAACc,EAAQ;AAAA,UAAR;AAAA,YACE,GAAGa,EAAWR,GAAwBlC,CAAe;AAAA,YAErD,UAAAiC;AAAA,UAAA;AAAA,QAAA,EACH,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/popup-panel/component.tsx"],"sourcesContent":["\"use client\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport { buildAntdPlacement, clsx, parseAntdPlacement, useCls } from \"../utils\";\n\nimport { mergeProps } from \"@base-ui/react\";\nimport { useStableCallback } from \"@base-ui/utils/useStableCallback\";\nimport { X } from \"@bioturing/assets\";\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { useControlledState, useDraggable } from \"../hooks\";\nimport { IconButton } from \"../icon-button\";\nimport { Resizable } from \"../resizable\";\nimport { Stack } from \"../stack\";\nimport { DEFAULT_SIDE_OFFSET, PopupPanelSize } from \"./constants\";\nimport { PopupPanelProps } from \"./types\";\n\n// Import component-specific styles\nimport { useTheme } from \"../theme-provider\";\nimport \"./style.css\";\nimport { anchorToResizeHandles } from \"./utils\";\n\n// Stable empty objects to avoid creating new references on every render\nconst EMPTY_OBJECT = {} as const;\n\ninterface PlacementStateSyncProps {\n side: Popover.Positioner.State[\"side\"];\n align: Popover.Positioner.State[\"align\"];\n onPlacementChange?: (\n placement: NonNullable<PopupPanelProps[\"placement\"]>,\n ) => void;\n}\n\nfunction PlacementStateSync({\n side,\n align,\n onPlacementChange,\n}: PlacementStateSyncProps) {\n const lastPlacementRef = useRef<\n NonNullable<PopupPanelProps[\"placement\"]> | undefined\n >(undefined);\n\n useEffect(() => {\n const placement = buildAntdPlacement({\n side,\n align,\n }) as NonNullable<PopupPanelProps[\"placement\"]>;\n if (placement === lastPlacementRef.current) return;\n lastPlacementRef.current = placement;\n onPlacementChange?.(placement);\n }, [side, align, onPlacementChange]);\n\n return null;\n}\n\nexport const PopupPanel = ({\n children,\n placement,\n openOnHover = false,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n content,\n title,\n trigger = \"click\",\n className,\n anchor,\n beforeCloseButton,\n afterCloseButton,\n afterTitle,\n size = \"medium\",\n footer,\n defaultOpen = false,\n resizable = false,\n draggable = false,\n maintainAspectRatio = false,\n classNames,\n modal = false,\n closeOnClickOutside = true,\n onPlacementChange,\n positionerProps = EMPTY_OBJECT,\n triggerProps = EMPTY_OBJECT,\n portalProps = EMPTY_OBJECT,\n offsetFrom,\n nativeButton = true,\n ...rest\n}: PopupPanelProps) => {\n // Use controlled state with proper initialization to prevent switching between controlled/uncontrolled\n const [open, setOpen] = useControlledState(\n outsideOpen,\n outsideOnOpenChange,\n defaultOpen, // Always provide a default value to prevent undefined\n );\n\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const baseUIPlacement = parseAntdPlacement(placement);\n\n const triggerElRef = useRef<HTMLElement | null>(null);\n const handleTriggerRef = useCallback((node: HTMLElement | null) => {\n if (node === null || triggerElRef.current === node) return;\n triggerElRef.current = node;\n }, []);\n\n const getAnchorEl = useCallback(() => {\n if (anchor instanceof Element) return anchor;\n if (anchor != null && \"current\" in anchor) return anchor.current;\n if (typeof anchor === \"function\") {\n const result = anchor();\n return result instanceof Element ? result : null;\n }\n return triggerElRef.current;\n }, [anchor]);\n\n // Compute sideOffset: incorporate user sideOffset, and when offsetFrom is\n // provided, add the distance from the anchor to the offsetFrom element\n const resolvedSideOffset = useMemo(() => {\n // If user provides a function, let them fully control the offset\n if (typeof positionerProps.sideOffset === \"function\")\n return positionerProps.sideOffset;\n\n const userSideOffset =\n typeof positionerProps.sideOffset === \"number\"\n ? positionerProps.sideOffset\n : 0;\n const baseOffset = DEFAULT_SIDE_OFFSET + userSideOffset;\n\n if (!offsetFrom) return baseOffset;\n\n return ({ side }: { side: string }) => {\n const offsetFromEl = offsetFrom.current;\n const anchorEl = getAnchorEl();\n if (!offsetFromEl || !anchorEl) return baseOffset;\n\n const offsetRect = offsetFromEl.getBoundingClientRect();\n const anchorRect = anchorEl.getBoundingClientRect();\n\n let distance: number;\n switch (side) {\n case \"bottom\":\n distance = offsetRect.bottom - anchorRect.bottom;\n break;\n case \"top\":\n distance = anchorRect.top - offsetRect.top;\n break;\n case \"right\":\n distance = offsetRect.right - anchorRect.right;\n break;\n case \"left\":\n distance = anchorRect.left - offsetRect.left;\n break;\n default:\n distance = 0;\n }\n\n return Math.max(0, distance) + baseOffset;\n };\n }, [offsetFrom, getAnchorEl, positionerProps.sideOffset]);\n\n const defaultCloseIcon = useMemo(() => <X size={16} />, []);\n\n const renderTitle = useCallback(() => {\n return (\n <div className={clsx(cls(\"popup-panel-header\"), classNames?.header)}>\n <Stack\n align=\"center\"\n gap={8}\n className={cls(\"popup-panel-title-wrapper\")}\n >\n <Popover.Title\n render={\n <div className={clsx(cls(\"grow\", \"truncate\"), classNames?.title)}>\n {title}\n </div>\n }\n ></Popover.Title>\n <div className=\"flex items-center gap-2\">\n {beforeCloseButton}\n <Popover.Close\n render={<IconButton>{defaultCloseIcon}</IconButton>}\n />\n {afterCloseButton}\n </div>\n </Stack>\n {afterTitle ? afterTitle : null}\n </div>\n );\n }, [\n afterCloseButton,\n afterTitle,\n beforeCloseButton,\n cls,\n classNames?.header,\n classNames?.title,\n defaultCloseIcon,\n title,\n ]);\n\n const { ref: draggableRef } = useDraggable(draggable);\n\n const popup = useMemo(\n () => (\n <Popover.Popup\n className={clsx(\n cls(\"popup-panel\"),\n cls(`popup-panel-size-${size}`),\n className,\n classNames?.popup,\n )}\n ref={draggableRef}\n >\n {title && renderTitle()}\n <div className={clsx(cls(\"popup-panel-content\"), classNames?.content)}>\n <div className={cls(\"popup-panel-content-inner\")}>{content}</div>\n </div>\n {footer && (\n <div className={clsx(cls(\"popup-panel-footer\"), classNames?.footer)}>\n {typeof footer === \"function\"\n ? footer({ close: () => setOpen(false) })\n : footer}\n </div>\n )}\n </Popover.Popup>\n ),\n [\n className,\n classNames?.content,\n classNames?.footer,\n classNames?.popup,\n cls,\n content,\n draggableRef,\n footer,\n renderTitle,\n setOpen,\n size,\n title,\n ],\n );\n\n // Positioner render function — useCallback keeps the reference stable when deps\n // don't change. Cannot use useStableCallback here because render props are\n // called during React's render phase, not in effects/event handlers.\n const positionerRender = useCallback(\n (\n {\n children,\n onDragEnd: _onDragEnd,\n onDragStart: _onDragStart,\n ...props\n }: React.ComponentProps<\"div\">,\n { side, align }: Popover.Positioner.State,\n ) => {\n const placementKey = `${side}-${align}`;\n return resizable ? (\n <>\n <PlacementStateSync\n side={side}\n align={align}\n onPlacementChange={onPlacementChange}\n />\n <Resizable\n resizable={resizable}\n resetKey={placementKey}\n maintainAspectRatio={maintainAspectRatio}\n classNames={{\n resizeHandle: classNames?.resizeHandle,\n }}\n handles={anchorToResizeHandles(side, align)}\n {...props}\n >\n {children}\n </Resizable>\n </>\n ) : (\n <div {...props}>\n <PlacementStateSync\n side={side}\n align={align}\n onPlacementChange={onPlacementChange}\n />\n {children}\n </div>\n );\n },\n [\n resizable,\n maintainAspectRatio,\n classNames?.resizeHandle,\n onPlacementChange,\n ],\n );\n\n const positionerStyle = useMemo(\n () =>\n ({\n \"--size-width\": size ? PopupPanelSize[size] : undefined,\n }) as React.CSSProperties,\n [size],\n );\n\n const defaultPositionerProps = useMemo(\n () => ({\n className: clsx(\n cls(\"popup-panel-root\"),\n themeClassName,\n classNames?.root,\n ),\n side: baseUIPlacement.side,\n align: baseUIPlacement.align,\n sideOffset: resolvedSideOffset,\n anchor,\n style: positionerStyle,\n render: positionerRender,\n }),\n [\n cls,\n themeClassName,\n classNames?.root,\n baseUIPlacement.side,\n baseUIPlacement.align,\n resolvedSideOffset,\n anchor,\n positionerStyle,\n positionerRender,\n ],\n );\n\n // Strip sideOffset from positionerProps when offsetFrom is active,\n // since we've already incorporated it into resolvedSideOffset\n const finalPositionerProps = useMemo(\n () =>\n offsetFrom\n ? (({ sideOffset: _, ...rest }) => rest)(positionerProps)\n : positionerProps,\n [offsetFrom, positionerProps],\n );\n\n // Stable onOpenChange handler to avoid recreating on every render\n const handleOpenChange = useStableCallback(\n (nextOpen: boolean, eventDetails: Popover.Root.ChangeEventDetails) => {\n if (\n (eventDetails.reason === \"outside-press\" ||\n eventDetails.reason === \"focus-out\") &&\n !closeOnClickOutside\n )\n return;\n setOpen(nextOpen, eventDetails);\n },\n );\n\n const defaultTriggerProps = useMemo(\n () => ({\n ref: handleTriggerRef,\n render: children,\n nativeButton,\n className: clsx(cls(\"popup-panel-trigger\"), classNames?.trigger),\n openOnHover: trigger === \"hover\" ? true : openOnHover,\n }),\n [\n handleTriggerRef,\n children,\n nativeButton,\n cls,\n classNames?.trigger,\n trigger,\n openOnHover,\n ],\n );\n\n return (\n <Popover.Root\n open={open}\n onOpenChange={handleOpenChange}\n modal={modal}\n {...rest}\n >\n <Popover.Trigger\n {...mergeProps(defaultTriggerProps, triggerProps)}\n ></Popover.Trigger>\n <Popover.Portal {...portalProps}>\n <Popover.Positioner\n {...mergeProps(defaultPositionerProps, finalPositionerProps)}\n >\n {popup}\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["EMPTY_OBJECT","PlacementStateSync","side","align","onPlacementChange","lastPlacementRef","useRef","useEffect","placement","buildAntdPlacement","PopupPanel","children","openOnHover","outsideOpen","outsideOnOpenChange","content","title","trigger","className","anchor","beforeCloseButton","afterCloseButton","afterTitle","size","footer","defaultOpen","resizable","draggable","maintainAspectRatio","classNames","modal","closeOnClickOutside","positionerProps","triggerProps","portalProps","offsetFrom","nativeButton","rest","open","setOpen","useControlledState","cls","useCls","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","triggerElRef","handleTriggerRef","useCallback","node","getAnchorEl","result","resolvedSideOffset","useMemo","userSideOffset","baseOffset","DEFAULT_SIDE_OFFSET","offsetFromEl","anchorEl","offsetRect","anchorRect","distance","defaultCloseIcon","jsx","X","renderTitle","jsxs","clsx","Stack","Popover","IconButton","draggableRef","useDraggable","popup","positionerRender","_onDragEnd","_onDragStart","props","placementKey","Fragment","Resizable","anchorToResizeHandles","positionerStyle","PopupPanelSize","defaultPositionerProps","finalPositionerProps","_","handleOpenChange","useStableCallback","nextOpen","eventDetails","defaultTriggerProps","mergeProps"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export declare const DEFAULT_SIDE_OFFSET = 4;
1
2
  export declare enum PopupPanelSize {
2
3
  xsmall = "320px",
3
4
  small = "400px",
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/popup-panel/constants.ts"],"names":[],"mappings":"AACA,oBAAY,cAAc;IACxB,MAAM,UAAU;IAChB,KAAK,UAAU;IACf,MAAM,UAAU;IAChB,KAAK,UAAU;IACf,MAAM,UAAU;CACjB"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/popup-panel/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAGrC,oBAAY,cAAc;IACxB,MAAM,UAAU;IAChB,KAAK,UAAU;IACf,MAAM,UAAU;IAChB,KAAK,UAAU;IACf,MAAM,UAAU;CACjB"}
@@ -1,5 +1,7 @@
1
+ const m = 4;
1
2
  var r = /* @__PURE__ */ ((x) => (x.xsmall = "320px", x.small = "400px", x.medium = "480px", x.large = "640px", x.xlarge = "840px", x))(r || {});
2
3
  export {
4
+ m as DEFAULT_SIDE_OFFSET,
3
5
  r as PopupPanelSize
4
6
  };
5
7
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../src/components/popup-panel/constants.ts"],"sourcesContent":["// Size map for predefined modal sizes\nexport enum PopupPanelSize {\n xsmall = \"320px\",\n small = \"400px\",\n medium = \"480px\",\n large = \"640px\",\n xlarge = \"840px\",\n}\n"],"names":["PopupPanelSize"],"mappings":"AACO,IAAKA,sBAAAA,OACVA,EAAA,SAAS,SACTA,EAAA,QAAQ,SACRA,EAAA,SAAS,SACTA,EAAA,QAAQ,SACRA,EAAA,SAAS,SALCA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../src/components/popup-panel/constants.ts"],"sourcesContent":["export const DEFAULT_SIDE_OFFSET = 4;\n\n// Size map for predefined modal sizes\nexport enum PopupPanelSize {\n xsmall = \"320px\",\n small = \"400px\",\n medium = \"480px\",\n large = \"640px\",\n xlarge = \"840px\",\n}\n"],"names":["DEFAULT_SIDE_OFFSET","PopupPanelSize"],"mappings":"AAAO,MAAMA,IAAsB;AAG5B,IAAKC,sBAAAA,OACVA,EAAA,SAAS,SACTA,EAAA,QAAQ,SACRA,EAAA,SAAS,SACTA,EAAA,QAAQ,SACRA,EAAA,SAAS,SALCA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -1,2 +1,3 @@
1
1
  export * from './component';
2
+ export * from './types';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/popup-panel/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/popup-panel/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}