@bioturing/components 0.45.0 → 0.46.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/base-menu/index.d.ts.map +1 -1
- package/dist/components/base-menu/item.d.ts.map +1 -1
- package/dist/components/base-menu/item.js +6 -13
- package/dist/components/base-menu/item.js.map +1 -1
- package/dist/components/button/style.css +1 -1
- package/dist/components/combobox/component.d.ts +32 -1
- package/dist/components/combobox/component.d.ts.map +1 -1
- package/dist/components/combobox/component.js +286 -261
- package/dist/components/combobox/component.js.map +1 -1
- package/dist/components/combobox/style.css +1 -1
- package/dist/components/combobox/utils.d.ts +2 -0
- package/dist/components/combobox/utils.d.ts.map +1 -0
- package/dist/components/combobox/utils.js +10 -0
- package/dist/components/combobox/utils.js.map +1 -0
- package/dist/components/hooks/useDraggable.d.ts.map +1 -1
- package/dist/components/hooks/useDraggable.js +34 -27
- package/dist/components/hooks/useDraggable.js.map +1 -1
- package/dist/components/popup-panel/component.d.ts +1 -1
- package/dist/components/popup-panel/component.d.ts.map +1 -1
- package/dist/components/popup-panel/component.js +217 -233
- package/dist/components/popup-panel/component.js.map +1 -1
- package/dist/components/popup-panel/constants.d.ts +5 -1
- package/dist/components/popup-panel/constants.d.ts.map +1 -1
- package/dist/components/popup-panel/constants.js +8 -4
- package/dist/components/popup-panel/constants.js.map +1 -1
- package/dist/components/popup-panel/style.css +1 -1
- package/dist/components/popup-panel/types.d.ts +14 -1
- package/dist/components/popup-panel/types.d.ts.map +1 -1
- package/dist/components/select-trigger/style.css +1 -1
- package/dist/components/theme-provider/style.css +1 -1
- package/dist/components/truncate/helpers.d.ts +13 -7
- package/dist/components/truncate/helpers.d.ts.map +1 -1
- package/dist/components/truncate/helpers.js +102 -85
- package/dist/components/truncate/helpers.js.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/tailwind.css +16 -0
- package/dist/tokens/and-theme/tokens.d.ts.map +1 -1
- package/dist/tokens/and-theme/tokens.js +4 -1
- package/dist/tokens/and-theme/tokens.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,309 +1,293 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import { Popover as
|
|
4
|
-
import { mergeProps as
|
|
5
|
-
import { useStableCallback as
|
|
6
|
-
import { X as
|
|
7
|
-
import { useRef as
|
|
8
|
-
import { Stack as
|
|
9
|
-
import { PopupPanelSize as
|
|
2
|
+
import { jsx as r, jsxs as f, Fragment as Oe } from "react/jsx-runtime";
|
|
3
|
+
import { Popover as c } from "@base-ui/react/popover";
|
|
4
|
+
import { mergeProps as Q } from "@base-ui/react";
|
|
5
|
+
import { useStableCallback as Ce } from "@base-ui/utils/useStableCallback";
|
|
6
|
+
import { X as Ee } from "@bioturing/assets";
|
|
7
|
+
import { useRef as te, useCallback as b, useMemo as m, useEffect as Re } from "react";
|
|
8
|
+
import { Stack as Le } from "../stack/index.js";
|
|
9
|
+
import { PopupPanelSize as Se, POPUP_PANEL_ARROW_HEIGHT as ne, POPUP_PANEL_ARROW_WIDTH as oe, POPUP_PANEL_ARROW_SIDE_OFFSET as _e, DEFAULT_SIDE_OFFSET as ee } from "./constants.js";
|
|
10
10
|
import './style.css';/* empty css */
|
|
11
|
-
import { anchorToResizeHandles as
|
|
12
|
-
import { useDraggable as
|
|
13
|
-
import { Resizable as
|
|
14
|
-
import { parseAntdPlacement as
|
|
15
|
-
import { useControlledState as
|
|
16
|
-
import { useCls as
|
|
11
|
+
import { anchorToResizeHandles as we } from "./utils.js";
|
|
12
|
+
import { useDraggable as ve } from "../hooks/useDraggable.js";
|
|
13
|
+
import { Resizable as He } from "../resizable/component.js";
|
|
14
|
+
import { parseAntdPlacement as be, buildAntdPlacement as Te } from "../utils/placement.js";
|
|
15
|
+
import { useControlledState as Ae } from "../hooks/useControlledState.js";
|
|
16
|
+
import { useCls as pe } from "../utils/antdUtils.js";
|
|
17
17
|
import { useTheme as ke } from "../theme-provider/context/themeStore.js";
|
|
18
|
-
import { clsx as
|
|
19
|
-
import { IconButton as
|
|
20
|
-
const
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return ge(() => {
|
|
28
|
-
const O = ve({
|
|
29
|
-
side: g,
|
|
30
|
-
align: P
|
|
18
|
+
import { clsx as a } from "../utils/cn.js";
|
|
19
|
+
import { IconButton as xe } from "../icon-button/component.js";
|
|
20
|
+
const D = {};
|
|
21
|
+
function re({ side: s, align: l, onPlacementChange: P }) {
|
|
22
|
+
const _ = te(void 0);
|
|
23
|
+
return Re(() => {
|
|
24
|
+
const O = Te({
|
|
25
|
+
side: s,
|
|
26
|
+
align: l
|
|
31
27
|
});
|
|
32
|
-
O !==
|
|
33
|
-
}, [
|
|
28
|
+
O !== _.current && (_.current = O, P?.(O));
|
|
29
|
+
}, [s, l, P]), null;
|
|
34
30
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
function ye(s) {
|
|
32
|
+
const l = pe();
|
|
33
|
+
return /* @__PURE__ */ f(
|
|
34
|
+
"svg",
|
|
35
|
+
{
|
|
36
|
+
width: oe,
|
|
37
|
+
height: ne,
|
|
38
|
+
viewBox: "0 0 20 10",
|
|
39
|
+
fill: "none",
|
|
40
|
+
"aria-hidden": "true",
|
|
41
|
+
...s,
|
|
42
|
+
children: [
|
|
43
|
+
/* @__PURE__ */ r(
|
|
44
|
+
"path",
|
|
45
|
+
{
|
|
46
|
+
d: "M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z",
|
|
47
|
+
className: l("popup-panel-arrow-fill")
|
|
48
|
+
}
|
|
49
|
+
),
|
|
50
|
+
/* @__PURE__ */ r(
|
|
51
|
+
"path",
|
|
52
|
+
{
|
|
53
|
+
d: "M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z",
|
|
54
|
+
className: l("popup-panel-arrow-outer-stroke")
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ r(
|
|
58
|
+
"path",
|
|
59
|
+
{
|
|
60
|
+
d: "M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z",
|
|
61
|
+
className: l("popup-panel-arrow-inner-stroke")
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
const qe = ({
|
|
69
|
+
children: s,
|
|
70
|
+
placement: l,
|
|
71
|
+
openOnHover: P = !1,
|
|
72
|
+
open: _,
|
|
40
73
|
onOpenChange: O,
|
|
41
74
|
content: I,
|
|
42
|
-
title:
|
|
43
|
-
trigger:
|
|
44
|
-
className:
|
|
75
|
+
title: w,
|
|
76
|
+
trigger: M = "click",
|
|
77
|
+
className: $,
|
|
45
78
|
anchor: o,
|
|
46
|
-
beforeCloseButton:
|
|
47
|
-
afterCloseButton:
|
|
48
|
-
afterTitle:
|
|
49
|
-
|
|
79
|
+
beforeCloseButton: U,
|
|
80
|
+
afterCloseButton: V,
|
|
81
|
+
afterTitle: T,
|
|
82
|
+
arrow: v = !1,
|
|
83
|
+
size: C = "medium",
|
|
50
84
|
footer: E,
|
|
51
|
-
defaultOpen:
|
|
52
|
-
resizable:
|
|
53
|
-
draggable:
|
|
54
|
-
maintainAspectRatio:
|
|
85
|
+
defaultOpen: le = !1,
|
|
86
|
+
resizable: R = !1,
|
|
87
|
+
draggable: A = !1,
|
|
88
|
+
maintainAspectRatio: W = !1,
|
|
55
89
|
classNames: e,
|
|
56
|
-
modal:
|
|
57
|
-
closeOnClickOutside:
|
|
58
|
-
onPlacementChange:
|
|
59
|
-
positionerProps: i =
|
|
60
|
-
triggerProps:
|
|
61
|
-
portalProps:
|
|
62
|
-
offsetFrom:
|
|
63
|
-
nativeButton:
|
|
64
|
-
|
|
90
|
+
modal: ie = !1,
|
|
91
|
+
closeOnClickOutside: ue = !0,
|
|
92
|
+
onPlacementChange: k,
|
|
93
|
+
positionerProps: i = D,
|
|
94
|
+
triggerProps: ce = D,
|
|
95
|
+
portalProps: ae = D,
|
|
96
|
+
offsetFrom: L,
|
|
97
|
+
nativeButton: F = !0,
|
|
98
|
+
zIndex: Z = "popup",
|
|
99
|
+
...fe
|
|
65
100
|
}) => {
|
|
66
|
-
const [
|
|
67
|
-
|
|
101
|
+
const [se, x] = Ae(
|
|
102
|
+
_,
|
|
68
103
|
O,
|
|
69
|
-
|
|
104
|
+
le
|
|
70
105
|
// Always provide a default value to prevent undefined
|
|
71
|
-
), t =
|
|
72
|
-
|
|
73
|
-
}, []),
|
|
106
|
+
), t = pe(), { className: j } = ke(), H = be(l), y = te(null), z = b((n) => {
|
|
107
|
+
n === null || y.current === n || (y.current = n);
|
|
108
|
+
}, []), B = b(() => {
|
|
74
109
|
if (o instanceof Element) return o;
|
|
75
110
|
if (o != null && "current" in o) return o.current;
|
|
76
111
|
if (typeof o == "function") {
|
|
77
|
-
const
|
|
78
|
-
return
|
|
112
|
+
const n = o();
|
|
113
|
+
return n instanceof Element ? n : null;
|
|
79
114
|
}
|
|
80
|
-
return
|
|
81
|
-
}, [o]),
|
|
82
|
-
if (typeof i.sideOffset == "function")
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
switch (Q) {
|
|
115
|
+
return y.current;
|
|
116
|
+
}, [o]), K = m(() => {
|
|
117
|
+
if (typeof i.sideOffset == "function") return i.sideOffset;
|
|
118
|
+
const n = typeof i.sideOffset == "number" ? i.sideOffset : 0, p = (v ? _e + ee : ee) + n;
|
|
119
|
+
return L ? ({ side: q }) => {
|
|
120
|
+
const S = L.current, d = B();
|
|
121
|
+
if (!S || !d) return p;
|
|
122
|
+
const u = S.getBoundingClientRect(), g = d.getBoundingClientRect();
|
|
123
|
+
let h;
|
|
124
|
+
switch (q) {
|
|
91
125
|
case "bottom":
|
|
92
|
-
|
|
126
|
+
h = u.bottom - g.bottom;
|
|
93
127
|
break;
|
|
94
128
|
case "top":
|
|
95
|
-
|
|
129
|
+
h = g.top - u.top;
|
|
96
130
|
break;
|
|
97
131
|
case "right":
|
|
98
|
-
|
|
132
|
+
h = u.right - g.right;
|
|
99
133
|
break;
|
|
100
134
|
case "left":
|
|
101
|
-
|
|
135
|
+
h = g.left - u.left;
|
|
102
136
|
break;
|
|
103
137
|
default:
|
|
104
|
-
|
|
138
|
+
h = 0;
|
|
105
139
|
}
|
|
106
|
-
return Math.max(0,
|
|
107
|
-
} :
|
|
108
|
-
}, [
|
|
109
|
-
/* @__PURE__ */
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
M,
|
|
124
|
-
/* @__PURE__ */ n(
|
|
125
|
-
f.Close,
|
|
126
|
-
{
|
|
127
|
-
render: /* @__PURE__ */ n(Ce, { children: L })
|
|
128
|
-
}
|
|
129
|
-
),
|
|
130
|
-
$
|
|
131
|
-
] })
|
|
132
|
-
]
|
|
133
|
-
}
|
|
134
|
-
),
|
|
135
|
-
C || null
|
|
140
|
+
return Math.max(0, h) + p;
|
|
141
|
+
} : p;
|
|
142
|
+
}, [v, L, B, i.sideOffset]), N = m(() => /* @__PURE__ */ r(Ee, { size: 16 }), []), G = b(() => /* @__PURE__ */ f("div", { className: a(t("popup-panel-header"), e?.header), children: [
|
|
143
|
+
/* @__PURE__ */ f(Le, { align: "center", gap: 8, className: t("popup-panel-title-wrapper"), children: [
|
|
144
|
+
/* @__PURE__ */ r(
|
|
145
|
+
c.Title,
|
|
146
|
+
{
|
|
147
|
+
render: /* @__PURE__ */ r("div", { className: a(t("grow", "truncate"), e?.title), children: w })
|
|
148
|
+
}
|
|
149
|
+
),
|
|
150
|
+
/* @__PURE__ */ f("div", { className: "flex items-center gap-2", children: [
|
|
151
|
+
U,
|
|
152
|
+
/* @__PURE__ */ r(c.Close, { render: /* @__PURE__ */ r(xe, { children: N }) }),
|
|
153
|
+
V
|
|
154
|
+
] })
|
|
155
|
+
] }),
|
|
156
|
+
T || null
|
|
136
157
|
] }), [
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
158
|
+
V,
|
|
159
|
+
T,
|
|
160
|
+
U,
|
|
140
161
|
t,
|
|
141
162
|
e?.header,
|
|
142
163
|
e?.title,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
]), { ref:
|
|
146
|
-
() => /* @__PURE__ */
|
|
147
|
-
|
|
164
|
+
N,
|
|
165
|
+
w
|
|
166
|
+
]), { ref: J } = ve(A), de = m(
|
|
167
|
+
() => /* @__PURE__ */ f(
|
|
168
|
+
c.Popup,
|
|
148
169
|
{
|
|
149
|
-
className:
|
|
170
|
+
className: a(
|
|
150
171
|
t("popup-panel"),
|
|
151
|
-
t(`popup-panel-size-${
|
|
152
|
-
|
|
172
|
+
t(`popup-panel-size-${C}`),
|
|
173
|
+
$,
|
|
153
174
|
e?.popup
|
|
154
175
|
),
|
|
155
|
-
|
|
176
|
+
"data-draggable": A ? "true" : void 0,
|
|
177
|
+
"data-resizable": R ? "true" : void 0,
|
|
178
|
+
ref: J,
|
|
156
179
|
children: [
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
180
|
+
v && /* @__PURE__ */ r(c.Arrow, { className: a(t("popup-panel-arrow"), e?.arrow), children: /* @__PURE__ */ r(ye, { className: t("popup-panel-arrow-svg") }) }),
|
|
181
|
+
w && G(),
|
|
182
|
+
/* @__PURE__ */ r("div", { className: a(t("popup-panel-content"), e?.content), children: I }),
|
|
183
|
+
E && /* @__PURE__ */ r("div", { className: a(t("popup-panel-footer"), e?.footer), children: typeof E == "function" ? E({ close: () => x(!1) }) : E })
|
|
160
184
|
]
|
|
161
185
|
}
|
|
162
186
|
),
|
|
163
187
|
[
|
|
164
|
-
|
|
188
|
+
$,
|
|
165
189
|
e?.content,
|
|
166
190
|
e?.footer,
|
|
167
191
|
e?.popup,
|
|
192
|
+
e?.arrow,
|
|
168
193
|
t,
|
|
169
194
|
I,
|
|
170
|
-
|
|
195
|
+
A,
|
|
196
|
+
J,
|
|
171
197
|
E,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
198
|
+
G,
|
|
199
|
+
v,
|
|
200
|
+
x,
|
|
201
|
+
C,
|
|
202
|
+
w,
|
|
203
|
+
R
|
|
176
204
|
]
|
|
177
|
-
),
|
|
205
|
+
), X = b(
|
|
178
206
|
({
|
|
179
|
-
children:
|
|
180
|
-
onDragEnd:
|
|
181
|
-
onDragStart:
|
|
182
|
-
...
|
|
183
|
-
}, { side:
|
|
184
|
-
const
|
|
185
|
-
return
|
|
186
|
-
/* @__PURE__ */
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
side: p,
|
|
190
|
-
align: c,
|
|
191
|
-
onPlacementChange: _
|
|
192
|
-
}
|
|
193
|
-
),
|
|
194
|
-
/* @__PURE__ */ n(
|
|
195
|
-
Re,
|
|
207
|
+
children: n,
|
|
208
|
+
onDragEnd: p,
|
|
209
|
+
onDragStart: q,
|
|
210
|
+
...S
|
|
211
|
+
}, { side: d, align: u }) => {
|
|
212
|
+
const g = `${d}-${u}`;
|
|
213
|
+
return R ? /* @__PURE__ */ f(Oe, { children: [
|
|
214
|
+
/* @__PURE__ */ r(re, { side: d, align: u, onPlacementChange: k }),
|
|
215
|
+
/* @__PURE__ */ r(
|
|
216
|
+
He,
|
|
196
217
|
{
|
|
197
|
-
resizable:
|
|
198
|
-
resetKey:
|
|
199
|
-
maintainAspectRatio:
|
|
218
|
+
resizable: R,
|
|
219
|
+
resetKey: g,
|
|
220
|
+
maintainAspectRatio: W,
|
|
200
221
|
classNames: {
|
|
201
222
|
resizeHandle: e?.resizeHandle
|
|
202
223
|
},
|
|
203
|
-
handles:
|
|
204
|
-
...
|
|
205
|
-
children:
|
|
224
|
+
handles: we(d),
|
|
225
|
+
...S,
|
|
226
|
+
children: n
|
|
206
227
|
}
|
|
207
228
|
)
|
|
208
|
-
] }) : /* @__PURE__ */
|
|
209
|
-
/* @__PURE__ */
|
|
210
|
-
|
|
211
|
-
{
|
|
212
|
-
side: p,
|
|
213
|
-
align: c,
|
|
214
|
-
onPlacementChange: _
|
|
215
|
-
}
|
|
216
|
-
),
|
|
217
|
-
r
|
|
229
|
+
] }) : /* @__PURE__ */ f("div", { ...S, children: [
|
|
230
|
+
/* @__PURE__ */ r(re, { side: d, align: u, onPlacementChange: k }),
|
|
231
|
+
n
|
|
218
232
|
] });
|
|
219
233
|
},
|
|
220
|
-
[
|
|
221
|
-
|
|
222
|
-
j,
|
|
223
|
-
e?.resizeHandle,
|
|
224
|
-
_
|
|
225
|
-
]
|
|
226
|
-
), G = s(
|
|
234
|
+
[R, W, e?.resizeHandle, k]
|
|
235
|
+
), Y = m(
|
|
227
236
|
() => ({
|
|
228
|
-
"--
|
|
237
|
+
"--popup-panel-arrow-width": `${oe}px`,
|
|
238
|
+
"--popup-panel-arrow-height": `${ne}px`,
|
|
239
|
+
"--size-width": C ? Se[C] : void 0
|
|
229
240
|
}),
|
|
230
|
-
[
|
|
231
|
-
),
|
|
241
|
+
[C]
|
|
242
|
+
), me = m(
|
|
232
243
|
() => ({
|
|
233
|
-
className:
|
|
234
|
-
t("popup-panel-root"),
|
|
235
|
-
|
|
244
|
+
className: a(
|
|
245
|
+
t("popup-panel-root", `popup-panel-z-index-${Z}`),
|
|
246
|
+
j,
|
|
236
247
|
e?.root
|
|
237
248
|
),
|
|
238
|
-
side:
|
|
239
|
-
align:
|
|
240
|
-
sideOffset:
|
|
249
|
+
side: H.side,
|
|
250
|
+
align: H.align,
|
|
251
|
+
sideOffset: K,
|
|
241
252
|
anchor: o,
|
|
242
|
-
style:
|
|
243
|
-
render:
|
|
253
|
+
style: Y,
|
|
254
|
+
render: X
|
|
244
255
|
}),
|
|
245
256
|
[
|
|
246
257
|
t,
|
|
247
|
-
|
|
258
|
+
j,
|
|
248
259
|
e?.root,
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
260
|
+
H.side,
|
|
261
|
+
H.align,
|
|
262
|
+
K,
|
|
252
263
|
o,
|
|
253
|
-
|
|
254
|
-
|
|
264
|
+
Y,
|
|
265
|
+
X,
|
|
266
|
+
Z
|
|
255
267
|
]
|
|
256
|
-
),
|
|
257
|
-
() =>
|
|
258
|
-
[
|
|
259
|
-
),
|
|
260
|
-
(
|
|
261
|
-
(
|
|
268
|
+
), ge = m(
|
|
269
|
+
() => L ? (({ sideOffset: n, ...p }) => p)(i) : i,
|
|
270
|
+
[L, i]
|
|
271
|
+
), he = Ce(
|
|
272
|
+
(n, p) => {
|
|
273
|
+
(p.reason === "outside-press" || p.reason === "focus-out") && !ue || x(n, p);
|
|
262
274
|
}
|
|
263
|
-
),
|
|
275
|
+
), Pe = m(
|
|
264
276
|
() => ({
|
|
265
|
-
ref:
|
|
266
|
-
render:
|
|
267
|
-
nativeButton:
|
|
268
|
-
className:
|
|
269
|
-
openOnHover:
|
|
277
|
+
ref: z,
|
|
278
|
+
render: s,
|
|
279
|
+
nativeButton: F,
|
|
280
|
+
className: a(t("popup-panel-trigger"), e?.trigger),
|
|
281
|
+
openOnHover: M === "hover" ? !0 : P
|
|
270
282
|
}),
|
|
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,
|
|
283
|
-
{
|
|
284
|
-
open: ie,
|
|
285
|
-
onOpenChange: fe,
|
|
286
|
-
modal: te,
|
|
287
|
-
...le,
|
|
288
|
-
children: [
|
|
289
|
-
/* @__PURE__ */ n(
|
|
290
|
-
f.Trigger,
|
|
291
|
-
{
|
|
292
|
-
...V(se, ne)
|
|
293
|
-
}
|
|
294
|
-
),
|
|
295
|
-
/* @__PURE__ */ n(f.Portal, { ...oe, children: /* @__PURE__ */ n(
|
|
296
|
-
f.Positioner,
|
|
297
|
-
{
|
|
298
|
-
...V(pe, ue),
|
|
299
|
-
children: ce
|
|
300
|
-
}
|
|
301
|
-
) })
|
|
302
|
-
]
|
|
303
|
-
}
|
|
283
|
+
[z, s, F, t, e?.trigger, M, P]
|
|
304
284
|
);
|
|
285
|
+
return /* @__PURE__ */ f(c.Root, { open: se, onOpenChange: he, modal: ie, ...fe, children: [
|
|
286
|
+
/* @__PURE__ */ r(c.Trigger, { ...Q(Pe, ce) }),
|
|
287
|
+
/* @__PURE__ */ r(c.Portal, { ...ae, children: /* @__PURE__ */ r(c.Positioner, { ...Q(me, ge), children: de }) })
|
|
288
|
+
] });
|
|
305
289
|
};
|
|
306
290
|
export {
|
|
307
|
-
|
|
291
|
+
qe as PopupPanel
|
|
308
292
|
};
|
|
309
293
|
//# 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 { 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
|
+
{"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 {\n DEFAULT_SIDE_OFFSET,\n POPUP_PANEL_ARROW_HEIGHT,\n POPUP_PANEL_ARROW_SIDE_OFFSET,\n POPUP_PANEL_ARROW_WIDTH,\n PopupPanelSize,\n} 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?: (placement: NonNullable<PopupPanelProps[\"placement\"]>) => void;\n}\n\nfunction PlacementStateSync({ side, align, onPlacementChange }: PlacementStateSyncProps) {\n const lastPlacementRef = useRef<NonNullable<PopupPanelProps[\"placement\"]> | undefined>(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\nfunction PopupPanelArrowSvg(props: React.ComponentProps<\"svg\">) {\n const cls = useCls();\n\n return (\n <svg\n width={POPUP_PANEL_ARROW_WIDTH}\n height={POPUP_PANEL_ARROW_HEIGHT}\n viewBox=\"0 0 20 10\"\n fill=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n className={cls(\"popup-panel-arrow-fill\")}\n />\n <path\n d=\"M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z\"\n className={cls(\"popup-panel-arrow-outer-stroke\")}\n />\n <path\n d=\"M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z\"\n className={cls(\"popup-panel-arrow-inner-stroke\")}\n />\n </svg>\n );\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 arrow = false,\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 zIndex = \"popup\",\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\") return positionerProps.sideOffset;\n\n const userSideOffset =\n typeof positionerProps.sideOffset === \"number\" ? positionerProps.sideOffset : 0;\n const baseOffset =\n (arrow ? POPUP_PANEL_ARROW_SIDE_OFFSET + DEFAULT_SIDE_OFFSET : DEFAULT_SIDE_OFFSET) +\n userSideOffset;\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 }, [arrow, 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 align=\"center\" gap={8} className={cls(\"popup-panel-title-wrapper\")}>\n <Popover.Title\n render={<div className={clsx(cls(\"grow\", \"truncate\"), classNames?.title)}>{title}</div>}\n ></Popover.Title>\n <div className=\"flex items-center gap-2\">\n {beforeCloseButton}\n <Popover.Close render={<IconButton>{defaultCloseIcon}</IconButton>} />\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 data-draggable={draggable ? \"true\" : undefined}\n data-resizable={resizable ? \"true\" : undefined}\n ref={draggableRef}\n >\n {arrow && (\n <Popover.Arrow className={clsx(cls(\"popup-panel-arrow\"), classNames?.arrow)}>\n <PopupPanelArrowSvg className={cls(\"popup-panel-arrow-svg\")} />\n </Popover.Arrow>\n )}\n {title && renderTitle()}\n <div className={clsx(cls(\"popup-panel-content\"), classNames?.content)}>{content}</div>\n {footer && (\n <div className={clsx(cls(\"popup-panel-footer\"), classNames?.footer)}>\n {typeof footer === \"function\" ? footer({ close: () => setOpen(false) }) : footer}\n </div>\n )}\n </Popover.Popup>\n ),\n [\n className,\n classNames?.content,\n classNames?.footer,\n classNames?.popup,\n classNames?.arrow,\n cls,\n content,\n draggable,\n draggableRef,\n footer,\n renderTitle,\n arrow,\n setOpen,\n size,\n title,\n resizable,\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 side={side} align={align} onPlacementChange={onPlacementChange} />\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 side={side} align={align} onPlacementChange={onPlacementChange} />\n {children}\n </div>\n );\n },\n [resizable, maintainAspectRatio, classNames?.resizeHandle, onPlacementChange],\n );\n\n const positionerStyle = useMemo(\n () =>\n ({\n \"--popup-panel-arrow-width\": `${POPUP_PANEL_ARROW_WIDTH}px`,\n \"--popup-panel-arrow-height\": `${POPUP_PANEL_ARROW_HEIGHT}px`,\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\", `popup-panel-z-index-${zIndex}`),\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 zIndex,\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 () => (offsetFrom ? (({ sideOffset: _, ...rest }) => rest)(positionerProps) : 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\" || 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 [handleTriggerRef, children, nativeButton, cls, classNames?.trigger, trigger, openOnHover],\n );\n\n return (\n <Popover.Root open={open} onOpenChange={handleOpenChange} modal={modal} {...rest}>\n <Popover.Trigger {...mergeProps(defaultTriggerProps, triggerProps)}></Popover.Trigger>\n <Popover.Portal {...portalProps}>\n <Popover.Positioner {...mergeProps(defaultPositionerProps, finalPositionerProps)}>\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","PopupPanelArrowSvg","props","cls","useCls","jsxs","POPUP_PANEL_ARROW_WIDTH","POPUP_PANEL_ARROW_HEIGHT","jsx","PopupPanel","children","openOnHover","outsideOpen","outsideOnOpenChange","content","title","trigger","className","anchor","beforeCloseButton","afterCloseButton","afterTitle","arrow","size","footer","defaultOpen","resizable","draggable","maintainAspectRatio","classNames","modal","closeOnClickOutside","positionerProps","triggerProps","portalProps","offsetFrom","nativeButton","zIndex","rest","open","setOpen","useControlledState","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","triggerElRef","handleTriggerRef","useCallback","node","getAnchorEl","result","resolvedSideOffset","useMemo","userSideOffset","baseOffset","POPUP_PANEL_ARROW_SIDE_OFFSET","DEFAULT_SIDE_OFFSET","offsetFromEl","anchorEl","offsetRect","anchorRect","distance","defaultCloseIcon","X","renderTitle","clsx","Stack","Popover","IconButton","draggableRef","useDraggable","popup","positionerRender","_onDragEnd","_onDragStart","placementKey","Fragment","Resizable","anchorToResizeHandles","positionerStyle","PopupPanelSize","defaultPositionerProps","finalPositionerProps","_","handleOpenChange","useStableCallback","nextOpen","eventDetails","defaultTriggerProps","mergeProps"],"mappings":"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"}
|
|
@@ -4,6 +4,10 @@ export declare enum PopupPanelSize {
|
|
|
4
4
|
small = "400px",
|
|
5
5
|
medium = "480px",
|
|
6
6
|
large = "640px",
|
|
7
|
-
xlarge = "840px"
|
|
7
|
+
xlarge = "840px",
|
|
8
|
+
fit = "fit-content"
|
|
8
9
|
}
|
|
10
|
+
export declare const POPUP_PANEL_ARROW_WIDTH = 20;
|
|
11
|
+
export declare const POPUP_PANEL_ARROW_HEIGHT = 10;
|
|
12
|
+
export declare const POPUP_PANEL_ARROW_SIDE_OFFSET = 8;
|
|
9
13
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;IAChB,GAAG,gBAAgB;CACpB;AAED,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,6BAA6B,IAAI,CAAC"}
|