@noya-app/noya-designsystem 0.1.10 → 0.1.12
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/.turbo/turbo-build.log +9 -9
- package/CHANGELOG.md +17 -0
- package/dist/index.d.mts +51 -9
- package/dist/index.d.ts +51 -9
- package/dist/index.js +981 -616
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +898 -538
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/components/Avatar.tsx +85 -34
- package/src/components/Button.tsx +1 -1
- package/src/components/FloatingWindow.tsx +315 -0
- package/src/components/Text.tsx +2 -1
- package/src/components/internal/Menu.tsx +1 -3
- package/src/contexts/DesignSystemConfiguration.tsx +12 -9
- package/src/contexts/FloatingWindowContext.tsx +85 -0
- package/src/index.tsx +3 -1
- package/src/theme/dark.ts +2 -0
- package/src/theme/light.ts +9 -0
package/dist/index.js
CHANGED
|
@@ -6,8 +6,8 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
8
|
var __export = (target, all) => {
|
|
9
|
-
for (var
|
|
10
|
-
__defProp(target,
|
|
9
|
+
for (var name3 in all)
|
|
10
|
+
__defProp(target, name3, { get: all[name3], enumerable: true });
|
|
11
11
|
};
|
|
12
12
|
var __copyProps = (to, from, except, desc) => {
|
|
13
13
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -33,6 +33,7 @@ __export(src_exports, {
|
|
|
33
33
|
ActivityIndicator: () => ActivityIndicator,
|
|
34
34
|
ArrayController: () => ArrayController,
|
|
35
35
|
Avatar: () => Avatar,
|
|
36
|
+
AvatarStack: () => AvatarStack,
|
|
36
37
|
Body: () => Body,
|
|
37
38
|
Button: () => Button,
|
|
38
39
|
ButtonElement: () => ButtonElement,
|
|
@@ -51,6 +52,8 @@ __export(src_exports, {
|
|
|
51
52
|
DropdownMenu: () => DropdownMenu,
|
|
52
53
|
FillInputField: () => FillInputField,
|
|
53
54
|
FillPreviewBackground: () => FillPreviewBackground,
|
|
55
|
+
FloatingWindow: () => FloatingWindow,
|
|
56
|
+
FloatingWindowProvider: () => FloatingWindowProvider,
|
|
54
57
|
FullscreenDialog: () => FullscreenDialog,
|
|
55
58
|
GlobalInputBlurProvider: () => GlobalInputBlurProvider,
|
|
56
59
|
GradientPicker: () => GradientPicker,
|
|
@@ -108,9 +111,11 @@ __export(src_exports, {
|
|
|
108
111
|
sketchColorToHex: () => sketchColorToHex,
|
|
109
112
|
sketchColorToRgba: () => sketchColorToRgba,
|
|
110
113
|
sketchColorToRgbaString: () => sketchColorToRgbaString,
|
|
114
|
+
useCurrentFloatingWindowInternal: () => useCurrentFloatingWindowInternal,
|
|
111
115
|
useDesignSystemConfiguration: () => useDesignSystemConfiguration,
|
|
112
116
|
useDesignSystemTheme: () => useDesignSystemTheme,
|
|
113
117
|
useDialogContainsElement: () => useDialogContainsElement,
|
|
118
|
+
useFloatingWindowManager: () => useFloatingWindowManager,
|
|
114
119
|
useGlobalInputBlur: () => useGlobalInputBlur,
|
|
115
120
|
useGlobalInputBlurListener: () => useGlobalInputBlurListener,
|
|
116
121
|
useGlobalInputBlurTrigger: () => useGlobalInputBlurTrigger,
|
|
@@ -155,9 +160,94 @@ var ActivityIndicator = (0, import_react.memo)(function ActivityIndicator2({
|
|
|
155
160
|
|
|
156
161
|
// src/components/Avatar.tsx
|
|
157
162
|
var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"));
|
|
158
|
-
var
|
|
163
|
+
var import_react4 = __toESM(require("react"));
|
|
164
|
+
var import_styled_components3 = __toESM(require("styled-components"));
|
|
165
|
+
|
|
166
|
+
// src/components/Stack.tsx
|
|
167
|
+
var import_react3 = __toESM(require("react"));
|
|
159
168
|
var import_styled_components2 = __toESM(require("styled-components"));
|
|
160
|
-
|
|
169
|
+
|
|
170
|
+
// src/utils/breakpoints.ts
|
|
171
|
+
function mergeBreakpoints(breakpoints, transform) {
|
|
172
|
+
const breakpointMap = Array.isArray(breakpoints) ? breakpoints.reduce(
|
|
173
|
+
(result, item) => {
|
|
174
|
+
const [key, value] = item;
|
|
175
|
+
result[key] = result[key] ? { ...result[key], ...value } : value;
|
|
176
|
+
return result;
|
|
177
|
+
},
|
|
178
|
+
{}
|
|
179
|
+
) : breakpoints;
|
|
180
|
+
const breakpointList = Object.entries(breakpointMap);
|
|
181
|
+
const transformedList = breakpointList.sort((a, b) => Number(b[0]) - Number(a[0])).map(([width, value]) => [
|
|
182
|
+
`@media screen and (max-width: ${width}px)`,
|
|
183
|
+
transform?.(value) ?? value
|
|
184
|
+
]);
|
|
185
|
+
return Object.fromEntries(transformedList);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// src/utils/withSeparatorElements.ts
|
|
189
|
+
var import_react2 = require("react");
|
|
190
|
+
function createKey(key) {
|
|
191
|
+
return `s-${key}`;
|
|
192
|
+
}
|
|
193
|
+
function withSeparatorElements(elements2, separator) {
|
|
194
|
+
const childrenArray = import_react2.Children.toArray(elements2);
|
|
195
|
+
for (let i = childrenArray.length - 1; i > 0; i--) {
|
|
196
|
+
let sep = typeof separator === "function" ? separator() : (0, import_react2.isValidElement)(separator) ? (0, import_react2.cloneElement)(separator, { key: createKey(i) }) : separator;
|
|
197
|
+
if ((0, import_react2.isValidElement)(sep) && sep.key == null) {
|
|
198
|
+
sep = (0, import_react2.cloneElement)(sep, { key: createKey(i) });
|
|
199
|
+
}
|
|
200
|
+
if (!sep || typeof sep === "boolean")
|
|
201
|
+
continue;
|
|
202
|
+
childrenArray.splice(i, 0, sep);
|
|
203
|
+
}
|
|
204
|
+
return childrenArray;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// src/components/Stack.tsx
|
|
208
|
+
var Element = import_styled_components2.default.div(({ styleProps, breakpoints }) => ({
|
|
209
|
+
...styleProps,
|
|
210
|
+
...mergeBreakpoints(breakpoints || [])
|
|
211
|
+
}));
|
|
212
|
+
var StackBase = (0, import_react3.forwardRef)(function StackBase2({ id, as, children, separator, breakpoints, tabIndex, href, ...rest }, forwardedRef) {
|
|
213
|
+
const elements2 = separator ? withSeparatorElements(import_react3.Children.toArray(children), separator) : children;
|
|
214
|
+
const styleProps = {
|
|
215
|
+
display: "flex",
|
|
216
|
+
position: "relative",
|
|
217
|
+
alignItems: "stretch",
|
|
218
|
+
...rest
|
|
219
|
+
};
|
|
220
|
+
return /* @__PURE__ */ import_react3.default.createElement(
|
|
221
|
+
Element,
|
|
222
|
+
{
|
|
223
|
+
ref: forwardedRef,
|
|
224
|
+
id,
|
|
225
|
+
as,
|
|
226
|
+
styleProps,
|
|
227
|
+
breakpoints,
|
|
228
|
+
tabIndex,
|
|
229
|
+
...href && { href }
|
|
230
|
+
},
|
|
231
|
+
elements2
|
|
232
|
+
);
|
|
233
|
+
});
|
|
234
|
+
var VerticalStack = (0, import_react3.memo)(
|
|
235
|
+
(0, import_react3.forwardRef)(function VStack(props, forwardedRef) {
|
|
236
|
+
return /* @__PURE__ */ import_react3.default.createElement(StackBase, { ...props, flexDirection: "column", ref: forwardedRef });
|
|
237
|
+
})
|
|
238
|
+
);
|
|
239
|
+
var HorizontalStack = (0, import_react3.memo)(
|
|
240
|
+
(0, import_react3.forwardRef)(function HStack(props, forwardedRef) {
|
|
241
|
+
return /* @__PURE__ */ import_react3.default.createElement(StackBase, { ...props, flexDirection: "row", ref: forwardedRef });
|
|
242
|
+
})
|
|
243
|
+
);
|
|
244
|
+
var Stack = {
|
|
245
|
+
V: VerticalStack,
|
|
246
|
+
H: HorizontalStack
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
// src/components/Avatar.tsx
|
|
250
|
+
var AvatarRoot = (0, import_styled_components3.default)(AvatarPrimitive.Root)(({ theme, size: size2, overflow }) => ({
|
|
161
251
|
display: "inline-flex",
|
|
162
252
|
alignItems: "center",
|
|
163
253
|
justifyContent: "center",
|
|
@@ -168,17 +258,23 @@ var AvatarRoot = (0, import_styled_components2.default)(AvatarPrimitive.Root)(({
|
|
|
168
258
|
height: size2,
|
|
169
259
|
borderRadius: "100%",
|
|
170
260
|
backgroundColor: theme.colors.secondaryLight,
|
|
261
|
+
outline: `1px solid ${theme.colors.secondary}`,
|
|
262
|
+
outlineOffset: "-1px",
|
|
171
263
|
...overflow && {
|
|
172
264
|
margin: `-${overflow}px`
|
|
265
|
+
},
|
|
266
|
+
"&:hover": {
|
|
267
|
+
boxShadow: `0 0 0 2px ${theme.colors.sidebar.background}`,
|
|
268
|
+
opacity: 0.9
|
|
173
269
|
}
|
|
174
270
|
}));
|
|
175
|
-
var AvatarImage = (0,
|
|
271
|
+
var AvatarImage = (0, import_styled_components3.default)(AvatarPrimitive.Image)({
|
|
176
272
|
width: "100%",
|
|
177
273
|
height: "100%",
|
|
178
274
|
objectFit: "cover",
|
|
179
275
|
borderRadius: "inherit"
|
|
180
276
|
});
|
|
181
|
-
var AvatarFallback = (0,
|
|
277
|
+
var AvatarFallback = (0, import_styled_components3.default)(AvatarPrimitive.Fallback)(({ theme, size: size2 }) => ({
|
|
182
278
|
fontSize: "0.8rem",
|
|
183
279
|
fontWeight: 500,
|
|
184
280
|
width: "100%",
|
|
@@ -189,25 +285,47 @@ var AvatarFallback = (0, import_styled_components2.default)(AvatarPrimitive.Fall
|
|
|
189
285
|
color: "white",
|
|
190
286
|
lineHeight: `${size2}px`
|
|
191
287
|
}));
|
|
192
|
-
|
|
288
|
+
var Avatar = (0, import_react4.forwardRef)(function Avatar2({
|
|
193
289
|
image,
|
|
194
|
-
name,
|
|
290
|
+
name: name3,
|
|
195
291
|
fallback,
|
|
196
292
|
size: size2 = 19,
|
|
197
|
-
overflow = 0
|
|
293
|
+
overflow = 0,
|
|
294
|
+
...props
|
|
295
|
+
}, forwardedRef) {
|
|
296
|
+
return /* @__PURE__ */ import_react4.default.createElement(AvatarRoot, { ref: forwardedRef, size: size2, overflow, ...props }, /* @__PURE__ */ import_react4.default.createElement(AvatarImage, { src: image, alt: name3 }), /* @__PURE__ */ import_react4.default.createElement(AvatarFallback, { size: size2 }, fallback));
|
|
297
|
+
});
|
|
298
|
+
var AvatarStackItemWrapper = import_styled_components3.default.div(({ size: size2, theme }) => ({
|
|
299
|
+
position: "relative",
|
|
300
|
+
width: size2,
|
|
301
|
+
height: size2,
|
|
302
|
+
marginLeft: "-8px",
|
|
303
|
+
outline: `2px solid ${theme.colors.sidebar.background}`,
|
|
304
|
+
borderRadius: "50%"
|
|
305
|
+
}));
|
|
306
|
+
function AvatarStack({
|
|
307
|
+
size: size2 = 19,
|
|
308
|
+
children
|
|
198
309
|
}) {
|
|
199
|
-
|
|
310
|
+
const childrenArray = import_react4.default.Children.toArray(children).map((child) => {
|
|
311
|
+
return import_react4.default.cloneElement(child, { size: size2 });
|
|
312
|
+
});
|
|
313
|
+
return /* @__PURE__ */ import_react4.default.createElement(Stack.H, null, childrenArray.map((child, index) => {
|
|
314
|
+
if (index === 0)
|
|
315
|
+
return child;
|
|
316
|
+
return /* @__PURE__ */ import_react4.default.createElement(AvatarStackItemWrapper, { size: size2, key: index }, child);
|
|
317
|
+
}));
|
|
200
318
|
}
|
|
201
319
|
|
|
202
320
|
// src/components/Button.tsx
|
|
203
|
-
var
|
|
204
|
-
var
|
|
321
|
+
var import_react6 = __toESM(require("react"));
|
|
322
|
+
var import_styled_components5 = __toESM(require("styled-components"));
|
|
205
323
|
|
|
206
324
|
// src/components/Tooltip.tsx
|
|
207
325
|
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
|
|
208
|
-
var
|
|
209
|
-
var
|
|
210
|
-
var Content2 = (0,
|
|
326
|
+
var import_react5 = __toESM(require("react"));
|
|
327
|
+
var import_styled_components4 = __toESM(require("styled-components"));
|
|
328
|
+
var Content2 = (0, import_styled_components4.default)(TooltipPrimitive.Content)(({ theme }) => ({
|
|
211
329
|
...theme.textStyles.small,
|
|
212
330
|
color: theme.colors.text,
|
|
213
331
|
borderRadius: 3,
|
|
@@ -216,8 +334,8 @@ var Content2 = (0, import_styled_components3.default)(TooltipPrimitive.Content)(
|
|
|
216
334
|
boxShadow: "0 2px 4px rgba(0,0,0,0.2), 0 0 12px rgba(0,0,0,0.1)",
|
|
217
335
|
border: `1px solid ${theme.colors.dividerStrong}`
|
|
218
336
|
}));
|
|
219
|
-
var Tooltip = (0,
|
|
220
|
-
return /* @__PURE__ */
|
|
337
|
+
var Tooltip = (0, import_react5.memo)(function Tooltip2({ children, content }) {
|
|
338
|
+
return /* @__PURE__ */ import_react5.default.createElement(TooltipPrimitive.Provider, null, /* @__PURE__ */ import_react5.default.createElement(TooltipPrimitive.Root, null, /* @__PURE__ */ import_react5.default.createElement(TooltipPrimitive.Trigger, { asChild: true }, children), /* @__PURE__ */ import_react5.default.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ import_react5.default.createElement(
|
|
221
339
|
Content2,
|
|
222
340
|
{
|
|
223
341
|
side: "bottom",
|
|
@@ -230,7 +348,7 @@ var Tooltip = (0, import_react3.memo)(function Tooltip2({ children, content }) {
|
|
|
230
348
|
});
|
|
231
349
|
|
|
232
350
|
// src/components/Button.tsx
|
|
233
|
-
var ButtonElement =
|
|
351
|
+
var ButtonElement = import_styled_components5.default.button(
|
|
234
352
|
({
|
|
235
353
|
theme,
|
|
236
354
|
active,
|
|
@@ -240,7 +358,7 @@ var ButtonElement = import_styled_components4.default.button(
|
|
|
240
358
|
flex,
|
|
241
359
|
defaultBackground = theme.colors.inputBackground
|
|
242
360
|
}) => ({
|
|
243
|
-
...size2 === "large" ? theme.textStyles.heading4 : theme.textStyles.
|
|
361
|
+
...size2 === "large" ? theme.textStyles.heading4 : theme.textStyles.button,
|
|
244
362
|
textDecoration: "none",
|
|
245
363
|
lineHeight: "1",
|
|
246
364
|
flex: flex ?? "0 0 auto",
|
|
@@ -328,7 +446,7 @@ var ButtonElement = import_styled_components4.default.button(
|
|
|
328
446
|
}
|
|
329
447
|
})
|
|
330
448
|
);
|
|
331
|
-
var ButtonContent =
|
|
449
|
+
var ButtonContent = import_styled_components5.default.span(({ theme }) => ({
|
|
332
450
|
// Line height of small text - maybe figure out better way to ensure
|
|
333
451
|
// icons don't have a smaller height
|
|
334
452
|
minHeight: "19px",
|
|
@@ -339,7 +457,7 @@ var ButtonContent = import_styled_components4.default.span(({ theme }) => ({
|
|
|
339
457
|
// Helps with alignment with the default small text
|
|
340
458
|
lineHeight: "15px"
|
|
341
459
|
}));
|
|
342
|
-
var Button = (0,
|
|
460
|
+
var Button = (0, import_react6.forwardRef)(function Button2({
|
|
343
461
|
id,
|
|
344
462
|
className,
|
|
345
463
|
style: style3,
|
|
@@ -357,7 +475,7 @@ var Button = (0, import_react4.forwardRef)(function Button2({
|
|
|
357
475
|
...rest
|
|
358
476
|
// Propagate any other props so this component works as a Slot
|
|
359
477
|
}, forwardedRef) {
|
|
360
|
-
const buttonElement = /* @__PURE__ */
|
|
478
|
+
const buttonElement = /* @__PURE__ */ import_react6.default.createElement(
|
|
361
479
|
ButtonElement,
|
|
362
480
|
{
|
|
363
481
|
ref: forwardedRef,
|
|
@@ -372,46 +490,46 @@ var Button = (0, import_react4.forwardRef)(function Button2({
|
|
|
372
490
|
size: size2,
|
|
373
491
|
defaultBackground,
|
|
374
492
|
onClick,
|
|
375
|
-
onDoubleClick: (0,
|
|
493
|
+
onDoubleClick: (0, import_react6.useCallback)((event) => {
|
|
376
494
|
event.stopPropagation();
|
|
377
495
|
}, []),
|
|
378
496
|
...rest
|
|
379
497
|
},
|
|
380
|
-
/* @__PURE__ */
|
|
498
|
+
/* @__PURE__ */ import_react6.default.createElement(ButtonContent, { style: contentStyle }, children)
|
|
381
499
|
);
|
|
382
|
-
return tooltip ? /* @__PURE__ */
|
|
500
|
+
return tooltip ? /* @__PURE__ */ import_react6.default.createElement(Tooltip, { content: tooltip }, buttonElement) : buttonElement;
|
|
383
501
|
});
|
|
384
502
|
|
|
385
503
|
// src/components/Chip.tsx
|
|
386
504
|
var import_noya_icons3 = require("@noya-app/noya-icons");
|
|
387
|
-
var
|
|
505
|
+
var import_react35 = __toESM(require("react"));
|
|
388
506
|
var import_styled_components16 = __toESM(require("styled-components"));
|
|
389
507
|
|
|
390
508
|
// src/contexts/DesignSystemConfiguration.tsx
|
|
391
|
-
var
|
|
509
|
+
var import_react34 = __toESM(require("react"));
|
|
392
510
|
var import_styled_components15 = require("styled-components");
|
|
393
511
|
|
|
394
512
|
// src/components/Toast.tsx
|
|
395
513
|
var ToastPrimitive = __toESM(require("@radix-ui/react-toast"));
|
|
396
|
-
var
|
|
397
|
-
var
|
|
514
|
+
var import_react8 = __toESM(require("react"));
|
|
515
|
+
var import_styled_components7 = __toESM(require("styled-components"));
|
|
398
516
|
|
|
399
517
|
// src/components/IconButton.tsx
|
|
400
518
|
var Icons = __toESM(require("@noya-app/noya-icons"));
|
|
401
|
-
var
|
|
402
|
-
var
|
|
403
|
-
var IconButton = (0,
|
|
404
|
-
(0,
|
|
405
|
-
const { icon: iconColor, iconSelected: iconSelectedColor } = (0,
|
|
519
|
+
var import_react7 = __toESM(require("react"));
|
|
520
|
+
var import_styled_components6 = require("styled-components");
|
|
521
|
+
var IconButton = (0, import_react7.memo)(
|
|
522
|
+
(0, import_react7.forwardRef)(function IconButton2({ selected, iconName, color, size: size2, contentStyle, ...props }, forwardedRef) {
|
|
523
|
+
const { icon: iconColor, iconSelected: iconSelectedColor } = (0, import_styled_components6.useTheme)().colors;
|
|
406
524
|
const Icon = Icons[iconName];
|
|
407
|
-
const style3 = (0,
|
|
525
|
+
const style3 = (0, import_react7.useMemo)(() => {
|
|
408
526
|
return {
|
|
409
527
|
padding: "0 2px",
|
|
410
528
|
...size2 && { minHeight: size2 },
|
|
411
529
|
...contentStyle
|
|
412
530
|
};
|
|
413
531
|
}, [contentStyle, size2]);
|
|
414
|
-
return /* @__PURE__ */
|
|
532
|
+
return /* @__PURE__ */ import_react7.default.createElement(Button, { ref: forwardedRef, ...props, variant: "none", contentStyle: style3 }, /* @__PURE__ */ import_react7.default.createElement(
|
|
415
533
|
Icon,
|
|
416
534
|
{
|
|
417
535
|
color: color ?? (selected ? iconSelectedColor : iconColor),
|
|
@@ -422,7 +540,7 @@ var IconButton = (0, import_react5.memo)(
|
|
|
422
540
|
);
|
|
423
541
|
|
|
424
542
|
// src/components/Toast.tsx
|
|
425
|
-
var ToastViewport = (0,
|
|
543
|
+
var ToastViewport = (0, import_styled_components7.default)(ToastPrimitive.Viewport)({
|
|
426
544
|
position: "fixed",
|
|
427
545
|
bottom: 0,
|
|
428
546
|
right: 0,
|
|
@@ -437,7 +555,7 @@ var ToastViewport = (0, import_styled_components6.default)(ToastPrimitive.Viewpo
|
|
|
437
555
|
zIndex: 2147483647,
|
|
438
556
|
outline: "none"
|
|
439
557
|
});
|
|
440
|
-
var ToastRoot = (0,
|
|
558
|
+
var ToastRoot = (0, import_styled_components7.default)(ToastPrimitive.Root)(({ theme }) => ({
|
|
441
559
|
borderRadius: 4,
|
|
442
560
|
fontSize: 14,
|
|
443
561
|
backgroundColor: theme.colors.popover.background,
|
|
@@ -450,19 +568,19 @@ var ToastRoot = (0, import_styled_components6.default)(ToastPrimitive.Root)(({ t
|
|
|
450
568
|
columnGap: 10,
|
|
451
569
|
alignItems: "center"
|
|
452
570
|
}));
|
|
453
|
-
var ToastTitle = (0,
|
|
571
|
+
var ToastTitle = (0, import_styled_components7.default)(ToastPrimitive.Title)(({ theme }) => ({
|
|
454
572
|
gridArea: "title",
|
|
455
573
|
marginBottom: 5,
|
|
456
574
|
...theme.textStyles.label,
|
|
457
575
|
fontWeight: "bold",
|
|
458
576
|
color: theme.colors.text
|
|
459
577
|
}));
|
|
460
|
-
var ToastDescription = (0,
|
|
578
|
+
var ToastDescription = (0, import_styled_components7.default)(ToastPrimitive.Description)(({ theme }) => ({
|
|
461
579
|
gridArea: "description",
|
|
462
580
|
...theme.textStyles.small,
|
|
463
581
|
color: theme.colors.textMuted
|
|
464
582
|
}));
|
|
465
|
-
var ToastAction = (0,
|
|
583
|
+
var ToastAction = (0, import_styled_components7.default)(ToastPrimitive.Action)({
|
|
466
584
|
gridArea: "action"
|
|
467
585
|
});
|
|
468
586
|
var Toast = ({
|
|
@@ -471,9 +589,9 @@ var Toast = ({
|
|
|
471
589
|
children,
|
|
472
590
|
...props
|
|
473
591
|
}) => {
|
|
474
|
-
return /* @__PURE__ */
|
|
592
|
+
return /* @__PURE__ */ import_react8.default.createElement(ToastRoot, { ...props }, title && /* @__PURE__ */ import_react8.default.createElement(ToastTitle, null, title), /* @__PURE__ */ import_react8.default.createElement(ToastDescription, null, content), children && /* @__PURE__ */ import_react8.default.createElement(ToastAction, { asChild: true, altText: "" }, children), /* @__PURE__ */ import_react8.default.createElement(ToastPrimitive.Close, { "aria-label": "Close", asChild: true }, /* @__PURE__ */ import_react8.default.createElement(IconButton, { iconName: "Cross1Icon" })));
|
|
475
593
|
};
|
|
476
|
-
var ToastProvider = ({ children }) => /* @__PURE__ */
|
|
594
|
+
var ToastProvider = ({ children }) => /* @__PURE__ */ import_react8.default.createElement(ToastPrimitive.Provider, null, children, /* @__PURE__ */ import_react8.default.createElement(ToastViewport, null));
|
|
477
595
|
|
|
478
596
|
// src/contexts/DialogContext.tsx
|
|
479
597
|
var import_react32 = __toESM(require("react"));
|
|
@@ -481,16 +599,16 @@ var import_styled_components14 = __toESM(require("styled-components"));
|
|
|
481
599
|
|
|
482
600
|
// src/components/Dialog.tsx
|
|
483
601
|
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"));
|
|
484
|
-
var
|
|
485
|
-
var
|
|
602
|
+
var import_react9 = __toESM(require("react"));
|
|
603
|
+
var import_styled_components9 = __toESM(require("styled-components"));
|
|
486
604
|
|
|
487
605
|
// src/components/Spacer.tsx
|
|
488
|
-
var
|
|
489
|
-
var SpacerVertical =
|
|
606
|
+
var import_styled_components8 = __toESM(require("styled-components"));
|
|
607
|
+
var SpacerVertical = import_styled_components8.default.span(({ size: size2, inline }) => ({
|
|
490
608
|
display: inline ? "inline-block" : "block",
|
|
491
609
|
...size2 === void 0 ? { flex: 1 } : { minHeight: size2 }
|
|
492
610
|
}));
|
|
493
|
-
var SpacerHorizontal =
|
|
611
|
+
var SpacerHorizontal = import_styled_components8.default.span(({ size: size2, inline }) => ({
|
|
494
612
|
display: inline ? "inline-block" : "block",
|
|
495
613
|
...size2 === void 0 ? { flex: 1 } : { minWidth: size2 }
|
|
496
614
|
}));
|
|
@@ -501,12 +619,12 @@ var Spacer;
|
|
|
501
619
|
})(Spacer || (Spacer = {}));
|
|
502
620
|
|
|
503
621
|
// src/components/Dialog.tsx
|
|
504
|
-
var StyledOverlay = (0,
|
|
622
|
+
var StyledOverlay = (0, import_styled_components9.default)(DialogPrimitive.Overlay)({
|
|
505
623
|
backgroundColor: "rgba(0,0,0,0.5)",
|
|
506
624
|
position: "fixed",
|
|
507
625
|
inset: 0
|
|
508
626
|
});
|
|
509
|
-
var StyledContent = (0,
|
|
627
|
+
var StyledContent = (0, import_styled_components9.default)(DialogPrimitive.Content)(({ theme }) => ({
|
|
510
628
|
boxShadow: "hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px",
|
|
511
629
|
position: "fixed",
|
|
512
630
|
top: "50%",
|
|
@@ -525,17 +643,17 @@ var StyledContent = (0, import_styled_components8.default)(DialogPrimitive.Conte
|
|
|
525
643
|
pointerEvents: "all",
|
|
526
644
|
zIndex: 1e3
|
|
527
645
|
}));
|
|
528
|
-
var StyledTitle = (0,
|
|
646
|
+
var StyledTitle = (0, import_styled_components9.default)(DialogPrimitive.Title)(({ theme }) => ({
|
|
529
647
|
margin: 0,
|
|
530
648
|
...theme.textStyles.body,
|
|
531
649
|
color: theme.colors.text
|
|
532
650
|
}));
|
|
533
|
-
var StyledDescription = (0,
|
|
651
|
+
var StyledDescription = (0, import_styled_components9.default)(DialogPrimitive.Description)(({ theme }) => ({
|
|
534
652
|
margin: 0,
|
|
535
653
|
...theme.textStyles.small,
|
|
536
654
|
color: theme.colors.textMuted
|
|
537
655
|
}));
|
|
538
|
-
var CloseButtonContainer =
|
|
656
|
+
var CloseButtonContainer = import_styled_components9.default.div(({ theme }) => ({
|
|
539
657
|
position: "absolute",
|
|
540
658
|
top: theme.sizes.dialog.padding,
|
|
541
659
|
right: theme.sizes.dialog.padding,
|
|
@@ -546,7 +664,7 @@ var CloseButtonContainer = import_styled_components8.default.div(({ theme }) =>
|
|
|
546
664
|
// boxShadow: `0 0 2px rgba(0, 0, 0, 0.2)`,
|
|
547
665
|
border: `1px solid rgba(128,128,128,0.2)`
|
|
548
666
|
}));
|
|
549
|
-
var Dialog = (0,
|
|
667
|
+
var Dialog = (0, import_react9.forwardRef)(function Dialog2({
|
|
550
668
|
children,
|
|
551
669
|
title,
|
|
552
670
|
description,
|
|
@@ -556,15 +674,15 @@ var Dialog = (0, import_react7.forwardRef)(function Dialog2({
|
|
|
556
674
|
onOpenAutoFocus,
|
|
557
675
|
closeOnInteractOutside = true
|
|
558
676
|
}, forwardedRef) {
|
|
559
|
-
const contentRef = (0,
|
|
560
|
-
(0,
|
|
677
|
+
const contentRef = (0, import_react9.useRef)(null);
|
|
678
|
+
(0, import_react9.useImperativeHandle)(forwardedRef, () => ({
|
|
561
679
|
containsElement(element) {
|
|
562
680
|
if (!contentRef.current)
|
|
563
681
|
return false;
|
|
564
682
|
return contentRef.current.contains(element);
|
|
565
683
|
}
|
|
566
684
|
}));
|
|
567
|
-
return /* @__PURE__ */
|
|
685
|
+
return /* @__PURE__ */ import_react9.default.createElement(DialogPrimitive.Root, { open, onOpenChange }, /* @__PURE__ */ import_react9.default.createElement(StyledOverlay, null), /* @__PURE__ */ import_react9.default.createElement(
|
|
568
686
|
StyledContent,
|
|
569
687
|
{
|
|
570
688
|
ref: contentRef,
|
|
@@ -579,14 +697,14 @@ var Dialog = (0, import_react7.forwardRef)(function Dialog2({
|
|
|
579
697
|
}
|
|
580
698
|
}
|
|
581
699
|
},
|
|
582
|
-
/* @__PURE__ */
|
|
583
|
-
title && /* @__PURE__ */
|
|
584
|
-
description && /* @__PURE__ */
|
|
700
|
+
/* @__PURE__ */ import_react9.default.createElement(CloseButtonContainer, null, /* @__PURE__ */ import_react9.default.createElement(DialogPrimitive.Close, { asChild: true }, /* @__PURE__ */ import_react9.default.createElement(IconButton, { iconName: "Cross1Icon" }))),
|
|
701
|
+
title && /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement(StyledTitle, null, title), /* @__PURE__ */ import_react9.default.createElement(Spacer.Vertical, { size: description ? 10 : 20 })),
|
|
702
|
+
description && /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement(Spacer.Vertical, { size: 10 }), /* @__PURE__ */ import_react9.default.createElement(StyledDescription, null, description), /* @__PURE__ */ import_react9.default.createElement(Spacer.Vertical, { size: 20 })),
|
|
585
703
|
children
|
|
586
704
|
));
|
|
587
705
|
});
|
|
588
|
-
var FullscreenDialog = (0,
|
|
589
|
-
return /* @__PURE__ */
|
|
706
|
+
var FullscreenDialog = (0, import_react9.forwardRef)(function FullscreenDialog2({ style: style3, ...rest }, forwardedRef) {
|
|
707
|
+
return /* @__PURE__ */ import_react9.default.createElement(
|
|
590
708
|
Dialog,
|
|
591
709
|
{
|
|
592
710
|
ref: forwardedRef,
|
|
@@ -613,13 +731,13 @@ var import_noya_icons2 = require("@noya-app/noya-icons");
|
|
|
613
731
|
var import_noya_utils5 = require("@noya-app/noya-utils");
|
|
614
732
|
|
|
615
733
|
// ../noya-react-utils/src/components/AutoSizer.tsx
|
|
616
|
-
var
|
|
734
|
+
var import_react10 = __toESM(require("react"));
|
|
617
735
|
|
|
618
736
|
// ../noya-react-utils/src/hooks/useSize.ts
|
|
619
|
-
var
|
|
737
|
+
var React9 = __toESM(require("react"));
|
|
620
738
|
function useSize(refToObserve, dimensions = "both") {
|
|
621
|
-
const [size2, setSize] =
|
|
622
|
-
|
|
739
|
+
const [size2, setSize] = React9.useState(void 0);
|
|
740
|
+
React9.useEffect(() => {
|
|
623
741
|
if (refToObserve.current) {
|
|
624
742
|
const elementToObserve = refToObserve.current;
|
|
625
743
|
const resizeObserver = new ResizeObserver((entries) => {
|
|
@@ -666,37 +784,37 @@ var style = {
|
|
|
666
784
|
flex: "1 0 0",
|
|
667
785
|
flexDirection: "column"
|
|
668
786
|
};
|
|
669
|
-
var AutoSizer = (0,
|
|
787
|
+
var AutoSizer = (0, import_react10.memo)(function AutoSizer2({
|
|
670
788
|
children,
|
|
671
789
|
className
|
|
672
790
|
}) {
|
|
673
|
-
const containerRef = (0,
|
|
791
|
+
const containerRef = (0, import_react10.useRef)(null);
|
|
674
792
|
const containerSize = useSize(containerRef);
|
|
675
|
-
return /* @__PURE__ */
|
|
793
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", { ref: containerRef, style, className }, containerSize && containerSize.width > 0 && containerSize.height > 0 && children(containerSize));
|
|
676
794
|
});
|
|
677
|
-
var SingleDimensionAutoSizer = (0,
|
|
795
|
+
var SingleDimensionAutoSizer = (0, import_react10.memo)(function SingleDimensionAutoSizer2({
|
|
678
796
|
children,
|
|
679
797
|
dimension,
|
|
680
798
|
className
|
|
681
799
|
}) {
|
|
682
|
-
const containerRef = (0,
|
|
800
|
+
const containerRef = (0, import_react10.useRef)(null);
|
|
683
801
|
const containerSize = useSize(containerRef, dimension);
|
|
684
|
-
return /* @__PURE__ */
|
|
802
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", { ref: containerRef, style, className }, containerSize && containerSize[dimension] > 0 && children(containerSize[dimension]));
|
|
685
803
|
});
|
|
686
804
|
|
|
687
805
|
// ../noya-react-utils/src/components/FileDropTarget.tsx
|
|
688
|
-
var
|
|
806
|
+
var import_react12 = __toESM(require("react"));
|
|
689
807
|
|
|
690
808
|
// ../noya-react-utils/src/hooks/useFileDropTarget.ts
|
|
691
|
-
var
|
|
809
|
+
var import_react11 = require("react");
|
|
692
810
|
function useFileDropTarget(dropEvent) {
|
|
693
|
-
const [isDropTargetActive, setIsDropTargetActive] = (0,
|
|
694
|
-
const handleDragEvent = (0,
|
|
811
|
+
const [isDropTargetActive, setIsDropTargetActive] = (0, import_react11.useState)(false);
|
|
812
|
+
const handleDragEvent = (0, import_react11.useCallback)((event, on) => {
|
|
695
813
|
if (on !== void 0)
|
|
696
814
|
setIsDropTargetActive(on);
|
|
697
815
|
event.preventDefault();
|
|
698
816
|
}, []);
|
|
699
|
-
const handleDropEvent = (0,
|
|
817
|
+
const handleDropEvent = (0, import_react11.useCallback)(
|
|
700
818
|
(event) => {
|
|
701
819
|
dropEvent(event);
|
|
702
820
|
setIsDropTargetActive(false);
|
|
@@ -719,12 +837,12 @@ function isSupportedFile(file, supportedFileTypes) {
|
|
|
719
837
|
return supportedFileTypes.includes(file.type) || file.type === "" && file.name.endsWith(".sketch");
|
|
720
838
|
}
|
|
721
839
|
var style2 = { display: "flex", flex: 1 };
|
|
722
|
-
var FileDropTarget = (0,
|
|
840
|
+
var FileDropTarget = (0, import_react12.memo)(function FileDropTarget2({
|
|
723
841
|
children,
|
|
724
842
|
onDropFiles,
|
|
725
843
|
supportedFileTypes
|
|
726
844
|
}) {
|
|
727
|
-
const handleFile = (0,
|
|
845
|
+
const handleFile = (0, import_react12.useCallback)(
|
|
728
846
|
(event) => {
|
|
729
847
|
event.preventDefault();
|
|
730
848
|
const offsetPoint = {
|
|
@@ -757,51 +875,51 @@ var FileDropTarget = (0, import_react10.memo)(function FileDropTarget2({
|
|
|
757
875
|
[onDropFiles, supportedFileTypes]
|
|
758
876
|
);
|
|
759
877
|
const { dropTargetProps, isDropTargetActive } = useFileDropTarget(handleFile);
|
|
760
|
-
return /* @__PURE__ */
|
|
878
|
+
return /* @__PURE__ */ import_react12.default.createElement("div", { style: style2, ...dropTargetProps }, typeof children === "function" ? children(isDropTargetActive) : children);
|
|
761
879
|
});
|
|
762
880
|
|
|
763
881
|
// ../noya-react-utils/src/hooks/useDeepArray.ts
|
|
764
882
|
var import_noya_utils = require("@noya-app/noya-utils");
|
|
765
|
-
var
|
|
883
|
+
var import_react13 = require("react");
|
|
766
884
|
|
|
767
885
|
// ../noya-react-utils/src/hooks/useDeepState.ts
|
|
768
886
|
var import_noya_utils2 = require("@noya-app/noya-utils");
|
|
769
|
-
var
|
|
887
|
+
var import_react14 = require("react");
|
|
770
888
|
|
|
771
889
|
// ../noya-react-utils/src/hooks/useFetch.ts
|
|
772
|
-
var
|
|
890
|
+
var import_react15 = require("react");
|
|
773
891
|
|
|
774
892
|
// ../noya-react-utils/src/hooks/useIsMounted.ts
|
|
775
|
-
var
|
|
893
|
+
var import_react16 = require("react");
|
|
776
894
|
|
|
777
895
|
// ../noya-react-utils/src/hooks/useLateReference.ts
|
|
778
|
-
var
|
|
896
|
+
var import_react17 = require("react");
|
|
779
897
|
|
|
780
898
|
// ../noya-react-utils/src/hooks/useLazyValue.ts
|
|
781
|
-
var
|
|
899
|
+
var import_react18 = require("react");
|
|
782
900
|
|
|
783
901
|
// ../noya-react-utils/src/hooks/useMutableState.ts
|
|
784
|
-
var
|
|
902
|
+
var import_react19 = require("react");
|
|
785
903
|
|
|
786
904
|
// ../noya-react-utils/src/hooks/usePersistentState.ts
|
|
787
|
-
var
|
|
905
|
+
var import_react20 = require("react");
|
|
788
906
|
|
|
789
907
|
// ../noya-react-utils/src/hooks/usePixelRatio.ts
|
|
790
|
-
var
|
|
908
|
+
var import_react21 = require("react");
|
|
791
909
|
|
|
792
910
|
// ../noya-react-utils/src/hooks/useShallowArray.ts
|
|
793
911
|
var import_noya_utils3 = require("@noya-app/noya-utils");
|
|
794
|
-
var
|
|
912
|
+
var import_react22 = require("react");
|
|
795
913
|
|
|
796
914
|
// ../noya-react-utils/src/hooks/useStableCallback.ts
|
|
797
|
-
var
|
|
915
|
+
var import_react23 = require("react");
|
|
798
916
|
|
|
799
917
|
// ../noya-react-utils/src/hooks/useSystemColorScheme.ts
|
|
800
|
-
var
|
|
918
|
+
var import_react24 = require("react");
|
|
801
919
|
|
|
802
920
|
// ../noya-react-utils/src/hooks/useUrlHashParameters.ts
|
|
803
921
|
var import_noya_utils4 = require("@noya-app/noya-utils");
|
|
804
|
-
var
|
|
922
|
+
var import_react25 = require("react");
|
|
805
923
|
|
|
806
924
|
// ../emitter/src/index.ts
|
|
807
925
|
var Emitter = class {
|
|
@@ -923,34 +1041,13 @@ function handleNudge(e) {
|
|
|
923
1041
|
var import_noya_icons = require("@noya-app/noya-icons");
|
|
924
1042
|
var import_noya_keymap2 = require("@noya-app/noya-keymap");
|
|
925
1043
|
var RadixDropdownMenu = __toESM(require("@radix-ui/react-dropdown-menu"));
|
|
926
|
-
var
|
|
927
|
-
var
|
|
1044
|
+
var import_react27 = __toESM(require("react"));
|
|
1045
|
+
var import_styled_components11 = __toESM(require("styled-components"));
|
|
928
1046
|
|
|
929
1047
|
// src/components/internal/Menu.tsx
|
|
930
1048
|
var import_noya_keymap = require("@noya-app/noya-keymap");
|
|
931
|
-
var
|
|
932
|
-
var
|
|
933
|
-
|
|
934
|
-
// src/utils/withSeparatorElements.ts
|
|
935
|
-
var import_react24 = require("react");
|
|
936
|
-
function createKey(key) {
|
|
937
|
-
return `s-${key}`;
|
|
938
|
-
}
|
|
939
|
-
function withSeparatorElements(elements2, separator) {
|
|
940
|
-
const childrenArray = import_react24.Children.toArray(elements2);
|
|
941
|
-
for (let i = childrenArray.length - 1; i > 0; i--) {
|
|
942
|
-
let sep = typeof separator === "function" ? separator() : (0, import_react24.isValidElement)(separator) ? (0, import_react24.cloneElement)(separator, { key: createKey(i) }) : separator;
|
|
943
|
-
if ((0, import_react24.isValidElement)(sep) && sep.key == null) {
|
|
944
|
-
sep = (0, import_react24.cloneElement)(sep, { key: createKey(i) });
|
|
945
|
-
}
|
|
946
|
-
if (!sep || typeof sep === "boolean")
|
|
947
|
-
continue;
|
|
948
|
-
childrenArray.splice(i, 0, sep);
|
|
949
|
-
}
|
|
950
|
-
return childrenArray;
|
|
951
|
-
}
|
|
952
|
-
|
|
953
|
-
// src/components/internal/Menu.tsx
|
|
1049
|
+
var import_react26 = __toESM(require("react"));
|
|
1050
|
+
var import_styled_components10 = __toESM(require("styled-components"));
|
|
954
1051
|
var SEPARATOR_ITEM = "separator";
|
|
955
1052
|
var CHECKBOX_WIDTH = 15;
|
|
956
1053
|
var CHECKBOX_RIGHT_INSET = 3;
|
|
@@ -964,9 +1061,7 @@ var styles = {
|
|
|
964
1061
|
theme,
|
|
965
1062
|
disabled
|
|
966
1063
|
}) => ({
|
|
967
|
-
...theme.textStyles.
|
|
968
|
-
fontWeight: 500,
|
|
969
|
-
fontSize: "0.8rem",
|
|
1064
|
+
...theme.textStyles.button,
|
|
970
1065
|
flex: "0 0 auto",
|
|
971
1066
|
userSelect: "none",
|
|
972
1067
|
cursor: "pointer",
|
|
@@ -1028,7 +1123,7 @@ function getKeyboardShortcutsForMenuItems(menuItems, onSelect) {
|
|
|
1028
1123
|
menuItems.flatMap(getKeyboardShortcuts).map(([key, value]) => [key, () => onSelect(value)])
|
|
1029
1124
|
);
|
|
1030
1125
|
}
|
|
1031
|
-
var ShortcutElement =
|
|
1126
|
+
var ShortcutElement = import_styled_components10.default.kbd(
|
|
1032
1127
|
({
|
|
1033
1128
|
theme,
|
|
1034
1129
|
fixedWidth
|
|
@@ -1041,12 +1136,12 @@ var ShortcutElement = import_styled_components9.default.kbd(
|
|
|
1041
1136
|
}
|
|
1042
1137
|
})
|
|
1043
1138
|
);
|
|
1044
|
-
var KeyboardShortcut = (0,
|
|
1139
|
+
var KeyboardShortcut = (0, import_react26.memo)(function KeyboardShortcut2({
|
|
1045
1140
|
shortcut
|
|
1046
1141
|
}) {
|
|
1047
1142
|
const platform = useDesignSystemConfiguration().platform;
|
|
1048
1143
|
const { keys, separator } = (0, import_noya_keymap.getShortcutDisplayParts)(shortcut, platform);
|
|
1049
|
-
const keyElements = keys.map((key) => /* @__PURE__ */
|
|
1144
|
+
const keyElements = keys.map((key) => /* @__PURE__ */ import_react26.default.createElement(
|
|
1050
1145
|
ShortcutElement,
|
|
1051
1146
|
{
|
|
1052
1147
|
key,
|
|
@@ -1054,24 +1149,24 @@ var KeyboardShortcut = (0, import_react25.memo)(function KeyboardShortcut2({
|
|
|
1054
1149
|
},
|
|
1055
1150
|
key
|
|
1056
1151
|
));
|
|
1057
|
-
return /* @__PURE__ */
|
|
1152
|
+
return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, separator ? withSeparatorElements(
|
|
1058
1153
|
keyElements,
|
|
1059
|
-
/* @__PURE__ */
|
|
1154
|
+
/* @__PURE__ */ import_react26.default.createElement(ShortcutElement, null, separator)
|
|
1060
1155
|
) : keyElements);
|
|
1061
1156
|
});
|
|
1062
1157
|
|
|
1063
1158
|
// src/components/DropdownMenu.tsx
|
|
1064
|
-
var SeparatorElement = (0,
|
|
1159
|
+
var SeparatorElement = (0, import_styled_components11.default)(RadixDropdownMenu.Separator)(
|
|
1065
1160
|
styles.separatorStyle
|
|
1066
1161
|
);
|
|
1067
|
-
var ItemElement = (0,
|
|
1068
|
-
var CheckboxItemElement = (0,
|
|
1162
|
+
var ItemElement = (0, import_styled_components11.default)(RadixDropdownMenu.Item)(styles.itemStyle);
|
|
1163
|
+
var CheckboxItemElement = (0, import_styled_components11.default)(RadixDropdownMenu.CheckboxItem)(
|
|
1069
1164
|
styles.itemStyle
|
|
1070
1165
|
);
|
|
1071
|
-
var StyledItemIndicator = (0,
|
|
1166
|
+
var StyledItemIndicator = (0, import_styled_components11.default)(RadixDropdownMenu.ItemIndicator)(
|
|
1072
1167
|
styles.itemIndicatorStyle
|
|
1073
1168
|
);
|
|
1074
|
-
var DropdownMenuItem = (0,
|
|
1169
|
+
var DropdownMenuItem = (0, import_react27.memo)(function ContextMenuItem({
|
|
1075
1170
|
value,
|
|
1076
1171
|
children,
|
|
1077
1172
|
onSelect,
|
|
@@ -1082,27 +1177,27 @@ var DropdownMenuItem = (0, import_react26.memo)(function ContextMenuItem({
|
|
|
1082
1177
|
items,
|
|
1083
1178
|
shortcut
|
|
1084
1179
|
}) {
|
|
1085
|
-
const handleSelectItem = (0,
|
|
1180
|
+
const handleSelectItem = (0, import_react27.useCallback)(() => {
|
|
1086
1181
|
if (!value)
|
|
1087
1182
|
return;
|
|
1088
1183
|
onSelect(value);
|
|
1089
1184
|
}, [onSelect, value]);
|
|
1090
1185
|
if (checked) {
|
|
1091
|
-
return /* @__PURE__ */
|
|
1186
|
+
return /* @__PURE__ */ import_react27.default.createElement(
|
|
1092
1187
|
CheckboxItemElement,
|
|
1093
1188
|
{
|
|
1094
1189
|
checked,
|
|
1095
1190
|
disabled,
|
|
1096
1191
|
onSelect: handleSelectItem
|
|
1097
1192
|
},
|
|
1098
|
-
/* @__PURE__ */
|
|
1099
|
-
icon && /* @__PURE__ */
|
|
1193
|
+
/* @__PURE__ */ import_react27.default.createElement(StyledItemIndicator, null, /* @__PURE__ */ import_react27.default.createElement(import_noya_icons.CheckIcon, null)),
|
|
1194
|
+
icon && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, icon, /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: 8 })),
|
|
1100
1195
|
children
|
|
1101
1196
|
);
|
|
1102
1197
|
}
|
|
1103
|
-
const element = /* @__PURE__ */
|
|
1198
|
+
const element = /* @__PURE__ */ import_react27.default.createElement(ItemElement, { disabled, onSelect: handleSelectItem }, indented && /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET }), icon && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, icon, /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: 8 })), children, shortcut && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: 24 }), /* @__PURE__ */ import_react27.default.createElement(KeyboardShortcut, { shortcut })), items && items.length > 0 && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react27.default.createElement(Spacer.Horizontal, { size: 16 }), /* @__PURE__ */ import_react27.default.createElement(import_noya_icons.ChevronRightIcon, null)));
|
|
1104
1199
|
if (items && items.length > 0) {
|
|
1105
|
-
return /* @__PURE__ */
|
|
1200
|
+
return /* @__PURE__ */ import_react27.default.createElement(
|
|
1106
1201
|
DropdownMenuRoot,
|
|
1107
1202
|
{
|
|
1108
1203
|
isNested: true,
|
|
@@ -1116,9 +1211,9 @@ var DropdownMenuItem = (0, import_react26.memo)(function ContextMenuItem({
|
|
|
1116
1211
|
return element;
|
|
1117
1212
|
}
|
|
1118
1213
|
});
|
|
1119
|
-
var Content5 = (0,
|
|
1120
|
-
var SubContent2 = (0,
|
|
1121
|
-
var DropdownMenuRoot = (0,
|
|
1214
|
+
var Content5 = (0, import_styled_components11.default)(RadixDropdownMenu.Content)(styles.contentStyle);
|
|
1215
|
+
var SubContent2 = (0, import_styled_components11.default)(RadixDropdownMenu.SubContent)(styles.contentStyle);
|
|
1216
|
+
var DropdownMenuRoot = (0, import_react27.forwardRef)(function DropdownMenuRoot2({
|
|
1122
1217
|
items,
|
|
1123
1218
|
children,
|
|
1124
1219
|
onSelect,
|
|
@@ -1136,7 +1231,7 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
|
|
|
1136
1231
|
const hasCheckedItem = items.some(
|
|
1137
1232
|
(item) => item !== SEPARATOR_ITEM && item.checked
|
|
1138
1233
|
);
|
|
1139
|
-
const keymap = (0,
|
|
1234
|
+
const keymap = (0, import_react27.useMemo)(
|
|
1140
1235
|
() => isNested || shouldBindKeyboardShortcuts === false ? {} : getKeyboardShortcutsForMenuItems(items, onSelect),
|
|
1141
1236
|
[isNested, items, onSelect, shouldBindKeyboardShortcuts]
|
|
1142
1237
|
);
|
|
@@ -1144,8 +1239,8 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
|
|
|
1144
1239
|
const RootComponent = isNested ? RadixDropdownMenu.Sub : RadixDropdownMenu.Root;
|
|
1145
1240
|
const TriggerComponent = isNested ? RadixDropdownMenu.SubTrigger : RadixDropdownMenu.Trigger;
|
|
1146
1241
|
const ContentComponent = isNested ? SubContent2 : Content5;
|
|
1147
|
-
const contentStyle = (0,
|
|
1148
|
-
return /* @__PURE__ */
|
|
1242
|
+
const contentStyle = (0, import_react27.useMemo)(() => ({ zIndex: 1e3 }), []);
|
|
1243
|
+
return /* @__PURE__ */ import_react27.default.createElement(RootComponent, { onOpenChange, open }, /* @__PURE__ */ import_react27.default.createElement(TriggerComponent, { ref: forwardedRef, asChild: true }, children), /* @__PURE__ */ import_react27.default.createElement(RadixDropdownMenu.Portal, null, /* @__PURE__ */ import_react27.default.createElement(
|
|
1149
1244
|
ContentComponent,
|
|
1150
1245
|
{
|
|
1151
1246
|
side,
|
|
@@ -1157,7 +1252,7 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
|
|
|
1157
1252
|
...{ onCloseAutoFocus }
|
|
1158
1253
|
},
|
|
1159
1254
|
items.map(
|
|
1160
|
-
(item, index) => item === SEPARATOR_ITEM ? /* @__PURE__ */
|
|
1255
|
+
(item, index) => item === SEPARATOR_ITEM ? /* @__PURE__ */ import_react27.default.createElement(SeparatorElement, { key: index }) : /* @__PURE__ */ import_react27.default.createElement(
|
|
1161
1256
|
DropdownMenuItem,
|
|
1162
1257
|
{
|
|
1163
1258
|
key: item.value ?? index,
|
|
@@ -1175,14 +1270,14 @@ var DropdownMenuRoot = (0, import_react26.forwardRef)(function DropdownMenuRoot2
|
|
|
1175
1270
|
)
|
|
1176
1271
|
)));
|
|
1177
1272
|
});
|
|
1178
|
-
var DropdownMenu = (0,
|
|
1273
|
+
var DropdownMenu = (0, import_react27.memo)(DropdownMenuRoot);
|
|
1179
1274
|
|
|
1180
1275
|
// src/components/internal/TextInput.tsx
|
|
1181
1276
|
var import_react_compose_refs = require("@radix-ui/react-compose-refs");
|
|
1182
|
-
var
|
|
1277
|
+
var import_react29 = __toESM(require("react"));
|
|
1183
1278
|
|
|
1184
1279
|
// src/contexts/GlobalInputBlurContext.tsx
|
|
1185
|
-
var
|
|
1280
|
+
var import_react28 = require("react");
|
|
1186
1281
|
var defaultValue = /* @__PURE__ */ (() => {
|
|
1187
1282
|
const listeners = [];
|
|
1188
1283
|
const value = {
|
|
@@ -1203,14 +1298,14 @@ var defaultValue = /* @__PURE__ */ (() => {
|
|
|
1203
1298
|
};
|
|
1204
1299
|
return value;
|
|
1205
1300
|
})();
|
|
1206
|
-
var GlobalInputBlurContext = (0,
|
|
1301
|
+
var GlobalInputBlurContext = (0, import_react28.createContext)(defaultValue);
|
|
1207
1302
|
var GlobalInputBlurProvider = GlobalInputBlurContext.Provider;
|
|
1208
1303
|
var useGlobalInputBlur = () => {
|
|
1209
|
-
return (0,
|
|
1304
|
+
return (0, import_react28.useContext)(GlobalInputBlurContext);
|
|
1210
1305
|
};
|
|
1211
1306
|
function useGlobalInputBlurListener(f) {
|
|
1212
1307
|
const context = useGlobalInputBlur();
|
|
1213
|
-
(0,
|
|
1308
|
+
(0, import_react28.useEffect)(() => {
|
|
1214
1309
|
context.addListener(f);
|
|
1215
1310
|
return () => {
|
|
1216
1311
|
context.removeListener(f);
|
|
@@ -1222,8 +1317,8 @@ function useGlobalInputBlurTrigger() {
|
|
|
1222
1317
|
}
|
|
1223
1318
|
|
|
1224
1319
|
// src/components/internal/TextInput.tsx
|
|
1225
|
-
var ReadOnlyTextInput = (0,
|
|
1226
|
-
return /* @__PURE__ */
|
|
1320
|
+
var ReadOnlyTextInput = (0, import_react29.forwardRef)(function ReadOnlyTextInput2({ onKeyDown, onFocusChange, value, ...rest }, forwardedRef) {
|
|
1321
|
+
return /* @__PURE__ */ import_react29.default.createElement(
|
|
1227
1322
|
"input",
|
|
1228
1323
|
{
|
|
1229
1324
|
ref: forwardedRef,
|
|
@@ -1234,7 +1329,7 @@ var ReadOnlyTextInput = (0, import_react28.forwardRef)(function ReadOnlyTextInpu
|
|
|
1234
1329
|
}
|
|
1235
1330
|
);
|
|
1236
1331
|
});
|
|
1237
|
-
var ControlledTextInput = (0,
|
|
1332
|
+
var ControlledTextInput = (0, import_react29.forwardRef)(function ControlledTextInput2({
|
|
1238
1333
|
onKeyDown,
|
|
1239
1334
|
value,
|
|
1240
1335
|
onChange,
|
|
@@ -1243,28 +1338,28 @@ var ControlledTextInput = (0, import_react28.forwardRef)(function ControlledText
|
|
|
1243
1338
|
onFocusCapture,
|
|
1244
1339
|
...rest
|
|
1245
1340
|
}, forwardedRef) {
|
|
1246
|
-
const handleBlur = (0,
|
|
1341
|
+
const handleBlur = (0, import_react29.useCallback)(
|
|
1247
1342
|
(event) => {
|
|
1248
1343
|
onBlur?.(event);
|
|
1249
1344
|
onFocusChange?.(false);
|
|
1250
1345
|
},
|
|
1251
1346
|
[onBlur, onFocusChange]
|
|
1252
1347
|
);
|
|
1253
|
-
const handleFocusCapture = (0,
|
|
1348
|
+
const handleFocusCapture = (0, import_react29.useCallback)(
|
|
1254
1349
|
(event) => {
|
|
1255
1350
|
onFocusCapture?.(event);
|
|
1256
1351
|
onFocusChange?.(true);
|
|
1257
1352
|
},
|
|
1258
1353
|
[onFocusCapture, onFocusChange]
|
|
1259
1354
|
);
|
|
1260
|
-
return /* @__PURE__ */
|
|
1355
|
+
return /* @__PURE__ */ import_react29.default.createElement(
|
|
1261
1356
|
"input",
|
|
1262
1357
|
{
|
|
1263
1358
|
ref: forwardedRef,
|
|
1264
1359
|
...rest,
|
|
1265
1360
|
value,
|
|
1266
1361
|
onKeyDown,
|
|
1267
|
-
onChange: (0,
|
|
1362
|
+
onChange: (0, import_react29.useCallback)(
|
|
1268
1363
|
(event) => onChange(event.target.value),
|
|
1269
1364
|
[onChange]
|
|
1270
1365
|
),
|
|
@@ -1273,7 +1368,7 @@ var ControlledTextInput = (0, import_react28.forwardRef)(function ControlledText
|
|
|
1273
1368
|
}
|
|
1274
1369
|
);
|
|
1275
1370
|
});
|
|
1276
|
-
var SubmittableTextInput = (0,
|
|
1371
|
+
var SubmittableTextInput = (0, import_react29.forwardRef)(function SubmittableTextInput2({
|
|
1277
1372
|
onKeyDown,
|
|
1278
1373
|
value,
|
|
1279
1374
|
onSubmit,
|
|
@@ -1284,16 +1379,16 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
|
|
|
1284
1379
|
submitAutomaticallyAfterDelay,
|
|
1285
1380
|
...rest
|
|
1286
1381
|
}, forwardedRef) {
|
|
1287
|
-
const ref =
|
|
1288
|
-
const latestValue = (0,
|
|
1382
|
+
const ref = import_react29.default.useRef(null);
|
|
1383
|
+
const latestValue = (0, import_react29.useRef)(value);
|
|
1289
1384
|
latestValue.current = value;
|
|
1290
|
-
const userDidEdit = (0,
|
|
1291
|
-
const isSubmitTriggeredByEscapeKey = (0,
|
|
1292
|
-
const [internalValue, setInternalValue] = (0,
|
|
1293
|
-
(0,
|
|
1385
|
+
const userDidEdit = (0, import_react29.useRef)(false);
|
|
1386
|
+
const isSubmitTriggeredByEscapeKey = (0, import_react29.useRef)(false);
|
|
1387
|
+
const [internalValue, setInternalValue] = (0, import_react29.useState)("");
|
|
1388
|
+
(0, import_react29.useLayoutEffect)(() => {
|
|
1294
1389
|
setInternalValue(value);
|
|
1295
1390
|
}, [value]);
|
|
1296
|
-
const handleSubmit = (0,
|
|
1391
|
+
const handleSubmit = (0, import_react29.useCallback)(() => {
|
|
1297
1392
|
const submissionValue = isSubmitTriggeredByEscapeKey.current ? value : internalValue;
|
|
1298
1393
|
isSubmitTriggeredByEscapeKey.current = false;
|
|
1299
1394
|
if (submissionValue === value && !allowSubmittingWithSameValue)
|
|
@@ -1303,13 +1398,13 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
|
|
|
1303
1398
|
setInternalValue(latestValue.current);
|
|
1304
1399
|
}, [allowSubmittingWithSameValue, value, internalValue, onSubmit]);
|
|
1305
1400
|
useGlobalInputBlurListener(
|
|
1306
|
-
(0,
|
|
1401
|
+
(0, import_react29.useCallback)(() => {
|
|
1307
1402
|
if (ref.current !== document.activeElement)
|
|
1308
1403
|
return;
|
|
1309
1404
|
handleSubmit();
|
|
1310
1405
|
}, [handleSubmit])
|
|
1311
1406
|
);
|
|
1312
|
-
const handleKeyDown = (0,
|
|
1407
|
+
const handleKeyDown = (0, import_react29.useCallback)(
|
|
1313
1408
|
(event) => {
|
|
1314
1409
|
if (event.key === "Enter") {
|
|
1315
1410
|
handleSubmit();
|
|
@@ -1324,14 +1419,14 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
|
|
|
1324
1419
|
},
|
|
1325
1420
|
[onKeyDown, handleSubmit]
|
|
1326
1421
|
);
|
|
1327
|
-
const handleChange = (0,
|
|
1422
|
+
const handleChange = (0, import_react29.useCallback)(
|
|
1328
1423
|
(event) => {
|
|
1329
1424
|
userDidEdit.current = true;
|
|
1330
1425
|
setInternalValue(event.target.value);
|
|
1331
1426
|
},
|
|
1332
1427
|
[]
|
|
1333
1428
|
);
|
|
1334
|
-
const handleBlur = (0,
|
|
1429
|
+
const handleBlur = (0, import_react29.useCallback)(
|
|
1335
1430
|
(event) => {
|
|
1336
1431
|
onBlur?.(event);
|
|
1337
1432
|
onFocusChange?.(false);
|
|
@@ -1339,19 +1434,19 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
|
|
|
1339
1434
|
},
|
|
1340
1435
|
[onBlur, onFocusChange, handleSubmit]
|
|
1341
1436
|
);
|
|
1342
|
-
const handleFocusCapture = (0,
|
|
1437
|
+
const handleFocusCapture = (0, import_react29.useCallback)(
|
|
1343
1438
|
(event) => {
|
|
1344
1439
|
onFocusCapture?.(event);
|
|
1345
1440
|
onFocusChange?.(true);
|
|
1346
1441
|
},
|
|
1347
1442
|
[onFocusCapture, onFocusChange]
|
|
1348
1443
|
);
|
|
1349
|
-
const autoSubmitTimeoutRef = (0,
|
|
1444
|
+
const autoSubmitTimeoutRef = (0, import_react29.useRef)(
|
|
1350
1445
|
null
|
|
1351
1446
|
);
|
|
1352
|
-
const latestHandleSubmit = (0,
|
|
1447
|
+
const latestHandleSubmit = (0, import_react29.useRef)(handleSubmit);
|
|
1353
1448
|
latestHandleSubmit.current = handleSubmit;
|
|
1354
|
-
(0,
|
|
1449
|
+
(0, import_react29.useEffect)(() => {
|
|
1355
1450
|
if (submitAutomaticallyAfterDelay) {
|
|
1356
1451
|
if (autoSubmitTimeoutRef.current) {
|
|
1357
1452
|
clearTimeout(autoSubmitTimeoutRef.current);
|
|
@@ -1368,7 +1463,7 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
|
|
|
1368
1463
|
}
|
|
1369
1464
|
};
|
|
1370
1465
|
}, [internalValue, submitAutomaticallyAfterDelay]);
|
|
1371
|
-
return /* @__PURE__ */
|
|
1466
|
+
return /* @__PURE__ */ import_react29.default.createElement(
|
|
1372
1467
|
"input",
|
|
1373
1468
|
{
|
|
1374
1469
|
ref: (0, import_react_compose_refs.composeRefs)(ref, forwardedRef),
|
|
@@ -1381,13 +1476,13 @@ var SubmittableTextInput = (0, import_react28.forwardRef)(function SubmittableTe
|
|
|
1381
1476
|
}
|
|
1382
1477
|
);
|
|
1383
1478
|
});
|
|
1384
|
-
var TextInput_default = (0,
|
|
1479
|
+
var TextInput_default = (0, import_react29.forwardRef)(function TextInput(props, forwardedRef) {
|
|
1385
1480
|
const commonProps = {
|
|
1386
|
-
onPointerDown: (0,
|
|
1481
|
+
onPointerDown: (0, import_react29.useCallback)(
|
|
1387
1482
|
(event) => event.stopPropagation(),
|
|
1388
1483
|
[]
|
|
1389
1484
|
),
|
|
1390
|
-
onClick: (0,
|
|
1485
|
+
onClick: (0, import_react29.useCallback)(
|
|
1391
1486
|
(event) => event.stopPropagation(),
|
|
1392
1487
|
[]
|
|
1393
1488
|
),
|
|
@@ -1400,19 +1495,19 @@ var TextInput_default = (0, import_react28.forwardRef)(function TextInput(props,
|
|
|
1400
1495
|
...props
|
|
1401
1496
|
};
|
|
1402
1497
|
if ("readOnly" in commonProps) {
|
|
1403
|
-
return /* @__PURE__ */
|
|
1498
|
+
return /* @__PURE__ */ import_react29.default.createElement(ReadOnlyTextInput, { ref: forwardedRef, ...commonProps, readOnly: true });
|
|
1404
1499
|
} else if ("onChange" in commonProps) {
|
|
1405
|
-
return /* @__PURE__ */
|
|
1500
|
+
return /* @__PURE__ */ import_react29.default.createElement(ControlledTextInput, { ref: forwardedRef, ...commonProps });
|
|
1406
1501
|
} else {
|
|
1407
|
-
return /* @__PURE__ */
|
|
1502
|
+
return /* @__PURE__ */ import_react29.default.createElement(SubmittableTextInput, { ref: forwardedRef, ...commonProps });
|
|
1408
1503
|
}
|
|
1409
1504
|
});
|
|
1410
1505
|
|
|
1411
1506
|
// src/components/Popover.tsx
|
|
1412
1507
|
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"));
|
|
1413
|
-
var
|
|
1414
|
-
var
|
|
1415
|
-
var ContentElement = (0,
|
|
1508
|
+
var import_react30 = __toESM(require("react"));
|
|
1509
|
+
var import_styled_components12 = __toESM(require("styled-components"));
|
|
1510
|
+
var ContentElement = (0, import_styled_components12.default)(PopoverPrimitive.Content)(({ theme, variant }) => ({
|
|
1416
1511
|
borderRadius: 4,
|
|
1417
1512
|
fontSize: 14,
|
|
1418
1513
|
backgroundColor: theme.colors.popover.background,
|
|
@@ -1424,10 +1519,10 @@ var ContentElement = (0, import_styled_components11.default)(PopoverPrimitive.Co
|
|
|
1424
1519
|
...variant === "normal" && { width: "240px" },
|
|
1425
1520
|
zIndex: 1e3
|
|
1426
1521
|
}));
|
|
1427
|
-
var ArrowElement = (0,
|
|
1522
|
+
var ArrowElement = (0, import_styled_components12.default)(PopoverPrimitive.Arrow)(({ theme }) => ({
|
|
1428
1523
|
fill: theme.colors.popover.background
|
|
1429
1524
|
}));
|
|
1430
|
-
var PopoverClose = (0,
|
|
1525
|
+
var PopoverClose = (0, import_styled_components12.default)(PopoverPrimitive.Close)(({ theme }) => ({
|
|
1431
1526
|
all: "unset",
|
|
1432
1527
|
fontFamily: "inherit",
|
|
1433
1528
|
borderRadius: "100%",
|
|
@@ -1457,7 +1552,7 @@ function Popover({
|
|
|
1457
1552
|
onFocusOutside,
|
|
1458
1553
|
onClickClose
|
|
1459
1554
|
}) {
|
|
1460
|
-
return /* @__PURE__ */
|
|
1555
|
+
return /* @__PURE__ */ import_react30.default.createElement(PopoverPrimitive.Root, { open, onOpenChange }, /* @__PURE__ */ import_react30.default.createElement(PopoverPrimitive.Trigger, { asChild: true }, trigger), /* @__PURE__ */ import_react30.default.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ import_react30.default.createElement(
|
|
1461
1556
|
ContentElement,
|
|
1462
1557
|
{
|
|
1463
1558
|
variant,
|
|
@@ -1478,75 +1573,11 @@ function Popover({
|
|
|
1478
1573
|
}
|
|
1479
1574
|
},
|
|
1480
1575
|
children,
|
|
1481
|
-
showArrow && /* @__PURE__ */
|
|
1482
|
-
closable && /* @__PURE__ */
|
|
1576
|
+
showArrow && /* @__PURE__ */ import_react30.default.createElement(ArrowElement, null),
|
|
1577
|
+
closable && /* @__PURE__ */ import_react30.default.createElement(PopoverClose, null, /* @__PURE__ */ import_react30.default.createElement(IconButton, { iconName: "Cross2Icon", onClick: onClickClose }))
|
|
1483
1578
|
)));
|
|
1484
1579
|
}
|
|
1485
1580
|
|
|
1486
|
-
// src/components/Stack.tsx
|
|
1487
|
-
var import_react30 = __toESM(require("react"));
|
|
1488
|
-
var import_styled_components12 = __toESM(require("styled-components"));
|
|
1489
|
-
|
|
1490
|
-
// src/utils/breakpoints.ts
|
|
1491
|
-
function mergeBreakpoints(breakpoints, transform) {
|
|
1492
|
-
const breakpointMap = Array.isArray(breakpoints) ? breakpoints.reduce(
|
|
1493
|
-
(result, item) => {
|
|
1494
|
-
const [key, value] = item;
|
|
1495
|
-
result[key] = result[key] ? { ...result[key], ...value } : value;
|
|
1496
|
-
return result;
|
|
1497
|
-
},
|
|
1498
|
-
{}
|
|
1499
|
-
) : breakpoints;
|
|
1500
|
-
const breakpointList = Object.entries(breakpointMap);
|
|
1501
|
-
const transformedList = breakpointList.sort((a, b) => Number(b[0]) - Number(a[0])).map(([width, value]) => [
|
|
1502
|
-
`@media screen and (max-width: ${width}px)`,
|
|
1503
|
-
transform?.(value) ?? value
|
|
1504
|
-
]);
|
|
1505
|
-
return Object.fromEntries(transformedList);
|
|
1506
|
-
}
|
|
1507
|
-
|
|
1508
|
-
// src/components/Stack.tsx
|
|
1509
|
-
var Element = import_styled_components12.default.div(({ styleProps, breakpoints }) => ({
|
|
1510
|
-
...styleProps,
|
|
1511
|
-
...mergeBreakpoints(breakpoints || [])
|
|
1512
|
-
}));
|
|
1513
|
-
var StackBase = (0, import_react30.forwardRef)(function StackBase2({ id, as, children, separator, breakpoints, tabIndex, href, ...rest }, forwardedRef) {
|
|
1514
|
-
const elements2 = separator ? withSeparatorElements(import_react30.Children.toArray(children), separator) : children;
|
|
1515
|
-
const styleProps = {
|
|
1516
|
-
display: "flex",
|
|
1517
|
-
position: "relative",
|
|
1518
|
-
alignItems: "stretch",
|
|
1519
|
-
...rest
|
|
1520
|
-
};
|
|
1521
|
-
return /* @__PURE__ */ import_react30.default.createElement(
|
|
1522
|
-
Element,
|
|
1523
|
-
{
|
|
1524
|
-
ref: forwardedRef,
|
|
1525
|
-
id,
|
|
1526
|
-
as,
|
|
1527
|
-
styleProps,
|
|
1528
|
-
breakpoints,
|
|
1529
|
-
tabIndex,
|
|
1530
|
-
...href && { href }
|
|
1531
|
-
},
|
|
1532
|
-
elements2
|
|
1533
|
-
);
|
|
1534
|
-
});
|
|
1535
|
-
var VerticalStack = (0, import_react30.memo)(
|
|
1536
|
-
(0, import_react30.forwardRef)(function VStack(props, forwardedRef) {
|
|
1537
|
-
return /* @__PURE__ */ import_react30.default.createElement(StackBase, { ...props, flexDirection: "column", ref: forwardedRef });
|
|
1538
|
-
})
|
|
1539
|
-
);
|
|
1540
|
-
var HorizontalStack = (0, import_react30.memo)(
|
|
1541
|
-
(0, import_react30.forwardRef)(function HStack(props, forwardedRef) {
|
|
1542
|
-
return /* @__PURE__ */ import_react30.default.createElement(StackBase, { ...props, flexDirection: "row", ref: forwardedRef });
|
|
1543
|
-
})
|
|
1544
|
-
);
|
|
1545
|
-
var Stack = {
|
|
1546
|
-
V: VerticalStack,
|
|
1547
|
-
H: HorizontalStack
|
|
1548
|
-
};
|
|
1549
|
-
|
|
1550
1581
|
// src/components/InputField.tsx
|
|
1551
1582
|
var InputFieldContext = (0, import_react31.createContext)({
|
|
1552
1583
|
labelPosition: "end",
|
|
@@ -2082,20 +2113,68 @@ function useDialogContainsElement() {
|
|
|
2082
2113
|
return useDialog().containsElement;
|
|
2083
2114
|
}
|
|
2084
2115
|
|
|
2116
|
+
// src/contexts/FloatingWindowContext.tsx
|
|
2117
|
+
var import_noya_utils6 = require("@noya-app/noya-utils");
|
|
2118
|
+
var import_react33 = __toESM(require("react"));
|
|
2119
|
+
var import_react_dom = require("react-dom");
|
|
2120
|
+
var FloatingWindowContext = (0, import_react33.createContext)(void 0);
|
|
2121
|
+
var CurrentWindowContext = (0, import_react33.createContext)(void 0);
|
|
2122
|
+
var FloatingWindowProvider = ({
|
|
2123
|
+
children
|
|
2124
|
+
}) => {
|
|
2125
|
+
const [windows, setWindows] = (0, import_react33.useState)({});
|
|
2126
|
+
const contextValue = (0, import_react33.useMemo)(() => {
|
|
2127
|
+
const createWindow = (element) => {
|
|
2128
|
+
const id = (0, import_noya_utils6.uuid)();
|
|
2129
|
+
setWindows((windows2) => ({
|
|
2130
|
+
...windows2,
|
|
2131
|
+
[id]: /* @__PURE__ */ import_react33.default.createElement(CurrentWindowContext.Provider, { value: { id } }, element)
|
|
2132
|
+
}));
|
|
2133
|
+
return id;
|
|
2134
|
+
};
|
|
2135
|
+
const closeWindow = (id) => {
|
|
2136
|
+
setWindows((windows2) => {
|
|
2137
|
+
const { [id]: _, ...rest } = windows2;
|
|
2138
|
+
return rest;
|
|
2139
|
+
});
|
|
2140
|
+
};
|
|
2141
|
+
return { createWindow, closeWindow };
|
|
2142
|
+
}, []);
|
|
2143
|
+
return /* @__PURE__ */ import_react33.default.createElement(FloatingWindowContext.Provider, { value: contextValue }, children, Object.entries(windows).map(
|
|
2144
|
+
([id, element]) => (0, import_react_dom.createPortal)(element, document.body, id)
|
|
2145
|
+
));
|
|
2146
|
+
};
|
|
2147
|
+
var useFloatingWindowManager = () => {
|
|
2148
|
+
const context = (0, import_react33.useContext)(FloatingWindowContext);
|
|
2149
|
+
if (!context) {
|
|
2150
|
+
throw new Error(
|
|
2151
|
+
"useFloatingWindow must be used within a FloatingWindowProvider"
|
|
2152
|
+
);
|
|
2153
|
+
}
|
|
2154
|
+
return context;
|
|
2155
|
+
};
|
|
2156
|
+
var useCurrentFloatingWindowInternal = () => {
|
|
2157
|
+
const context = (0, import_react33.useContext)(CurrentWindowContext);
|
|
2158
|
+
if (!context) {
|
|
2159
|
+
throw new Error("useCurrentWindow must be used within a FloatingWindow");
|
|
2160
|
+
}
|
|
2161
|
+
return context;
|
|
2162
|
+
};
|
|
2163
|
+
|
|
2085
2164
|
// src/contexts/DesignSystemConfiguration.tsx
|
|
2086
|
-
var DesignSystemConfigurationContext = (0,
|
|
2087
|
-
var DesignSystemConfigurationProvider = (0,
|
|
2165
|
+
var DesignSystemConfigurationContext = (0, import_react34.createContext)(void 0);
|
|
2166
|
+
var DesignSystemConfigurationProvider = (0, import_react34.memo)(
|
|
2088
2167
|
function DesignSystemConfigurationProvider2({
|
|
2089
2168
|
children,
|
|
2090
2169
|
theme,
|
|
2091
2170
|
platform
|
|
2092
2171
|
}) {
|
|
2093
|
-
const contextValue = (0,
|
|
2094
|
-
return /* @__PURE__ */
|
|
2172
|
+
const contextValue = (0, import_react34.useMemo)(() => ({ platform }), [platform]);
|
|
2173
|
+
return /* @__PURE__ */ import_react34.default.createElement(DesignSystemConfigurationContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react34.default.createElement(import_styled_components15.ThemeProvider, { theme }, /* @__PURE__ */ import_react34.default.createElement(DialogProvider, null, /* @__PURE__ */ import_react34.default.createElement(ToastProvider, null, /* @__PURE__ */ import_react34.default.createElement(FloatingWindowProvider, null, children)))));
|
|
2095
2174
|
}
|
|
2096
2175
|
);
|
|
2097
2176
|
function useDesignSystemConfiguration() {
|
|
2098
|
-
const value = (0,
|
|
2177
|
+
const value = (0, import_react34.useContext)(DesignSystemConfigurationContext);
|
|
2099
2178
|
if (!value) {
|
|
2100
2179
|
throw new Error("Missing DesignSystemConfigurationProvider");
|
|
2101
2180
|
}
|
|
@@ -2106,7 +2185,7 @@ function useDesignSystemTheme() {
|
|
|
2106
2185
|
}
|
|
2107
2186
|
|
|
2108
2187
|
// src/hooks/useHover.ts
|
|
2109
|
-
var
|
|
2188
|
+
var React20 = __toESM(require("react"));
|
|
2110
2189
|
var globalIgnoreEmulatedMouseEvents = false;
|
|
2111
2190
|
var hoverCount = 0;
|
|
2112
2191
|
function setGlobalIgnoreEmulatedMouseEvents() {
|
|
@@ -2136,13 +2215,13 @@ function setupGlobalTouchEvents() {
|
|
|
2136
2215
|
}
|
|
2137
2216
|
function useHover(props = {}) {
|
|
2138
2217
|
const { onHoverStart, onHoverChange, onHoverEnd, isDisabled } = props;
|
|
2139
|
-
const [isHovered, setHovered] =
|
|
2140
|
-
const state =
|
|
2218
|
+
const [isHovered, setHovered] = React20.useState(false);
|
|
2219
|
+
const state = React20.useRef({
|
|
2141
2220
|
isHovered: false,
|
|
2142
2221
|
ignoreEmulatedMouseEvents: false
|
|
2143
2222
|
}).current;
|
|
2144
|
-
|
|
2145
|
-
const hoverProps =
|
|
2223
|
+
React20.useEffect(setupGlobalTouchEvents, []);
|
|
2224
|
+
const hoverProps = React20.useMemo(
|
|
2146
2225
|
function getHoverProps() {
|
|
2147
2226
|
function triggerHoverStart(event, pointerType) {
|
|
2148
2227
|
if (isDisabled || pointerType === "touch" || state.isHovered) {
|
|
@@ -2283,7 +2362,7 @@ var AddElement = (0, import_styled_components16.default)(import_noya_icons3.Plus
|
|
|
2283
2362
|
opacity: 0.85
|
|
2284
2363
|
}
|
|
2285
2364
|
}));
|
|
2286
|
-
var Chip = (0,
|
|
2365
|
+
var Chip = (0, import_react35.memo)(function Chip2({
|
|
2287
2366
|
colorScheme,
|
|
2288
2367
|
children,
|
|
2289
2368
|
deletable,
|
|
@@ -2304,7 +2383,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
|
|
|
2304
2383
|
});
|
|
2305
2384
|
const handleClick = !children && !deletable && addable ? onAdd : onClick;
|
|
2306
2385
|
const color = colorScheme === "primary" ? theme.colors.primary : colorScheme === "secondary" ? theme.colors.secondary : theme.colors.text;
|
|
2307
|
-
return /* @__PURE__ */
|
|
2386
|
+
return /* @__PURE__ */ import_react35.default.createElement(
|
|
2308
2387
|
ChipElement,
|
|
2309
2388
|
{
|
|
2310
2389
|
variant,
|
|
@@ -2316,7 +2395,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
|
|
|
2316
2395
|
isInteractive: !!handleClick,
|
|
2317
2396
|
tabIndex
|
|
2318
2397
|
},
|
|
2319
|
-
addable && /* @__PURE__ */
|
|
2398
|
+
addable && /* @__PURE__ */ import_react35.default.createElement(
|
|
2320
2399
|
AddElement,
|
|
2321
2400
|
{
|
|
2322
2401
|
size: size2,
|
|
@@ -2329,7 +2408,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
|
|
|
2329
2408
|
}
|
|
2330
2409
|
),
|
|
2331
2410
|
children,
|
|
2332
|
-
deletable && /* @__PURE__ */
|
|
2411
|
+
deletable && /* @__PURE__ */ import_react35.default.createElement(
|
|
2333
2412
|
DeleteElement,
|
|
2334
2413
|
{
|
|
2335
2414
|
size: size2,
|
|
@@ -2348,7 +2427,7 @@ var Chip = (0, import_react34.memo)(function Chip2({
|
|
|
2348
2427
|
var import_noya_icons4 = require("@noya-app/noya-icons");
|
|
2349
2428
|
var import_noya_keymap3 = require("@noya-app/noya-keymap");
|
|
2350
2429
|
var RadixContextMenu = __toESM(require("@radix-ui/react-context-menu"));
|
|
2351
|
-
var
|
|
2430
|
+
var import_react36 = __toESM(require("react"));
|
|
2352
2431
|
var import_styled_components17 = __toESM(require("styled-components"));
|
|
2353
2432
|
var SeparatorElement2 = (0, import_styled_components17.default)(RadixContextMenu.Separator)(
|
|
2354
2433
|
styles.separatorStyle
|
|
@@ -2360,7 +2439,7 @@ var CheckboxItemElement2 = (0, import_styled_components17.default)(RadixContextM
|
|
|
2360
2439
|
var StyledItemIndicator2 = (0, import_styled_components17.default)(RadixContextMenu.ItemIndicator)(
|
|
2361
2440
|
styles.itemIndicatorStyle
|
|
2362
2441
|
);
|
|
2363
|
-
var ContextMenuItem2 = (0,
|
|
2442
|
+
var ContextMenuItem2 = (0, import_react36.memo)(function ContextMenuItem3({
|
|
2364
2443
|
value,
|
|
2365
2444
|
children,
|
|
2366
2445
|
onSelect,
|
|
@@ -2371,42 +2450,42 @@ var ContextMenuItem2 = (0, import_react35.memo)(function ContextMenuItem3({
|
|
|
2371
2450
|
items,
|
|
2372
2451
|
shortcut
|
|
2373
2452
|
}) {
|
|
2374
|
-
const handlePointerDown = (0,
|
|
2453
|
+
const handlePointerDown = (0, import_react36.useCallback)(
|
|
2375
2454
|
(event) => event.stopPropagation(),
|
|
2376
2455
|
[]
|
|
2377
2456
|
);
|
|
2378
|
-
const handleSelectItem = (0,
|
|
2457
|
+
const handleSelectItem = (0, import_react36.useCallback)(() => {
|
|
2379
2458
|
if (!value)
|
|
2380
2459
|
return;
|
|
2381
2460
|
onSelect(value);
|
|
2382
2461
|
}, [onSelect, value]);
|
|
2383
2462
|
if (checked) {
|
|
2384
|
-
return /* @__PURE__ */
|
|
2463
|
+
return /* @__PURE__ */ import_react36.default.createElement(
|
|
2385
2464
|
CheckboxItemElement2,
|
|
2386
2465
|
{
|
|
2387
2466
|
checked,
|
|
2388
2467
|
disabled,
|
|
2389
2468
|
onSelect: handleSelectItem
|
|
2390
2469
|
},
|
|
2391
|
-
/* @__PURE__ */
|
|
2470
|
+
/* @__PURE__ */ import_react36.default.createElement(StyledItemIndicator2, null, /* @__PURE__ */ import_react36.default.createElement(import_noya_icons4.CheckIcon, null)),
|
|
2392
2471
|
children
|
|
2393
2472
|
);
|
|
2394
2473
|
}
|
|
2395
|
-
const element = /* @__PURE__ */
|
|
2474
|
+
const element = /* @__PURE__ */ import_react36.default.createElement(
|
|
2396
2475
|
ItemElement2,
|
|
2397
2476
|
{
|
|
2398
2477
|
disabled,
|
|
2399
2478
|
onSelect: handleSelectItem,
|
|
2400
2479
|
onPointerDown: handlePointerDown
|
|
2401
2480
|
},
|
|
2402
|
-
indented && /* @__PURE__ */
|
|
2403
|
-
icon && /* @__PURE__ */
|
|
2481
|
+
indented && /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, { size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET }),
|
|
2482
|
+
icon && /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, icon, /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, { size: 8 })),
|
|
2404
2483
|
children,
|
|
2405
|
-
shortcut && /* @__PURE__ */
|
|
2406
|
-
items && items.length > 0 && /* @__PURE__ */
|
|
2484
|
+
shortcut && /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, { size: 24 }), /* @__PURE__ */ import_react36.default.createElement(KeyboardShortcut, { shortcut })),
|
|
2485
|
+
items && items.length > 0 && /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, null), /* @__PURE__ */ import_react36.default.createElement(Spacer.Horizontal, { size: 16 }), /* @__PURE__ */ import_react36.default.createElement(import_noya_icons4.ChevronRightIcon, null))
|
|
2407
2486
|
);
|
|
2408
2487
|
if (items && items.length > 0) {
|
|
2409
|
-
return /* @__PURE__ */
|
|
2488
|
+
return /* @__PURE__ */ import_react36.default.createElement(ContextMenuRoot, { isNested: true, items, onSelect }, element);
|
|
2410
2489
|
} else {
|
|
2411
2490
|
return element;
|
|
2412
2491
|
}
|
|
@@ -2424,19 +2503,19 @@ function ContextMenuRoot({
|
|
|
2424
2503
|
const hasCheckedItem = items.some(
|
|
2425
2504
|
(item) => item !== SEPARATOR_ITEM && item.checked
|
|
2426
2505
|
);
|
|
2427
|
-
const keymap = (0,
|
|
2506
|
+
const keymap = (0, import_react36.useMemo)(
|
|
2428
2507
|
() => isNested || shouldBindKeyboardShortcuts === false ? {} : getKeyboardShortcutsForMenuItems(items, onSelect),
|
|
2429
2508
|
[isNested, items, onSelect, shouldBindKeyboardShortcuts]
|
|
2430
2509
|
);
|
|
2431
2510
|
(0, import_noya_keymap3.useKeyboardShortcuts)(keymap);
|
|
2432
|
-
const onPointerDown = (0,
|
|
2511
|
+
const onPointerDown = (0, import_react36.useCallback)((event) => {
|
|
2433
2512
|
event.preventDefault();
|
|
2434
2513
|
}, []);
|
|
2435
2514
|
const RootComponent = isNested ? RadixContextMenu.Sub : RadixContextMenu.Root;
|
|
2436
2515
|
const TriggerComponent = isNested ? RadixContextMenu.SubTrigger : RadixContextMenu.Trigger;
|
|
2437
2516
|
const ContentComponent = isNested ? SubContent4 : Content8;
|
|
2438
|
-
return /* @__PURE__ */
|
|
2439
|
-
(item, index) => item === SEPARATOR_ITEM ? /* @__PURE__ */
|
|
2517
|
+
return /* @__PURE__ */ import_react36.default.createElement(RootComponent, { onOpenChange }, /* @__PURE__ */ import_react36.default.createElement(TriggerComponent, { asChild: true, onPointerDown }, children), /* @__PURE__ */ import_react36.default.createElement(RadixContextMenu.Portal, null, /* @__PURE__ */ import_react36.default.createElement(ContentComponent, null, items.map(
|
|
2518
|
+
(item, index) => item === SEPARATOR_ITEM ? /* @__PURE__ */ import_react36.default.createElement(SeparatorElement2, { key: index }) : /* @__PURE__ */ import_react36.default.createElement(
|
|
2440
2519
|
ContextMenuItem2,
|
|
2441
2520
|
{
|
|
2442
2521
|
key: item.value ?? index,
|
|
@@ -2453,26 +2532,26 @@ function ContextMenuRoot({
|
|
|
2453
2532
|
)
|
|
2454
2533
|
))));
|
|
2455
2534
|
}
|
|
2456
|
-
var ContextMenu = (0,
|
|
2535
|
+
var ContextMenu = (0, import_react36.memo)(ContextMenuRoot);
|
|
2457
2536
|
|
|
2458
2537
|
// src/components/Divider.tsx
|
|
2459
|
-
var
|
|
2538
|
+
var import_react37 = __toESM(require("react"));
|
|
2460
2539
|
var import_styled_components18 = __toESM(require("styled-components"));
|
|
2461
2540
|
var DividerContainer = import_styled_components18.default.div(({ theme, variant = "normal", orientation, overflow = 0 }) => ({
|
|
2462
2541
|
...orientation === "horizontal" ? { height: "1px", minHeight: "1px", margin: `0px -${overflow}px` } : { width: "1px", minWidth: "1px", margin: `-${overflow}px 0px` },
|
|
2463
2542
|
background: variant === "strong" ? theme.colors.dividerStrong : variant === "subtle" ? theme.colors.dividerSubtle : theme.colors.divider,
|
|
2464
2543
|
alignSelf: "stretch"
|
|
2465
2544
|
}));
|
|
2466
|
-
var Divider = (0,
|
|
2467
|
-
return /* @__PURE__ */
|
|
2545
|
+
var Divider = (0, import_react37.memo)(function Divider2(props) {
|
|
2546
|
+
return /* @__PURE__ */ import_react37.default.createElement(DividerContainer, { orientation: "horizontal", ...props });
|
|
2468
2547
|
});
|
|
2469
|
-
var DividerVertical = (0,
|
|
2470
|
-
return /* @__PURE__ */
|
|
2548
|
+
var DividerVertical = (0, import_react37.memo)(function DividerVertical2(props) {
|
|
2549
|
+
return /* @__PURE__ */ import_react37.default.createElement(DividerContainer, { orientation: "vertical", ...props });
|
|
2471
2550
|
});
|
|
2472
2551
|
|
|
2473
2552
|
// src/components/DraggableMenuButton.tsx
|
|
2474
2553
|
var import_noya_icons5 = require("@noya-app/noya-icons");
|
|
2475
|
-
var
|
|
2554
|
+
var import_react38 = __toESM(require("react"));
|
|
2476
2555
|
var import_styled_components19 = __toESM(require("styled-components"));
|
|
2477
2556
|
var DotButtonElement = import_styled_components19.default.div(({ theme }) => ({
|
|
2478
2557
|
cursor: "pointer",
|
|
@@ -2492,15 +2571,15 @@ var TriggerElement = import_styled_components19.default.div({
|
|
|
2492
2571
|
pointerEvents: "none",
|
|
2493
2572
|
height: "15px"
|
|
2494
2573
|
});
|
|
2495
|
-
var DraggableMenuButton = (0,
|
|
2574
|
+
var DraggableMenuButton = (0, import_react38.memo)(function DraggableMenuButton2({
|
|
2496
2575
|
items,
|
|
2497
2576
|
onSelect,
|
|
2498
2577
|
isVisible = true
|
|
2499
2578
|
}) {
|
|
2500
2579
|
const color = useDesignSystemTheme().colors.icon;
|
|
2501
|
-
const [open, setOpen] = (0,
|
|
2502
|
-
const [downPosition, setDownPosition] =
|
|
2503
|
-
const handlePointerDownCapture = (0,
|
|
2580
|
+
const [open, setOpen] = (0, import_react38.useState)(false);
|
|
2581
|
+
const [downPosition, setDownPosition] = import_react38.default.useState(null);
|
|
2582
|
+
const handlePointerDownCapture = (0, import_react38.useCallback)(
|
|
2504
2583
|
(event) => {
|
|
2505
2584
|
if (open) {
|
|
2506
2585
|
setDownPosition(null);
|
|
@@ -2513,7 +2592,7 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
|
|
|
2513
2592
|
},
|
|
2514
2593
|
[open]
|
|
2515
2594
|
);
|
|
2516
|
-
const handlePointerUp = (0,
|
|
2595
|
+
const handlePointerUp = (0, import_react38.useCallback)(
|
|
2517
2596
|
(event) => {
|
|
2518
2597
|
if (open || !downPosition) {
|
|
2519
2598
|
setDownPosition(null);
|
|
@@ -2529,14 +2608,14 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
|
|
|
2529
2608
|
},
|
|
2530
2609
|
[downPosition, open]
|
|
2531
2610
|
);
|
|
2532
|
-
const handleOpenChange = (0,
|
|
2611
|
+
const handleOpenChange = (0, import_react38.useCallback)(
|
|
2533
2612
|
(isOpen) => {
|
|
2534
2613
|
if (!isOpen)
|
|
2535
2614
|
setOpen(false);
|
|
2536
2615
|
},
|
|
2537
2616
|
[setOpen]
|
|
2538
2617
|
);
|
|
2539
|
-
return /* @__PURE__ */
|
|
2618
|
+
return /* @__PURE__ */ import_react38.default.createElement(
|
|
2540
2619
|
DotButtonElement,
|
|
2541
2620
|
{
|
|
2542
2621
|
onPointerDownCapture: handlePointerDownCapture,
|
|
@@ -2546,7 +2625,7 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
|
|
|
2546
2625
|
event.preventDefault();
|
|
2547
2626
|
}
|
|
2548
2627
|
},
|
|
2549
|
-
items && onSelect ? /* @__PURE__ */
|
|
2628
|
+
items && onSelect ? /* @__PURE__ */ import_react38.default.createElement(
|
|
2550
2629
|
DropdownMenu,
|
|
2551
2630
|
{
|
|
2552
2631
|
open,
|
|
@@ -2555,13 +2634,13 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
|
|
|
2555
2634
|
onSelect,
|
|
2556
2635
|
shouldBindKeyboardShortcuts: false
|
|
2557
2636
|
},
|
|
2558
|
-
/* @__PURE__ */
|
|
2637
|
+
/* @__PURE__ */ import_react38.default.createElement(TriggerElement, null, /* @__PURE__ */ import_react38.default.createElement(
|
|
2559
2638
|
import_noya_icons5.DragHandleDots2Icon,
|
|
2560
2639
|
{
|
|
2561
2640
|
color: isVisible || open ? color : "transparent"
|
|
2562
2641
|
}
|
|
2563
2642
|
))
|
|
2564
|
-
) : /* @__PURE__ */
|
|
2643
|
+
) : /* @__PURE__ */ import_react38.default.createElement(
|
|
2565
2644
|
import_noya_icons5.DragHandleDots2Icon,
|
|
2566
2645
|
{
|
|
2567
2646
|
color: isVisible || open ? color : "transparent"
|
|
@@ -2571,7 +2650,7 @@ var DraggableMenuButton = (0, import_react37.memo)(function DraggableMenuButton2
|
|
|
2571
2650
|
});
|
|
2572
2651
|
|
|
2573
2652
|
// src/components/FillInputField.tsx
|
|
2574
|
-
var
|
|
2653
|
+
var import_react42 = __toESM(require("react"));
|
|
2575
2654
|
var import_styled_components21 = __toESM(require("styled-components"));
|
|
2576
2655
|
|
|
2577
2656
|
// ../noya-file-format/src/types.ts
|
|
@@ -2897,26 +2976,26 @@ var ClassValue = /* @__PURE__ */ ((ClassValue2) => {
|
|
|
2897
2976
|
})(ClassValue || {});
|
|
2898
2977
|
|
|
2899
2978
|
// src/components/FillPreviewBackground.tsx
|
|
2900
|
-
var
|
|
2979
|
+
var import_react41 = __toESM(require("react"));
|
|
2901
2980
|
var import_styled_components20 = __toESM(require("styled-components"));
|
|
2902
2981
|
|
|
2903
2982
|
// src/contexts/ImageDataContext.tsx
|
|
2904
|
-
var
|
|
2905
|
-
var ImageDataContext = (0,
|
|
2983
|
+
var import_react39 = __toESM(require("react"));
|
|
2984
|
+
var ImageDataContext = (0, import_react39.createContext)(
|
|
2906
2985
|
void 0
|
|
2907
2986
|
);
|
|
2908
|
-
var ImageDataProvider = (0,
|
|
2987
|
+
var ImageDataProvider = (0, import_react39.memo)(function ImageDataProvider2({
|
|
2909
2988
|
children,
|
|
2910
2989
|
getImageData
|
|
2911
2990
|
}) {
|
|
2912
|
-
const contextValue = (0,
|
|
2991
|
+
const contextValue = (0, import_react39.useMemo)(
|
|
2913
2992
|
() => ({ getImageData: getImageData ?? (() => void 0) }),
|
|
2914
2993
|
[getImageData]
|
|
2915
2994
|
);
|
|
2916
|
-
return /* @__PURE__ */
|
|
2995
|
+
return /* @__PURE__ */ import_react39.default.createElement(ImageDataContext.Provider, { value: contextValue }, children);
|
|
2917
2996
|
});
|
|
2918
2997
|
function useImageData(ref) {
|
|
2919
|
-
const value = (0,
|
|
2998
|
+
const value = (0, import_react39.useContext)(ImageDataContext);
|
|
2920
2999
|
if (!value) {
|
|
2921
3000
|
throw new Error("Missing ImageDataProvider");
|
|
2922
3001
|
}
|
|
@@ -2924,15 +3003,15 @@ function useImageData(ref) {
|
|
|
2924
3003
|
}
|
|
2925
3004
|
|
|
2926
3005
|
// src/hooks/useObjectURL.ts
|
|
2927
|
-
var
|
|
3006
|
+
var import_react40 = require("react");
|
|
2928
3007
|
function useObjectURL(object) {
|
|
2929
|
-
const objectURL = (0,
|
|
3008
|
+
const objectURL = (0, import_react40.useMemo)(() => {
|
|
2930
3009
|
if (object instanceof Blob)
|
|
2931
3010
|
return URL.createObjectURL(object);
|
|
2932
3011
|
const bytes = object instanceof Uint8Array ? object : object !== void 0 ? new Uint8Array(object) : new Uint8Array();
|
|
2933
3012
|
return URL.createObjectURL(new Blob([bytes]));
|
|
2934
3013
|
}, [object]);
|
|
2935
|
-
(0,
|
|
3014
|
+
(0, import_react40.useLayoutEffect)(() => {
|
|
2936
3015
|
return () => URL.revokeObjectURL(objectURL);
|
|
2937
3016
|
}, [objectURL]);
|
|
2938
3017
|
return objectURL;
|
|
@@ -2988,9 +3067,9 @@ var Background = import_styled_components20.default.span(({ background }) => ({
|
|
|
2988
3067
|
position: "absolute",
|
|
2989
3068
|
inset: 0
|
|
2990
3069
|
}));
|
|
2991
|
-
var HorizontalDotsBackground = (0,
|
|
3070
|
+
var HorizontalDotsBackground = (0, import_react41.memo)(function HorizontalDotsBackground2() {
|
|
2992
3071
|
const { inputBackground, placeholderDots } = (0, import_styled_components20.useTheme)().colors;
|
|
2993
|
-
const background = (0,
|
|
3072
|
+
const background = (0, import_react41.useMemo)(
|
|
2994
3073
|
() => [
|
|
2995
3074
|
`center url("data:image/svg+xml;utf8,${dotsHorizontalSvg(
|
|
2996
3075
|
placeholderDots
|
|
@@ -2999,7 +3078,7 @@ var HorizontalDotsBackground = (0, import_react40.memo)(function HorizontalDotsB
|
|
|
2999
3078
|
].join(","),
|
|
3000
3079
|
[inputBackground, placeholderDots]
|
|
3001
3080
|
);
|
|
3002
|
-
return /* @__PURE__ */
|
|
3081
|
+
return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
|
|
3003
3082
|
});
|
|
3004
3083
|
function getPatternSizeAndPosition(fillType, tileScale) {
|
|
3005
3084
|
switch (fillType) {
|
|
@@ -3013,7 +3092,7 @@ function getPatternSizeAndPosition(fillType, tileScale) {
|
|
|
3013
3092
|
return "center / 100% 100%";
|
|
3014
3093
|
}
|
|
3015
3094
|
}
|
|
3016
|
-
var PatternPreviewBackground = (0,
|
|
3095
|
+
var PatternPreviewBackground = (0, import_react41.memo)(function PatternPreviewBackground2({
|
|
3017
3096
|
fillType,
|
|
3018
3097
|
tileScale,
|
|
3019
3098
|
imageRef
|
|
@@ -3021,7 +3100,7 @@ var PatternPreviewBackground = (0, import_react40.memo)(function PatternPreviewB
|
|
|
3021
3100
|
const image = useImageData(imageRef);
|
|
3022
3101
|
const url = useObjectURL(image);
|
|
3023
3102
|
const size2 = getPatternSizeAndPosition(fillType, tileScale);
|
|
3024
|
-
const background = (0,
|
|
3103
|
+
const background = (0, import_react41.useMemo)(
|
|
3025
3104
|
() => [
|
|
3026
3105
|
size2,
|
|
3027
3106
|
`url(${url})`,
|
|
@@ -3029,37 +3108,37 @@ var PatternPreviewBackground = (0, import_react40.memo)(function PatternPreviewB
|
|
|
3029
3108
|
].join(" "),
|
|
3030
3109
|
[fillType, size2, url]
|
|
3031
3110
|
);
|
|
3032
|
-
return /* @__PURE__ */
|
|
3111
|
+
return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
|
|
3033
3112
|
});
|
|
3034
|
-
var ColorPreviewBackground = (0,
|
|
3113
|
+
var ColorPreviewBackground = (0, import_react41.memo)(function ColorPreviewBackground2({
|
|
3035
3114
|
color
|
|
3036
3115
|
}) {
|
|
3037
|
-
const background = (0,
|
|
3038
|
-
return /* @__PURE__ */
|
|
3116
|
+
const background = (0, import_react41.useMemo)(() => sketchColorToRgbaString(color), [color]);
|
|
3117
|
+
return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
|
|
3039
3118
|
});
|
|
3040
|
-
var GradientPreviewBackground = (0,
|
|
3119
|
+
var GradientPreviewBackground = (0, import_react41.memo)(function GradientPreviewBackground2({
|
|
3041
3120
|
gradient
|
|
3042
3121
|
}) {
|
|
3043
|
-
const background = (0,
|
|
3122
|
+
const background = (0, import_react41.useMemo)(
|
|
3044
3123
|
() => getGradientBackground(gradient.stops, gradient.gradientType, 180),
|
|
3045
3124
|
[gradient.gradientType, gradient.stops]
|
|
3046
3125
|
);
|
|
3047
|
-
return /* @__PURE__ */
|
|
3126
|
+
return /* @__PURE__ */ import_react41.default.createElement(Background, { background });
|
|
3048
3127
|
});
|
|
3049
|
-
var FillPreviewBackground = (0,
|
|
3128
|
+
var FillPreviewBackground = (0, import_react41.memo)(function FillPreviewBackground2({
|
|
3050
3129
|
value
|
|
3051
3130
|
}) {
|
|
3052
3131
|
if (!value)
|
|
3053
|
-
return /* @__PURE__ */
|
|
3132
|
+
return /* @__PURE__ */ import_react41.default.createElement(HorizontalDotsBackground, null);
|
|
3054
3133
|
switch (value._class) {
|
|
3055
3134
|
case "color":
|
|
3056
|
-
return /* @__PURE__ */
|
|
3135
|
+
return /* @__PURE__ */ import_react41.default.createElement(ColorPreviewBackground, { color: value });
|
|
3057
3136
|
case "gradient":
|
|
3058
|
-
return /* @__PURE__ */
|
|
3137
|
+
return /* @__PURE__ */ import_react41.default.createElement(GradientPreviewBackground, { gradient: value });
|
|
3059
3138
|
case "pattern":
|
|
3060
3139
|
if (!value.image)
|
|
3061
3140
|
return null;
|
|
3062
|
-
return /* @__PURE__ */
|
|
3141
|
+
return /* @__PURE__ */ import_react41.default.createElement(
|
|
3063
3142
|
PatternPreviewBackground,
|
|
3064
3143
|
{
|
|
3065
3144
|
fillType: value.patternFillType,
|
|
@@ -3089,16 +3168,285 @@ var Container = import_styled_components21.default.button(
|
|
|
3089
3168
|
flex
|
|
3090
3169
|
})
|
|
3091
3170
|
);
|
|
3092
|
-
var FillInputField = (0,
|
|
3093
|
-
(0,
|
|
3094
|
-
return /* @__PURE__ */
|
|
3171
|
+
var FillInputField = (0, import_react42.memo)(
|
|
3172
|
+
(0, import_react42.forwardRef)(function FillInputField2({ id, value, ...rest }, ref) {
|
|
3173
|
+
return /* @__PURE__ */ import_react42.default.createElement(Container, { ref, id, ...rest }, /* @__PURE__ */ import_react42.default.createElement(FillPreviewBackground, { value }));
|
|
3095
3174
|
})
|
|
3096
3175
|
);
|
|
3097
3176
|
|
|
3177
|
+
// src/components/FloatingWindow.tsx
|
|
3178
|
+
var import_react43 = __toESM(require("react"));
|
|
3179
|
+
var styles2 = {
|
|
3180
|
+
noSelect: {
|
|
3181
|
+
userSelect: "none",
|
|
3182
|
+
WebkitUserSelect: "none",
|
|
3183
|
+
MozUserSelect: "none",
|
|
3184
|
+
msUserSelect: "none"
|
|
3185
|
+
},
|
|
3186
|
+
windowWrapper: {
|
|
3187
|
+
position: "absolute",
|
|
3188
|
+
backgroundColor: "white",
|
|
3189
|
+
borderRadius: "4px",
|
|
3190
|
+
boxShadow: "0 2px 10px rgba(0, 0, 0, 0.1)",
|
|
3191
|
+
overflow: "hidden"
|
|
3192
|
+
// backdropFilter: "blur(10px)",
|
|
3193
|
+
},
|
|
3194
|
+
toolbar: {
|
|
3195
|
+
display: "flex",
|
|
3196
|
+
alignItems: "center",
|
|
3197
|
+
padding: "8px 12px",
|
|
3198
|
+
cursor: "move",
|
|
3199
|
+
userSelect: "none",
|
|
3200
|
+
minHeight: "43px"
|
|
3201
|
+
},
|
|
3202
|
+
closeButton: {
|
|
3203
|
+
background: "none",
|
|
3204
|
+
border: "none",
|
|
3205
|
+
fontSize: "16px",
|
|
3206
|
+
cursor: "pointer"
|
|
3207
|
+
},
|
|
3208
|
+
content: {
|
|
3209
|
+
padding: "12px",
|
|
3210
|
+
height: "calc(100% - 44px)",
|
|
3211
|
+
// Adjust based on toolbar height
|
|
3212
|
+
overflow: "auto",
|
|
3213
|
+
display: "flex",
|
|
3214
|
+
flexDirection: "column"
|
|
3215
|
+
},
|
|
3216
|
+
resizeHandle: {
|
|
3217
|
+
position: "absolute"
|
|
3218
|
+
}
|
|
3219
|
+
};
|
|
3220
|
+
var resizeHandlePositions = {
|
|
3221
|
+
top: { top: "0", left: "0", right: "0", height: "5px", cursor: "ns-resize" },
|
|
3222
|
+
right: {
|
|
3223
|
+
top: "0",
|
|
3224
|
+
right: "0",
|
|
3225
|
+
bottom: "0",
|
|
3226
|
+
width: "5px",
|
|
3227
|
+
cursor: "ew-resize"
|
|
3228
|
+
},
|
|
3229
|
+
bottom: {
|
|
3230
|
+
bottom: "0",
|
|
3231
|
+
left: "0",
|
|
3232
|
+
right: "0",
|
|
3233
|
+
height: "5px",
|
|
3234
|
+
cursor: "ns-resize"
|
|
3235
|
+
},
|
|
3236
|
+
left: { top: "0", left: "0", bottom: "0", width: "5px", cursor: "ew-resize" },
|
|
3237
|
+
topLeft: {
|
|
3238
|
+
top: "0",
|
|
3239
|
+
left: "0",
|
|
3240
|
+
width: "10px",
|
|
3241
|
+
height: "10px",
|
|
3242
|
+
cursor: "nwse-resize"
|
|
3243
|
+
},
|
|
3244
|
+
topRight: {
|
|
3245
|
+
top: "0",
|
|
3246
|
+
right: "0",
|
|
3247
|
+
width: "10px",
|
|
3248
|
+
height: "10px",
|
|
3249
|
+
cursor: "nesw-resize"
|
|
3250
|
+
},
|
|
3251
|
+
bottomLeft: {
|
|
3252
|
+
bottom: "0",
|
|
3253
|
+
left: "0",
|
|
3254
|
+
width: "10px",
|
|
3255
|
+
height: "10px",
|
|
3256
|
+
cursor: "nesw-resize"
|
|
3257
|
+
},
|
|
3258
|
+
bottomRight: {
|
|
3259
|
+
bottom: "0",
|
|
3260
|
+
right: "0",
|
|
3261
|
+
width: "10px",
|
|
3262
|
+
height: "10px",
|
|
3263
|
+
cursor: "nwse-resize"
|
|
3264
|
+
}
|
|
3265
|
+
};
|
|
3266
|
+
function defaultRenderToolbar({
|
|
3267
|
+
title,
|
|
3268
|
+
toolbarContent,
|
|
3269
|
+
onClose
|
|
3270
|
+
}) {
|
|
3271
|
+
return /* @__PURE__ */ import_react43.default.createElement(import_react43.default.Fragment, null, /* @__PURE__ */ import_react43.default.createElement(Small, { flex: "1", fontWeight: "500", color: "text" }, title), toolbarContent, /* @__PURE__ */ import_react43.default.createElement(
|
|
3272
|
+
IconButton,
|
|
3273
|
+
{
|
|
3274
|
+
iconName: "Cross3Icon",
|
|
3275
|
+
onClick: onClose,
|
|
3276
|
+
style: {
|
|
3277
|
+
marginLeft: "6px",
|
|
3278
|
+
marginRight: "-6px"
|
|
3279
|
+
}
|
|
3280
|
+
}
|
|
3281
|
+
));
|
|
3282
|
+
}
|
|
3283
|
+
var FloatingWindow = ({
|
|
3284
|
+
title,
|
|
3285
|
+
onClose,
|
|
3286
|
+
children,
|
|
3287
|
+
initialWidth = 300,
|
|
3288
|
+
initialHeight = 200,
|
|
3289
|
+
initialX = 100,
|
|
3290
|
+
initialY = 100,
|
|
3291
|
+
minWidth = 200,
|
|
3292
|
+
minHeight = 100,
|
|
3293
|
+
toolbarContent,
|
|
3294
|
+
renderToolbar = defaultRenderToolbar
|
|
3295
|
+
}) => {
|
|
3296
|
+
const [position, setPosition] = (0, import_react43.useState)({ x: initialX, y: initialY });
|
|
3297
|
+
const [size2, setSize] = (0, import_react43.useState)({
|
|
3298
|
+
width: initialWidth,
|
|
3299
|
+
height: initialHeight
|
|
3300
|
+
});
|
|
3301
|
+
const [isDragging, setIsDragging] = (0, import_react43.useState)(false);
|
|
3302
|
+
const [isResizing, setIsResizing] = (0, import_react43.useState)(false);
|
|
3303
|
+
const [dragOffset, setDragOffset] = (0, import_react43.useState)({ x: 0, y: 0 });
|
|
3304
|
+
const [resizeDirection, setResizeDirection] = (0, import_react43.useState)(null);
|
|
3305
|
+
const wrapperRef = (0, import_react43.useRef)(null);
|
|
3306
|
+
const toggleGlobalTextSelection = (disable) => {
|
|
3307
|
+
if (disable) {
|
|
3308
|
+
document.body.style.userSelect = "none";
|
|
3309
|
+
} else {
|
|
3310
|
+
document.body.style.userSelect = "";
|
|
3311
|
+
}
|
|
3312
|
+
};
|
|
3313
|
+
const handleMouseDown = (0, import_react43.useCallback)((e) => {
|
|
3314
|
+
if (!wrapperRef.current)
|
|
3315
|
+
return;
|
|
3316
|
+
const rect = wrapperRef.current.getBoundingClientRect();
|
|
3317
|
+
setDragOffset({
|
|
3318
|
+
x: e.clientX - rect.left,
|
|
3319
|
+
y: e.clientY - rect.top
|
|
3320
|
+
});
|
|
3321
|
+
setIsDragging(true);
|
|
3322
|
+
}, []);
|
|
3323
|
+
const handleResizeStart = (0, import_react43.useCallback)(
|
|
3324
|
+
(direction) => (e) => {
|
|
3325
|
+
e.stopPropagation();
|
|
3326
|
+
setIsResizing(true);
|
|
3327
|
+
setResizeDirection(direction);
|
|
3328
|
+
toggleGlobalTextSelection(true);
|
|
3329
|
+
},
|
|
3330
|
+
[]
|
|
3331
|
+
);
|
|
3332
|
+
const handleMouseMove = (0, import_react43.useCallback)(
|
|
3333
|
+
(e) => {
|
|
3334
|
+
if (isDragging) {
|
|
3335
|
+
setPosition({
|
|
3336
|
+
x: e.clientX - dragOffset.x,
|
|
3337
|
+
y: e.clientY - dragOffset.y
|
|
3338
|
+
});
|
|
3339
|
+
} else if (isResizing && resizeDirection) {
|
|
3340
|
+
const rect = wrapperRef.current.getBoundingClientRect();
|
|
3341
|
+
let newWidth = size2.width;
|
|
3342
|
+
let newHeight = size2.height;
|
|
3343
|
+
let newX = position.x;
|
|
3344
|
+
let newY = position.y;
|
|
3345
|
+
if (/right/i.test(resizeDirection)) {
|
|
3346
|
+
newWidth = Math.max(e.clientX - rect.left, minWidth);
|
|
3347
|
+
}
|
|
3348
|
+
if (/bottom/i.test(resizeDirection)) {
|
|
3349
|
+
newHeight = Math.max(e.clientY - rect.top, minHeight);
|
|
3350
|
+
}
|
|
3351
|
+
if (/left/i.test(resizeDirection)) {
|
|
3352
|
+
const potentialWidth = rect.right - e.clientX;
|
|
3353
|
+
if (potentialWidth <= minWidth) {
|
|
3354
|
+
newWidth = minWidth;
|
|
3355
|
+
newX = rect.right - minWidth;
|
|
3356
|
+
} else {
|
|
3357
|
+
newWidth = potentialWidth;
|
|
3358
|
+
newX = e.clientX;
|
|
3359
|
+
}
|
|
3360
|
+
}
|
|
3361
|
+
if (/top/i.test(resizeDirection)) {
|
|
3362
|
+
const potentialHeight = rect.bottom - e.clientY;
|
|
3363
|
+
if (potentialHeight <= minHeight) {
|
|
3364
|
+
newHeight = minHeight;
|
|
3365
|
+
newY = rect.bottom - minHeight;
|
|
3366
|
+
} else {
|
|
3367
|
+
newHeight = potentialHeight;
|
|
3368
|
+
newY = e.clientY;
|
|
3369
|
+
}
|
|
3370
|
+
}
|
|
3371
|
+
setSize({ width: newWidth, height: newHeight });
|
|
3372
|
+
setPosition({ x: newX, y: newY });
|
|
3373
|
+
}
|
|
3374
|
+
},
|
|
3375
|
+
[
|
|
3376
|
+
isDragging,
|
|
3377
|
+
isResizing,
|
|
3378
|
+
dragOffset,
|
|
3379
|
+
resizeDirection,
|
|
3380
|
+
size2,
|
|
3381
|
+
position,
|
|
3382
|
+
minWidth,
|
|
3383
|
+
minHeight
|
|
3384
|
+
]
|
|
3385
|
+
);
|
|
3386
|
+
const handleMouseUp = (0, import_react43.useCallback)((e) => {
|
|
3387
|
+
setIsDragging(false);
|
|
3388
|
+
setIsResizing(false);
|
|
3389
|
+
setResizeDirection(null);
|
|
3390
|
+
toggleGlobalTextSelection(false);
|
|
3391
|
+
}, []);
|
|
3392
|
+
import_react43.default.useEffect(() => {
|
|
3393
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
3394
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
3395
|
+
return () => {
|
|
3396
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
3397
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
3398
|
+
};
|
|
3399
|
+
}, [handleMouseMove, handleMouseUp]);
|
|
3400
|
+
const theme = useDesignSystemTheme();
|
|
3401
|
+
const floatingWindowManager = useFloatingWindowManager();
|
|
3402
|
+
const currentFloatingWindow = useCurrentFloatingWindowInternal();
|
|
3403
|
+
const handleClose = (0, import_react43.useCallback)(() => {
|
|
3404
|
+
if (onClose)
|
|
3405
|
+
onClose();
|
|
3406
|
+
floatingWindowManager.closeWindow(currentFloatingWindow.id);
|
|
3407
|
+
}, [currentFloatingWindow.id, floatingWindowManager, onClose]);
|
|
3408
|
+
return /* @__PURE__ */ import_react43.default.createElement(
|
|
3409
|
+
"div",
|
|
3410
|
+
{
|
|
3411
|
+
ref: wrapperRef,
|
|
3412
|
+
style: {
|
|
3413
|
+
...styles2.windowWrapper,
|
|
3414
|
+
top: position.y,
|
|
3415
|
+
left: position.x,
|
|
3416
|
+
width: size2.width,
|
|
3417
|
+
height: size2.height,
|
|
3418
|
+
outline: `1px solid ${theme.colors.divider}`,
|
|
3419
|
+
backgroundColor: theme.colors.canvas.background
|
|
3420
|
+
}
|
|
3421
|
+
},
|
|
3422
|
+
/* @__PURE__ */ import_react43.default.createElement(
|
|
3423
|
+
"div",
|
|
3424
|
+
{
|
|
3425
|
+
style: {
|
|
3426
|
+
...styles2.toolbar,
|
|
3427
|
+
backgroundColor: theme.colors.sidebar.background
|
|
3428
|
+
},
|
|
3429
|
+
onMouseDown: handleMouseDown
|
|
3430
|
+
},
|
|
3431
|
+
renderToolbar({ title, toolbarContent, onClose: handleClose })
|
|
3432
|
+
),
|
|
3433
|
+
/* @__PURE__ */ import_react43.default.createElement(Divider, null),
|
|
3434
|
+
/* @__PURE__ */ import_react43.default.createElement("div", { style: styles2.content }, children),
|
|
3435
|
+
Object.entries(resizeHandlePositions).map(([direction, style3]) => /* @__PURE__ */ import_react43.default.createElement(
|
|
3436
|
+
"div",
|
|
3437
|
+
{
|
|
3438
|
+
key: direction,
|
|
3439
|
+
style: { ...styles2.resizeHandle, ...style3 },
|
|
3440
|
+
onMouseDown: handleResizeStart(direction)
|
|
3441
|
+
}
|
|
3442
|
+
))
|
|
3443
|
+
);
|
|
3444
|
+
};
|
|
3445
|
+
|
|
3098
3446
|
// src/components/GradientPicker.tsx
|
|
3099
3447
|
var import_noya_colorpicker2 = require("@noya-app/noya-colorpicker");
|
|
3100
|
-
var
|
|
3101
|
-
var GradientPicker = (0,
|
|
3448
|
+
var import_react44 = __toESM(require("react"));
|
|
3449
|
+
var GradientPicker = (0, import_react44.memo)(function GradientPicker2({
|
|
3102
3450
|
value,
|
|
3103
3451
|
selectedStop,
|
|
3104
3452
|
onChangeColor,
|
|
@@ -3107,7 +3455,7 @@ var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
|
|
|
3107
3455
|
onDelete,
|
|
3108
3456
|
onSelectStop
|
|
3109
3457
|
}) {
|
|
3110
|
-
const colorModel = (0,
|
|
3458
|
+
const colorModel = (0, import_react44.useMemo)(
|
|
3111
3459
|
() => ({
|
|
3112
3460
|
defaultColor: { r: 0, g: 0, b: 0, a: 1 },
|
|
3113
3461
|
toHsva: import_noya_colorpicker2.rgbaToHsva,
|
|
@@ -3116,30 +3464,30 @@ var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
|
|
|
3116
3464
|
}),
|
|
3117
3465
|
[]
|
|
3118
3466
|
);
|
|
3119
|
-
const rgbaColor = (0,
|
|
3467
|
+
const rgbaColor = (0, import_react44.useMemo)(
|
|
3120
3468
|
() => sketchColorToRgba(value[selectedStop].color),
|
|
3121
3469
|
[value, selectedStop]
|
|
3122
3470
|
);
|
|
3123
|
-
const handleChangeColor = (0,
|
|
3471
|
+
const handleChangeColor = (0, import_react44.useCallback)(
|
|
3124
3472
|
(value2) => {
|
|
3125
3473
|
onChangeColor(rgbaToSketchColor(value2));
|
|
3126
3474
|
},
|
|
3127
3475
|
[onChangeColor]
|
|
3128
3476
|
);
|
|
3129
|
-
const handleAddGradientStop = (0,
|
|
3477
|
+
const handleAddGradientStop = (0, import_react44.useCallback)(
|
|
3130
3478
|
(value2, position) => {
|
|
3131
3479
|
onAdd(rgbaToSketchColor(value2), position);
|
|
3132
3480
|
},
|
|
3133
3481
|
[onAdd]
|
|
3134
3482
|
);
|
|
3135
|
-
return /* @__PURE__ */
|
|
3483
|
+
return /* @__PURE__ */ import_react44.default.createElement(
|
|
3136
3484
|
import_noya_colorpicker2.ColorPicker,
|
|
3137
3485
|
{
|
|
3138
3486
|
onChange: handleChangeColor,
|
|
3139
3487
|
colorModel,
|
|
3140
3488
|
color: rgbaColor
|
|
3141
3489
|
},
|
|
3142
|
-
/* @__PURE__ */
|
|
3490
|
+
/* @__PURE__ */ import_react44.default.createElement(
|
|
3143
3491
|
import_noya_colorpicker2.Gradient,
|
|
3144
3492
|
{
|
|
3145
3493
|
gradients: value,
|
|
@@ -3150,12 +3498,12 @@ var GradientPicker = (0, import_react42.memo)(function GradientPicker2({
|
|
|
3150
3498
|
onDelete
|
|
3151
3499
|
}
|
|
3152
3500
|
),
|
|
3153
|
-
/* @__PURE__ */
|
|
3154
|
-
/* @__PURE__ */
|
|
3155
|
-
/* @__PURE__ */
|
|
3156
|
-
/* @__PURE__ */
|
|
3157
|
-
/* @__PURE__ */
|
|
3158
|
-
/* @__PURE__ */
|
|
3501
|
+
/* @__PURE__ */ import_react44.default.createElement(Spacer.Vertical, { size: 10 }),
|
|
3502
|
+
/* @__PURE__ */ import_react44.default.createElement(import_noya_colorpicker2.Saturation, null),
|
|
3503
|
+
/* @__PURE__ */ import_react44.default.createElement(Spacer.Vertical, { size: 12 }),
|
|
3504
|
+
/* @__PURE__ */ import_react44.default.createElement(import_noya_colorpicker2.Hue, null),
|
|
3505
|
+
/* @__PURE__ */ import_react44.default.createElement(Spacer.Vertical, { size: 5 }),
|
|
3506
|
+
/* @__PURE__ */ import_react44.default.createElement(import_noya_colorpicker2.Alpha, null)
|
|
3159
3507
|
);
|
|
3160
3508
|
});
|
|
3161
3509
|
|
|
@@ -3187,12 +3535,12 @@ var Grid = import_styled_components22.default.div((props) => ({
|
|
|
3187
3535
|
}));
|
|
3188
3536
|
|
|
3189
3537
|
// src/components/GridView.tsx
|
|
3190
|
-
var
|
|
3538
|
+
var import_react46 = __toESM(require("react"));
|
|
3191
3539
|
var import_styled_components24 = __toESM(require("styled-components"));
|
|
3192
3540
|
|
|
3193
3541
|
// src/components/ScrollArea.tsx
|
|
3194
3542
|
var RadixScrollArea = __toESM(require("@radix-ui/react-scroll-area"));
|
|
3195
|
-
var
|
|
3543
|
+
var import_react45 = __toESM(require("react"));
|
|
3196
3544
|
var import_styled_components23 = __toESM(require("styled-components"));
|
|
3197
3545
|
var SCROLLBAR_SIZE = 10;
|
|
3198
3546
|
var StyledViewport = (0, import_styled_components23.default)(RadixScrollArea.Viewport)({
|
|
@@ -3220,18 +3568,18 @@ var Container2 = import_styled_components23.default.div({
|
|
|
3220
3568
|
flex: "1 1 0px",
|
|
3221
3569
|
minHeight: 0
|
|
3222
3570
|
});
|
|
3223
|
-
var ScrollArea = (0,
|
|
3224
|
-
const [scrollElementRef, setScrollElementRef] = (0,
|
|
3225
|
-
return /* @__PURE__ */
|
|
3571
|
+
var ScrollArea = (0, import_react45.memo)(function ScrollArea2({ children }) {
|
|
3572
|
+
const [scrollElementRef, setScrollElementRef] = (0, import_react45.useState)(null);
|
|
3573
|
+
return /* @__PURE__ */ import_react45.default.createElement(Container2, null, /* @__PURE__ */ import_react45.default.createElement(RadixScrollArea.Root, { style: { width: "100%", height: "100%" } }, /* @__PURE__ */ import_react45.default.createElement(
|
|
3226
3574
|
StyledViewport,
|
|
3227
3575
|
{
|
|
3228
|
-
ref: (0,
|
|
3576
|
+
ref: (0, import_react45.useCallback)(
|
|
3229
3577
|
(ref) => setScrollElementRef(ref),
|
|
3230
3578
|
[]
|
|
3231
3579
|
)
|
|
3232
3580
|
},
|
|
3233
3581
|
typeof children === "function" ? scrollElementRef ? children(scrollElementRef) : null : children
|
|
3234
|
-
), /* @__PURE__ */
|
|
3582
|
+
), /* @__PURE__ */ import_react45.default.createElement(StyledScrollbar, { orientation: "vertical", className: "scroll-component" }, /* @__PURE__ */ import_react45.default.createElement(StyledThumb, { className: "scroll-component" }))));
|
|
3235
3583
|
});
|
|
3236
3584
|
|
|
3237
3585
|
// src/components/GridView.tsx
|
|
@@ -3411,7 +3759,7 @@ var Shimmer = import_styled_components24.default.div`
|
|
|
3411
3759
|
align-items: end;
|
|
3412
3760
|
padding: 4px;
|
|
3413
3761
|
`;
|
|
3414
|
-
var GridViewItem = (0,
|
|
3762
|
+
var GridViewItem = (0, import_react46.forwardRef)(function GridViewItem2({
|
|
3415
3763
|
id,
|
|
3416
3764
|
title,
|
|
3417
3765
|
subtitle,
|
|
@@ -3427,15 +3775,15 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
|
|
|
3427
3775
|
onContextMenu,
|
|
3428
3776
|
style: style3
|
|
3429
3777
|
}, forwardedRef) {
|
|
3430
|
-
const [hovered, setHovered] =
|
|
3778
|
+
const [hovered, setHovered] = import_react46.default.useState(false);
|
|
3431
3779
|
const { hoverProps } = useHover({
|
|
3432
3780
|
onHoverChange: (isHovering) => {
|
|
3433
3781
|
onHoverChange?.(isHovering);
|
|
3434
3782
|
setHovered(isHovering);
|
|
3435
3783
|
}
|
|
3436
3784
|
});
|
|
3437
|
-
const { textPosition, bordered, disabled } = (0,
|
|
3438
|
-
const handleClick = (0,
|
|
3785
|
+
const { textPosition, bordered, disabled } = (0, import_react46.useContext)(GridViewContext);
|
|
3786
|
+
const handleClick = (0, import_react46.useCallback)(
|
|
3439
3787
|
(event) => {
|
|
3440
3788
|
event.stopPropagation();
|
|
3441
3789
|
event.preventDefault();
|
|
@@ -3444,7 +3792,7 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
|
|
|
3444
3792
|
},
|
|
3445
3793
|
[onClick, onPress]
|
|
3446
3794
|
);
|
|
3447
|
-
const handleKeyDown = (0,
|
|
3795
|
+
const handleKeyDown = (0, import_react46.useCallback)(
|
|
3448
3796
|
(event) => {
|
|
3449
3797
|
if (event.key === "Enter" || event.key === " ") {
|
|
3450
3798
|
event.stopPropagation();
|
|
@@ -3456,7 +3804,7 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
|
|
|
3456
3804
|
},
|
|
3457
3805
|
[onPress]
|
|
3458
3806
|
);
|
|
3459
|
-
let element = /* @__PURE__ */
|
|
3807
|
+
let element = /* @__PURE__ */ import_react46.default.createElement(
|
|
3460
3808
|
ItemContainer,
|
|
3461
3809
|
{
|
|
3462
3810
|
id,
|
|
@@ -3465,7 +3813,7 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
|
|
|
3465
3813
|
tabIndex: disabled ? void 0 : 0,
|
|
3466
3814
|
onKeyDown: handleKeyDown
|
|
3467
3815
|
},
|
|
3468
|
-
/* @__PURE__ */
|
|
3816
|
+
/* @__PURE__ */ import_react46.default.createElement(
|
|
3469
3817
|
ContentContainer,
|
|
3470
3818
|
{
|
|
3471
3819
|
disabled,
|
|
@@ -3479,25 +3827,25 @@ var GridViewItem = (0, import_react44.forwardRef)(function GridViewItem2({
|
|
|
3479
3827
|
},
|
|
3480
3828
|
children
|
|
3481
3829
|
),
|
|
3482
|
-
textPosition === "below" && /* @__PURE__ */
|
|
3483
|
-
textPosition === "overlay" && hovered && (title || subtitle) && /* @__PURE__ */
|
|
3484
|
-
loading && /* @__PURE__ */
|
|
3830
|
+
textPosition === "below" && /* @__PURE__ */ import_react46.default.createElement(import_react46.default.Fragment, null, /* @__PURE__ */ import_react46.default.createElement(Spacer.Vertical, { size: 8 }), /* @__PURE__ */ import_react46.default.createElement(ItemTitle, { showBackground: false }, title || " "), /* @__PURE__ */ import_react46.default.createElement(ItemDescription, { showBackground: false }, subtitle || " ")),
|
|
3831
|
+
textPosition === "overlay" && hovered && (title || subtitle) && /* @__PURE__ */ import_react46.default.createElement(TextOverlay, null, title && /* @__PURE__ */ import_react46.default.createElement(ItemTitle, { showBackground: true }, title), subtitle && /* @__PURE__ */ import_react46.default.createElement(ItemDescription, { showBackground: true }, subtitle)),
|
|
3832
|
+
loading && /* @__PURE__ */ import_react46.default.createElement(Shimmer, null, /* @__PURE__ */ import_react46.default.createElement(ActivityIndicator, { opacity: 0.5, size: 13 }))
|
|
3485
3833
|
);
|
|
3486
3834
|
if (menuItems && onSelectMenuItem) {
|
|
3487
|
-
element = /* @__PURE__ */
|
|
3835
|
+
element = /* @__PURE__ */ import_react46.default.createElement(ContextMenu, { items: menuItems, onSelect: onSelectMenuItem }, element);
|
|
3488
3836
|
}
|
|
3489
3837
|
if (textPosition === "toolip") {
|
|
3490
|
-
element = /* @__PURE__ */
|
|
3838
|
+
element = /* @__PURE__ */ import_react46.default.createElement(
|
|
3491
3839
|
Tooltip,
|
|
3492
3840
|
{
|
|
3493
|
-
content: /* @__PURE__ */
|
|
3841
|
+
content: /* @__PURE__ */ import_react46.default.createElement(Stack.V, { gap: 2 }, /* @__PURE__ */ import_react46.default.createElement(ItemTitle, { showBackground: false }, title), /* @__PURE__ */ import_react46.default.createElement(ItemDescription, { showBackground: false }, subtitle))
|
|
3494
3842
|
},
|
|
3495
3843
|
element
|
|
3496
3844
|
);
|
|
3497
3845
|
}
|
|
3498
3846
|
return element;
|
|
3499
3847
|
});
|
|
3500
|
-
var GridViewContext = (0,
|
|
3848
|
+
var GridViewContext = (0, import_react46.createContext)({
|
|
3501
3849
|
size: "small",
|
|
3502
3850
|
textPosition: "below",
|
|
3503
3851
|
bordered: false,
|
|
@@ -3512,7 +3860,7 @@ function GridViewRoot({
|
|
|
3512
3860
|
bordered = false,
|
|
3513
3861
|
disabled = false
|
|
3514
3862
|
}) {
|
|
3515
|
-
const handleClick = (0,
|
|
3863
|
+
const handleClick = (0, import_react46.useCallback)(
|
|
3516
3864
|
(event) => {
|
|
3517
3865
|
event.stopPropagation();
|
|
3518
3866
|
event.preventDefault();
|
|
@@ -3520,7 +3868,7 @@ function GridViewRoot({
|
|
|
3520
3868
|
},
|
|
3521
3869
|
[onClick]
|
|
3522
3870
|
);
|
|
3523
|
-
const contextValue = (0,
|
|
3871
|
+
const contextValue = (0, import_react46.useMemo)(
|
|
3524
3872
|
() => ({
|
|
3525
3873
|
size: size2,
|
|
3526
3874
|
textPosition,
|
|
@@ -3529,33 +3877,33 @@ function GridViewRoot({
|
|
|
3529
3877
|
}),
|
|
3530
3878
|
[bordered, disabled, size2, textPosition]
|
|
3531
3879
|
);
|
|
3532
|
-
return /* @__PURE__ */
|
|
3880
|
+
return /* @__PURE__ */ import_react46.default.createElement(GridViewContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react46.default.createElement(Container3, { onClick: handleClick, scrollable }, scrollable ? /* @__PURE__ */ import_react46.default.createElement(ScrollArea, null, children) : children));
|
|
3533
3881
|
}
|
|
3534
3882
|
function GridViewSection({
|
|
3535
3883
|
children,
|
|
3536
3884
|
padding = "20px"
|
|
3537
3885
|
}) {
|
|
3538
|
-
const { size: size2 } = (0,
|
|
3539
|
-
return /* @__PURE__ */
|
|
3886
|
+
const { size: size2 } = (0, import_react46.useContext)(GridViewContext);
|
|
3887
|
+
return /* @__PURE__ */ import_react46.default.createElement(Grid2, { size: size2, padding }, children);
|
|
3540
3888
|
}
|
|
3541
3889
|
function GridViewSectionHeader({ title }) {
|
|
3542
3890
|
const grouped = title.split("/");
|
|
3543
|
-
return /* @__PURE__ */
|
|
3544
|
-
grouped.map((title2, index) => /* @__PURE__ */
|
|
3545
|
-
/* @__PURE__ */
|
|
3891
|
+
return /* @__PURE__ */ import_react46.default.createElement(SectionHeaderContainer, null, /* @__PURE__ */ import_react46.default.createElement(Spacer.Vertical, { size: 24 }), withSeparatorElements(
|
|
3892
|
+
grouped.map((title2, index) => /* @__PURE__ */ import_react46.default.createElement(SectionTitle, { last: index === grouped.length - 1 }, title2)),
|
|
3893
|
+
/* @__PURE__ */ import_react46.default.createElement(SectionTitle, null, " / ")
|
|
3546
3894
|
));
|
|
3547
3895
|
}
|
|
3548
3896
|
var GridView;
|
|
3549
3897
|
((GridView2) => {
|
|
3550
|
-
GridView2.Root = (0,
|
|
3551
|
-
GridView2.Item = (0,
|
|
3552
|
-
GridView2.Section = (0,
|
|
3553
|
-
GridView2.SectionHeader = (0,
|
|
3898
|
+
GridView2.Root = (0, import_react46.memo)(GridViewRoot);
|
|
3899
|
+
GridView2.Item = (0, import_react46.memo)(GridViewItem);
|
|
3900
|
+
GridView2.Section = (0, import_react46.memo)(GridViewSection);
|
|
3901
|
+
GridView2.SectionHeader = (0, import_react46.memo)(GridViewSectionHeader);
|
|
3554
3902
|
})(GridView || (GridView = {}));
|
|
3555
3903
|
|
|
3556
3904
|
// src/components/InputFieldWithCompletions.tsx
|
|
3557
|
-
var
|
|
3558
|
-
var
|
|
3905
|
+
var import_noya_utils9 = require("@noya-app/noya-utils");
|
|
3906
|
+
var import_react50 = __toESM(require("react"));
|
|
3559
3907
|
var import_styled_components27 = __toESM(require("styled-components"));
|
|
3560
3908
|
|
|
3561
3909
|
// src/utils/fuzzyScorer.ts
|
|
@@ -3630,15 +3978,15 @@ function mergeRanges(ranges) {
|
|
|
3630
3978
|
}
|
|
3631
3979
|
|
|
3632
3980
|
// src/components/ListView.tsx
|
|
3633
|
-
var
|
|
3981
|
+
var import_noya_utils8 = require("@noya-app/noya-utils");
|
|
3634
3982
|
var import_react_compose_refs2 = require("@radix-ui/react-compose-refs");
|
|
3635
|
-
var
|
|
3983
|
+
var import_react48 = __toESM(require("react"));
|
|
3636
3984
|
var import_react_virtualized = require("react-virtualized");
|
|
3637
3985
|
var import_react_window = require("react-window");
|
|
3638
3986
|
var import_styled_components25 = __toESM(require("styled-components"));
|
|
3639
3987
|
|
|
3640
3988
|
// src/hooks/mergeEventHandlers.ts
|
|
3641
|
-
var
|
|
3989
|
+
var import_noya_utils7 = require("@noya-app/noya-utils");
|
|
3642
3990
|
var import_primitive = require("@radix-ui/primitive");
|
|
3643
3991
|
function composeAllEventHandlers(...handlers) {
|
|
3644
3992
|
const [first, ...rest] = handlers;
|
|
@@ -3648,7 +3996,7 @@ function composeAllEventHandlers(...handlers) {
|
|
|
3648
3996
|
);
|
|
3649
3997
|
}
|
|
3650
3998
|
function mergeEventHandlers(...handlerMaps) {
|
|
3651
|
-
const eventNames = (0,
|
|
3999
|
+
const eventNames = (0, import_noya_utils7.unique)(handlerMaps.map(Object.keys).flat());
|
|
3652
4000
|
return Object.fromEntries(
|
|
3653
4001
|
eventNames.map((eventName) => {
|
|
3654
4002
|
const handlers = handlerMaps.flatMap((handlerMap) => {
|
|
@@ -3663,8 +4011,8 @@ function mergeEventHandlers(...handlerMaps) {
|
|
|
3663
4011
|
// src/components/Sortable.tsx
|
|
3664
4012
|
var import_core = require("@dnd-kit/core");
|
|
3665
4013
|
var import_sortable = require("@dnd-kit/sortable");
|
|
3666
|
-
var
|
|
3667
|
-
var
|
|
4014
|
+
var import_react47 = __toESM(require("react"));
|
|
4015
|
+
var import_react_dom2 = require("react-dom");
|
|
3668
4016
|
var normalizeListDestinationIndex = (index, position) => {
|
|
3669
4017
|
return position === "above" ? index : index + 1;
|
|
3670
4018
|
};
|
|
@@ -3677,7 +4025,7 @@ var defaultAcceptsDrop = (sourceIndex, destinationIndex, position) => {
|
|
|
3677
4025
|
}
|
|
3678
4026
|
return true;
|
|
3679
4027
|
};
|
|
3680
|
-
var SortableItemContext = (0,
|
|
4028
|
+
var SortableItemContext = (0, import_react47.createContext)({
|
|
3681
4029
|
keys: [],
|
|
3682
4030
|
position: { x: 0, y: 0 },
|
|
3683
4031
|
acceptsDrop: defaultAcceptsDrop,
|
|
@@ -3699,7 +4047,7 @@ function SortableItem({
|
|
|
3699
4047
|
disabled,
|
|
3700
4048
|
children
|
|
3701
4049
|
}) {
|
|
3702
|
-
const { keys, position, acceptsDrop, setActivatorEvent, axis } = (0,
|
|
4050
|
+
const { keys, position, acceptsDrop, setActivatorEvent, axis } = (0, import_react47.useContext)(SortableItemContext);
|
|
3703
4051
|
const sortable = (0, import_sortable.useSortable)({ id, disabled });
|
|
3704
4052
|
const {
|
|
3705
4053
|
active,
|
|
@@ -3719,7 +4067,7 @@ function SortableItem({
|
|
|
3719
4067
|
const eventY = activatorEvent?.clientY ?? 0;
|
|
3720
4068
|
const offsetLeft = eventX + position.x;
|
|
3721
4069
|
const offsetTop = eventY + position.y;
|
|
3722
|
-
const ref = (0,
|
|
4070
|
+
const ref = (0, import_react47.useCallback)((node) => setNodeRef(node), [setNodeRef]);
|
|
3723
4071
|
return children({
|
|
3724
4072
|
ref,
|
|
3725
4073
|
...attributes,
|
|
@@ -3750,22 +4098,22 @@ function SortableRoot({
|
|
|
3750
4098
|
}
|
|
3751
4099
|
})
|
|
3752
4100
|
);
|
|
3753
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
3754
|
-
const activatorEvent = (0,
|
|
3755
|
-
const setActivatorEvent = (0,
|
|
4101
|
+
const [activeIndex, setActiveIndex] = (0, import_react47.useState)();
|
|
4102
|
+
const activatorEvent = (0, import_react47.useRef)(null);
|
|
4103
|
+
const setActivatorEvent = (0, import_react47.useCallback)((event) => {
|
|
3756
4104
|
activatorEvent.current = event;
|
|
3757
4105
|
}, []);
|
|
3758
|
-
const [position, setPosition] = (0,
|
|
3759
|
-
const handleDragStart = (0,
|
|
4106
|
+
const [position, setPosition] = (0, import_react47.useState)({ x: 0, y: 0 });
|
|
4107
|
+
const handleDragStart = (0, import_react47.useCallback)(
|
|
3760
4108
|
(event) => {
|
|
3761
4109
|
setActiveIndex(keys.indexOf(event.active.id));
|
|
3762
4110
|
},
|
|
3763
4111
|
[keys]
|
|
3764
4112
|
);
|
|
3765
|
-
const handleDragMove = (0,
|
|
4113
|
+
const handleDragMove = (0, import_react47.useCallback)((event) => {
|
|
3766
4114
|
setPosition({ ...event.delta });
|
|
3767
4115
|
}, []);
|
|
3768
|
-
const handleDragEnd = (0,
|
|
4116
|
+
const handleDragEnd = (0, import_react47.useCallback)(
|
|
3769
4117
|
(event) => {
|
|
3770
4118
|
const { active, over } = event;
|
|
3771
4119
|
setActiveIndex(void 0);
|
|
@@ -3792,10 +4140,10 @@ function SortableRoot({
|
|
|
3792
4140
|
},
|
|
3793
4141
|
[acceptsDrop, axis, keys, onMoveItem, position.x, position.y]
|
|
3794
4142
|
);
|
|
3795
|
-
return /* @__PURE__ */
|
|
4143
|
+
return /* @__PURE__ */ import_react47.default.createElement(
|
|
3796
4144
|
SortableItemContext.Provider,
|
|
3797
4145
|
{
|
|
3798
|
-
value: (0,
|
|
4146
|
+
value: (0, import_react47.useMemo)(
|
|
3799
4147
|
() => ({
|
|
3800
4148
|
keys,
|
|
3801
4149
|
acceptsDrop,
|
|
@@ -3806,7 +4154,7 @@ function SortableRoot({
|
|
|
3806
4154
|
[acceptsDrop, axis, keys, position, setActivatorEvent]
|
|
3807
4155
|
)
|
|
3808
4156
|
},
|
|
3809
|
-
/* @__PURE__ */
|
|
4157
|
+
/* @__PURE__ */ import_react47.default.createElement(
|
|
3810
4158
|
import_core.DndContext,
|
|
3811
4159
|
{
|
|
3812
4160
|
sensors,
|
|
@@ -3815,9 +4163,9 @@ function SortableRoot({
|
|
|
3815
4163
|
onDragMove: handleDragMove,
|
|
3816
4164
|
onDragEnd: handleDragEnd
|
|
3817
4165
|
},
|
|
3818
|
-
/* @__PURE__ */
|
|
3819
|
-
renderOverlay && (0,
|
|
3820
|
-
/* @__PURE__ */
|
|
4166
|
+
/* @__PURE__ */ import_react47.default.createElement(import_sortable.SortableContext, { items: keys, strategy: import_sortable.verticalListSortingStrategy }, children),
|
|
4167
|
+
renderOverlay && (0, import_react_dom2.createPortal)(
|
|
4168
|
+
/* @__PURE__ */ import_react47.default.createElement(import_core.DragOverlay, { dropAnimation: null }, activeIndex !== void 0 && activeIndex >= 0 && renderOverlay(activeIndex)),
|
|
3821
4169
|
document.body
|
|
3822
4170
|
)
|
|
3823
4171
|
)
|
|
@@ -3825,17 +4173,17 @@ function SortableRoot({
|
|
|
3825
4173
|
}
|
|
3826
4174
|
var Sortable;
|
|
3827
4175
|
((Sortable2) => {
|
|
3828
|
-
Sortable2.Item = (0,
|
|
3829
|
-
Sortable2.Root = (0,
|
|
4176
|
+
Sortable2.Item = (0, import_react47.memo)(SortableItem);
|
|
4177
|
+
Sortable2.Root = (0, import_react47.memo)(SortableRoot);
|
|
3830
4178
|
})(Sortable || (Sortable = {}));
|
|
3831
4179
|
|
|
3832
4180
|
// src/components/ListView.tsx
|
|
3833
4181
|
var ROW_HEIGHT = 31;
|
|
3834
4182
|
var SECTION_HEADER_LABEL_HEIGHT = 27;
|
|
3835
|
-
var DraggingContext = (0,
|
|
4183
|
+
var DraggingContext = (0, import_react48.createContext)({
|
|
3836
4184
|
indentation: 12
|
|
3837
4185
|
});
|
|
3838
|
-
var ListRowContext = (0,
|
|
4186
|
+
var ListRowContext = (0, import_react48.createContext)({
|
|
3839
4187
|
marginType: "none",
|
|
3840
4188
|
selectedPosition: "only",
|
|
3841
4189
|
sortable: false,
|
|
@@ -3865,8 +4213,8 @@ function ListViewEditableRowTitle({
|
|
|
3865
4213
|
autoFocus,
|
|
3866
4214
|
placeholder
|
|
3867
4215
|
}) {
|
|
3868
|
-
const inputRef = (0,
|
|
3869
|
-
(0,
|
|
4216
|
+
const inputRef = (0, import_react48.useRef)(null);
|
|
4217
|
+
(0, import_react48.useLayoutEffect)(() => {
|
|
3870
4218
|
const element = inputRef.current;
|
|
3871
4219
|
if (!element || !autoFocus)
|
|
3872
4220
|
return;
|
|
@@ -3875,7 +4223,7 @@ function ListViewEditableRowTitle({
|
|
|
3875
4223
|
element.select();
|
|
3876
4224
|
}, 0);
|
|
3877
4225
|
}, [autoFocus]);
|
|
3878
|
-
return /* @__PURE__ */
|
|
4226
|
+
return /* @__PURE__ */ import_react48.default.createElement(
|
|
3879
4227
|
ListViewEditableRowTitleElement,
|
|
3880
4228
|
{
|
|
3881
4229
|
ref: inputRef,
|
|
@@ -3997,7 +4345,7 @@ var ListViewDragIndicatorElement = import_styled_components25.default.div(({ the
|
|
|
3997
4345
|
boxShadow: "0 0 2px rgba(0,0,0,0.5)"
|
|
3998
4346
|
}
|
|
3999
4347
|
}));
|
|
4000
|
-
var ListViewRow = (0,
|
|
4348
|
+
var ListViewRow = (0, import_react48.forwardRef)(function ListViewRow2({
|
|
4001
4349
|
id,
|
|
4002
4350
|
tabIndex = 0,
|
|
4003
4351
|
gap,
|
|
@@ -4030,12 +4378,12 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
|
|
|
4030
4378
|
divider,
|
|
4031
4379
|
gap: listGap,
|
|
4032
4380
|
colorScheme
|
|
4033
|
-
} = (0,
|
|
4381
|
+
} = (0, import_react48.useContext)(ListRowContext);
|
|
4034
4382
|
const { hoverProps } = useHover({
|
|
4035
4383
|
onHoverChange
|
|
4036
4384
|
});
|
|
4037
|
-
const { indentation, isDragging } = (0,
|
|
4038
|
-
const handlePress = (0,
|
|
4385
|
+
const { indentation, isDragging } = (0, import_react48.useContext)(DraggingContext);
|
|
4386
|
+
const handlePress = (0, import_react48.useCallback)(
|
|
4039
4387
|
(event) => {
|
|
4040
4388
|
event.preventDefault();
|
|
4041
4389
|
if (event.button !== 0)
|
|
@@ -4044,14 +4392,14 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
|
|
|
4044
4392
|
},
|
|
4045
4393
|
[onPress]
|
|
4046
4394
|
);
|
|
4047
|
-
const handleDoubleClick = (0,
|
|
4395
|
+
const handleDoubleClick = (0, import_react48.useCallback)(
|
|
4048
4396
|
(event) => {
|
|
4049
4397
|
event.stopPropagation();
|
|
4050
4398
|
onDoubleClick?.();
|
|
4051
4399
|
},
|
|
4052
4400
|
[onDoubleClick]
|
|
4053
4401
|
);
|
|
4054
|
-
const mergedStyle = (0,
|
|
4402
|
+
const mergedStyle = (0, import_react48.useMemo)(() => {
|
|
4055
4403
|
return isDragging ? {
|
|
4056
4404
|
// TODO: Where do these offsets actually come from?
|
|
4057
4405
|
transform: `translate3d(-36px, -6px, 0)`,
|
|
@@ -4063,7 +4411,7 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
|
|
|
4063
4411
|
relativeDropPosition,
|
|
4064
4412
|
...renderProps
|
|
4065
4413
|
}, ref) => {
|
|
4066
|
-
const element = /* @__PURE__ */
|
|
4414
|
+
const element = /* @__PURE__ */ import_react48.default.createElement(
|
|
4067
4415
|
RowContainer,
|
|
4068
4416
|
{
|
|
4069
4417
|
ref,
|
|
@@ -4094,7 +4442,7 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
|
|
|
4094
4442
|
),
|
|
4095
4443
|
tabIndex
|
|
4096
4444
|
},
|
|
4097
|
-
relativeDropPosition && /* @__PURE__ */
|
|
4445
|
+
relativeDropPosition && /* @__PURE__ */ import_react48.default.createElement(
|
|
4098
4446
|
ListViewDragIndicatorElement,
|
|
4099
4447
|
{
|
|
4100
4448
|
colorScheme,
|
|
@@ -4103,11 +4451,11 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
|
|
|
4103
4451
|
gap: listGap
|
|
4104
4452
|
}
|
|
4105
4453
|
),
|
|
4106
|
-
depth > 0 && /* @__PURE__ */
|
|
4454
|
+
depth > 0 && /* @__PURE__ */ import_react48.default.createElement(Spacer.Horizontal, { size: depth * indentation }),
|
|
4107
4455
|
children
|
|
4108
4456
|
);
|
|
4109
4457
|
if (menuItems && onSelectMenuItem) {
|
|
4110
|
-
return /* @__PURE__ */
|
|
4458
|
+
return /* @__PURE__ */ import_react48.default.createElement(
|
|
4111
4459
|
ContextMenu,
|
|
4112
4460
|
{
|
|
4113
4461
|
items: menuItems,
|
|
@@ -4120,21 +4468,21 @@ var ListViewRow = (0, import_react46.forwardRef)(function ListViewRow2({
|
|
|
4120
4468
|
return element;
|
|
4121
4469
|
};
|
|
4122
4470
|
if (sortable && id) {
|
|
4123
|
-
return /* @__PURE__ */
|
|
4471
|
+
return /* @__PURE__ */ import_react48.default.createElement(Sortable.Item, { id, disabled: overrideSortable === false }, ({ ref: sortableRef, ...sortableProps }) => renderContent(sortableProps, (0, import_react_compose_refs2.composeRefs)(sortableRef, forwardedRef)));
|
|
4124
4472
|
}
|
|
4125
4473
|
return renderContent({}, forwardedRef);
|
|
4126
4474
|
});
|
|
4127
|
-
var RenderItemContext = (0,
|
|
4475
|
+
var RenderItemContext = (0, import_react48.createContext)(
|
|
4128
4476
|
() => null
|
|
4129
4477
|
);
|
|
4130
|
-
var VirtualizedListRow = (0,
|
|
4478
|
+
var VirtualizedListRow = (0, import_react48.memo)(function VirtualizedListRow2({
|
|
4131
4479
|
index,
|
|
4132
4480
|
style: style3
|
|
4133
4481
|
}) {
|
|
4134
|
-
const renderItem = (0,
|
|
4135
|
-
return /* @__PURE__ */
|
|
4482
|
+
const renderItem = (0, import_react48.useContext)(RenderItemContext);
|
|
4483
|
+
return /* @__PURE__ */ import_react48.default.createElement("div", { key: index, style: style3 }, renderItem(index));
|
|
4136
4484
|
});
|
|
4137
|
-
var VirtualizedListInner = (0,
|
|
4485
|
+
var VirtualizedListInner = (0, import_react48.forwardRef)(function VirtualizedListInner2({
|
|
4138
4486
|
size: size2,
|
|
4139
4487
|
scrollElement,
|
|
4140
4488
|
items,
|
|
@@ -4142,20 +4490,20 @@ var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedLi
|
|
|
4142
4490
|
keyExtractor,
|
|
4143
4491
|
renderItem
|
|
4144
4492
|
}, ref) {
|
|
4145
|
-
const listRef = (0,
|
|
4146
|
-
(0,
|
|
4493
|
+
const listRef = (0, import_react48.useRef)(null);
|
|
4494
|
+
(0, import_react48.useImperativeHandle)(ref, () => ({
|
|
4147
4495
|
scrollToIndex(index) {
|
|
4148
4496
|
listRef.current?.scrollToItem(index);
|
|
4149
4497
|
}
|
|
4150
4498
|
}));
|
|
4151
|
-
(0,
|
|
4499
|
+
(0, import_react48.useLayoutEffect)(() => {
|
|
4152
4500
|
listRef.current?.resetAfterIndex(0);
|
|
4153
4501
|
}, [
|
|
4154
4502
|
// When items change, we need to re-render the virtualized list,
|
|
4155
4503
|
// since it doesn't currently support row height changes
|
|
4156
4504
|
items
|
|
4157
4505
|
]);
|
|
4158
|
-
const listStyle = (0,
|
|
4506
|
+
const listStyle = (0, import_react48.useMemo)(
|
|
4159
4507
|
() => ({
|
|
4160
4508
|
overflowX: "initial",
|
|
4161
4509
|
overflowY: "initial",
|
|
@@ -4163,18 +4511,18 @@ var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedLi
|
|
|
4163
4511
|
}),
|
|
4164
4512
|
[]
|
|
4165
4513
|
);
|
|
4166
|
-
return /* @__PURE__ */
|
|
4514
|
+
return /* @__PURE__ */ import_react48.default.createElement(RenderItemContext.Provider, { value: renderItem }, /* @__PURE__ */ import_react48.default.createElement(
|
|
4167
4515
|
import_react_virtualized.WindowScroller,
|
|
4168
4516
|
{
|
|
4169
4517
|
scrollElement,
|
|
4170
|
-
style: (0,
|
|
4518
|
+
style: (0, import_react48.useMemo)(() => ({ flex: "1 1 auto" }), [])
|
|
4171
4519
|
},
|
|
4172
|
-
(0,
|
|
4520
|
+
(0, import_react48.useCallback)(
|
|
4173
4521
|
({
|
|
4174
4522
|
registerChild,
|
|
4175
4523
|
onChildScroll,
|
|
4176
4524
|
scrollTop
|
|
4177
|
-
}) => /* @__PURE__ */
|
|
4525
|
+
}) => /* @__PURE__ */ import_react48.default.createElement("div", { ref: registerChild }, /* @__PURE__ */ import_react48.default.createElement(
|
|
4178
4526
|
import_react_window.VariableSizeList,
|
|
4179
4527
|
{
|
|
4180
4528
|
ref: listRef,
|
|
@@ -4204,7 +4552,7 @@ var VirtualizedListInner = (0, import_react46.forwardRef)(function VirtualizedLi
|
|
|
4204
4552
|
)
|
|
4205
4553
|
));
|
|
4206
4554
|
});
|
|
4207
|
-
var VirtualizedList = (0,
|
|
4555
|
+
var VirtualizedList = (0, import_react48.memo)(
|
|
4208
4556
|
VirtualizedListInner
|
|
4209
4557
|
);
|
|
4210
4558
|
var RootContainer2 = import_styled_components25.default.div(({ theme, scrollable, gap }) => ({
|
|
@@ -4215,7 +4563,7 @@ var RootContainer2 = import_styled_components25.default.div(({ theme, scrollable
|
|
|
4215
4563
|
color: theme.colors.textMuted,
|
|
4216
4564
|
gap
|
|
4217
4565
|
}));
|
|
4218
|
-
var ListViewRootInner = (0,
|
|
4566
|
+
var ListViewRootInner = (0, import_react48.forwardRef)(function ListViewRootInner2({
|
|
4219
4567
|
onPress,
|
|
4220
4568
|
scrollable = false,
|
|
4221
4569
|
expandable = true,
|
|
@@ -4234,7 +4582,7 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
|
|
|
4234
4582
|
colorScheme = "primary",
|
|
4235
4583
|
gap = 0
|
|
4236
4584
|
}, forwardedRef) {
|
|
4237
|
-
const handleClick = (0,
|
|
4585
|
+
const handleClick = (0, import_react48.useCallback)(
|
|
4238
4586
|
(event) => {
|
|
4239
4587
|
if (event.target instanceof HTMLElement && event.target.classList.contains("scroll-component"))
|
|
4240
4588
|
return;
|
|
@@ -4244,19 +4592,19 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
|
|
|
4244
4592
|
},
|
|
4245
4593
|
[onPress]
|
|
4246
4594
|
);
|
|
4247
|
-
const renderChild = (0,
|
|
4595
|
+
const renderChild = (0, import_react48.useCallback)(
|
|
4248
4596
|
(index) => renderItem(data[index], index, { isDragging: false }),
|
|
4249
4597
|
[data, renderItem]
|
|
4250
4598
|
);
|
|
4251
|
-
const getItemContextValue = (0,
|
|
4599
|
+
const getItemContextValue = (0, import_react48.useCallback)(
|
|
4252
4600
|
(i) => {
|
|
4253
4601
|
const current = renderChild(i);
|
|
4254
|
-
if (!(0,
|
|
4602
|
+
if (!(0, import_react48.isValidElement)(current))
|
|
4255
4603
|
return;
|
|
4256
4604
|
const prevChild = i - 1 >= 0 && renderChild(i - 1);
|
|
4257
4605
|
const nextChild = i + 1 < data.length && renderChild(i + 1);
|
|
4258
|
-
const next = (0,
|
|
4259
|
-
const prev = (0,
|
|
4606
|
+
const next = (0, import_react48.isValidElement)(nextChild) ? nextChild : void 0;
|
|
4607
|
+
const prev = (0, import_react48.isValidElement)(prevChild) ? prevChild : void 0;
|
|
4260
4608
|
const hasMarginTop = !prev;
|
|
4261
4609
|
const hasMarginBottom = !next || current.props.isSectionHeader || next && next.props.isSectionHeader;
|
|
4262
4610
|
let marginType;
|
|
@@ -4308,26 +4656,26 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
|
|
|
4308
4656
|
gap
|
|
4309
4657
|
]
|
|
4310
4658
|
);
|
|
4311
|
-
const draggingContextOverlayValue = (0,
|
|
4659
|
+
const draggingContextOverlayValue = (0, import_react48.useMemo)(
|
|
4312
4660
|
() => ({ indentation, isDragging: true }),
|
|
4313
4661
|
[indentation]
|
|
4314
4662
|
);
|
|
4315
|
-
const renderOverlay = (0,
|
|
4316
|
-
(index) => /* @__PURE__ */
|
|
4663
|
+
const renderOverlay = (0, import_react48.useCallback)(
|
|
4664
|
+
(index) => /* @__PURE__ */ import_react48.default.createElement("div", { style: { opacity: 0.25 } }, /* @__PURE__ */ import_react48.default.createElement(DraggingContext.Provider, { value: draggingContextOverlayValue }, renderItem(data[index], index, { isDragging: true }))),
|
|
4317
4665
|
[draggingContextOverlayValue, renderItem, data]
|
|
4318
4666
|
);
|
|
4319
|
-
const renderWrappedChild = (0,
|
|
4667
|
+
const renderWrappedChild = (0, import_react48.useCallback)(
|
|
4320
4668
|
(index) => {
|
|
4321
4669
|
const contextValue = getItemContextValue(index);
|
|
4322
4670
|
const current = renderChild(index);
|
|
4323
|
-
if (!contextValue || !(0,
|
|
4671
|
+
if (!contextValue || !(0, import_react48.isValidElement)(current))
|
|
4324
4672
|
return null;
|
|
4325
|
-
return /* @__PURE__ */
|
|
4673
|
+
return /* @__PURE__ */ import_react48.default.createElement(ListRowContext.Provider, { key: current.key, value: contextValue }, current);
|
|
4326
4674
|
},
|
|
4327
4675
|
[getItemContextValue, renderChild]
|
|
4328
4676
|
);
|
|
4329
|
-
const ids = (0,
|
|
4330
|
-
const withSortable = (children) => sortable ? /* @__PURE__ */
|
|
4677
|
+
const ids = (0, import_react48.useMemo)(() => data.map(keyExtractor), [keyExtractor, data]);
|
|
4678
|
+
const withSortable = (children) => sortable ? /* @__PURE__ */ import_react48.default.createElement(
|
|
4331
4679
|
Sortable.Root,
|
|
4332
4680
|
{
|
|
4333
4681
|
onMoveItem,
|
|
@@ -4337,8 +4685,8 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
|
|
|
4337
4685
|
},
|
|
4338
4686
|
children
|
|
4339
4687
|
) : children;
|
|
4340
|
-
const withScrollable = (children) => scrollable ? /* @__PURE__ */
|
|
4341
|
-
const getItemHeight = (0,
|
|
4688
|
+
const withScrollable = (children) => scrollable ? /* @__PURE__ */ import_react48.default.createElement(ScrollArea, null, children) : children(null);
|
|
4689
|
+
const getItemHeight = (0, import_react48.useCallback)(
|
|
4342
4690
|
(index) => {
|
|
4343
4691
|
const child = getItemContextValue(index);
|
|
4344
4692
|
const margin = child?.marginType ? getPositionMargin(child.marginType) : { top: 0, bottom: 0 };
|
|
@@ -4347,12 +4695,12 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
|
|
|
4347
4695
|
},
|
|
4348
4696
|
[getItemContextValue, variant]
|
|
4349
4697
|
);
|
|
4350
|
-
const getKey = (0,
|
|
4698
|
+
const getKey = (0, import_react48.useCallback)(
|
|
4351
4699
|
(index) => keyExtractor(data[index], index),
|
|
4352
4700
|
[data, keyExtractor]
|
|
4353
4701
|
);
|
|
4354
|
-
const draggingContextValue = (0,
|
|
4355
|
-
return /* @__PURE__ */
|
|
4702
|
+
const draggingContextValue = (0, import_react48.useMemo)(() => ({ indentation }), [indentation]);
|
|
4703
|
+
return /* @__PURE__ */ import_react48.default.createElement(DraggingContext.Provider, { value: draggingContextValue }, /* @__PURE__ */ import_react48.default.createElement(
|
|
4356
4704
|
RootContainer2,
|
|
4357
4705
|
{
|
|
4358
4706
|
...{
|
|
@@ -4363,7 +4711,7 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
|
|
|
4363
4711
|
},
|
|
4364
4712
|
withScrollable(
|
|
4365
4713
|
(scrollElementRef) => withSortable(
|
|
4366
|
-
virtualized ? /* @__PURE__ */
|
|
4714
|
+
virtualized ? /* @__PURE__ */ import_react48.default.createElement(
|
|
4367
4715
|
VirtualizedList,
|
|
4368
4716
|
{
|
|
4369
4717
|
ref: forwardedRef,
|
|
@@ -4374,47 +4722,47 @@ var ListViewRootInner = (0, import_react46.forwardRef)(function ListViewRootInne
|
|
|
4374
4722
|
keyExtractor: getKey,
|
|
4375
4723
|
renderItem: renderWrappedChild
|
|
4376
4724
|
}
|
|
4377
|
-
) : (0,
|
|
4725
|
+
) : (0, import_noya_utils8.range)(0, data.length).map(renderWrappedChild)
|
|
4378
4726
|
)
|
|
4379
4727
|
)
|
|
4380
4728
|
));
|
|
4381
4729
|
});
|
|
4382
|
-
var ListViewRoot = (0,
|
|
4383
|
-
var ChildrenListViewInner = (0,
|
|
4384
|
-
const items = (0,
|
|
4385
|
-
() =>
|
|
4386
|
-
(child) => (0,
|
|
4730
|
+
var ListViewRoot = (0, import_react48.memo)(ListViewRootInner);
|
|
4731
|
+
var ChildrenListViewInner = (0, import_react48.forwardRef)(function ChildrenListViewInner2({ children, ...rest }, forwardedRef) {
|
|
4732
|
+
const items = (0, import_react48.useMemo)(
|
|
4733
|
+
() => import_react48.Children.toArray(children).flatMap(
|
|
4734
|
+
(child) => (0, import_react48.isValidElement)(child) ? [child] : []
|
|
4387
4735
|
),
|
|
4388
4736
|
[children]
|
|
4389
4737
|
);
|
|
4390
|
-
return /* @__PURE__ */
|
|
4738
|
+
return /* @__PURE__ */ import_react48.default.createElement(
|
|
4391
4739
|
ListViewRoot,
|
|
4392
4740
|
{
|
|
4393
4741
|
ref: forwardedRef,
|
|
4394
4742
|
...rest,
|
|
4395
4743
|
data: items,
|
|
4396
|
-
keyExtractor: (0,
|
|
4744
|
+
keyExtractor: (0, import_react48.useCallback)(
|
|
4397
4745
|
({ key }, index) => typeof key === "string" ? key : (key ?? index).toString(),
|
|
4398
4746
|
[]
|
|
4399
4747
|
),
|
|
4400
|
-
renderItem: (0,
|
|
4748
|
+
renderItem: (0, import_react48.useCallback)((item) => item, [])
|
|
4401
4749
|
}
|
|
4402
4750
|
);
|
|
4403
4751
|
});
|
|
4404
|
-
var ChildrenListView = (0,
|
|
4405
|
-
var SimpleListViewInner = (0,
|
|
4752
|
+
var ChildrenListView = (0, import_react48.memo)(ChildrenListViewInner);
|
|
4753
|
+
var SimpleListViewInner = (0, import_react48.forwardRef)(function SimpleListViewInner2(props, forwardedRef) {
|
|
4406
4754
|
if ("children" in props) {
|
|
4407
|
-
return /* @__PURE__ */
|
|
4755
|
+
return /* @__PURE__ */ import_react48.default.createElement(ChildrenListView, { ref: forwardedRef, ...props });
|
|
4408
4756
|
} else {
|
|
4409
|
-
return /* @__PURE__ */
|
|
4757
|
+
return /* @__PURE__ */ import_react48.default.createElement(ListViewRoot, { ref: forwardedRef, ...props });
|
|
4410
4758
|
}
|
|
4411
4759
|
});
|
|
4412
|
-
var SimpleListView = (0,
|
|
4760
|
+
var SimpleListView = (0, import_react48.memo)(SimpleListViewInner);
|
|
4413
4761
|
var ListView;
|
|
4414
4762
|
((ListView2) => {
|
|
4415
|
-
ListView2.RowTitle = (0,
|
|
4416
|
-
ListView2.EditableRowTitle = (0,
|
|
4417
|
-
ListView2.Row = (0,
|
|
4763
|
+
ListView2.RowTitle = (0, import_react48.memo)(ListViewRowTitle);
|
|
4764
|
+
ListView2.EditableRowTitle = (0, import_react48.memo)(ListViewEditableRowTitle);
|
|
4765
|
+
ListView2.Row = (0, import_react48.memo)(ListViewRow);
|
|
4418
4766
|
ListView2.Root = SimpleListView;
|
|
4419
4767
|
ListView2.RowContext = ListRowContext;
|
|
4420
4768
|
ListView2.DragIndicator = ListViewDragIndicatorElement;
|
|
@@ -4427,7 +4775,7 @@ var ListView;
|
|
|
4427
4775
|
})(ListView || (ListView = {}));
|
|
4428
4776
|
|
|
4429
4777
|
// src/components/Text.tsx
|
|
4430
|
-
var
|
|
4778
|
+
var import_react49 = __toESM(require("react"));
|
|
4431
4779
|
var import_styled_components26 = __toESM(require("styled-components"));
|
|
4432
4780
|
var elements = {
|
|
4433
4781
|
title: "h1",
|
|
@@ -4439,6 +4787,7 @@ var elements = {
|
|
|
4439
4787
|
heading5: "h5",
|
|
4440
4788
|
body: "p",
|
|
4441
4789
|
small: "span",
|
|
4790
|
+
button: "span",
|
|
4442
4791
|
code: "code",
|
|
4443
4792
|
label: "span"
|
|
4444
4793
|
};
|
|
@@ -4448,7 +4797,7 @@ var StyledElement = import_styled_components26.default.span(({ theme, variant, s
|
|
|
4448
4797
|
...styleProps,
|
|
4449
4798
|
...mergeBreakpoints(breakpoints || [])
|
|
4450
4799
|
}));
|
|
4451
|
-
var Text = (0,
|
|
4800
|
+
var Text = (0, import_react49.forwardRef)(function Text2({
|
|
4452
4801
|
as,
|
|
4453
4802
|
variant,
|
|
4454
4803
|
breakpoints,
|
|
@@ -4460,7 +4809,7 @@ var Text = (0, import_react47.forwardRef)(function Text2({
|
|
|
4460
4809
|
...rest
|
|
4461
4810
|
}, forwardedRef) {
|
|
4462
4811
|
const element = as ?? elements[variant] ?? "span";
|
|
4463
|
-
return /* @__PURE__ */
|
|
4812
|
+
return /* @__PURE__ */ import_react49.default.createElement(
|
|
4464
4813
|
StyledElement,
|
|
4465
4814
|
{
|
|
4466
4815
|
ref: forwardedRef,
|
|
@@ -4476,28 +4825,28 @@ var Text = (0, import_react47.forwardRef)(function Text2({
|
|
|
4476
4825
|
children
|
|
4477
4826
|
);
|
|
4478
4827
|
});
|
|
4479
|
-
var Heading1 = (0,
|
|
4480
|
-
(props, ref) => /* @__PURE__ */
|
|
4828
|
+
var Heading1 = (0, import_react49.forwardRef)(
|
|
4829
|
+
(props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading1" })
|
|
4481
4830
|
);
|
|
4482
|
-
var Heading2 = (0,
|
|
4483
|
-
(props, ref) => /* @__PURE__ */
|
|
4831
|
+
var Heading2 = (0, import_react49.forwardRef)(
|
|
4832
|
+
(props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading2" })
|
|
4484
4833
|
);
|
|
4485
|
-
var Heading3 = (0,
|
|
4486
|
-
(props, ref) => /* @__PURE__ */
|
|
4834
|
+
var Heading3 = (0, import_react49.forwardRef)(
|
|
4835
|
+
(props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading3" })
|
|
4487
4836
|
);
|
|
4488
|
-
var Heading4 = (0,
|
|
4489
|
-
(props, ref) => /* @__PURE__ */
|
|
4837
|
+
var Heading4 = (0, import_react49.forwardRef)(
|
|
4838
|
+
(props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading4" })
|
|
4490
4839
|
);
|
|
4491
|
-
var Heading5 = (0,
|
|
4492
|
-
(props, ref) => /* @__PURE__ */
|
|
4840
|
+
var Heading5 = (0, import_react49.forwardRef)(
|
|
4841
|
+
(props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "heading5" })
|
|
4493
4842
|
);
|
|
4494
|
-
var Body = (0,
|
|
4495
|
-
(props, ref) => /* @__PURE__ */
|
|
4843
|
+
var Body = (0, import_react49.forwardRef)(
|
|
4844
|
+
(props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "body" })
|
|
4496
4845
|
);
|
|
4497
|
-
var Small = (0,
|
|
4498
|
-
(props, ref) => /* @__PURE__ */
|
|
4846
|
+
var Small = (0, import_react49.forwardRef)(
|
|
4847
|
+
(props, ref) => /* @__PURE__ */ import_react49.default.createElement(Text, { ref, ...props, variant: "small" })
|
|
4499
4848
|
);
|
|
4500
|
-
var Italic = ({ children }) => /* @__PURE__ */
|
|
4849
|
+
var Italic = ({ children }) => /* @__PURE__ */ import_react49.default.createElement(
|
|
4501
4850
|
"span",
|
|
4502
4851
|
{
|
|
4503
4852
|
style: {
|
|
@@ -4509,9 +4858,9 @@ var Italic = ({ children }) => /* @__PURE__ */ import_react47.default.createElem
|
|
|
4509
4858
|
|
|
4510
4859
|
// src/components/InputFieldWithCompletions.tsx
|
|
4511
4860
|
function filterWithGroupedSections(items, query) {
|
|
4512
|
-
const sections = (0,
|
|
4861
|
+
const sections = (0, import_noya_utils9.chunkBy)(items, (a, b) => b.type !== "sectionHeader");
|
|
4513
4862
|
return sections.flatMap((section) => {
|
|
4514
|
-
const [headers, regular] = (0,
|
|
4863
|
+
const [headers, regular] = (0, import_noya_utils9.partition)(
|
|
4515
4864
|
section,
|
|
4516
4865
|
(item) => item.type === "sectionHeader"
|
|
4517
4866
|
);
|
|
@@ -4539,15 +4888,15 @@ var CompletionToken = import_styled_components27.default.span(
|
|
|
4539
4888
|
whiteSpace: "pre"
|
|
4540
4889
|
})
|
|
4541
4890
|
);
|
|
4542
|
-
var CompletionMenu = (0,
|
|
4543
|
-
(0,
|
|
4891
|
+
var CompletionMenu = (0, import_react50.memo)(
|
|
4892
|
+
(0, import_react50.forwardRef)(function CompletionMenu2({
|
|
4544
4893
|
items,
|
|
4545
4894
|
selectedIndex,
|
|
4546
4895
|
onSelectItem,
|
|
4547
4896
|
onHoverIndex,
|
|
4548
4897
|
listSize
|
|
4549
4898
|
}, forwardedRef) {
|
|
4550
|
-
return /* @__PURE__ */
|
|
4899
|
+
return /* @__PURE__ */ import_react50.default.createElement(
|
|
4551
4900
|
ListView.Root,
|
|
4552
4901
|
{
|
|
4553
4902
|
ref: forwardedRef,
|
|
@@ -4559,13 +4908,13 @@ var CompletionMenu = (0, import_react48.memo)(
|
|
|
4559
4908
|
sectionHeaderVariant: "label",
|
|
4560
4909
|
renderItem: (item, i) => {
|
|
4561
4910
|
if (item.type === "sectionHeader") {
|
|
4562
|
-
return /* @__PURE__ */
|
|
4911
|
+
return /* @__PURE__ */ import_react50.default.createElement(ListView.Row, { key: item.id, isSectionHeader: true }, item.name);
|
|
4563
4912
|
}
|
|
4564
4913
|
const tokens = fuzzyTokenize({
|
|
4565
4914
|
item: item.name,
|
|
4566
4915
|
itemScore: item
|
|
4567
4916
|
});
|
|
4568
|
-
return /* @__PURE__ */
|
|
4917
|
+
return /* @__PURE__ */ import_react50.default.createElement(
|
|
4569
4918
|
ListView.Row,
|
|
4570
4919
|
{
|
|
4571
4920
|
key: item.id,
|
|
@@ -4577,16 +4926,16 @@ var CompletionMenu = (0, import_react48.memo)(
|
|
|
4577
4926
|
}
|
|
4578
4927
|
}
|
|
4579
4928
|
},
|
|
4580
|
-
tokens.map((token, j) => /* @__PURE__ */
|
|
4581
|
-
item.icon && /* @__PURE__ */
|
|
4929
|
+
tokens.map((token, j) => /* @__PURE__ */ import_react50.default.createElement(CompletionToken, { key: j, type: token.type }, token.text)),
|
|
4930
|
+
item.icon && /* @__PURE__ */ import_react50.default.createElement(import_react50.default.Fragment, null, /* @__PURE__ */ import_react50.default.createElement(Spacer.Horizontal, null), item.icon)
|
|
4582
4931
|
);
|
|
4583
4932
|
}
|
|
4584
4933
|
}
|
|
4585
4934
|
);
|
|
4586
4935
|
})
|
|
4587
4936
|
);
|
|
4588
|
-
var InputFieldWithCompletions = (0,
|
|
4589
|
-
(0,
|
|
4937
|
+
var InputFieldWithCompletions = (0, import_react50.memo)(
|
|
4938
|
+
(0, import_react50.forwardRef)(function InputFieldWithCompletions2({
|
|
4590
4939
|
loading,
|
|
4591
4940
|
initialValue = "",
|
|
4592
4941
|
placeholder,
|
|
@@ -4604,13 +4953,13 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4604
4953
|
hideChildrenWhenFocused = false,
|
|
4605
4954
|
hideMenuWhenEmptyValue = false
|
|
4606
4955
|
}, forwardedRef) {
|
|
4607
|
-
const ref = (0,
|
|
4608
|
-
const [isFocused, setIsFocused] = (0,
|
|
4609
|
-
const [state, _setState] = (0,
|
|
4956
|
+
const ref = (0, import_react50.useRef)(null);
|
|
4957
|
+
const [isFocused, setIsFocused] = (0, import_react50.useState)(false);
|
|
4958
|
+
const [state, _setState] = (0, import_react50.useState)({
|
|
4610
4959
|
filter: initialValue,
|
|
4611
4960
|
selectedIndex: 0
|
|
4612
4961
|
});
|
|
4613
|
-
const updateState = (0,
|
|
4962
|
+
const updateState = (0, import_react50.useCallback)(
|
|
4614
4963
|
(newState, hoverItem) => {
|
|
4615
4964
|
const nextState = { ...state, ...newState };
|
|
4616
4965
|
const nextItems = filterWithGroupedSections(items, nextState.filter);
|
|
@@ -4639,20 +4988,20 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4639
4988
|
},
|
|
4640
4989
|
[items, onChange, onHoverItem, state]
|
|
4641
4990
|
);
|
|
4642
|
-
const initialValueRef = (0,
|
|
4643
|
-
(0,
|
|
4991
|
+
const initialValueRef = (0, import_react50.useRef)(initialValue);
|
|
4992
|
+
(0, import_react50.useLayoutEffect)(() => {
|
|
4644
4993
|
if (initialValueRef.current === initialValue)
|
|
4645
4994
|
return;
|
|
4646
4995
|
initialValueRef.current = initialValue;
|
|
4647
4996
|
updateState({ filter: initialValue });
|
|
4648
4997
|
}, [initialValue, updateState]);
|
|
4649
4998
|
const { filter, selectedIndex } = state;
|
|
4650
|
-
const listRef =
|
|
4651
|
-
const filteredItems = (0,
|
|
4999
|
+
const listRef = import_react50.default.useRef(null);
|
|
5000
|
+
const filteredItems = (0, import_react50.useMemo)(
|
|
4652
5001
|
() => filterWithGroupedSections(items, filter),
|
|
4653
5002
|
[items, filter]
|
|
4654
5003
|
);
|
|
4655
|
-
const [normalItems, sectionHeaderItems] = (0,
|
|
5004
|
+
const [normalItems, sectionHeaderItems] = (0, import_noya_utils9.partition)(
|
|
4656
5005
|
filteredItems,
|
|
4657
5006
|
(item) => item.type !== "sectionHeader"
|
|
4658
5007
|
);
|
|
@@ -4664,13 +5013,13 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4664
5013
|
),
|
|
4665
5014
|
ListView.rowHeight * 10.5
|
|
4666
5015
|
);
|
|
4667
|
-
(0,
|
|
5016
|
+
(0, import_react50.useEffect)(() => {
|
|
4668
5017
|
if (listRef.current) {
|
|
4669
5018
|
listRef.current.scrollToIndex(selectedIndex);
|
|
4670
5019
|
}
|
|
4671
5020
|
}, [selectedIndex]);
|
|
4672
|
-
const lastSubmittedValueRef = (0,
|
|
4673
|
-
const selectItem = (0,
|
|
5021
|
+
const lastSubmittedValueRef = (0, import_react50.useRef)(void 0);
|
|
5022
|
+
const selectItem = (0, import_react50.useCallback)(
|
|
4674
5023
|
(item) => {
|
|
4675
5024
|
if (item.type === "sectionHeader")
|
|
4676
5025
|
return;
|
|
@@ -4686,17 +5035,17 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4686
5035
|
},
|
|
4687
5036
|
[filter, onSelectItem, onHoverItem, ref]
|
|
4688
5037
|
);
|
|
4689
|
-
const handleChange = (0,
|
|
5038
|
+
const handleChange = (0, import_react50.useCallback)(
|
|
4690
5039
|
(value) => updateState({ selectedIndex: 0, filter: value }),
|
|
4691
5040
|
[updateState]
|
|
4692
5041
|
);
|
|
4693
|
-
const handleBlur = (0,
|
|
5042
|
+
const handleBlur = (0, import_react50.useCallback)(() => {
|
|
4694
5043
|
setIsFocused(false);
|
|
4695
5044
|
const didSubmit = lastSubmittedValueRef.current?.filter === filter;
|
|
4696
5045
|
updateState({ selectedIndex: 0, filter: initialValue }, "resetHover");
|
|
4697
5046
|
onBlur?.(didSubmit, filter);
|
|
4698
5047
|
}, [filter, initialValue, onBlur, updateState]);
|
|
4699
|
-
const handleFocus = (0,
|
|
5048
|
+
const handleFocus = (0, import_react50.useCallback)(
|
|
4700
5049
|
(event) => {
|
|
4701
5050
|
setIsFocused(true);
|
|
4702
5051
|
updateState({ selectedIndex: 0, filter: initialValue });
|
|
@@ -4704,11 +5053,11 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4704
5053
|
},
|
|
4705
5054
|
[initialValue, onFocus, updateState]
|
|
4706
5055
|
);
|
|
4707
|
-
const handleIndexChange = (0,
|
|
5056
|
+
const handleIndexChange = (0, import_react50.useCallback)(
|
|
4708
5057
|
(index) => updateState({ selectedIndex: index }),
|
|
4709
5058
|
[updateState]
|
|
4710
5059
|
);
|
|
4711
|
-
const handleKeyDown = (0,
|
|
5060
|
+
const handleKeyDown = (0, import_react50.useCallback)(
|
|
4712
5061
|
(event) => {
|
|
4713
5062
|
let handled = false;
|
|
4714
5063
|
switch (event.key) {
|
|
@@ -4772,7 +5121,7 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4772
5121
|
);
|
|
4773
5122
|
const display = !filter && hideMenuWhenEmptyValue ? "none" : "flex";
|
|
4774
5123
|
const typeaheadValue = filteredItems[selectedIndex]?.name;
|
|
4775
|
-
(0,
|
|
5124
|
+
(0, import_react50.useImperativeHandle)(forwardedRef, () => ({
|
|
4776
5125
|
focus: () => {
|
|
4777
5126
|
ref.current?.focus();
|
|
4778
5127
|
},
|
|
@@ -4783,14 +5132,14 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4783
5132
|
ref.current?.setSelectionRange(0, ref.current.value.length);
|
|
4784
5133
|
}
|
|
4785
5134
|
}));
|
|
4786
|
-
return /* @__PURE__ */
|
|
5135
|
+
return /* @__PURE__ */ import_react50.default.createElement(
|
|
4787
5136
|
InputField.Root,
|
|
4788
5137
|
{
|
|
4789
5138
|
size: size2,
|
|
4790
5139
|
labelSize: 16,
|
|
4791
5140
|
renderPopoverContent: ({ width }) => {
|
|
4792
5141
|
const listSize = { width, height };
|
|
4793
|
-
return /* @__PURE__ */
|
|
5142
|
+
return /* @__PURE__ */ import_react50.default.createElement(Stack.V, { flex: `0 0 ${height}px`, display }, filteredItems.length > 0 ? /* @__PURE__ */ import_react50.default.createElement(
|
|
4794
5143
|
CompletionMenu,
|
|
4795
5144
|
{
|
|
4796
5145
|
ref: listRef,
|
|
@@ -4800,7 +5149,7 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4800
5149
|
onHoverIndex: handleIndexChange,
|
|
4801
5150
|
listSize
|
|
4802
5151
|
}
|
|
4803
|
-
) : /* @__PURE__ */
|
|
5152
|
+
) : /* @__PURE__ */ import_react50.default.createElement(
|
|
4804
5153
|
Stack.V,
|
|
4805
5154
|
{
|
|
4806
5155
|
height: "100px",
|
|
@@ -4808,11 +5157,11 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4808
5157
|
alignItems: "center",
|
|
4809
5158
|
justifyContent: "center"
|
|
4810
5159
|
},
|
|
4811
|
-
/* @__PURE__ */
|
|
5160
|
+
/* @__PURE__ */ import_react50.default.createElement(Small, { color: "textDisabled" }, loading ? "Loading" : "No results")
|
|
4812
5161
|
));
|
|
4813
5162
|
}
|
|
4814
5163
|
},
|
|
4815
|
-
/* @__PURE__ */
|
|
5164
|
+
/* @__PURE__ */ import_react50.default.createElement(
|
|
4816
5165
|
InputField.Input,
|
|
4817
5166
|
{
|
|
4818
5167
|
ref,
|
|
@@ -4836,9 +5185,9 @@ var InputFieldWithCompletions = (0, import_react48.memo)(
|
|
|
4836
5185
|
"aria-controls": "component-listbox"
|
|
4837
5186
|
}
|
|
4838
5187
|
),
|
|
4839
|
-
filter && typeaheadValue && typeaheadValue.startsWith(filter) && /* @__PURE__ */
|
|
5188
|
+
filter && typeaheadValue && typeaheadValue.startsWith(filter) && /* @__PURE__ */ import_react50.default.createElement(InputField.Typeahead, { value: typeaheadValue }),
|
|
4840
5189
|
(!isFocused || !hideChildrenWhenFocused) && children,
|
|
4841
|
-
loading && isFocused && /* @__PURE__ */
|
|
5190
|
+
loading && isFocused && /* @__PURE__ */ import_react50.default.createElement(InputField.Label, null, /* @__PURE__ */ import_react50.default.createElement(ActivityIndicator, null))
|
|
4842
5191
|
);
|
|
4843
5192
|
})
|
|
4844
5193
|
);
|
|
@@ -4860,7 +5209,7 @@ function getNextIndex(items, currentIndex, direction, isDisabled) {
|
|
|
4860
5209
|
}
|
|
4861
5210
|
|
|
4862
5211
|
// src/components/Label.tsx
|
|
4863
|
-
var
|
|
5212
|
+
var import_react51 = __toESM(require("react"));
|
|
4864
5213
|
var import_styled_components28 = __toESM(require("styled-components"));
|
|
4865
5214
|
var LabelLabel = import_styled_components28.default.label(
|
|
4866
5215
|
({ theme, selected }) => ({
|
|
@@ -4889,17 +5238,17 @@ var LabelContainer2 = import_styled_components28.default.span(({ theme }) => ({
|
|
|
4889
5238
|
alignItems: "center"
|
|
4890
5239
|
}));
|
|
4891
5240
|
function LabelRoot({ label, children }) {
|
|
4892
|
-
return /* @__PURE__ */
|
|
5241
|
+
return /* @__PURE__ */ import_react51.default.createElement(LabelContainer2, null, children, label && /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, /* @__PURE__ */ import_react51.default.createElement(Spacer.Vertical, { size: 2 }), /* @__PURE__ */ import_react51.default.createElement(LabelLabel, null, label)));
|
|
4893
5242
|
}
|
|
4894
5243
|
var Label;
|
|
4895
5244
|
((_Label) => {
|
|
4896
|
-
_Label.Label = (0,
|
|
4897
|
-
_Label.Root = (0,
|
|
5245
|
+
_Label.Label = (0, import_react51.memo)(LabelLabel);
|
|
5246
|
+
_Label.Root = (0, import_react51.memo)(LabelRoot);
|
|
4898
5247
|
})(Label || (Label = {}));
|
|
4899
5248
|
|
|
4900
5249
|
// src/components/LabeledElementView.tsx
|
|
4901
5250
|
var kiwi = __toESM(require("kiwi.js"));
|
|
4902
|
-
var
|
|
5251
|
+
var import_react52 = __toESM(require("react"));
|
|
4903
5252
|
var import_styled_components29 = __toESM(require("styled-components"));
|
|
4904
5253
|
var Container4 = import_styled_components29.default.div(({ theme }) => ({
|
|
4905
5254
|
display: "flex",
|
|
@@ -4918,24 +5267,24 @@ var Labels = import_styled_components29.default.div(({ theme }) => ({
|
|
|
4918
5267
|
overflow: "hidden",
|
|
4919
5268
|
userSelect: "none"
|
|
4920
5269
|
}));
|
|
4921
|
-
var LabeledElementView = (0,
|
|
5270
|
+
var LabeledElementView = (0, import_react52.memo)(function LabeledElementView2({
|
|
4922
5271
|
children,
|
|
4923
5272
|
renderLabel
|
|
4924
5273
|
}) {
|
|
4925
|
-
const elementIds =
|
|
4926
|
-
(child) => (0,
|
|
5274
|
+
const elementIds = import_react52.Children.toArray(children).flatMap(
|
|
5275
|
+
(child) => (0, import_react52.isValidElement)(child) && child.type === import_react52.Fragment ? child.props.children : [child]
|
|
4927
5276
|
).map(
|
|
4928
|
-
(child) => (0,
|
|
5277
|
+
(child) => (0, import_react52.isValidElement)(child) && "id" in child.props ? child.props.id : null
|
|
4929
5278
|
).filter((id) => !!id);
|
|
4930
5279
|
const serializedIds = elementIds.join(",");
|
|
4931
|
-
const containerRef = (0,
|
|
4932
|
-
const refs = (0,
|
|
5280
|
+
const containerRef = (0, import_react52.useRef)(null);
|
|
5281
|
+
const refs = (0, import_react52.useMemo)(() => {
|
|
4933
5282
|
return Object.fromEntries(
|
|
4934
|
-
serializedIds.split(",").map((id) => [id, (0,
|
|
5283
|
+
serializedIds.split(",").map((id) => [id, (0, import_react52.createRef)()])
|
|
4935
5284
|
);
|
|
4936
5285
|
}, [serializedIds]);
|
|
4937
|
-
const labelElements = (0,
|
|
4938
|
-
return serializedIds.split(",").map((id, index) => /* @__PURE__ */
|
|
5286
|
+
const labelElements = (0, import_react52.useMemo)(() => {
|
|
5287
|
+
return serializedIds.split(",").map((id, index) => /* @__PURE__ */ import_react52.default.createElement(
|
|
4939
5288
|
"span",
|
|
4940
5289
|
{
|
|
4941
5290
|
key: id,
|
|
@@ -4948,7 +5297,7 @@ var LabeledElementView = (0, import_react50.memo)(function LabeledElementView2({
|
|
|
4948
5297
|
})
|
|
4949
5298
|
));
|
|
4950
5299
|
}, [refs, serializedIds, renderLabel]);
|
|
4951
|
-
(0,
|
|
5300
|
+
(0, import_react52.useLayoutEffect)(() => {
|
|
4952
5301
|
if (!containerRef.current)
|
|
4953
5302
|
return;
|
|
4954
5303
|
const containerRect = containerRef.current.getBoundingClientRect();
|
|
@@ -5013,13 +5362,13 @@ var LabeledElementView = (0, import_react50.memo)(function LabeledElementView2({
|
|
|
5013
5362
|
`${Math.max(...heights)}px`
|
|
5014
5363
|
);
|
|
5015
5364
|
}, [refs, labelElements]);
|
|
5016
|
-
return /* @__PURE__ */
|
|
5365
|
+
return /* @__PURE__ */ import_react52.default.createElement(Container4, { ref: containerRef }, /* @__PURE__ */ import_react52.default.createElement(Tools, null, children), /* @__PURE__ */ import_react52.default.createElement(Labels, null, labelElements));
|
|
5017
5366
|
});
|
|
5018
5367
|
|
|
5019
5368
|
// src/components/Progress.tsx
|
|
5020
|
-
var
|
|
5369
|
+
var import_noya_utils10 = require("@noya-app/noya-utils");
|
|
5021
5370
|
var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"));
|
|
5022
|
-
var
|
|
5371
|
+
var import_react53 = __toESM(require("react"));
|
|
5023
5372
|
var import_styled_components30 = __toESM(require("styled-components"));
|
|
5024
5373
|
function Progress({
|
|
5025
5374
|
value,
|
|
@@ -5028,8 +5377,8 @@ function Progress({
|
|
|
5028
5377
|
flex,
|
|
5029
5378
|
variant = "normal"
|
|
5030
5379
|
}) {
|
|
5031
|
-
const clampedValue = (0,
|
|
5032
|
-
return /* @__PURE__ */
|
|
5380
|
+
const clampedValue = (0, import_noya_utils10.clamp)(value, 0, 100);
|
|
5381
|
+
return /* @__PURE__ */ import_react53.default.createElement(ProgressRoot, { value: clampedValue, style: { width, flex, height } }, /* @__PURE__ */ import_react53.default.createElement(
|
|
5033
5382
|
ProgressIndicator,
|
|
5034
5383
|
{
|
|
5035
5384
|
variant,
|
|
@@ -5054,7 +5403,7 @@ var ProgressIndicator = (0, import_styled_components30.default)(ProgressPrimitiv
|
|
|
5054
5403
|
|
|
5055
5404
|
// src/components/RadioGroup.tsx
|
|
5056
5405
|
var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"));
|
|
5057
|
-
var
|
|
5406
|
+
var import_react54 = __toESM(require("react"));
|
|
5058
5407
|
var import_styled_components31 = __toESM(require("styled-components"));
|
|
5059
5408
|
var ignoredProps3 = /* @__PURE__ */ new Set(["colorScheme"]);
|
|
5060
5409
|
var StyledRoot = (0, import_styled_components31.default)(ToggleGroupPrimitive.Root).withConfig({
|
|
@@ -5107,9 +5456,9 @@ var StyledItem = (0, import_styled_components31.default)(ToggleGroupPrimitive.It
|
|
|
5107
5456
|
boxShadow: `0 0 0 1px ${theme.colors.sidebar.background}, 0 0 0 3px ${theme.colors[colorScheme ?? "primary"]}`
|
|
5108
5457
|
}
|
|
5109
5458
|
}));
|
|
5110
|
-
var ToggleGroupItem = (0,
|
|
5111
|
-
const { colorScheme } = (0,
|
|
5112
|
-
const itemElement = /* @__PURE__ */
|
|
5459
|
+
var ToggleGroupItem = (0, import_react54.forwardRef)(function ToggleGroupItem2({ value, tooltip, children, disabled = false }, forwardedRef) {
|
|
5460
|
+
const { colorScheme } = (0, import_react54.useContext)(RadioGroupContext);
|
|
5461
|
+
const itemElement = /* @__PURE__ */ import_react54.default.createElement(
|
|
5113
5462
|
StyledItem,
|
|
5114
5463
|
{
|
|
5115
5464
|
ref: forwardedRef,
|
|
@@ -5119,9 +5468,9 @@ var ToggleGroupItem = (0, import_react52.forwardRef)(function ToggleGroupItem2({
|
|
|
5119
5468
|
},
|
|
5120
5469
|
children
|
|
5121
5470
|
);
|
|
5122
|
-
return tooltip ? /* @__PURE__ */
|
|
5471
|
+
return tooltip ? /* @__PURE__ */ import_react54.default.createElement(Tooltip, { content: tooltip }, itemElement) : itemElement;
|
|
5123
5472
|
});
|
|
5124
|
-
var RadioGroupContext = (0,
|
|
5473
|
+
var RadioGroupContext = (0, import_react54.createContext)({
|
|
5125
5474
|
colorScheme: "primary"
|
|
5126
5475
|
});
|
|
5127
5476
|
function ToggleGroupRoot({
|
|
@@ -5132,8 +5481,8 @@ function ToggleGroupRoot({
|
|
|
5132
5481
|
allowEmpty,
|
|
5133
5482
|
children
|
|
5134
5483
|
}) {
|
|
5135
|
-
const contextValue = (0,
|
|
5136
|
-
const handleValueChange = (0,
|
|
5484
|
+
const contextValue = (0, import_react54.useMemo)(() => ({ colorScheme }), [colorScheme]);
|
|
5485
|
+
const handleValueChange = (0, import_react54.useCallback)(
|
|
5137
5486
|
(value2) => {
|
|
5138
5487
|
if (!allowEmpty && !value2)
|
|
5139
5488
|
return;
|
|
@@ -5141,7 +5490,7 @@ function ToggleGroupRoot({
|
|
|
5141
5490
|
},
|
|
5142
5491
|
[allowEmpty, onValueChange]
|
|
5143
5492
|
);
|
|
5144
|
-
return /* @__PURE__ */
|
|
5493
|
+
return /* @__PURE__ */ import_react54.default.createElement(RadioGroupContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react54.default.createElement(
|
|
5145
5494
|
StyledRoot,
|
|
5146
5495
|
{
|
|
5147
5496
|
id,
|
|
@@ -5155,30 +5504,30 @@ function ToggleGroupRoot({
|
|
|
5155
5504
|
}
|
|
5156
5505
|
var RadioGroup;
|
|
5157
5506
|
((RadioGroup2) => {
|
|
5158
|
-
RadioGroup2.Root = (0,
|
|
5159
|
-
RadioGroup2.Item = (0,
|
|
5507
|
+
RadioGroup2.Root = (0, import_react54.memo)(ToggleGroupRoot);
|
|
5508
|
+
RadioGroup2.Item = (0, import_react54.memo)(ToggleGroupItem);
|
|
5160
5509
|
})(RadioGroup || (RadioGroup = {}));
|
|
5161
5510
|
|
|
5162
5511
|
// src/components/Select.tsx
|
|
5163
|
-
var
|
|
5164
|
-
var
|
|
5512
|
+
var import_noya_utils11 = require("@noya-app/noya-utils");
|
|
5513
|
+
var import_react55 = __toESM(require("react"));
|
|
5165
5514
|
var import_styled_components32 = __toESM(require("styled-components"));
|
|
5166
|
-
var SelectContext = (0,
|
|
5167
|
-
var SelectOption = (0,
|
|
5515
|
+
var SelectContext = (0, import_react55.createContext)(void 0);
|
|
5516
|
+
var SelectOption = (0, import_react55.memo)(function SelectOption2({
|
|
5168
5517
|
value,
|
|
5169
5518
|
title,
|
|
5170
5519
|
onSelect
|
|
5171
5520
|
}) {
|
|
5172
|
-
const { addListener, removeListener } = (0,
|
|
5173
|
-
(0,
|
|
5521
|
+
const { addListener, removeListener } = (0, import_react55.useContext)(SelectContext);
|
|
5522
|
+
(0, import_react55.useEffect)(() => {
|
|
5174
5523
|
if (!onSelect)
|
|
5175
5524
|
return;
|
|
5176
5525
|
addListener(value, onSelect);
|
|
5177
5526
|
return () => removeListener(value);
|
|
5178
5527
|
}, [addListener, onSelect, removeListener, value]);
|
|
5179
|
-
return /* @__PURE__ */
|
|
5528
|
+
return /* @__PURE__ */ import_react55.default.createElement("option", { value }, title ?? value);
|
|
5180
5529
|
});
|
|
5181
|
-
var createChevronSVGString = (0,
|
|
5530
|
+
var createChevronSVGString = (0, import_noya_utils11.memoize)(
|
|
5182
5531
|
(color) => `
|
|
5183
5532
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15' fill='${color}'>
|
|
5184
5533
|
<path d='M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z'></path>
|
|
@@ -5216,7 +5565,7 @@ var SelectElement = import_styled_components32.default.select(
|
|
|
5216
5565
|
}
|
|
5217
5566
|
})
|
|
5218
5567
|
);
|
|
5219
|
-
var Select = (0,
|
|
5568
|
+
var Select = (0, import_react55.memo)(function Select2({
|
|
5220
5569
|
id,
|
|
5221
5570
|
flex,
|
|
5222
5571
|
value,
|
|
@@ -5226,8 +5575,8 @@ var Select = (0, import_react53.memo)(function Select2({
|
|
|
5226
5575
|
const getTitle = "options" in rest ? rest.getTitle : void 0;
|
|
5227
5576
|
const onChange = "options" in rest ? rest.onChange : void 0;
|
|
5228
5577
|
const children = "options" in rest ? void 0 : rest.children;
|
|
5229
|
-
const optionElements = (0,
|
|
5230
|
-
() => options ? options.map((option, index) => /* @__PURE__ */
|
|
5578
|
+
const optionElements = (0, import_react55.useMemo)(
|
|
5579
|
+
() => options ? options.map((option, index) => /* @__PURE__ */ import_react55.default.createElement(
|
|
5231
5580
|
SelectOption,
|
|
5232
5581
|
{
|
|
5233
5582
|
key: option,
|
|
@@ -5238,21 +5587,21 @@ var Select = (0, import_react53.memo)(function Select2({
|
|
|
5238
5587
|
)) : children,
|
|
5239
5588
|
[children, getTitle, onChange, options]
|
|
5240
5589
|
);
|
|
5241
|
-
const listeners = (0,
|
|
5242
|
-
const contextValue = (0,
|
|
5590
|
+
const listeners = (0, import_react55.useRef)(/* @__PURE__ */ new Map());
|
|
5591
|
+
const contextValue = (0, import_react55.useMemo)(
|
|
5243
5592
|
() => ({
|
|
5244
5593
|
addListener: (value2, listener) => listeners.current.set(value2, listener),
|
|
5245
5594
|
removeListener: (value2) => listeners.current.delete(value2)
|
|
5246
5595
|
}),
|
|
5247
5596
|
[]
|
|
5248
5597
|
);
|
|
5249
|
-
return /* @__PURE__ */
|
|
5598
|
+
return /* @__PURE__ */ import_react55.default.createElement(SelectContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react55.default.createElement(
|
|
5250
5599
|
SelectElement,
|
|
5251
5600
|
{
|
|
5252
5601
|
id,
|
|
5253
5602
|
flex,
|
|
5254
5603
|
value,
|
|
5255
|
-
onChange: (0,
|
|
5604
|
+
onChange: (0, import_react55.useCallback)(
|
|
5256
5605
|
(event) => listeners.current.get(event.target.value)?.(),
|
|
5257
5606
|
[listeners]
|
|
5258
5607
|
),
|
|
@@ -5264,7 +5613,7 @@ var Select = (0, import_react53.memo)(function Select2({
|
|
|
5264
5613
|
|
|
5265
5614
|
// src/components/Slider.tsx
|
|
5266
5615
|
var RadixSlider = __toESM(require("@radix-ui/react-slider"));
|
|
5267
|
-
var
|
|
5616
|
+
var import_react56 = __toESM(require("react"));
|
|
5268
5617
|
var import_styled_components33 = __toESM(require("styled-components"));
|
|
5269
5618
|
var StyledSlider = (0, import_styled_components33.default)(RadixSlider.Root)({
|
|
5270
5619
|
flex: "1",
|
|
@@ -5305,17 +5654,17 @@ var Slider = function Slider2({
|
|
|
5305
5654
|
min,
|
|
5306
5655
|
max
|
|
5307
5656
|
}) {
|
|
5308
|
-
const arrayValue = (0,
|
|
5657
|
+
const arrayValue = (0, import_react56.useMemo)(
|
|
5309
5658
|
() => [Math.min(Math.max(value, min), max)],
|
|
5310
5659
|
[value, min, max]
|
|
5311
5660
|
);
|
|
5312
|
-
const handleValueChange = (0,
|
|
5661
|
+
const handleValueChange = (0, import_react56.useCallback)(
|
|
5313
5662
|
(arrayValue2) => {
|
|
5314
5663
|
onValueChange(arrayValue2[0]);
|
|
5315
5664
|
},
|
|
5316
5665
|
[onValueChange]
|
|
5317
5666
|
);
|
|
5318
|
-
return /* @__PURE__ */
|
|
5667
|
+
return /* @__PURE__ */ import_react56.default.createElement(
|
|
5319
5668
|
StyledSlider,
|
|
5320
5669
|
{
|
|
5321
5670
|
min,
|
|
@@ -5324,14 +5673,14 @@ var Slider = function Slider2({
|
|
|
5324
5673
|
value: arrayValue,
|
|
5325
5674
|
onValueChange: handleValueChange
|
|
5326
5675
|
},
|
|
5327
|
-
/* @__PURE__ */
|
|
5328
|
-
/* @__PURE__ */
|
|
5676
|
+
/* @__PURE__ */ import_react56.default.createElement(StyledTrack, null, /* @__PURE__ */ import_react56.default.createElement(StyledRange, null)),
|
|
5677
|
+
/* @__PURE__ */ import_react56.default.createElement(StyledThumb2, null)
|
|
5329
5678
|
);
|
|
5330
5679
|
};
|
|
5331
5680
|
|
|
5332
5681
|
// src/components/Switch.tsx
|
|
5333
5682
|
var SwitchPrimitive = __toESM(require("@radix-ui/react-switch"));
|
|
5334
|
-
var
|
|
5683
|
+
var import_react57 = __toESM(require("react"));
|
|
5335
5684
|
var import_styled_components34 = __toESM(require("styled-components"));
|
|
5336
5685
|
var SwitchRoot = (0, import_styled_components34.default)(SwitchPrimitive.Root)(({ theme, colorScheme: variant }) => ({
|
|
5337
5686
|
all: "unset",
|
|
@@ -5367,7 +5716,7 @@ var Switch = function Switch2({
|
|
|
5367
5716
|
onChange,
|
|
5368
5717
|
colorScheme = "normal"
|
|
5369
5718
|
}) {
|
|
5370
|
-
return /* @__PURE__ */
|
|
5719
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
5371
5720
|
SwitchRoot,
|
|
5372
5721
|
{
|
|
5373
5722
|
colorScheme,
|
|
@@ -5376,42 +5725,42 @@ var Switch = function Switch2({
|
|
|
5376
5725
|
onChange(newValue);
|
|
5377
5726
|
}
|
|
5378
5727
|
},
|
|
5379
|
-
/* @__PURE__ */
|
|
5728
|
+
/* @__PURE__ */ import_react57.default.createElement(SwitchThumb, null)
|
|
5380
5729
|
);
|
|
5381
5730
|
};
|
|
5382
5731
|
|
|
5383
5732
|
// src/components/TreeView.tsx
|
|
5384
|
-
var
|
|
5385
|
-
var TreeRow = (0,
|
|
5733
|
+
var import_react58 = __toESM(require("react"));
|
|
5734
|
+
var TreeRow = (0, import_react58.forwardRef)(function TreeRow2({
|
|
5386
5735
|
icon,
|
|
5387
5736
|
expanded,
|
|
5388
5737
|
onClickChevron,
|
|
5389
5738
|
children,
|
|
5390
5739
|
...rest
|
|
5391
5740
|
}, forwardedRef) {
|
|
5392
|
-
const { expandable } = (0,
|
|
5393
|
-
const handleClickChevron = (0,
|
|
5741
|
+
const { expandable } = (0, import_react58.useContext)(ListView.RowContext);
|
|
5742
|
+
const handleClickChevron = (0, import_react58.useCallback)(
|
|
5394
5743
|
(event) => {
|
|
5395
5744
|
event.stopPropagation();
|
|
5396
5745
|
onClickChevron?.({ altKey: event.altKey });
|
|
5397
5746
|
},
|
|
5398
5747
|
[onClickChevron]
|
|
5399
5748
|
);
|
|
5400
|
-
return /* @__PURE__ */
|
|
5749
|
+
return /* @__PURE__ */ import_react58.default.createElement(ListView.Row, { ref: forwardedRef, ...rest }, expandable && /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, expanded === void 0 ? /* @__PURE__ */ import_react58.default.createElement(Spacer.Horizontal, { size: 19 }) : /* @__PURE__ */ import_react58.default.createElement(
|
|
5401
5750
|
IconButton,
|
|
5402
5751
|
{
|
|
5403
5752
|
iconName: expanded ? "ChevronDownIcon" : "ChevronRightIcon",
|
|
5404
5753
|
onClick: handleClickChevron,
|
|
5405
5754
|
selected: rest.selected
|
|
5406
5755
|
}
|
|
5407
|
-
), /* @__PURE__ */
|
|
5756
|
+
), /* @__PURE__ */ import_react58.default.createElement(Spacer.Horizontal, { size: 6 })), icon && /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, icon, /* @__PURE__ */ import_react58.default.createElement(Spacer.Horizontal, { size: 10 })), children);
|
|
5408
5757
|
});
|
|
5409
5758
|
var TreeView;
|
|
5410
5759
|
((TreeView2) => {
|
|
5411
5760
|
TreeView2.Root = ListView.Root;
|
|
5412
5761
|
TreeView2.RowTitle = ListView.RowTitle;
|
|
5413
5762
|
TreeView2.EditableRowTitle = ListView.EditableRowTitle;
|
|
5414
|
-
TreeView2.Row = (0,
|
|
5763
|
+
TreeView2.Row = (0, import_react58.memo)(TreeRow);
|
|
5415
5764
|
})(TreeView || (TreeView = {}));
|
|
5416
5765
|
|
|
5417
5766
|
// src/hooks/usePlatform.ts
|
|
@@ -5442,6 +5791,7 @@ var dark_exports = {};
|
|
|
5442
5791
|
__export(dark_exports, {
|
|
5443
5792
|
colors: () => colors2,
|
|
5444
5793
|
fonts: () => fonts,
|
|
5794
|
+
name: () => name2,
|
|
5445
5795
|
sizes: () => sizes2,
|
|
5446
5796
|
textStyles: () => textStyles
|
|
5447
5797
|
});
|
|
@@ -5452,9 +5802,11 @@ var light_exports = {};
|
|
|
5452
5802
|
__export(light_exports, {
|
|
5453
5803
|
colors: () => colors,
|
|
5454
5804
|
fonts: () => fonts,
|
|
5805
|
+
name: () => name,
|
|
5455
5806
|
sizes: () => sizes2,
|
|
5456
5807
|
textStyles: () => textStyles
|
|
5457
5808
|
});
|
|
5809
|
+
var name = "light";
|
|
5458
5810
|
var colors = {
|
|
5459
5811
|
logo: {
|
|
5460
5812
|
fill: "rgb(175,175,175)",
|
|
@@ -5609,6 +5961,13 @@ var textStyles = {
|
|
|
5609
5961
|
fontWeight: 400,
|
|
5610
5962
|
lineHeight: "1.4"
|
|
5611
5963
|
},
|
|
5964
|
+
button: {
|
|
5965
|
+
fontFamily: fonts.normal,
|
|
5966
|
+
fontSize: "0.8rem",
|
|
5967
|
+
fontWeight: 500,
|
|
5968
|
+
lineHeight: "1.4",
|
|
5969
|
+
letterSpacing: "-0.2px"
|
|
5970
|
+
},
|
|
5612
5971
|
code: {
|
|
5613
5972
|
fontFamily: fonts.monospace,
|
|
5614
5973
|
fontSize: "90%",
|
|
@@ -5648,6 +6007,7 @@ var sizes2 = {
|
|
|
5648
6007
|
};
|
|
5649
6008
|
|
|
5650
6009
|
// src/theme/dark.ts
|
|
6010
|
+
var name2 = "dark";
|
|
5651
6011
|
var colors2 = (0, import_immer.default)(colors, (colors3) => {
|
|
5652
6012
|
colors3.logo.fill = "rgb(248,248,250)";
|
|
5653
6013
|
colors3.logo.highlight = "rgb(248,248,250)";
|
|
@@ -5718,8 +6078,8 @@ var SUPPORTED_CANVAS_UPLOAD_TYPES = [
|
|
|
5718
6078
|
];
|
|
5719
6079
|
|
|
5720
6080
|
// src/components/ArrayController.tsx
|
|
5721
|
-
var
|
|
5722
|
-
var
|
|
6081
|
+
var import_noya_utils12 = require("@noya-app/noya-utils");
|
|
6082
|
+
var import_react60 = __toESM(require("react"));
|
|
5723
6083
|
var import_styled_components36 = __toESM(require("styled-components"));
|
|
5724
6084
|
|
|
5725
6085
|
// src/components/InspectorPrimitives.tsx
|
|
@@ -5738,7 +6098,7 @@ __export(InspectorPrimitives_exports, {
|
|
|
5738
6098
|
Title: () => Title3,
|
|
5739
6099
|
VerticalSeparator: () => VerticalSeparator
|
|
5740
6100
|
});
|
|
5741
|
-
var
|
|
6101
|
+
var import_react59 = __toESM(require("react"));
|
|
5742
6102
|
var import_styled_components35 = __toESM(require("styled-components"));
|
|
5743
6103
|
var Section = import_styled_components35.default.div(({ theme, padding = "10px", gap }) => ({
|
|
5744
6104
|
flex: "0 0 auto",
|
|
@@ -5785,8 +6145,8 @@ var Checkbox = import_styled_components35.default.input(({ theme }) => ({
|
|
|
5785
6145
|
var Text3 = import_styled_components35.default.span(({ theme }) => ({
|
|
5786
6146
|
...theme.textStyles.small
|
|
5787
6147
|
}));
|
|
5788
|
-
var VerticalSeparator = () => /* @__PURE__ */
|
|
5789
|
-
var HorizontalSeparator = () => /* @__PURE__ */
|
|
6148
|
+
var VerticalSeparator = () => /* @__PURE__ */ import_react59.default.createElement(Spacer.Vertical, { size: (0, import_styled_components35.useTheme)().sizes.inspector.verticalSeparator });
|
|
6149
|
+
var HorizontalSeparator = () => /* @__PURE__ */ import_react59.default.createElement(Spacer.Horizontal, { size: (0, import_styled_components35.useTheme)().sizes.inspector.horizontalSeparator });
|
|
5790
6150
|
var SliderRowLabel = import_styled_components35.default.span(({ theme }) => ({
|
|
5791
6151
|
...theme.textStyles.small,
|
|
5792
6152
|
color: theme.colors.textMuted,
|
|
@@ -5806,7 +6166,7 @@ var RowLabel = import_styled_components35.default.span(({ theme, textStyle }) =>
|
|
|
5806
6166
|
// Button height
|
|
5807
6167
|
alignItems: "center"
|
|
5808
6168
|
}));
|
|
5809
|
-
var LabeledRow = (0,
|
|
6169
|
+
var LabeledRow = (0, import_react59.memo)(function LabeledRow2({
|
|
5810
6170
|
id,
|
|
5811
6171
|
children,
|
|
5812
6172
|
label,
|
|
@@ -5814,13 +6174,13 @@ var LabeledRow = (0, import_react57.memo)(function LabeledRow2({
|
|
|
5814
6174
|
gap,
|
|
5815
6175
|
right
|
|
5816
6176
|
}) {
|
|
5817
|
-
return /* @__PURE__ */
|
|
6177
|
+
return /* @__PURE__ */ import_react59.default.createElement(Row2, { id }, /* @__PURE__ */ import_react59.default.createElement(Column, null, /* @__PURE__ */ import_react59.default.createElement(RowLabel, { textStyle: labelTextStyle }, label, right && /* @__PURE__ */ import_react59.default.createElement(Spacer.Horizontal, null), right), /* @__PURE__ */ import_react59.default.createElement(Row2, { gap }, children)));
|
|
5818
6178
|
});
|
|
5819
|
-
var LabeledSliderRow = (0,
|
|
6179
|
+
var LabeledSliderRow = (0, import_react59.memo)(function LabeledRow3({
|
|
5820
6180
|
children,
|
|
5821
6181
|
label
|
|
5822
6182
|
}) {
|
|
5823
|
-
return /* @__PURE__ */
|
|
6183
|
+
return /* @__PURE__ */ import_react59.default.createElement(Row2, null, /* @__PURE__ */ import_react59.default.createElement(Column, null, /* @__PURE__ */ import_react59.default.createElement(SliderRowLabel, null, label), /* @__PURE__ */ import_react59.default.createElement(Row2, null, children)));
|
|
5824
6184
|
});
|
|
5825
6185
|
|
|
5826
6186
|
// src/components/ArrayController.tsx
|
|
@@ -5833,7 +6193,7 @@ var ElementRow = import_styled_components36.default.div({
|
|
|
5833
6193
|
var ItemContainer2 = import_styled_components36.default.div({
|
|
5834
6194
|
position: "relative"
|
|
5835
6195
|
});
|
|
5836
|
-
var ArrayController = (0,
|
|
6196
|
+
var ArrayController = (0, import_react60.memo)(function ArrayController2({
|
|
5837
6197
|
id,
|
|
5838
6198
|
items,
|
|
5839
6199
|
title,
|
|
@@ -5851,12 +6211,12 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
|
|
|
5851
6211
|
}) {
|
|
5852
6212
|
const iconColor = (0, import_styled_components36.useTheme)().colors.icon;
|
|
5853
6213
|
const primaryLightColor = (0, import_styled_components36.useTheme)().colors.primaryLight;
|
|
5854
|
-
const keys = (0,
|
|
6214
|
+
const keys = (0, import_react60.useMemo)(
|
|
5855
6215
|
() => items.map((item, index) => getKey?.(item) ?? index.toString()),
|
|
5856
6216
|
[getKey, items]
|
|
5857
6217
|
);
|
|
5858
|
-
const indexes = reversed ? (0,
|
|
5859
|
-
const handleMoveItem = (0,
|
|
6218
|
+
const indexes = reversed ? (0, import_noya_utils12.range)(0, items.length).reverse() : (0, import_noya_utils12.range)(0, items.length);
|
|
6219
|
+
const handleMoveItem = (0, import_react60.useCallback)(
|
|
5860
6220
|
(sourceIndex, destinationIndex, position) => {
|
|
5861
6221
|
if (reversed) {
|
|
5862
6222
|
if (position === "above") {
|
|
@@ -5873,11 +6233,11 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
|
|
|
5873
6233
|
[onMoveItem, reversed]
|
|
5874
6234
|
);
|
|
5875
6235
|
const renderRow = (index) => {
|
|
5876
|
-
return /* @__PURE__ */
|
|
6236
|
+
return /* @__PURE__ */ import_react60.default.createElement(ElementRow, { key: keys[index] }, renderItem({ item: items[index], index }));
|
|
5877
6237
|
};
|
|
5878
|
-
return /* @__PURE__ */
|
|
6238
|
+
return /* @__PURE__ */ import_react60.default.createElement(Section, { id, padding, gap: "2px" }, /* @__PURE__ */ import_react60.default.createElement(SectionHeader, null, /* @__PURE__ */ import_react60.default.createElement(Button, { variant: "none", onClick: onClickPlus }, /* @__PURE__ */ import_react60.default.createElement(Title3, null, title)), /* @__PURE__ */ import_react60.default.createElement(Spacer.Horizontal, null), withSeparatorElements(
|
|
5879
6239
|
[
|
|
5880
|
-
onClickTrash && /* @__PURE__ */
|
|
6240
|
+
onClickTrash && /* @__PURE__ */ import_react60.default.createElement(
|
|
5881
6241
|
IconButton,
|
|
5882
6242
|
{
|
|
5883
6243
|
id: `${id}-trash`,
|
|
@@ -5886,7 +6246,7 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
|
|
|
5886
6246
|
onClick: onClickTrash
|
|
5887
6247
|
}
|
|
5888
6248
|
),
|
|
5889
|
-
onClickExpand && /* @__PURE__ */
|
|
6249
|
+
onClickExpand && /* @__PURE__ */ import_react60.default.createElement(
|
|
5890
6250
|
IconButton,
|
|
5891
6251
|
{
|
|
5892
6252
|
id: `${id}-gear`,
|
|
@@ -5895,7 +6255,7 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
|
|
|
5895
6255
|
onClick: onClickExpand
|
|
5896
6256
|
}
|
|
5897
6257
|
),
|
|
5898
|
-
onClickPlus && /* @__PURE__ */
|
|
6258
|
+
onClickPlus && /* @__PURE__ */ import_react60.default.createElement(
|
|
5899
6259
|
IconButton,
|
|
5900
6260
|
{
|
|
5901
6261
|
id: `${id}-add`,
|
|
@@ -5905,15 +6265,15 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
|
|
|
5905
6265
|
}
|
|
5906
6266
|
)
|
|
5907
6267
|
],
|
|
5908
|
-
/* @__PURE__ */
|
|
5909
|
-
)), /* @__PURE__ */
|
|
6268
|
+
/* @__PURE__ */ import_react60.default.createElement(Spacer.Horizontal, { size: 8 })
|
|
6269
|
+
)), /* @__PURE__ */ import_react60.default.createElement(Stack.V, { gap: "4px" }, sortable ? /* @__PURE__ */ import_react60.default.createElement(
|
|
5910
6270
|
Sortable.Root,
|
|
5911
6271
|
{
|
|
5912
6272
|
keys,
|
|
5913
6273
|
renderOverlay: renderRow,
|
|
5914
6274
|
onMoveItem: handleMoveItem
|
|
5915
6275
|
},
|
|
5916
|
-
indexes.map((index) => /* @__PURE__ */
|
|
6276
|
+
indexes.map((index) => /* @__PURE__ */ import_react60.default.createElement(Sortable.Item, { id: keys[index], key: keys[index] }, ({ relativeDropPosition, ...sortableProps }) => /* @__PURE__ */ import_react60.default.createElement(ItemContainer2, { ...sortableProps }, renderRow(index), relativeDropPosition && /* @__PURE__ */ import_react60.default.createElement(
|
|
5917
6277
|
ListView.DragIndicator,
|
|
5918
6278
|
{
|
|
5919
6279
|
gap: 0,
|
|
@@ -5926,12 +6286,12 @@ var ArrayController = (0, import_react58.memo)(function ArrayController2({
|
|
|
5926
6286
|
});
|
|
5927
6287
|
|
|
5928
6288
|
// src/components/DimensionInput.tsx
|
|
5929
|
-
var
|
|
5930
|
-
var
|
|
6289
|
+
var import_noya_utils13 = require("@noya-app/noya-utils");
|
|
6290
|
+
var import_react61 = __toESM(require("react"));
|
|
5931
6291
|
function getNewValue(value, mode, delta) {
|
|
5932
6292
|
return delta === void 0 ? value : mode === "replace" ? delta : value + delta;
|
|
5933
6293
|
}
|
|
5934
|
-
var DimensionInput = (0,
|
|
6294
|
+
var DimensionInput = (0, import_react61.memo)(function DimensionInput2({
|
|
5935
6295
|
id,
|
|
5936
6296
|
value,
|
|
5937
6297
|
onSetValue,
|
|
@@ -5941,30 +6301,31 @@ var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
|
|
|
5941
6301
|
disabled,
|
|
5942
6302
|
trigger = "submit"
|
|
5943
6303
|
}) {
|
|
5944
|
-
const handleNudgeValue = (0,
|
|
6304
|
+
const handleNudgeValue = (0, import_react61.useCallback)(
|
|
5945
6305
|
(value2) => onSetValue(value2, "adjust"),
|
|
5946
6306
|
[onSetValue]
|
|
5947
6307
|
);
|
|
5948
|
-
const handleSetValue = (0,
|
|
6308
|
+
const handleSetValue = (0, import_react61.useCallback)(
|
|
5949
6309
|
(value2) => onSetValue(value2, "replace"),
|
|
5950
6310
|
[onSetValue]
|
|
5951
6311
|
);
|
|
5952
|
-
return /* @__PURE__ */
|
|
6312
|
+
return /* @__PURE__ */ import_react61.default.createElement(InputField.Root, { id, width: size2 }, /* @__PURE__ */ import_react61.default.createElement(
|
|
5953
6313
|
InputField.NumberInput,
|
|
5954
6314
|
{
|
|
5955
|
-
value: value === void 0 ? value : (0,
|
|
6315
|
+
value: value === void 0 ? value : (0, import_noya_utils13.round)(value, 2),
|
|
5956
6316
|
placeholder: value === void 0 ? placeholder : void 0,
|
|
5957
6317
|
onNudge: handleNudgeValue,
|
|
5958
6318
|
disabled,
|
|
5959
6319
|
...trigger === "change" ? { onChange: handleSetValue } : { onSubmit: handleSetValue }
|
|
5960
6320
|
}
|
|
5961
|
-
), label && /* @__PURE__ */
|
|
6321
|
+
), label && /* @__PURE__ */ import_react61.default.createElement(InputField.Label, null, label));
|
|
5962
6322
|
});
|
|
5963
6323
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5964
6324
|
0 && (module.exports = {
|
|
5965
6325
|
ActivityIndicator,
|
|
5966
6326
|
ArrayController,
|
|
5967
6327
|
Avatar,
|
|
6328
|
+
AvatarStack,
|
|
5968
6329
|
Body,
|
|
5969
6330
|
Button,
|
|
5970
6331
|
ButtonElement,
|
|
@@ -5983,6 +6344,8 @@ var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
|
|
|
5983
6344
|
DropdownMenu,
|
|
5984
6345
|
FillInputField,
|
|
5985
6346
|
FillPreviewBackground,
|
|
6347
|
+
FloatingWindow,
|
|
6348
|
+
FloatingWindowProvider,
|
|
5986
6349
|
FullscreenDialog,
|
|
5987
6350
|
GlobalInputBlurProvider,
|
|
5988
6351
|
GradientPicker,
|
|
@@ -6040,9 +6403,11 @@ var DimensionInput = (0, import_react59.memo)(function DimensionInput2({
|
|
|
6040
6403
|
sketchColorToHex,
|
|
6041
6404
|
sketchColorToRgba,
|
|
6042
6405
|
sketchColorToRgbaString,
|
|
6406
|
+
useCurrentFloatingWindowInternal,
|
|
6043
6407
|
useDesignSystemConfiguration,
|
|
6044
6408
|
useDesignSystemTheme,
|
|
6045
6409
|
useDialogContainsElement,
|
|
6410
|
+
useFloatingWindowManager,
|
|
6046
6411
|
useGlobalInputBlur,
|
|
6047
6412
|
useGlobalInputBlurListener,
|
|
6048
6413
|
useGlobalInputBlurTrigger,
|