@noya-app/noya-designsystem 0.1.70 → 0.1.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -397,14 +397,14 @@ var require_grammarDiagnostics = __commonJS({
397
397
  rootNonTerminating.add(name);
398
398
  }
399
399
  }
400
- const memo41 = /* @__PURE__ */ new Map();
400
+ const memo40 = /* @__PURE__ */ new Map();
401
401
  const collectCauses = (name, path) => {
402
- if (memo41.has(name)) {
403
- return memo41.get(name);
402
+ if (memo40.has(name)) {
403
+ return memo40.get(name);
404
404
  }
405
405
  if (rootNonTerminating.has(name)) {
406
406
  const direct = /* @__PURE__ */ new Set([name]);
407
- memo41.set(name, direct);
407
+ memo40.set(name, direct);
408
408
  return direct;
409
409
  }
410
410
  if (path.has(name)) {
@@ -423,7 +423,7 @@ var require_grammarDiagnostics = __commonJS({
423
423
  }
424
424
  }
425
425
  path.delete(name);
426
- memo41.set(name, result);
426
+ memo40.set(name, result);
427
427
  return result;
428
428
  };
429
429
  const dependencyIssues = [];
@@ -3257,7 +3257,9 @@ __export(src_exports, {
3257
3257
  Tooltip: () => Tooltip,
3258
3258
  TreeView: () => TreeView,
3259
3259
  UserAvatar: () => UserAvatar,
3260
+ UserPicker: () => UserPicker,
3260
3261
  UserPointer: () => UserPointer,
3262
+ Virtualized: () => Virtualized2,
3261
3263
  WorkspaceLayout: () => WorkspaceLayout,
3262
3264
  WorkspaceSideProvider: () => WorkspaceSideProvider,
3263
3265
  acceptsDrop: () => acceptsDrop,
@@ -3290,6 +3292,7 @@ __export(src_exports, {
3290
3292
  getNextIndex: () => getNextIndex,
3291
3293
  getPipelineResultLink: () => getPipelineResultLink,
3292
3294
  getThumbnailColors: () => getThumbnailColors,
3295
+ getUserDisplayName: () => getUserDisplayName,
3293
3296
  isMenuItemSectionHeader: () => isMenuItemSectionHeader,
3294
3297
  isNonSelectableMenuItem: () => isNonSelectableMenuItem,
3295
3298
  isPopoverMenuItem: () => isPopoverMenuItem,
@@ -5139,7 +5142,15 @@ function parseNumber(value) {
5139
5142
  return value ? Number(value) : NaN;
5140
5143
  }
5141
5144
  function InputFieldNumberInput(props) {
5142
- const { value, placeholder, onNudge, onBlur, readOnly, ...rest } = props;
5145
+ const {
5146
+ value,
5147
+ placeholder,
5148
+ onNudge,
5149
+ onBlur,
5150
+ readOnly,
5151
+ triggersOnEmpty,
5152
+ ...rest
5153
+ } = props;
5143
5154
  const onSubmit = "onSubmit" in props ? props.onSubmit : void 0;
5144
5155
  const onChange = "onChange" in props ? props.onChange : void 0;
5145
5156
  const [internalValue, setInternalValue] = (0, import_react29.useState)();
@@ -5167,6 +5178,9 @@ function InputFieldNumberInput(props) {
5167
5178
  (value2) => {
5168
5179
  if (value2 === "" || value2 === "-" || value2 === ".") {
5169
5180
  setInternalValue(value2);
5181
+ if (triggersOnEmpty) {
5182
+ onChange?.(0, { isEmpty: true });
5183
+ }
5170
5184
  return;
5171
5185
  }
5172
5186
  if (value2.endsWith(".")) {
@@ -5176,10 +5190,10 @@ function InputFieldNumberInput(props) {
5176
5190
  setInternalValue(void 0);
5177
5191
  const newValue = parseNumber(value2);
5178
5192
  if (!isNaN(newValue)) {
5179
- onChange?.(newValue);
5193
+ onChange?.(newValue, { isEmpty: false });
5180
5194
  }
5181
5195
  },
5182
- [onChange]
5196
+ [onChange, triggersOnEmpty]
5183
5197
  );
5184
5198
  const handleBlur = (0, import_react29.useCallback)(
5185
5199
  (event) => {
@@ -7205,7 +7219,8 @@ var BreadcrumbSlash = () => {
7205
7219
  fill: "none",
7206
7220
  xmlns: "http://www.w3.org/2000/svg",
7207
7221
  opacity: 0.5,
7208
- style: slashStyle
7222
+ style: slashStyle,
7223
+ className: "n-flex-none"
7209
7224
  },
7210
7225
  /* @__PURE__ */ import_react51.default.createElement(
7211
7226
  "path",
@@ -7523,7 +7538,7 @@ var Chip = (0, import_react52.memo)(
7523
7538
  );
7524
7539
 
7525
7540
  // src/components/Collection.tsx
7526
- var import_react67 = __toESM(require("react"));
7541
+ var import_react68 = __toESM(require("react"));
7527
7542
 
7528
7543
  // src/components/Grid.tsx
7529
7544
  var import_react56 = __toESM(require("react"));
@@ -8331,7 +8346,7 @@ var Grid = memoGeneric(
8331
8346
  );
8332
8347
 
8333
8348
  // src/components/List.tsx
8334
- var import_react66 = __toESM(require("react"));
8349
+ var import_react67 = __toESM(require("react"));
8335
8350
 
8336
8351
  // src/components/listView/ListViewContexts.tsx
8337
8352
  var import_react57 = require("react");
@@ -8355,10 +8370,6 @@ var ListRowContext = (0, import_react57.createContext)({
8355
8370
  isSectionHeader: false
8356
8371
  });
8357
8372
  ListRowContext.displayName = "ListRowContext";
8358
- var RenderItemContext = (0, import_react57.createContext)(
8359
- () => null
8360
- );
8361
- RenderItemContext.displayName = "RenderItemContext";
8362
8373
 
8363
8374
  // src/components/listView/ListViewEditableRowTitle.tsx
8364
8375
  var import_react58 = __toESM(require("react"));
@@ -8411,21 +8422,348 @@ var ListViewEditableRowTitle = (0, import_react58.memo)(function ListViewEditabl
8411
8422
 
8412
8423
  // src/components/listView/ListViewRoot.tsx
8413
8424
  var import_noya_utils8 = require("@noya-app/noya-utils");
8414
- var import_react62 = __toESM(require("react"));
8415
- var import_react_virtualized = require("react-virtualized");
8416
- var import_react_window = require("react-window");
8425
+ var import_react63 = __toESM(require("react"));
8426
+
8427
+ // src/components/Virtualized.tsx
8428
+ var import_react59 = __toESM(require("react"));
8429
+ var import_react_dom2 = require("react-dom");
8430
+
8431
+ // src/components/ScrollArea2.tsx
8432
+ var import_scroll_area = require("@base-ui-components/react/scroll-area");
8433
+ var React52 = __toESM(require("react"));
8434
+ var SCROLLBAR_STATE_CLASSES = "scroll-component n-opacity-0 n-transition-opacity n-delay-300 n-pointer-events-none data-[hovering]:n-opacity-100 data-[hovering]:n-delay-0 data-[hovering]:n-duration-75 data-[hovering]:n-pointer-events-auto data-[scrolling]:n-opacity-100 data-[scrolling]:n-delay-0 data-[scrolling]:n-duration-75 data-[scrolling]:n-pointer-events-auto";
8435
+ var SCROLLBAR_TRACK_VERTICAL = "n-m-1 n-w-1 flex n-justify-center n-rounded-md n-bg-divider-subtle";
8436
+ var SCROLLBAR_TRACK_HORIZONTAL = "n-m-1 n-h-1 flex n-justify-center n-rounded-md n-bg-divider-subtle";
8437
+ var SCROLLBAR_THUMB_VERTICAL = "scroll-component n-w-full n-rounded n-bg-scrollbar";
8438
+ var SCROLLBAR_THUMB_HORIZONTAL = "scroll-component n-h-full n-rounded n-bg-scrollbar";
8439
+ function ScrollArea22({
8440
+ children,
8441
+ className,
8442
+ viewportClassName,
8443
+ orientation = "vertical",
8444
+ style: style2,
8445
+ viewportProps
8446
+ }) {
8447
+ const {
8448
+ className: viewportPropsClassName,
8449
+ ref: viewportRef,
8450
+ ...viewportRest
8451
+ } = viewportProps ?? {};
8452
+ return /* @__PURE__ */ React52.createElement(import_scroll_area.ScrollArea.Root, { className: cx("n-relative", className), style: style2 }, /* @__PURE__ */ React52.createElement(
8453
+ import_scroll_area.ScrollArea.Viewport,
8454
+ {
8455
+ ref: viewportRef,
8456
+ className: cx(
8457
+ "n-h-full n-overscroll-contain",
8458
+ viewportClassName,
8459
+ viewportPropsClassName
8460
+ ),
8461
+ ...viewportRest
8462
+ },
8463
+ children
8464
+ ), (orientation === "vertical" || orientation === "both") && /* @__PURE__ */ React52.createElement(
8465
+ import_scroll_area.ScrollArea.Scrollbar,
8466
+ {
8467
+ className: cx(SCROLLBAR_STATE_CLASSES, SCROLLBAR_TRACK_VERTICAL)
8468
+ },
8469
+ /* @__PURE__ */ React52.createElement(import_scroll_area.ScrollArea.Thumb, { className: SCROLLBAR_THUMB_VERTICAL })
8470
+ ), (orientation === "horizontal" || orientation === "both") && /* @__PURE__ */ React52.createElement(
8471
+ import_scroll_area.ScrollArea.Scrollbar,
8472
+ {
8473
+ orientation: "horizontal",
8474
+ className: cx(SCROLLBAR_STATE_CLASSES, SCROLLBAR_TRACK_HORIZONTAL)
8475
+ },
8476
+ /* @__PURE__ */ React52.createElement(import_scroll_area.ScrollArea.Thumb, { className: SCROLLBAR_THUMB_HORIZONTAL })
8477
+ ), orientation === "both" && /* @__PURE__ */ React52.createElement(import_scroll_area.ScrollArea.Corner, null));
8478
+ }
8479
+
8480
+ // src/components/Virtualized.tsx
8481
+ function calculateScrollOffsetForIndex({
8482
+ measurements,
8483
+ height,
8484
+ totalHeight,
8485
+ targetIndex,
8486
+ currentScrollTop
8487
+ }) {
8488
+ if (!measurements.length) return;
8489
+ const index = Math.min(Math.max(targetIndex, 0), measurements.length - 1);
8490
+ const measurement = measurements[index];
8491
+ if (!measurement) return;
8492
+ const viewportTop = currentScrollTop;
8493
+ const viewportBottom = viewportTop + height;
8494
+ const itemTop = measurement.start;
8495
+ const itemBottom = measurement.end;
8496
+ let nextScrollTop = viewportTop;
8497
+ if (itemTop < viewportTop) {
8498
+ nextScrollTop = itemTop;
8499
+ } else if (itemBottom > viewportBottom) {
8500
+ const canAlignTop = height >= measurement.size;
8501
+ nextScrollTop = canAlignTop ? itemTop : itemBottom - height;
8502
+ } else {
8503
+ return;
8504
+ }
8505
+ const maxScrollTop = Math.max(0, totalHeight - height);
8506
+ nextScrollTop = Math.max(0, Math.min(nextScrollTop, maxScrollTop));
8507
+ if (nextScrollTop === viewportTop) return;
8508
+ return nextScrollTop;
8509
+ }
8510
+ function resolvePaddingValues(padding) {
8511
+ if (typeof padding === "number") {
8512
+ return { top: padding, bottom: padding };
8513
+ }
8514
+ return {
8515
+ top: padding?.top ?? 0,
8516
+ bottom: padding?.bottom ?? 0
8517
+ };
8518
+ }
8519
+ function clampGapValue(gap) {
8520
+ return Math.max(0, gap ?? 0);
8521
+ }
8522
+ function buildMeasurements({
8523
+ itemCount,
8524
+ getItemHeight,
8525
+ paddingTop,
8526
+ paddingBottom,
8527
+ gap
8528
+ }) {
8529
+ const measurements = [];
8530
+ let offset = paddingTop;
8531
+ for (let index = 0; index < itemCount; index += 1) {
8532
+ const size = Math.max(0, getItemHeight(index));
8533
+ const start = offset;
8534
+ const end = start + size;
8535
+ measurements.push({ index, size, start, end });
8536
+ offset = end + gap;
8537
+ }
8538
+ const totalHeight = measurements.length ? measurements[measurements.length - 1].end + paddingBottom : paddingTop + paddingBottom;
8539
+ return { measurements, totalHeight };
8540
+ }
8541
+ function findFirstVisibleIndex(measurements, offset) {
8542
+ if (!measurements.length) return 0;
8543
+ let low = 0;
8544
+ let high = measurements.length - 1;
8545
+ let match = measurements.length - 1;
8546
+ while (low <= high) {
8547
+ const middle = Math.floor((low + high) / 2);
8548
+ const measurement = measurements[middle];
8549
+ if (measurement.end > offset) {
8550
+ match = middle;
8551
+ high = middle - 1;
8552
+ } else {
8553
+ low = middle + 1;
8554
+ }
8555
+ }
8556
+ return match;
8557
+ }
8558
+ function calculateVisibleRange({
8559
+ measurements,
8560
+ scrollTop,
8561
+ height,
8562
+ overscan
8563
+ }) {
8564
+ if (!measurements.length) {
8565
+ return { start: 0, end: -1 };
8566
+ }
8567
+ const viewBottom = scrollTop + height;
8568
+ const firstVisible = findFirstVisibleIndex(measurements, scrollTop);
8569
+ let lastVisibleExclusive = firstVisible;
8570
+ while (lastVisibleExclusive < measurements.length && measurements[lastVisibleExclusive].start < viewBottom) {
8571
+ lastVisibleExclusive += 1;
8572
+ }
8573
+ const lastVisible = Math.max(
8574
+ firstVisible,
8575
+ Math.min(measurements.length - 1, lastVisibleExclusive - 1)
8576
+ );
8577
+ const overscanCount = Math.max(0, Math.floor(overscan));
8578
+ return {
8579
+ start: Math.max(0, firstVisible - overscanCount),
8580
+ end: Math.min(measurements.length - 1, lastVisible + overscanCount)
8581
+ };
8582
+ }
8583
+ var DEFAULT_OVERSCAN = 2;
8584
+ var VirtualizedInner = import_react59.default.forwardRef(function Virtualized({
8585
+ height,
8586
+ itemCount,
8587
+ getItemHeight,
8588
+ renderItem,
8589
+ overscan = DEFAULT_OVERSCAN,
8590
+ className,
8591
+ style: style2,
8592
+ innerClassName,
8593
+ innerStyle,
8594
+ onScroll,
8595
+ itemKey,
8596
+ initialScrollOffset = 0,
8597
+ syncScrollUpdates = true,
8598
+ padding,
8599
+ gap = 0,
8600
+ useScrollArea = false,
8601
+ scrollAreaViewportClassName
8602
+ }, forwardedRef) {
8603
+ const containerRef = (0, import_react59.useRef)(null);
8604
+ const setScrollElement = (0, import_react59.useCallback)((element) => {
8605
+ containerRef.current = element;
8606
+ }, []);
8607
+ const [scrollTop, setScrollTop] = (0, import_react59.useState)(initialScrollOffset);
8608
+ const pendingInitialOffset = (0, import_react59.useRef)(initialScrollOffset);
8609
+ (0, import_react59.useLayoutEffect)(() => {
8610
+ if (pendingInitialOffset.current == null) return;
8611
+ if (containerRef.current) {
8612
+ containerRef.current.scrollTop = pendingInitialOffset.current;
8613
+ setScrollTop(pendingInitialOffset.current);
8614
+ }
8615
+ pendingInitialOffset.current = null;
8616
+ }, []);
8617
+ const paddingValues = (0, import_react59.useMemo)(() => resolvePaddingValues(padding), [padding]);
8618
+ const gapValue = (0, import_react59.useMemo)(() => clampGapValue(gap), [gap]);
8619
+ const { measurements, totalHeight } = (0, import_react59.useMemo)(
8620
+ () => buildMeasurements({
8621
+ itemCount,
8622
+ getItemHeight,
8623
+ paddingTop: paddingValues.top,
8624
+ paddingBottom: paddingValues.bottom,
8625
+ gap: gapValue
8626
+ }),
8627
+ [
8628
+ gapValue,
8629
+ getItemHeight,
8630
+ itemCount,
8631
+ paddingValues.bottom,
8632
+ paddingValues.top
8633
+ ]
8634
+ );
8635
+ const visibleRange = (0, import_react59.useMemo)(
8636
+ () => calculateVisibleRange({
8637
+ measurements,
8638
+ scrollTop,
8639
+ height,
8640
+ overscan
8641
+ }),
8642
+ [height, measurements, overscan, scrollTop]
8643
+ );
8644
+ const handleScroll = (0, import_react59.useCallback)(
8645
+ (event) => {
8646
+ const nextOffset = event.currentTarget.scrollTop;
8647
+ if (nextOffset === scrollTop) return;
8648
+ if (syncScrollUpdates) {
8649
+ (0, import_react_dom2.flushSync)(() => {
8650
+ setScrollTop(nextOffset);
8651
+ });
8652
+ } else {
8653
+ setScrollTop(nextOffset);
8654
+ }
8655
+ onScroll?.(nextOffset);
8656
+ },
8657
+ [onScroll, scrollTop, syncScrollUpdates]
8658
+ );
8659
+ (0, import_react59.useImperativeHandle)(
8660
+ forwardedRef,
8661
+ () => ({
8662
+ scrollToIndex(index) {
8663
+ const container = containerRef.current;
8664
+ if (!container) return;
8665
+ const nextScrollTop = calculateScrollOffsetForIndex({
8666
+ measurements,
8667
+ height,
8668
+ totalHeight,
8669
+ targetIndex: index,
8670
+ currentScrollTop: container.scrollTop
8671
+ });
8672
+ if (nextScrollTop == null) return;
8673
+ container.scrollTop = nextScrollTop;
8674
+ setScrollTop(nextScrollTop);
8675
+ }
8676
+ }),
8677
+ [height, measurements, totalHeight]
8678
+ );
8679
+ const containerStyle = (0, import_react59.useMemo)(
8680
+ () => ({
8681
+ height,
8682
+ overflowY: "auto",
8683
+ overflowX: "hidden",
8684
+ ...style2
8685
+ }),
8686
+ [height, style2]
8687
+ );
8688
+ const scrollAreaStyle = (0, import_react59.useMemo)(
8689
+ () => ({
8690
+ height,
8691
+ ...style2
8692
+ }),
8693
+ [height, style2]
8694
+ );
8695
+ const totalContent = /* @__PURE__ */ import_react59.default.createElement(
8696
+ "div",
8697
+ {
8698
+ className: innerClassName,
8699
+ style: {
8700
+ position: "relative",
8701
+ width: "100%",
8702
+ height: totalHeight,
8703
+ ...innerStyle
8704
+ }
8705
+ },
8706
+ visibleRange.end >= visibleRange.start && Array.from(
8707
+ { length: visibleRange.end - visibleRange.start + 1 },
8708
+ (_, offset) => {
8709
+ const index = visibleRange.start + offset;
8710
+ const measurement = measurements[index];
8711
+ const key = itemKey ? itemKey(index) : index;
8712
+ return /* @__PURE__ */ import_react59.default.createElement(
8713
+ "div",
8714
+ {
8715
+ key,
8716
+ style: {
8717
+ position: "absolute",
8718
+ top: measurement.start,
8719
+ height: measurement.size,
8720
+ width: "100%"
8721
+ }
8722
+ },
8723
+ renderItem(index)
8724
+ );
8725
+ }
8726
+ )
8727
+ );
8728
+ if (useScrollArea) {
8729
+ return /* @__PURE__ */ import_react59.default.createElement(
8730
+ ScrollArea22,
8731
+ {
8732
+ className,
8733
+ style: scrollAreaStyle,
8734
+ viewportClassName: scrollAreaViewportClassName,
8735
+ viewportProps: {
8736
+ ref: setScrollElement,
8737
+ onScroll: handleScroll
8738
+ }
8739
+ },
8740
+ totalContent
8741
+ );
8742
+ }
8743
+ return /* @__PURE__ */ import_react59.default.createElement(
8744
+ "div",
8745
+ {
8746
+ ref: setScrollElement,
8747
+ className,
8748
+ style: containerStyle,
8749
+ onScroll: handleScroll
8750
+ },
8751
+ totalContent
8752
+ );
8753
+ });
8754
+ var Virtualized2 = import_react59.default.memo(VirtualizedInner);
8417
8755
 
8418
8756
  // src/components/sorting/Sortable.tsx
8419
8757
  var import_core2 = require("@dnd-kit/core");
8420
8758
  var import_sortable = require("@dnd-kit/sortable");
8421
- var React55 = __toESM(require("react"));
8422
- var import_react61 = require("react");
8759
+ var React57 = __toESM(require("react"));
8760
+ var import_react62 = require("react");
8423
8761
 
8424
8762
  // src/components/sorting/DragRegistration.tsx
8425
- var import_react59 = __toESM(require("react"));
8426
- var DragRegistrationContext = import_react59.default.createContext(null);
8763
+ var import_react60 = __toESM(require("react"));
8764
+ var DragRegistrationContext = import_react60.default.createContext(null);
8427
8765
  function useDragRegistration(context) {
8428
- const value = import_react59.default.useContext(context);
8766
+ const value = import_react60.default.useContext(context);
8429
8767
  if (!value) {
8430
8768
  throw new Error(
8431
8769
  "useDragRegistration must be used within a DragRegistrationProvider"
@@ -8434,11 +8772,11 @@ function useDragRegistration(context) {
8434
8772
  return value;
8435
8773
  }
8436
8774
  function useDragRegistrationManager() {
8437
- const [registeredLists, setRegisteredLists] = import_react59.default.useState(/* @__PURE__ */ new Map());
8438
- const registerList = import_react59.default.useCallback((list) => {
8775
+ const [registeredLists, setRegisteredLists] = import_react60.default.useState(/* @__PURE__ */ new Map());
8776
+ const registerList = import_react60.default.useCallback((list) => {
8439
8777
  setRegisteredLists((prev) => new Map(prev).set(list.id, list));
8440
8778
  }, []);
8441
- const unregisterList = import_react59.default.useCallback((listId) => {
8779
+ const unregisterList = import_react60.default.useCallback((listId) => {
8442
8780
  setRegisteredLists((prev) => {
8443
8781
  const newMap = new Map(prev);
8444
8782
  newMap.delete(listId);
@@ -8447,23 +8785,23 @@ function useDragRegistrationManager() {
8447
8785
  }, []);
8448
8786
  return { registerList, unregisterList, registeredLists };
8449
8787
  }
8450
- var ActiveDragContext = import_react59.default.createContext(null);
8788
+ var ActiveDragContext = import_react60.default.createContext(null);
8451
8789
  function useActiveDrag(context) {
8452
- const value = import_react59.default.useContext(context);
8790
+ const value = import_react60.default.useContext(context);
8453
8791
  if (!value) {
8454
8792
  throw new Error("useActiveDrag must be used within a ActiveDragProvider");
8455
8793
  }
8456
8794
  return value;
8457
8795
  }
8458
- var AnyDragContext = import_react59.default.createContext(false);
8796
+ var AnyDragContext = import_react60.default.createContext(false);
8459
8797
 
8460
8798
  // src/components/sorting/SharedDragProvider.tsx
8461
8799
  var import_core = require("@dnd-kit/core");
8462
8800
  var import_noya_geometry = require("@noya-app/noya-geometry");
8463
8801
  var import_noya_utils7 = require("@noya-app/noya-utils");
8464
- var React53 = __toESM(require("react"));
8465
- var import_react60 = require("react");
8466
- var import_react_dom2 = require("react-dom");
8802
+ var React55 = __toESM(require("react"));
8803
+ var import_react61 = require("react");
8804
+ var import_react_dom3 = require("react-dom");
8467
8805
  function SharedDragProvider({
8468
8806
  children,
8469
8807
  acceptsDrop: acceptsDrop2,
@@ -8482,22 +8820,22 @@ function SharedDragProvider({
8482
8820
  })
8483
8821
  );
8484
8822
  const mounted = useMounted();
8485
- const [dragState, setDragState] = React53.useState({
8823
+ const [dragState, setDragState] = React55.useState({
8486
8824
  source: null,
8487
8825
  target: null,
8488
8826
  indicator: null
8489
8827
  });
8490
- const stableOnMoveItem = React53.useRef(onMoveItem);
8828
+ const stableOnMoveItem = React55.useRef(onMoveItem);
8491
8829
  useIsomorphicLayoutEffect(() => {
8492
8830
  stableOnMoveItem.current = onMoveItem;
8493
8831
  }, [onMoveItem]);
8494
- const stableAcceptsDrop = React53.useRef(acceptsDrop2);
8832
+ const stableAcceptsDrop = React55.useRef(acceptsDrop2);
8495
8833
  useIsomorphicLayoutEffect(() => {
8496
8834
  stableAcceptsDrop.current = acceptsDrop2;
8497
8835
  }, [acceptsDrop2]);
8498
8836
  const { registerList, unregisterList, registeredLists } = useDragRegistrationManager();
8499
- const activatorEventRef = React53.useRef(null);
8500
- const handleDragStart = React53.useCallback(
8837
+ const activatorEventRef = React55.useRef(null);
8838
+ const handleDragStart = React55.useCallback(
8501
8839
  (event) => {
8502
8840
  activatorEventRef.current = event.activatorEvent;
8503
8841
  for (const [listId, list] of registeredLists) {
@@ -8519,7 +8857,7 @@ function SharedDragProvider({
8519
8857
  },
8520
8858
  [registeredLists]
8521
8859
  );
8522
- const handleDragMove = React53.useCallback(
8860
+ const handleDragMove = React55.useCallback(
8523
8861
  (event) => {
8524
8862
  const { active, over } = event;
8525
8863
  if (!activatorEventRef.current || !dragState.source) return;
@@ -8543,7 +8881,7 @@ function SharedDragProvider({
8543
8881
  },
8544
8882
  [registeredLists, dragState.source]
8545
8883
  );
8546
- const handleDragEnd = React53.useCallback(
8884
+ const handleDragEnd = React55.useCallback(
8547
8885
  (event) => {
8548
8886
  const { active, over } = event;
8549
8887
  if (!activatorEventRef.current || !dragState.source) return;
@@ -8587,7 +8925,7 @@ function SharedDragProvider({
8587
8925
  },
8588
8926
  [registeredLists, dragState.source, stableOnMoveItem]
8589
8927
  );
8590
- const contextValue = React53.useMemo(
8928
+ const contextValue = React55.useMemo(
8591
8929
  () => ({
8592
8930
  registerList,
8593
8931
  unregisterList
@@ -8595,19 +8933,19 @@ function SharedDragProvider({
8595
8933
  [registerList, unregisterList]
8596
8934
  );
8597
8935
  const activeList = dragState.source ? registeredLists.get(dragState.source.listId) : null;
8598
- const activeDragContextValue = React53.useMemo(
8936
+ const activeDragContextValue = React55.useMemo(
8599
8937
  () => dragState,
8600
8938
  [dragState]
8601
8939
  );
8602
- const collisionDetection = (0, import_react60.useMemo)(() => {
8940
+ const collisionDetection = (0, import_react61.useMemo)(() => {
8603
8941
  return getItemFirstCollisionDetection(registeredLists, itemHitSlop);
8604
8942
  }, [registeredLists, itemHitSlop]);
8605
- return /* @__PURE__ */ React53.createElement(AnyDragContext.Provider, { value: true }, /* @__PURE__ */ React53.createElement(sharedDragProps.dragRegistrationContext.Provider, { value: contextValue }, /* @__PURE__ */ React53.createElement(
8943
+ return /* @__PURE__ */ React55.createElement(AnyDragContext.Provider, { value: true }, /* @__PURE__ */ React55.createElement(sharedDragProps.dragRegistrationContext.Provider, { value: contextValue }, /* @__PURE__ */ React55.createElement(
8606
8944
  sharedDragProps.activeDragContext.Provider,
8607
8945
  {
8608
8946
  value: activeDragContextValue
8609
8947
  },
8610
- /* @__PURE__ */ React53.createElement(
8948
+ /* @__PURE__ */ React55.createElement(
8611
8949
  import_core.DndContext,
8612
8950
  {
8613
8951
  sensors,
@@ -8617,27 +8955,27 @@ function SharedDragProvider({
8617
8955
  onDragEnd: handleDragEnd
8618
8956
  },
8619
8957
  children,
8620
- mounted && activeList?.renderOverlay && dragState.source && (0, import_react_dom2.createPortal)(
8621
- /* @__PURE__ */ React53.createElement(import_core.DragOverlay, { dropAnimation: null }, activeList.renderOverlay(dragState.source.itemId)),
8958
+ mounted && activeList?.renderOverlay && dragState.source && (0, import_react_dom3.createPortal)(
8959
+ /* @__PURE__ */ React55.createElement(import_core.DragOverlay, { dropAnimation: null }, activeList.renderOverlay(dragState.source.itemId)),
8622
8960
  document.body
8623
8961
  )
8624
8962
  )
8625
8963
  )));
8626
8964
  }
8627
8965
  function useMounted() {
8628
- const [mounted, setMounted] = React53.useState(false);
8629
- React53.useEffect(() => {
8966
+ const [mounted, setMounted] = React55.useState(false);
8967
+ React55.useEffect(() => {
8630
8968
  setMounted(true);
8631
8969
  }, []);
8632
8970
  return mounted;
8633
8971
  }
8634
8972
  function withDragProvider(Component) {
8635
8973
  return function WithDragProvider(props) {
8636
- const anyDragContext = React53.useContext(AnyDragContext);
8974
+ const anyDragContext = React55.useContext(AnyDragContext);
8637
8975
  if (!anyDragContext) {
8638
- return /* @__PURE__ */ React53.createElement(SharedDragProvider, null, /* @__PURE__ */ React53.createElement(Component, { ...props }));
8976
+ return /* @__PURE__ */ React55.createElement(SharedDragProvider, null, /* @__PURE__ */ React55.createElement(Component, { ...props }));
8639
8977
  }
8640
- return /* @__PURE__ */ React53.createElement(Component, { ...props });
8978
+ return /* @__PURE__ */ React55.createElement(Component, { ...props });
8641
8979
  };
8642
8980
  }
8643
8981
  var getItemFirstCollisionDetection = (registeredLists, itemHitSlop) => (parameters) => {
@@ -8814,7 +9152,7 @@ function findDropTarget({
8814
9152
  }
8815
9153
 
8816
9154
  // src/components/sorting/sorting.ts
8817
- var React54 = __toESM(require("react"));
9155
+ var React56 = __toESM(require("react"));
8818
9156
  var normalizeListTargetIndex = (index, position) => {
8819
9157
  return position === "above" ? index : index + 1;
8820
9158
  };
@@ -8830,7 +9168,7 @@ var defaultAcceptsDrop = ({
8830
9168
  }
8831
9169
  return true;
8832
9170
  };
8833
- var SortableItemContext = React54.createContext({
9171
+ var SortableItemContext = React56.createContext({
8834
9172
  keys: [],
8835
9173
  acceptsDrop: defaultAcceptsDrop,
8836
9174
  axis: "y",
@@ -8896,7 +9234,7 @@ function parseDragItemKey(key) {
8896
9234
  }
8897
9235
 
8898
9236
  // src/components/sorting/Sortable.tsx
8899
- var SortableItemContext2 = React55.createContext({
9237
+ var SortableItemContext2 = React57.createContext({
8900
9238
  acceptsDrop: defaultAcceptsDrop,
8901
9239
  listId: "",
8902
9240
  getDropTargetParentIndex: void 0,
@@ -8909,7 +9247,7 @@ function useSortableDropIndicator({
8909
9247
  acceptsDrop: acceptsDrop2,
8910
9248
  getDropTargetParentIndex
8911
9249
  }) {
8912
- const { activeDragContext } = React55.useContext(SortableItemContext2);
9250
+ const { activeDragContext } = React57.useContext(SortableItemContext2);
8913
9251
  const activeDrag = useActiveDrag(activeDragContext);
8914
9252
  const { source, target } = activeDrag;
8915
9253
  if (!source || !target) return;
@@ -8940,7 +9278,7 @@ function SortableItem({
8940
9278
  disabled,
8941
9279
  children
8942
9280
  }) {
8943
- const { acceptsDrop: acceptsDrop2, listId, getDropTargetParentIndex } = React55.useContext(SortableItemContext2);
9281
+ const { acceptsDrop: acceptsDrop2, listId, getDropTargetParentIndex } = React57.useContext(SortableItemContext2);
8944
9282
  const dragItemKey = createDragItemKey(listId, id);
8945
9283
  const {
8946
9284
  attributes,
@@ -8955,7 +9293,7 @@ function SortableItem({
8955
9293
  id: dragItemKey,
8956
9294
  disabled
8957
9295
  });
8958
- const ref = React55.useCallback(
9296
+ const ref = React57.useCallback(
8959
9297
  (node) => setNodeRef(node),
8960
9298
  [setNodeRef]
8961
9299
  );
@@ -8966,7 +9304,7 @@ function SortableItem({
8966
9304
  acceptsDrop: acceptsDrop2,
8967
9305
  getDropTargetParentIndex
8968
9306
  });
8969
- const props = (0, import_react61.useMemo)(
9307
+ const props = (0, import_react62.useMemo)(
8970
9308
  () => ({
8971
9309
  ref,
8972
9310
  ...attributes,
@@ -8975,7 +9313,7 @@ function SortableItem({
8975
9313
  }),
8976
9314
  [ref, attributes, listeners, isDragging]
8977
9315
  );
8978
- const extraProps = (0, import_react61.useMemo)(
9316
+ const extraProps = (0, import_react62.useMemo)(
8979
9317
  () => ({
8980
9318
  isDragging,
8981
9319
  isOverlay: false,
@@ -9009,9 +9347,9 @@ function SortableRoot_({
9009
9347
  containerRef,
9010
9348
  itemHitSlop
9011
9349
  }) {
9012
- const defaultId = React55.useId();
9350
+ const defaultId = React57.useId();
9013
9351
  const id = idProp ?? defaultId;
9014
- const keys = React55.useMemo(() => {
9352
+ const keys = React57.useMemo(() => {
9015
9353
  return keysProp.map((key) => createDragItemKey(id, key));
9016
9354
  }, [keysProp, id]);
9017
9355
  const { registerList, unregisterList } = useDragRegistration(
@@ -9020,7 +9358,7 @@ function SortableRoot_({
9020
9358
  const { setNodeRef: setDroppableRef } = (0, import_core2.useDroppable)({
9021
9359
  id
9022
9360
  });
9023
- React55.useEffect(() => {
9361
+ React57.useEffect(() => {
9024
9362
  const listConfig = {
9025
9363
  id,
9026
9364
  keys,
@@ -9074,7 +9412,7 @@ function SortableRoot_({
9074
9412
  keys,
9075
9413
  itemHitSlop
9076
9414
  ]);
9077
- const contextValue = React55.useMemo(
9415
+ const contextValue = React57.useMemo(
9078
9416
  () => ({
9079
9417
  keys,
9080
9418
  acceptsDrop: acceptsDrop2,
@@ -9085,17 +9423,17 @@ function SortableRoot_({
9085
9423
  [keys, acceptsDrop2, id, getDropTargetParentIndex, sharedDragProps]
9086
9424
  );
9087
9425
  const activeDragContext = sharedDragProps?.activeDragContext ?? ActiveDragContext;
9088
- const dragState = React55.useContext(activeDragContext);
9426
+ const dragState = React57.useContext(activeDragContext);
9089
9427
  const isDragging = !!dragState?.source;
9090
- React55.useEffect(() => {
9428
+ React57.useEffect(() => {
9091
9429
  onIsDraggingChange?.(isDragging);
9092
9430
  }, [isDragging, onIsDraggingChange]);
9093
- React55.useEffect(() => {
9431
+ React57.useEffect(() => {
9094
9432
  if (containerRef) {
9095
9433
  setDroppableRef(containerRef.current);
9096
9434
  }
9097
9435
  });
9098
- return /* @__PURE__ */ React55.createElement(SortableItemContext2.Provider, { value: contextValue }, /* @__PURE__ */ React55.createElement(
9436
+ return /* @__PURE__ */ React57.createElement(SortableItemContext2.Provider, { value: contextValue }, /* @__PURE__ */ React57.createElement(
9099
9437
  import_sortable.SortableContext,
9100
9438
  {
9101
9439
  items: keys,
@@ -9112,11 +9450,11 @@ var Sortable_ = function Sortable_2({
9112
9450
  renderItem,
9113
9451
  ...rest
9114
9452
  }) {
9115
- const keys = React55.useMemo(
9453
+ const keys = React57.useMemo(
9116
9454
  () => items.map(keyExtractor),
9117
9455
  [items, keyExtractor]
9118
9456
  );
9119
- const renderOverlay = React55.useCallback(
9457
+ const renderOverlay = React57.useCallback(
9120
9458
  (index) => {
9121
9459
  return renderItem(
9122
9460
  items[index],
@@ -9146,14 +9484,14 @@ var Sortable_ = function Sortable_2({
9146
9484
  },
9147
9485
  [renderItem, items]
9148
9486
  );
9149
- return /* @__PURE__ */ React55.createElement(
9487
+ return /* @__PURE__ */ React57.createElement(
9150
9488
  SortableRoot,
9151
9489
  {
9152
9490
  ...rest,
9153
9491
  keys,
9154
9492
  renderOverlay: shouldRenderOverlay ? renderOverlay : void 0
9155
9493
  },
9156
- keys.map((key, index) => /* @__PURE__ */ React55.createElement(SortableItem, { key, id: key }, (props, extraProps) => {
9494
+ keys.map((key, index) => /* @__PURE__ */ React57.createElement(SortableItem, { key, id: key }, (props, extraProps) => {
9157
9495
  return renderItem(items[index], props, extraProps);
9158
9496
  }))
9159
9497
  );
@@ -9167,87 +9505,6 @@ var Sortable = Object.assign(Sortable_, {
9167
9505
  var ROW_HEIGHT = 31;
9168
9506
  var SECTION_HEADER_LABEL_HEIGHT = 24;
9169
9507
  var TALL_ROW_HEIGHT = 50;
9170
- var VirtualizedListRow = (0, import_react62.memo)(function VirtualizedListRow2({
9171
- index,
9172
- style: style2
9173
- }) {
9174
- const renderItem = (0, import_react62.useContext)(RenderItemContext);
9175
- return /* @__PURE__ */ import_react62.default.createElement("div", { key: index, style: style2 }, renderItem(index));
9176
- });
9177
- var VirtualizedListInner = forwardRefGeneric(function VirtualizedListInner2({
9178
- size,
9179
- scrollElement,
9180
- items,
9181
- getItemHeight,
9182
- keyExtractor,
9183
- renderItem
9184
- }, ref) {
9185
- const listRef = (0, import_react62.useRef)(null);
9186
- (0, import_react62.useImperativeHandle)(ref, () => ({
9187
- scrollToIndex(index) {
9188
- listRef.current?.scrollToItem(index);
9189
- }
9190
- }));
9191
- (0, import_react62.useLayoutEffect)(() => {
9192
- listRef.current?.resetAfterIndex(0);
9193
- }, [
9194
- // When items or the height resolver change, re-render the virtualized list
9195
- // since VariableSizeList caches sizes per index.
9196
- items,
9197
- getItemHeight
9198
- ]);
9199
- const listStyle = (0, import_react62.useMemo)(
9200
- () => ({
9201
- overflowX: "initial",
9202
- overflowY: "initial",
9203
- overflow: "initial"
9204
- }),
9205
- []
9206
- );
9207
- return /* @__PURE__ */ import_react62.default.createElement(RenderItemContext.Provider, { value: renderItem }, /* @__PURE__ */ import_react62.default.createElement(
9208
- import_react_virtualized.WindowScroller,
9209
- {
9210
- scrollElement,
9211
- style: (0, import_react62.useMemo)(() => ({ flex: "1 1 auto" }), [])
9212
- },
9213
- (0, import_react62.useCallback)(
9214
- ({
9215
- registerChild,
9216
- onChildScroll,
9217
- scrollTop
9218
- }) => /* @__PURE__ */ import_react62.default.createElement("div", { ref: registerChild }, /* @__PURE__ */ import_react62.default.createElement(
9219
- import_react_window.VariableSizeList,
9220
- {
9221
- ref: listRef,
9222
- key: scrollTop,
9223
- style: listStyle,
9224
- itemKey: keyExtractor,
9225
- onScroll: ({ scrollOffset }) => {
9226
- onChildScroll({ scrollTop: scrollOffset });
9227
- },
9228
- initialScrollOffset: scrollTop,
9229
- width: size.width,
9230
- height: size.height,
9231
- itemCount: items.length,
9232
- itemSize: getItemHeight,
9233
- estimatedItemSize: ROW_HEIGHT
9234
- },
9235
- VirtualizedListRow
9236
- )),
9237
- [
9238
- listStyle,
9239
- keyExtractor,
9240
- size.width,
9241
- size.height,
9242
- items.length,
9243
- getItemHeight
9244
- ]
9245
- )
9246
- ));
9247
- });
9248
- var VirtualizedList = (0, import_react62.memo)(
9249
- VirtualizedListInner
9250
- );
9251
9508
  var ListViewRoot = memoGeneric(
9252
9509
  forwardRefGeneric(function ListViewRootInner({
9253
9510
  id,
@@ -9286,7 +9543,7 @@ var ListViewRoot = memoGeneric(
9286
9543
  itemHeight,
9287
9544
  getItemHeightForItem
9288
9545
  }, forwardedRef) {
9289
- const handleClick = (0, import_react62.useCallback)(
9546
+ const handleClick = (0, import_react63.useCallback)(
9290
9547
  (event) => {
9291
9548
  if (event.target instanceof HTMLElement && event.target.classList.contains("scroll-component"))
9292
9549
  return;
@@ -9296,11 +9553,11 @@ var ListViewRoot = memoGeneric(
9296
9553
  },
9297
9554
  [onPress]
9298
9555
  );
9299
- const renderChild = (0, import_react62.useCallback)(
9556
+ const renderChild = (0, import_react63.useCallback)(
9300
9557
  (index) => renderItem(data[index], index, { isDragOverlay: false }),
9301
9558
  [data, renderItem]
9302
9559
  );
9303
- const defaultContextValue = (0, import_react62.useMemo)(
9560
+ const defaultContextValue = (0, import_react63.useMemo)(
9304
9561
  () => ({
9305
9562
  marginType: "none",
9306
9563
  selectedPosition: "only",
@@ -9308,22 +9565,22 @@ var ListViewRoot = memoGeneric(
9308
9565
  }),
9309
9566
  []
9310
9567
  );
9311
- const getItemContextValue = (0, import_react62.useCallback)(
9568
+ const getItemContextValue = (0, import_react63.useCallback)(
9312
9569
  (i) => {
9313
9570
  if (variant === "bare" || variant === "normal") {
9314
9571
  const current2 = renderChild(i);
9315
- if (!(0, import_react62.isValidElement)(current2)) return defaultContextValue;
9572
+ if (!(0, import_react63.isValidElement)(current2)) return defaultContextValue;
9316
9573
  return {
9317
9574
  ...defaultContextValue,
9318
9575
  isSectionHeader: !!current2.props.isSectionHeader
9319
9576
  };
9320
9577
  }
9321
9578
  const current = renderChild(i);
9322
- if (!(0, import_react62.isValidElement)(current)) return;
9579
+ if (!(0, import_react63.isValidElement)(current)) return;
9323
9580
  const prevChild = i - 1 >= 0 && renderChild(i - 1);
9324
9581
  const nextChild = i + 1 < data.length && renderChild(i + 1);
9325
- const next = (0, import_react62.isValidElement)(nextChild) ? nextChild : void 0;
9326
- const prev = (0, import_react62.isValidElement)(prevChild) ? prevChild : void 0;
9582
+ const next = (0, import_react63.isValidElement)(nextChild) ? nextChild : void 0;
9583
+ const prev = (0, import_react63.isValidElement)(prevChild) ? prevChild : void 0;
9327
9584
  const hasMarginTop = !prev;
9328
9585
  const hasMarginBottom = !next || current.props.isSectionHeader || next && next.props.isSectionHeader;
9329
9586
  let marginType;
@@ -9356,27 +9613,27 @@ var ListViewRoot = memoGeneric(
9356
9613
  },
9357
9614
  [variant, defaultContextValue, renderChild, data.length]
9358
9615
  );
9359
- const draggingContextOverlayValue = (0, import_react62.useMemo)(
9616
+ const draggingContextOverlayValue = (0, import_react63.useMemo)(
9360
9617
  () => ({
9361
9618
  isDragOverlay: true
9362
9619
  }),
9363
9620
  []
9364
9621
  );
9365
- const renderOverlay = (0, import_react62.useCallback)(
9366
- (index) => /* @__PURE__ */ import_react62.default.createElement("div", { style: { opacity: 0.25 } }, /* @__PURE__ */ import_react62.default.createElement(ListViewDraggingContext.Provider, { value: draggingContextOverlayValue }, renderItem(data[index], index, { isDragOverlay: true }))),
9622
+ const renderOverlay = (0, import_react63.useCallback)(
9623
+ (index) => /* @__PURE__ */ import_react63.default.createElement("div", { style: { opacity: 0.25 } }, /* @__PURE__ */ import_react63.default.createElement(ListViewDraggingContext.Provider, { value: draggingContextOverlayValue }, renderItem(data[index], index, { isDragOverlay: true }))),
9367
9624
  [draggingContextOverlayValue, renderItem, data]
9368
9625
  );
9369
- const renderWrappedChild = (0, import_react62.useCallback)(
9626
+ const renderWrappedChild = (0, import_react63.useCallback)(
9370
9627
  (index) => {
9371
9628
  const contextValue2 = getItemContextValue(index);
9372
9629
  const current = renderChild(index);
9373
- if (!contextValue2 || !(0, import_react62.isValidElement)(current)) return null;
9374
- return /* @__PURE__ */ import_react62.default.createElement(ListRowContext.Provider, { key: current.key, value: contextValue2 }, current);
9630
+ if (!contextValue2 || !(0, import_react63.isValidElement)(current)) return null;
9631
+ return /* @__PURE__ */ import_react63.default.createElement(ListRowContext.Provider, { key: current.key, value: contextValue2 }, current);
9375
9632
  },
9376
9633
  [getItemContextValue, renderChild]
9377
9634
  );
9378
- const ids = (0, import_react62.useMemo)(() => data.map(keyExtractor), [keyExtractor, data]);
9379
- const withSortable = (children) => sortable ? /* @__PURE__ */ import_react62.default.createElement(
9635
+ const ids = (0, import_react63.useMemo)(() => data.map(keyExtractor), [keyExtractor, data]);
9636
+ const withSortable = (children) => sortable ? /* @__PURE__ */ import_react63.default.createElement(
9380
9637
  Sortable.Root,
9381
9638
  {
9382
9639
  id: sortableId,
@@ -9389,8 +9646,8 @@ var ListViewRoot = memoGeneric(
9389
9646
  },
9390
9647
  children
9391
9648
  ) : children;
9392
- const withScrollable = (children) => scrollable ? /* @__PURE__ */ import_react62.default.createElement(ScrollArea, null, children) : children(null);
9393
- const getItemHeight = (0, import_react62.useCallback)(
9649
+ const withScrollable = (children) => scrollable ? /* @__PURE__ */ import_react63.default.createElement(ScrollArea, null, children) : children;
9650
+ const getItemHeight = (0, import_react63.useCallback)(
9394
9651
  (index) => {
9395
9652
  const child = getItemContextValue(index);
9396
9653
  if (child?.isSectionHeader && sectionHeaderVariant === "label") {
@@ -9410,13 +9667,13 @@ var ListViewRoot = memoGeneric(
9410
9667
  data
9411
9668
  ]
9412
9669
  );
9413
- const getKey = (0, import_react62.useCallback)(
9670
+ const getKey = (0, import_react63.useCallback)(
9414
9671
  (index) => keyExtractor(data[index], index),
9415
9672
  [data, keyExtractor]
9416
9673
  );
9417
- const draggingContextValue = (0, import_react62.useMemo)(() => ({}), []);
9418
- const gapStyle = (0, import_react62.useMemo)(() => ({ gap: `${gap}px` }), [gap]);
9419
- const contextValue = (0, import_react62.useMemo)(
9674
+ const draggingContextValue = (0, import_react63.useMemo)(() => ({}), []);
9675
+ const gapStyle = (0, import_react63.useMemo)(() => ({ gap: `${gap}px` }), [gap]);
9676
+ const contextValue = (0, import_react63.useMemo)(
9420
9677
  () => ({
9421
9678
  pressEventName,
9422
9679
  colorScheme,
@@ -9440,7 +9697,7 @@ var ListViewRoot = memoGeneric(
9440
9697
  indentation
9441
9698
  ]
9442
9699
  );
9443
- return /* @__PURE__ */ import_react62.default.createElement(ListViewContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react62.default.createElement(ListViewDraggingContext.Provider, { value: draggingContextValue }, /* @__PURE__ */ import_react62.default.createElement(
9700
+ return /* @__PURE__ */ import_react63.default.createElement(ListViewContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react63.default.createElement(ListViewDraggingContext.Provider, { value: draggingContextValue }, /* @__PURE__ */ import_react63.default.createElement(
9444
9701
  "div",
9445
9702
  {
9446
9703
  id,
@@ -9467,21 +9724,21 @@ var ListViewRoot = memoGeneric(
9467
9724
  onDragLeave,
9468
9725
  onDrop
9469
9726
  },
9470
- data.length === 0 && renderEmptyState ? renderEmptyState() : withScrollable(
9471
- (scrollElementRef) => withSortable(
9472
- virtualized ? /* @__PURE__ */ import_react62.default.createElement(
9473
- VirtualizedList,
9474
- {
9475
- ref: forwardedRef,
9476
- scrollElement: scrollElementRef,
9477
- items: data,
9478
- size: virtualized,
9479
- getItemHeight,
9480
- keyExtractor: getKey,
9481
- renderItem: renderWrappedChild
9482
- }
9483
- ) : (0, import_noya_utils8.range)(0, data.length).map(renderWrappedChild)
9727
+ data.length === 0 && renderEmptyState ? renderEmptyState() : virtualized != null ? withSortable(
9728
+ /* @__PURE__ */ import_react63.default.createElement(
9729
+ Virtualized2,
9730
+ {
9731
+ ref: forwardedRef,
9732
+ height: virtualized,
9733
+ itemCount: data.length,
9734
+ getItemHeight,
9735
+ renderItem: renderWrappedChild,
9736
+ itemKey: getKey,
9737
+ useScrollArea: scrollable
9738
+ }
9484
9739
  )
9740
+ ) : withScrollable(
9741
+ withSortable((0, import_noya_utils8.range)(0, data.length).map(renderWrappedChild))
9485
9742
  )
9486
9743
  )));
9487
9744
  })
@@ -9489,7 +9746,7 @@ var ListViewRoot = memoGeneric(
9489
9746
 
9490
9747
  // src/components/listView/ListViewRow.tsx
9491
9748
  var import_react_compose_refs2 = require("@radix-ui/react-compose-refs");
9492
- var import_react63 = __toESM(require("react"));
9749
+ var import_react64 = __toESM(require("react"));
9493
9750
 
9494
9751
  // src/hooks/mergeEventHandlers.ts
9495
9752
  var import_noya_utils9 = require("@noya-app/noya-utils");
@@ -9515,7 +9772,7 @@ function mergeEventHandlers(...handlerMaps) {
9515
9772
  }
9516
9773
 
9517
9774
  // src/components/listView/ListViewRow.tsx
9518
- var RowContainer = (0, import_react63.forwardRef)(
9775
+ var RowContainer = (0, import_react64.forwardRef)(
9519
9776
  ({
9520
9777
  as: Component = "div",
9521
9778
  href,
@@ -9542,7 +9799,7 @@ var RowContainer = (0, import_react63.forwardRef)(
9542
9799
  "aria-selected": ariaSelected,
9543
9800
  ...props
9544
9801
  }, ref) => {
9545
- return /* @__PURE__ */ import_react63.default.createElement(
9802
+ return /* @__PURE__ */ import_react64.default.createElement(
9546
9803
  Component,
9547
9804
  {
9548
9805
  ref,
@@ -9614,7 +9871,7 @@ var RowContainer = (0, import_react63.forwardRef)(
9614
9871
  );
9615
9872
  }
9616
9873
  );
9617
- var ListViewDragIndicatorElement = (0, import_react63.forwardRef)(
9874
+ var ListViewDragIndicatorElement = (0, import_react64.forwardRef)(
9618
9875
  ({
9619
9876
  className,
9620
9877
  $relativeDropPosition,
@@ -9624,7 +9881,7 @@ var ListViewDragIndicatorElement = (0, import_react63.forwardRef)(
9624
9881
  style: style2,
9625
9882
  ...props
9626
9883
  }, ref) => {
9627
- return /* @__PURE__ */ import_react63.default.createElement(
9884
+ return /* @__PURE__ */ import_react64.default.createElement(
9628
9885
  "div",
9629
9886
  {
9630
9887
  ref,
@@ -9692,27 +9949,27 @@ var ListViewRow = memoGeneric(
9692
9949
  divider,
9693
9950
  sortable,
9694
9951
  indentation
9695
- } = (0, import_react63.useContext)(ListViewContext);
9696
- const { marginType, selectedPosition } = (0, import_react63.useContext)(ListRowContext);
9952
+ } = (0, import_react64.useContext)(ListViewContext);
9953
+ const { marginType, selectedPosition } = (0, import_react64.useContext)(ListRowContext);
9697
9954
  const { hoverProps } = useHover({
9698
9955
  onHoverChange
9699
9956
  });
9700
- const { isDragOverlay } = (0, import_react63.useContext)(ListViewDraggingContext);
9701
- const handlePress = (0, import_react63.useCallback)(
9957
+ const { isDragOverlay } = (0, import_react64.useContext)(ListViewDraggingContext);
9958
+ const handlePress = (0, import_react64.useCallback)(
9702
9959
  (event) => {
9703
9960
  if (event.button !== 0) return;
9704
9961
  onPress?.(event);
9705
9962
  },
9706
9963
  [onPress]
9707
9964
  );
9708
- const handleDoubleClick = (0, import_react63.useCallback)(
9965
+ const handleDoubleClick = (0, import_react64.useCallback)(
9709
9966
  (event) => {
9710
9967
  event.stopPropagation();
9711
9968
  onDoubleClick?.();
9712
9969
  },
9713
9970
  [onDoubleClick]
9714
9971
  );
9715
- const mergedStyle = (0, import_react63.useMemo)(() => {
9972
+ const mergedStyle = (0, import_react64.useMemo)(() => {
9716
9973
  return isDragOverlay ? {
9717
9974
  // TODO: Where do these offsets actually come from?
9718
9975
  transform: `translate3d(-36px, -6px, 0)`,
@@ -9723,7 +9980,7 @@ var ListViewRow = memoGeneric(
9723
9980
  const renderContent = (renderProps, ref, relativeDropPositionProp) => {
9724
9981
  const Component = RowContainer;
9725
9982
  const relativeDropPosition = testRelativeDropPosition ?? relativeDropPositionProp;
9726
- const element = /* @__PURE__ */ import_react63.default.createElement(
9983
+ const element = /* @__PURE__ */ import_react64.default.createElement(
9727
9984
  Component,
9728
9985
  {
9729
9986
  as,
@@ -9758,7 +10015,7 @@ var ListViewRow = memoGeneric(
9758
10015
  className,
9759
10016
  $clickable: !!onPress
9760
10017
  },
9761
- relativeDropPosition && /* @__PURE__ */ import_react63.default.createElement(
10018
+ relativeDropPosition && /* @__PURE__ */ import_react64.default.createElement(
9762
10019
  ListViewDragIndicatorElement,
9763
10020
  {
9764
10021
  key: relativeDropPosition,
@@ -9773,11 +10030,11 @@ var ListViewRow = memoGeneric(
9773
10030
  }) : dragIndicatorStyle
9774
10031
  }
9775
10032
  ),
9776
- depth > 0 && /* @__PURE__ */ import_react63.default.createElement(Spacer.Horizontal, { size: depth * indentation }),
10033
+ depth > 0 && /* @__PURE__ */ import_react64.default.createElement(Spacer.Horizontal, { size: depth * indentation }),
9777
10034
  children
9778
10035
  );
9779
10036
  if (menuItems && onSelectMenuItem) {
9780
- return /* @__PURE__ */ import_react63.default.createElement(
10037
+ return /* @__PURE__ */ import_react64.default.createElement(
9781
10038
  ContextMenu,
9782
10039
  {
9783
10040
  items: menuItems,
@@ -9790,7 +10047,7 @@ var ListViewRow = memoGeneric(
9790
10047
  return element;
9791
10048
  };
9792
10049
  if (sortable && id) {
9793
- return /* @__PURE__ */ import_react63.default.createElement(
10050
+ return /* @__PURE__ */ import_react64.default.createElement(
9794
10051
  Sortable.Item,
9795
10052
  {
9796
10053
  id,
@@ -9808,12 +10065,12 @@ var ListViewRow = memoGeneric(
9808
10065
  );
9809
10066
 
9810
10067
  // src/components/listView/ListViewRowTitle.tsx
9811
- var import_react64 = __toESM(require("react"));
9812
- var ListViewRowTitle = (0, import_react64.memo)(function ListViewRowTitle2({
10068
+ var import_react65 = __toESM(require("react"));
10069
+ var ListViewRowTitle = (0, import_react65.memo)(function ListViewRowTitle2({
9813
10070
  className,
9814
10071
  ...props
9815
10072
  }) {
9816
- return /* @__PURE__ */ import_react64.default.createElement(
10073
+ return /* @__PURE__ */ import_react65.default.createElement(
9817
10074
  "span",
9818
10075
  {
9819
10076
  className: cx(
@@ -9870,7 +10127,7 @@ var ListView;
9870
10127
  })(ListView || (ListView = {}));
9871
10128
 
9872
10129
  // src/components/TreeView.tsx
9873
- var import_react65 = __toESM(require("react"));
10130
+ var import_react66 = __toESM(require("react"));
9874
10131
  var TreeRow = forwardRefGeneric(function TreeRow2({
9875
10132
  icon,
9876
10133
  expanded,
@@ -9881,9 +10138,9 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9881
10138
  children,
9882
10139
  ...rest
9883
10140
  }, forwardedRef) {
9884
- const { expandable } = (0, import_react65.useContext)(ListViewContext);
10141
+ const { expandable } = (0, import_react66.useContext)(ListViewContext);
9885
10142
  const stableOnClickChevron = useStableCallback(onClickChevron);
9886
- const handleClickChevron = (0, import_react65.useCallback)(
10143
+ const handleClickChevron = (0, import_react66.useCallback)(
9887
10144
  (event) => {
9888
10145
  event.stopPropagation();
9889
10146
  event.preventDefault();
@@ -9891,7 +10148,7 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9891
10148
  },
9892
10149
  [stableOnClickChevron]
9893
10150
  );
9894
- return /* @__PURE__ */ import_react65.default.createElement(ListView.Row, { ref: forwardedRef, ...rest }, expandable && chevronPosition !== "end" && /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, expanded === void 0 ? /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 19 }) : /* @__PURE__ */ import_react65.default.createElement(
10151
+ return /* @__PURE__ */ import_react66.default.createElement(ListView.Row, { ref: forwardedRef, ...rest }, expandable && chevronPosition !== "end" && /* @__PURE__ */ import_react66.default.createElement(import_react66.default.Fragment, null, expanded === void 0 ? /* @__PURE__ */ import_react66.default.createElement(Spacer.Horizontal, { size: 19 }) : /* @__PURE__ */ import_react66.default.createElement(
9895
10152
  IconButton,
9896
10153
  {
9897
10154
  as: chevronAs,
@@ -9900,7 +10157,7 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9900
10157
  onClick: handleClickChevron,
9901
10158
  selected: rest.selected
9902
10159
  }
9903
- ), /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 6 })), icon && /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, renderIcon(icon), /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 10 })), children, expandable && chevronPosition === "end" && /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 6 }), expanded === void 0 ? /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null) : /* @__PURE__ */ import_react65.default.createElement(import_react65.default.Fragment, null, /* @__PURE__ */ import_react65.default.createElement(
10160
+ ), /* @__PURE__ */ import_react66.default.createElement(Spacer.Horizontal, { size: 6 })), icon && /* @__PURE__ */ import_react66.default.createElement(import_react66.default.Fragment, null, renderIcon(icon), /* @__PURE__ */ import_react66.default.createElement(Spacer.Horizontal, { size: 10 })), children, expandable && chevronPosition === "end" && /* @__PURE__ */ import_react66.default.createElement(import_react66.default.Fragment, null, /* @__PURE__ */ import_react66.default.createElement(Spacer.Horizontal, { size: 6 }), expanded === void 0 ? /* @__PURE__ */ import_react66.default.createElement(import_react66.default.Fragment, null) : /* @__PURE__ */ import_react66.default.createElement(import_react66.default.Fragment, null, /* @__PURE__ */ import_react66.default.createElement(
9904
10161
  IconButton,
9905
10162
  {
9906
10163
  as: chevronAs,
@@ -9909,7 +10166,7 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9909
10166
  onClick: handleClickChevron,
9910
10167
  selected: rest.selected
9911
10168
  }
9912
- ), /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 8 }))));
10169
+ ), /* @__PURE__ */ import_react66.default.createElement(Spacer.Horizontal, { size: 8 }))));
9913
10170
  });
9914
10171
  var TreeView;
9915
10172
  ((TreeView2) => {
@@ -9977,9 +10234,9 @@ var List = memoGeneric(
9977
10234
  getItemStyle,
9978
10235
  getItemClassName
9979
10236
  } = props;
9980
- const [internalHoveredId, setHoveredId] = (0, import_react66.useState)();
9981
- const [internalRenamingId, setRenamingId] = (0, import_react66.useState)();
9982
- const [dropdownOpenId, setDropdownOpenId] = (0, import_react66.useState)();
10237
+ const [internalHoveredId, setHoveredId] = (0, import_react67.useState)();
10238
+ const [internalRenamingId, setRenamingId] = (0, import_react67.useState)();
10239
+ const [dropdownOpenId, setDropdownOpenId] = (0, import_react67.useState)();
9983
10240
  const hoveredId = internalHoveredId ?? testHoveredId;
9984
10241
  const renamingId = testRenamingId ?? internalRenamingId;
9985
10242
  const itemClassName = cx(
@@ -9987,7 +10244,7 @@ var List = memoGeneric(
9987
10244
  pyMap[size],
9988
10245
  itemClassNameProp
9989
10246
  );
9990
- const itemStyle = (0, import_react66.useMemo)(
10247
+ const itemStyle = (0, import_react67.useMemo)(
9991
10248
  () => ({ ...cssVarOverrides, ...itemStyleProp }),
9992
10249
  [itemStyleProp]
9993
10250
  );
@@ -10015,17 +10272,17 @@ var List = memoGeneric(
10015
10272
  };
10016
10273
  const ViewComponent = expandable ? TreeView : ListView;
10017
10274
  const LinkComponent2 = useLinkComponent();
10018
- const fileDropTargetRef = (0, import_react66.useRef)(null);
10275
+ const fileDropTargetRef = (0, import_react67.useRef)(null);
10019
10276
  const { isDropTargetActive, dropTargetProps } = useFileDropTarget(
10020
10277
  fileDropTargetRef,
10021
10278
  onFilesDrop
10022
10279
  );
10023
- (0, import_react66.useImperativeHandle)(ref, () => ({
10280
+ (0, import_react67.useImperativeHandle)(ref, () => ({
10024
10281
  editName: (id) => {
10025
10282
  setRenamingId(id);
10026
10283
  }
10027
10284
  }));
10028
- return /* @__PURE__ */ import_react66.default.createElement(
10285
+ return /* @__PURE__ */ import_react67.default.createElement(
10029
10286
  ViewComponent.Root,
10030
10287
  {
10031
10288
  variant: "bare",
@@ -10074,7 +10331,7 @@ var List = memoGeneric(
10074
10331
  handleSelect(id);
10075
10332
  }
10076
10333
  };
10077
- const action = (isHovered || isSelected) && !isRenaming && (typeof renderAction === "function" ? renderAction({ item, selected: isSelected, onOpenChange }) : renderAction === "menu" && menuItems && /* @__PURE__ */ import_react66.default.createElement(
10334
+ const action = (isHovered || isSelected) && !isRenaming && (typeof renderAction === "function" ? renderAction({ item, selected: isSelected, onOpenChange }) : renderAction === "menu" && menuItems && /* @__PURE__ */ import_react67.default.createElement(
10078
10335
  ActionMenu,
10079
10336
  {
10080
10337
  menuItems,
@@ -10094,7 +10351,7 @@ var List = memoGeneric(
10094
10351
  let below = detailPosition === "below" ? detailContent : void 0;
10095
10352
  if (below && normalizedDetailLineClamp) {
10096
10353
  const clampClassName = DETAIL_LINE_CLAMP_CLASSES[normalizedDetailLineClamp];
10097
- below = /* @__PURE__ */ import_react66.default.createElement(
10354
+ below = /* @__PURE__ */ import_react67.default.createElement(
10098
10355
  "div",
10099
10356
  {
10100
10357
  className: cx(
@@ -10107,7 +10364,7 @@ var List = memoGeneric(
10107
10364
  }
10108
10365
  const perItemStyle = getItemStyle?.(item, isSelected);
10109
10366
  const perItemClassName = getItemClassName?.(item, isSelected);
10110
- return /* @__PURE__ */ import_react66.default.createElement(
10367
+ return /* @__PURE__ */ import_react67.default.createElement(
10111
10368
  ViewComponent.Row,
10112
10369
  {
10113
10370
  as: typeof href === "string" ? LinkComponent2 : void 0,
@@ -10162,7 +10419,7 @@ var List = memoGeneric(
10162
10419
  },
10163
10420
  dragIndicatorStyle
10164
10421
  },
10165
- /* @__PURE__ */ import_react66.default.createElement(
10422
+ /* @__PURE__ */ import_react67.default.createElement(
10166
10423
  "div",
10167
10424
  {
10168
10425
  className: cx(
@@ -10170,7 +10427,7 @@ var List = memoGeneric(
10170
10427
  rowGapMap[size]
10171
10428
  )
10172
10429
  },
10173
- thumbnail && /* @__PURE__ */ import_react66.default.createElement(
10430
+ thumbnail && /* @__PURE__ */ import_react67.default.createElement(
10174
10431
  "div",
10175
10432
  {
10176
10433
  className: cx(
@@ -10183,13 +10440,13 @@ var List = memoGeneric(
10183
10440
  },
10184
10441
  thumbnail
10185
10442
  ),
10186
- /* @__PURE__ */ import_react66.default.createElement("div", { className: "n-flex n-flex-col n-flex-1 n-w-0" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "n-flex n-items-center n-min-h-input-height n-flex-1 n-gap-2" }, /* @__PURE__ */ import_react66.default.createElement(
10443
+ /* @__PURE__ */ import_react67.default.createElement("div", { className: "n-flex n-flex-col n-flex-1 n-w-0" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "n-flex n-items-center n-min-h-input-height n-flex-1 n-gap-2" }, /* @__PURE__ */ import_react67.default.createElement(
10187
10444
  "div",
10188
10445
  {
10189
10446
  className: "n-flex-1 n-w-0 n-flex n-items-center",
10190
10447
  tabIndex: -1
10191
10448
  },
10192
- isRenaming ? /* @__PURE__ */ import_react66.default.createElement(
10449
+ isRenaming ? /* @__PURE__ */ import_react67.default.createElement(
10193
10450
  ViewComponent.EditableRowTitle,
10194
10451
  {
10195
10452
  value: getName(item),
@@ -10205,7 +10462,7 @@ var List = memoGeneric(
10205
10462
  e.stopPropagation();
10206
10463
  }
10207
10464
  }
10208
- ) : /* @__PURE__ */ import_react66.default.createElement(
10465
+ ) : /* @__PURE__ */ import_react67.default.createElement(
10209
10466
  ViewComponent.RowTitle,
10210
10467
  {
10211
10468
  className: cx(
@@ -10215,7 +10472,7 @@ var List = memoGeneric(
10215
10472
  },
10216
10473
  getName(item)
10217
10474
  )
10218
- ), right && detailPosition === "end" && /* @__PURE__ */ import_react66.default.createElement(DetailContainer, { selected: isSelected }, right), end && detailPosition === "end" && /* @__PURE__ */ import_react66.default.createElement(DetailContainer, { selected: isSelected }, end)), below && /* @__PURE__ */ import_react66.default.createElement(
10475
+ ), right && detailPosition === "end" && /* @__PURE__ */ import_react67.default.createElement(DetailContainer, { selected: isSelected }, right), end && detailPosition === "end" && /* @__PURE__ */ import_react67.default.createElement(DetailContainer, { selected: isSelected }, end)), below && /* @__PURE__ */ import_react67.default.createElement(
10219
10476
  DetailContainer,
10220
10477
  {
10221
10478
  selected: isSelected,
@@ -10223,8 +10480,8 @@ var List = memoGeneric(
10223
10480
  },
10224
10481
  below
10225
10482
  )),
10226
- right && detailPosition === "below" && /* @__PURE__ */ import_react66.default.createElement(DetailContainer, { selected: isSelected }, right),
10227
- end && detailPosition === "below" && /* @__PURE__ */ import_react66.default.createElement(DetailContainer, { selected: isSelected }, end)
10483
+ right && detailPosition === "below" && /* @__PURE__ */ import_react67.default.createElement(DetailContainer, { selected: isSelected }, right),
10484
+ end && detailPosition === "below" && /* @__PURE__ */ import_react67.default.createElement(DetailContainer, { selected: isSelected }, end)
10228
10485
  )
10229
10486
  );
10230
10487
  }
@@ -10232,12 +10489,12 @@ var List = memoGeneric(
10232
10489
  );
10233
10490
  })
10234
10491
  );
10235
- var DetailContainer = (0, import_react66.memo)(function DetailContainer2({
10492
+ var DetailContainer = (0, import_react67.memo)(function DetailContainer2({
10236
10493
  children,
10237
10494
  selected,
10238
10495
  align = "center"
10239
10496
  }) {
10240
- return /* @__PURE__ */ import_react66.default.createElement(
10497
+ return /* @__PURE__ */ import_react67.default.createElement(
10241
10498
  "div",
10242
10499
  {
10243
10500
  className: cx(
@@ -10308,7 +10565,7 @@ var itemHeightMap = {
10308
10565
  // src/components/Collection.tsx
10309
10566
  var Collection = forwardRefGeneric(function Collection2(props, ref) {
10310
10567
  const { viewType, ...rest } = props;
10311
- return viewType === "grid" ? /* @__PURE__ */ import_react67.default.createElement(Grid, { ref, ...rest }) : /* @__PURE__ */ import_react67.default.createElement(List, { ref, ...rest });
10568
+ return viewType === "grid" ? /* @__PURE__ */ import_react68.default.createElement(Grid, { ref, ...rest }) : /* @__PURE__ */ import_react68.default.createElement(List, { ref, ...rest });
10312
10569
  });
10313
10570
 
10314
10571
  // ../noya-color/src/convert.ts
@@ -10465,7 +10722,7 @@ var import_css_background = __toESM(require_css_background());
10465
10722
 
10466
10723
  // src/components/ColorSwatch.tsx
10467
10724
  var import_noya_icons6 = require("@noya-app/noya-icons");
10468
- var import_react68 = __toESM(require("react"));
10725
+ var import_react69 = __toESM(require("react"));
10469
10726
  var colorSwatchSizeMap = {
10470
10727
  xxsmall: 15,
10471
10728
  xsmall: 21,
@@ -10473,7 +10730,7 @@ var colorSwatchSizeMap = {
10473
10730
  medium: 36,
10474
10731
  large: 48
10475
10732
  };
10476
- var ColorSwatch = (0, import_react68.forwardRef)(function ColorSwatch2({
10733
+ var ColorSwatch = (0, import_react69.forwardRef)(function ColorSwatch2({
10477
10734
  color,
10478
10735
  size = "small",
10479
10736
  checked,
@@ -10483,7 +10740,7 @@ var ColorSwatch = (0, import_react68.forwardRef)(function ColorSwatch2({
10483
10740
  }, ref) {
10484
10741
  const sizePx = colorSwatchSizeMap[size];
10485
10742
  const checkedColor = getContrastColorForBackground(color);
10486
- return /* @__PURE__ */ import_react68.default.createElement("div", { className: "n-relative", style: { width: sizePx, height: sizePx } }, /* @__PURE__ */ import_react68.default.createElement(
10743
+ return /* @__PURE__ */ import_react69.default.createElement("div", { className: "n-relative", style: { width: sizePx, height: sizePx } }, /* @__PURE__ */ import_react69.default.createElement(
10487
10744
  Component,
10488
10745
  {
10489
10746
  ...props,
@@ -10499,7 +10756,7 @@ var ColorSwatch = (0, import_react68.forwardRef)(function ColorSwatch2({
10499
10756
  ...style2
10500
10757
  }
10501
10758
  }
10502
- ), checked && /* @__PURE__ */ import_react68.default.createElement(
10759
+ ), checked && /* @__PURE__ */ import_react69.default.createElement(
10503
10760
  import_noya_icons6.CheckIcon,
10504
10761
  {
10505
10762
  color: checkedColor,
@@ -10510,7 +10767,7 @@ var ColorSwatch = (0, import_react68.forwardRef)(function ColorSwatch2({
10510
10767
 
10511
10768
  // src/components/ColorSwatchControl.tsx
10512
10769
  var import_radix_ui9 = require("radix-ui");
10513
- var import_react69 = __toESM(require("react"));
10770
+ var import_react70 = __toESM(require("react"));
10514
10771
  function ColorSwatchControl(props) {
10515
10772
  const {
10516
10773
  options,
@@ -10525,7 +10782,7 @@ function ColorSwatchControl(props) {
10525
10782
  id,
10526
10783
  style: style2
10527
10784
  } = props;
10528
- const styles3 = (0, import_react69.useMemo)(() => {
10785
+ const styles3 = (0, import_react70.useMemo)(() => {
10529
10786
  return {
10530
10787
  display: "grid",
10531
10788
  gridTemplateColumns: `repeat(auto-fill, minmax(${colorSwatchSizeMap[size]}px, 1fr))`,
@@ -10533,8 +10790,8 @@ function ColorSwatchControl(props) {
10533
10790
  ...style2
10534
10791
  };
10535
10792
  }, [size, style2]);
10536
- const content = /* @__PURE__ */ import_react69.default.createElement("div", { className, id, style: styles3 }, options.map((option) => {
10537
- const item = /* @__PURE__ */ import_react69.default.createElement(
10793
+ const content = /* @__PURE__ */ import_react70.default.createElement("div", { className, id, style: styles3 }, options.map((option) => {
10794
+ const item = /* @__PURE__ */ import_react70.default.createElement(
10538
10795
  ColorSwatch,
10539
10796
  {
10540
10797
  key: `${option}-color-swatch`,
@@ -10547,7 +10804,7 @@ function ColorSwatchControl(props) {
10547
10804
  checked: value === option
10548
10805
  }
10549
10806
  );
10550
- return /* @__PURE__ */ import_react69.default.createElement(
10807
+ return /* @__PURE__ */ import_react70.default.createElement(
10551
10808
  import_radix_ui9.ToggleGroup.Item,
10552
10809
  {
10553
10810
  asChild: true,
@@ -10558,7 +10815,7 @@ function ColorSwatchControl(props) {
10558
10815
  item
10559
10816
  );
10560
10817
  }));
10561
- return /* @__PURE__ */ import_react69.default.createElement(
10818
+ return /* @__PURE__ */ import_react70.default.createElement(
10562
10819
  import_radix_ui9.ToggleGroup.Root,
10563
10820
  {
10564
10821
  type: "single",
@@ -10573,11 +10830,11 @@ function ColorSwatchControl(props) {
10573
10830
 
10574
10831
  // src/components/Combobox.tsx
10575
10832
  var import_noya_icons8 = require("@noya-app/noya-icons");
10576
- var import_react72 = __toESM(require("react"));
10833
+ var import_react73 = __toESM(require("react"));
10577
10834
 
10578
10835
  // src/utils/combobox.ts
10579
10836
  var import_noya_utils13 = require("@noya-app/noya-utils");
10580
- var import_react70 = __toESM(require("react"));
10837
+ var import_react71 = __toESM(require("react"));
10581
10838
 
10582
10839
  // src/utils/fuzzyScorer.ts
10583
10840
  var import_vscode_fuzzy_scorer = require("vscode-fuzzy-scorer");
@@ -10903,7 +11160,7 @@ function getNextIndex({
10903
11160
  return nextIndex;
10904
11161
  }
10905
11162
  function useComboboxState(state) {
10906
- return (0, import_react70.useSyncExternalStore)(
11163
+ return (0, import_react71.useSyncExternalStore)(
10907
11164
  state.subscribe,
10908
11165
  state.getSnapshot,
10909
11166
  state.getSnapshot
@@ -10914,7 +11171,7 @@ function getNodeText(node) {
10914
11171
  return "";
10915
11172
  if (typeof node === "string" || typeof node === "number") return String(node);
10916
11173
  if (Array.isArray(node)) return node.map(getNodeText).join("");
10917
- if (import_react70.default.isValidElement(node)) {
11174
+ if (import_react71.default.isValidElement(node)) {
10918
11175
  return getNodeText(node.props?.children);
10919
11176
  }
10920
11177
  return "";
@@ -10922,7 +11179,7 @@ function getNodeText(node) {
10922
11179
 
10923
11180
  // src/components/ComboboxMenu.tsx
10924
11181
  var import_noya_icons7 = require("@noya-app/noya-icons");
10925
- var import_react71 = __toESM(require("react"));
11182
+ var import_react72 = __toESM(require("react"));
10926
11183
  var ComboboxMenu = memoGeneric(
10927
11184
  forwardRefGeneric(function ComboboxMenu2({
10928
11185
  items,
@@ -10936,7 +11193,7 @@ var ComboboxMenu = memoGeneric(
10936
11193
  itemHeight,
10937
11194
  getRowHeightForItem
10938
11195
  }, forwardedRef) {
10939
- return /* @__PURE__ */ import_react71.default.createElement(
11196
+ return /* @__PURE__ */ import_react72.default.createElement(
10940
11197
  ListView.Root,
10941
11198
  {
10942
11199
  ref: forwardedRef,
@@ -10946,7 +11203,7 @@ var ComboboxMenu = memoGeneric(
10946
11203
  return item.value;
10947
11204
  },
10948
11205
  data: items,
10949
- virtualized: listSize,
11206
+ virtualized: listSize.height,
10950
11207
  ...itemHeight ? { itemHeight } : {},
10951
11208
  ...getRowHeightForItem ? { getItemHeightForItem: getRowHeightForItem } : {},
10952
11209
  pressEventName: "onPointerDown",
@@ -10954,7 +11211,7 @@ var ComboboxMenu = memoGeneric(
10954
11211
  style: style2,
10955
11212
  renderItem: (item, i) => {
10956
11213
  if (item.type === "sectionHeader") {
10957
- return /* @__PURE__ */ import_react71.default.createElement(ListView.Row, { key: item.id, isSectionHeader: true }, indented && /* @__PURE__ */ import_react71.default.createElement(
11214
+ return /* @__PURE__ */ import_react72.default.createElement(ListView.Row, { key: item.id, isSectionHeader: true }, indented && /* @__PURE__ */ import_react72.default.createElement(
10958
11215
  Spacer.Horizontal,
10959
11216
  {
10960
11217
  size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET + CHECKBOX_INDENT_WIDTH
@@ -10969,7 +11226,7 @@ var ComboboxMenu = memoGeneric(
10969
11226
  // Only selectable items can have tooltips in this menu
10970
11227
  isSelectableMenuItem(item) ? item.tooltip : void 0
10971
11228
  );
10972
- return /* @__PURE__ */ import_react71.default.createElement(
11229
+ return /* @__PURE__ */ import_react72.default.createElement(
10973
11230
  ListView.Row,
10974
11231
  {
10975
11232
  key: item.value,
@@ -10982,12 +11239,12 @@ var ComboboxMenu = memoGeneric(
10982
11239
  }
10983
11240
  }
10984
11241
  },
10985
- /* @__PURE__ */ import_react71.default.createElement("div", { className: "n-flex n-flex-1 n-min-w-0 n-items-start" }, indented && /* @__PURE__ */ import_react71.default.createElement(Spacer.Horizontal, { size: CHECKBOX_INDENT_WIDTH }), item.checked ? /* @__PURE__ */ import_react71.default.createElement("div", { ...styles.itemIndicator }, /* @__PURE__ */ import_react71.default.createElement(import_noya_icons7.CheckIcon, null)) : indented ? /* @__PURE__ */ import_react71.default.createElement(
11242
+ /* @__PURE__ */ import_react72.default.createElement("div", { className: "n-flex n-flex-1 n-min-w-0 n-items-start" }, indented && /* @__PURE__ */ import_react72.default.createElement(Spacer.Horizontal, { size: CHECKBOX_INDENT_WIDTH }), item.checked ? /* @__PURE__ */ import_react72.default.createElement("div", { ...styles.itemIndicator }, /* @__PURE__ */ import_react72.default.createElement(import_noya_icons7.CheckIcon, null)) : indented ? /* @__PURE__ */ import_react72.default.createElement(
10986
11243
  Spacer.Horizontal,
10987
11244
  {
10988
11245
  size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET
10989
11246
  }
10990
- ) : null, iconPosition === "left" && item.icon && /* @__PURE__ */ import_react71.default.createElement(import_react71.default.Fragment, null, /* @__PURE__ */ import_react71.default.createElement(MenuIcon, { icon: item.icon }), /* @__PURE__ */ import_react71.default.createElement(Spacer.Horizontal, { size: 8 })), /* @__PURE__ */ import_react71.default.createElement("div", { className: "n-flex n-flex-col n-min-w-0 n-flex-1" }, /* @__PURE__ */ import_react71.default.createElement("div", { className: "n-min-w-0 n-truncate" }, tokens.map((token, j) => /* @__PURE__ */ import_react71.default.createElement(
11247
+ ) : null, iconPosition === "left" && item.icon && /* @__PURE__ */ import_react72.default.createElement(import_react72.default.Fragment, null, /* @__PURE__ */ import_react72.default.createElement(MenuIcon, { icon: item.icon }), /* @__PURE__ */ import_react72.default.createElement(Spacer.Horizontal, { size: 8 })), /* @__PURE__ */ import_react72.default.createElement("div", { className: "n-flex n-flex-col n-min-w-0 n-flex-1" }, /* @__PURE__ */ import_react72.default.createElement("div", { className: "n-min-w-0 n-truncate" }, tokens.map((token, j) => /* @__PURE__ */ import_react72.default.createElement(
10991
11248
  "span",
10992
11249
  {
10993
11250
  key: `${item.value}-token-${j}`,
@@ -10997,16 +11254,16 @@ var ComboboxMenu = memoGeneric(
10997
11254
  )
10998
11255
  },
10999
11256
  token.text
11000
- ))), tooltip && /* @__PURE__ */ import_react71.default.createElement(Small, { color: "textSubtle", className: "n-truncate" }, tooltip))),
11001
- (item.shortcut || item.icon && iconPosition === "right") && /* @__PURE__ */ import_react71.default.createElement("div", { className: "n-flex n-items-center n-min-w-0 n-ml-2" }, item.shortcut ? /* @__PURE__ */ import_react71.default.createElement(KeyboardShortcut, { shortcut: item.shortcut }) : item.icon && /* @__PURE__ */ import_react71.default.createElement(MenuIcon, { icon: item.icon }))
11257
+ ))), tooltip && /* @__PURE__ */ import_react72.default.createElement(Small, { color: "textSubtle", className: "n-truncate" }, tooltip))),
11258
+ (item.shortcut || item.icon && iconPosition === "right") && /* @__PURE__ */ import_react72.default.createElement("div", { className: "n-flex n-items-center n-min-w-0 n-ml-2" }, item.shortcut ? /* @__PURE__ */ import_react72.default.createElement(KeyboardShortcut, { shortcut: item.shortcut }) : item.icon && /* @__PURE__ */ import_react72.default.createElement(MenuIcon, { icon: item.icon }))
11002
11259
  );
11003
11260
  }
11004
11261
  }
11005
11262
  );
11006
11263
  })
11007
11264
  );
11008
- var MenuIcon = (0, import_react71.memo)(function MenuIcon2({ icon }) {
11009
- return /* @__PURE__ */ import_react71.default.createElement("div", { className: "n-relative n-top-[2px]" }, renderIcon(icon));
11265
+ var MenuIcon = (0, import_react72.memo)(function MenuIcon2({ icon }) {
11266
+ return /* @__PURE__ */ import_react72.default.createElement("div", { className: "n-relative n-top-[2px]" }, renderIcon(icon));
11010
11267
  });
11011
11268
 
11012
11269
  // src/components/Combobox.tsx
@@ -11027,9 +11284,10 @@ var Combobox = memoGeneric(
11027
11284
  openMenuBehavior = "showFilteredItems",
11028
11285
  onFocus,
11029
11286
  onDeleteWhenEmpty,
11287
+ iconPosition = "right",
11030
11288
  ...rest
11031
11289
  }, forwardedRef) {
11032
- const props = (0, import_react72.useMemo)(() => {
11290
+ const props = (0, import_react73.useMemo)(() => {
11033
11291
  if (rest.mode === "string") {
11034
11292
  return {
11035
11293
  mode: rest.mode,
@@ -11059,7 +11317,7 @@ var Combobox = memoGeneric(
11059
11317
  rest.onBlur,
11060
11318
  rest.allowArbitraryValues
11061
11319
  ]);
11062
- const ref = (0, import_react72.useRef)(null);
11320
+ const ref = (0, import_react73.useRef)(null);
11063
11321
  function getInitialValueString() {
11064
11322
  if (props.mode === "string") {
11065
11323
  return props.value ?? "";
@@ -11068,7 +11326,7 @@ var Combobox = memoGeneric(
11068
11326
  }
11069
11327
  }
11070
11328
  const initialValueString = getInitialValueString();
11071
- const [comboboxState] = (0, import_react72.useState)(
11329
+ const [comboboxState] = (0, import_react73.useState)(
11072
11330
  () => new ComboboxState(
11073
11331
  items,
11074
11332
  initialValueString,
@@ -11076,26 +11334,26 @@ var Combobox = memoGeneric(
11076
11334
  )
11077
11335
  );
11078
11336
  const state = useComboboxState(comboboxState);
11079
- const [isFocused, setIsFocused] = (0, import_react72.useState)(false);
11080
- const listRef = (0, import_react72.useRef)(null);
11081
- const [shouldBlur, setShouldBlur] = (0, import_react72.useState)(false);
11337
+ const [isFocused, setIsFocused] = (0, import_react73.useState)(false);
11338
+ const listRef = (0, import_react73.useRef)(null);
11339
+ const [shouldBlur, setShouldBlur] = (0, import_react73.useState)(false);
11082
11340
  const { fieldId: id } = useLabel({
11083
11341
  fieldId: rest.id
11084
11342
  });
11085
- (0, import_react72.useEffect)(() => {
11343
+ (0, import_react73.useEffect)(() => {
11086
11344
  comboboxState.setItems(items);
11087
11345
  }, [items, comboboxState]);
11088
- (0, import_react72.useEffect)(() => {
11346
+ (0, import_react73.useEffect)(() => {
11089
11347
  comboboxState.setFilter(initialValueString);
11090
11348
  }, [comboboxState, initialValueString]);
11091
11349
  const { filter, selectedIndex, filteredItems } = state;
11092
11350
  const shouldShowMenu = isFocused && !(hideMenuWhenEmptyValue && filter === "");
11093
- (0, import_react72.useEffect)(() => {
11351
+ (0, import_react73.useEffect)(() => {
11094
11352
  if (listRef.current) {
11095
11353
  listRef.current.scrollToIndex(selectedIndex);
11096
11354
  }
11097
11355
  }, [selectedIndex]);
11098
- const handleBlur = (0, import_react72.useCallback)(() => {
11356
+ const handleBlur = (0, import_react73.useCallback)(() => {
11099
11357
  ref.current?.blur();
11100
11358
  comboboxState.reset(initialValueString);
11101
11359
  if (props.mode === "string") {
@@ -11114,7 +11372,7 @@ var Combobox = memoGeneric(
11114
11372
  }
11115
11373
  setIsFocused(false);
11116
11374
  }, [filter, initialValueString, props, state, comboboxState]);
11117
- const handleFocus = (0, import_react72.useCallback)(
11375
+ const handleFocus = (0, import_react73.useCallback)(
11118
11376
  (event) => {
11119
11377
  setIsFocused(true);
11120
11378
  comboboxState.reset(
@@ -11128,7 +11386,7 @@ var Combobox = memoGeneric(
11128
11386
  },
11129
11387
  [initialValueString, onFocus, openMenuBehavior, comboboxState]
11130
11388
  );
11131
- const handleUpdateSelection = (0, import_react72.useCallback)(
11389
+ const handleUpdateSelection = (0, import_react73.useCallback)(
11132
11390
  (item) => {
11133
11391
  if (item.type !== void 0) return;
11134
11392
  const selectedItem = comboboxState.selectCurrentItem(item);
@@ -11144,7 +11402,7 @@ var Combobox = memoGeneric(
11144
11402
  },
11145
11403
  [props, comboboxState]
11146
11404
  );
11147
- const handleIndexChange = (0, import_react72.useCallback)(
11405
+ const handleIndexChange = (0, import_react73.useCallback)(
11148
11406
  (index) => {
11149
11407
  comboboxState.setSelectedIndex(index);
11150
11408
  const item = comboboxState.getSelectedItem();
@@ -11160,7 +11418,7 @@ var Combobox = memoGeneric(
11160
11418
  },
11161
11419
  [props, comboboxState]
11162
11420
  );
11163
- const handleChange = (0, import_react72.useCallback)(
11421
+ const handleChange = (0, import_react73.useCallback)(
11164
11422
  (value) => {
11165
11423
  if (readOnly) return;
11166
11424
  comboboxState.setFilter(value);
@@ -11175,7 +11433,7 @@ var Combobox = memoGeneric(
11175
11433
  },
11176
11434
  [readOnly, props, comboboxState]
11177
11435
  );
11178
- const handleKeyDown = (0, import_react72.useCallback)(
11436
+ const handleKeyDown = (0, import_react73.useCallback)(
11179
11437
  (event) => {
11180
11438
  let handled = false;
11181
11439
  const item = comboboxState.getSelectedItem();
@@ -11264,7 +11522,7 @@ var Combobox = memoGeneric(
11264
11522
  ]
11265
11523
  );
11266
11524
  const typeaheadValue = comboboxState.getTypeaheadValue();
11267
- (0, import_react72.useImperativeHandle)(forwardedRef, () => ({
11525
+ (0, import_react73.useImperativeHandle)(forwardedRef, () => ({
11268
11526
  focus: () => {
11269
11527
  ref.current?.focus();
11270
11528
  if (ref.current) {
@@ -11283,7 +11541,7 @@ var Combobox = memoGeneric(
11283
11541
  ref.current?.setSelectionRange(0, ref.current.value.length);
11284
11542
  }
11285
11543
  }));
11286
- const handleChevronClick = (0, import_react72.useCallback)(
11544
+ const handleChevronClick = (0, import_react73.useCallback)(
11287
11545
  (event) => {
11288
11546
  event.stopPropagation();
11289
11547
  if (shouldShowMenu) {
@@ -11303,34 +11561,34 @@ var Combobox = memoGeneric(
11303
11561
  comboboxState
11304
11562
  ]
11305
11563
  );
11306
- (0, import_react72.useEffect)(() => {
11564
+ (0, import_react73.useEffect)(() => {
11307
11565
  if (!shouldBlur) return;
11308
11566
  if (document.activeElement !== ref.current) return;
11309
11567
  setShouldBlur(false);
11310
11568
  ref.current?.focus();
11311
11569
  handleBlur();
11312
11570
  }, [shouldBlur, handleBlur]);
11313
- const { sectionHeaderCount, menuItemsCount, tallMenuItemsCount } = (0, import_react72.useMemo)(
11571
+ const { sectionHeaderCount, menuItemsCount, tallMenuItemsCount } = (0, import_react73.useMemo)(
11314
11572
  () => ListView.getMenuMetrics(filteredItems),
11315
11573
  [filteredItems]
11316
11574
  );
11317
11575
  const hasCheckedItems = items.some(
11318
11576
  (item) => isSelectableMenuItem(item) && item.checked
11319
11577
  );
11320
- return /* @__PURE__ */ import_react72.default.createElement(
11578
+ return /* @__PURE__ */ import_react73.default.createElement(
11321
11579
  InputField2.Root,
11322
11580
  {
11323
11581
  id,
11324
11582
  size,
11325
11583
  sideOffset: 6,
11326
11584
  start: icon ? renderIcon(icon) : void 0,
11327
- end: /* @__PURE__ */ import_react72.default.createElement(import_react72.default.Fragment, null, loading && /* @__PURE__ */ import_react72.default.createElement("div", { className: "pr-1.5" }, /* @__PURE__ */ import_react72.default.createElement(ActivityIndicator, null)), !readOnly && /* @__PURE__ */ import_react72.default.createElement(
11585
+ end: /* @__PURE__ */ import_react73.default.createElement(import_react73.default.Fragment, null, loading && /* @__PURE__ */ import_react73.default.createElement("div", { className: "pr-1.5" }, /* @__PURE__ */ import_react73.default.createElement(ActivityIndicator, null)), !readOnly && /* @__PURE__ */ import_react73.default.createElement(
11328
11586
  InputField2.Button,
11329
11587
  {
11330
11588
  variant: "floating",
11331
11589
  onClick: handleChevronClick
11332
11590
  },
11333
- /* @__PURE__ */ import_react72.default.createElement(
11591
+ /* @__PURE__ */ import_react73.default.createElement(
11334
11592
  import_noya_icons8.DropdownChevronIcon,
11335
11593
  {
11336
11594
  className: cx(
@@ -11350,7 +11608,7 @@ var Combobox = memoGeneric(
11350
11608
  maxBaseRows: 10.5
11351
11609
  });
11352
11610
  const adjustedListSize = { width, height: computedHeight };
11353
- return /* @__PURE__ */ import_react72.default.createElement(
11611
+ return /* @__PURE__ */ import_react73.default.createElement(
11354
11612
  "div",
11355
11613
  {
11356
11614
  className: cx(
@@ -11358,7 +11616,7 @@ var Combobox = memoGeneric(
11358
11616
  shouldShowMenu && !readOnly ? "n-flex" : "n-hidden"
11359
11617
  )
11360
11618
  },
11361
- filteredItems.length > 0 && !loading ? /* @__PURE__ */ import_react72.default.createElement(
11619
+ filteredItems.length > 0 && !loading ? /* @__PURE__ */ import_react73.default.createElement(
11362
11620
  ComboboxMenu,
11363
11621
  {
11364
11622
  ref: listRef,
@@ -11367,6 +11625,7 @@ var Combobox = memoGeneric(
11367
11625
  onSelectItem: handleUpdateSelection,
11368
11626
  onHoverIndex: handleIndexChange,
11369
11627
  listSize: adjustedListSize,
11628
+ iconPosition,
11370
11629
  style: {
11371
11630
  flex: `0 0 ${computedHeight}px`
11372
11631
  },
@@ -11375,11 +11634,11 @@ var Combobox = memoGeneric(
11375
11634
  getRowHeightForItem: (item) => isSelectableMenuItem(item) && item.tooltip ? ListView.tallRowHeight : baseRowHeight
11376
11635
  } : { itemHeight: baseRowHeight }
11377
11636
  }
11378
- ) : /* @__PURE__ */ import_react72.default.createElement("div", { className: "n-flex n-flex-col n-h-[50px] n-p-5 n-items-center n-justify-center" }, /* @__PURE__ */ import_react72.default.createElement(Small, { className: "n-text-text-disabled" }, loading ? "Loading..." : "No results"))
11637
+ ) : /* @__PURE__ */ import_react73.default.createElement("div", { className: "n-flex n-flex-col n-h-[50px] n-p-5 n-items-center n-justify-center" }, /* @__PURE__ */ import_react73.default.createElement(Small, { className: "n-text-text-disabled" }, loading ? "Loading..." : "No results"))
11379
11638
  );
11380
11639
  }
11381
11640
  },
11382
- /* @__PURE__ */ import_react72.default.createElement(
11641
+ /* @__PURE__ */ import_react73.default.createElement(
11383
11642
  InputField2.Input,
11384
11643
  {
11385
11644
  ref,
@@ -11404,7 +11663,7 @@ var Combobox = memoGeneric(
11404
11663
  ...readOnly ? { readOnly: true } : {}
11405
11664
  }
11406
11665
  ),
11407
- filter && typeaheadValue && typeaheadValue.toLowerCase().startsWith(filter.toLowerCase()) && /* @__PURE__ */ import_react72.default.createElement(
11666
+ filter && typeaheadValue && typeaheadValue.toLowerCase().startsWith(filter.toLowerCase()) && /* @__PURE__ */ import_react73.default.createElement(
11408
11667
  InputField2.Typeahead,
11409
11668
  {
11410
11669
  value: typeaheadValue,
@@ -11418,12 +11677,12 @@ var Combobox = memoGeneric(
11418
11677
  );
11419
11678
 
11420
11679
  // src/components/CommandPalette.tsx
11421
- var import_react74 = __toESM(require("react"));
11680
+ var import_react75 = __toESM(require("react"));
11422
11681
 
11423
11682
  // src/components/SearchCompletionMenu.tsx
11424
11683
  var import_noya_keymap5 = require("@noya-app/noya-keymap");
11425
- var import_react73 = __toESM(require("react"));
11426
- var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchCompletionMenu2({
11684
+ var import_react74 = __toESM(require("react"));
11685
+ var SearchCompletionMenu = (0, import_react74.forwardRef)(function SearchCompletionMenu2({
11427
11686
  onSelect,
11428
11687
  onHover,
11429
11688
  onClose,
@@ -11432,17 +11691,17 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11432
11691
  testSelectedIndex,
11433
11692
  testSearch
11434
11693
  }, forwardedRef) {
11435
- const [state, setState] = (0, import_react73.useState)({
11694
+ const [state, setState] = (0, import_react74.useState)({
11436
11695
  search: testSearch ?? "",
11437
11696
  index: 0
11438
11697
  });
11439
11698
  const { index, search } = state;
11440
- const listRef = import_react73.default.useRef(null);
11699
+ const listRef = import_react74.default.useRef(null);
11441
11700
  const hasCheckedItems = items.some((item) => item.checked);
11442
- (0, import_react73.useEffect)(() => {
11701
+ (0, import_react74.useEffect)(() => {
11443
11702
  listRef.current?.scrollToIndex(index);
11444
11703
  }, [index]);
11445
- const results = (0, import_react73.useMemo)(
11704
+ const results = (0, import_react74.useMemo)(
11446
11705
  () => fuzzyFilter({
11447
11706
  items: items.map(
11448
11707
  (item) => typeof item.title === "string" ? item.title : item.value
@@ -11454,13 +11713,13 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11454
11713
  })),
11455
11714
  [items, search]
11456
11715
  );
11457
- const setSearch = (0, import_react73.useCallback)((search2) => {
11716
+ const setSearch = (0, import_react74.useCallback)((search2) => {
11458
11717
  setState((state2) => ({ ...state2, search: search2, index: 0 }));
11459
11718
  }, []);
11460
- const setIndex = (0, import_react73.useCallback)((index2) => {
11719
+ const setIndex = (0, import_react74.useCallback)((index2) => {
11461
11720
  setState((state2) => ({ ...state2, index: index2 }));
11462
11721
  }, []);
11463
- (0, import_react73.useEffect)(() => {
11722
+ (0, import_react74.useEffect)(() => {
11464
11723
  onHover?.(results[index]);
11465
11724
  }, [index, onHover, results]);
11466
11725
  const baseRowHeight = ListView.rowHeight;
@@ -11479,14 +11738,14 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11479
11738
  width: listSize.width,
11480
11739
  height: searchHeight + listSize.height
11481
11740
  };
11482
- const selectAndClose = (0, import_react73.useCallback)(
11741
+ const selectAndClose = (0, import_react74.useCallback)(
11483
11742
  (item) => {
11484
11743
  onSelect(item);
11485
11744
  onClose();
11486
11745
  },
11487
11746
  [onSelect, onClose]
11488
11747
  );
11489
- const handleKeyDown = (0, import_react73.useCallback)(
11748
+ const handleKeyDown = (0, import_react74.useCallback)(
11490
11749
  (event) => {
11491
11750
  (0, import_noya_keymap5.handleKeyboardEvent)(event.nativeEvent, (0, import_noya_keymap5.getCurrentPlatform)(navigator), {
11492
11751
  ArrowUp: () => {
@@ -11514,13 +11773,13 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11514
11773
  },
11515
11774
  [index, onClose, selectAndClose, results, setIndex]
11516
11775
  );
11517
- const inputRef = (0, import_react73.useRef)(null);
11518
- (0, import_react73.useImperativeHandle)(forwardedRef, () => ({
11776
+ const inputRef = (0, import_react74.useRef)(null);
11777
+ (0, import_react74.useImperativeHandle)(forwardedRef, () => ({
11519
11778
  focus: () => {
11520
11779
  inputRef.current?.focus();
11521
11780
  }
11522
11781
  }));
11523
- return /* @__PURE__ */ import_react73.default.createElement("div", { ...elementSize, className: "n-flex n-flex-col n-overflow-hidden" }, /* @__PURE__ */ import_react73.default.createElement(InputField2.Root, { className: "n-flex n-flex-0" }, /* @__PURE__ */ import_react73.default.createElement(
11782
+ return /* @__PURE__ */ import_react74.default.createElement("div", { ...elementSize, className: "n-flex n-flex-col n-overflow-hidden" }, /* @__PURE__ */ import_react74.default.createElement(InputField2.Root, { className: "n-flex n-flex-0" }, /* @__PURE__ */ import_react74.default.createElement(
11524
11783
  InputField2.Input,
11525
11784
  {
11526
11785
  ref: inputRef,
@@ -11540,7 +11799,7 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11540
11799
  onChange: setSearch,
11541
11800
  onKeyDown: handleKeyDown
11542
11801
  }
11543
- )), /* @__PURE__ */ import_react73.default.createElement(Divider, null), results.length > 0 ? /* @__PURE__ */ import_react73.default.createElement(
11802
+ )), /* @__PURE__ */ import_react74.default.createElement(Divider, null), results.length > 0 ? /* @__PURE__ */ import_react74.default.createElement(
11544
11803
  ComboboxMenu,
11545
11804
  {
11546
11805
  ref: listRef,
@@ -11555,29 +11814,29 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11555
11814
  onHoverIndex: setIndex,
11556
11815
  indented: hasCheckedItems
11557
11816
  }
11558
- ) : /* @__PURE__ */ import_react73.default.createElement(
11817
+ ) : /* @__PURE__ */ import_react74.default.createElement(
11559
11818
  "div",
11560
11819
  {
11561
11820
  ...listSize,
11562
11821
  className: "n-flex n-flex-col n-p-20 n-items-center n-justify-center"
11563
11822
  },
11564
- /* @__PURE__ */ import_react73.default.createElement(Small, { color: "textDisabled" }, "No results")
11823
+ /* @__PURE__ */ import_react74.default.createElement(Small, { color: "textDisabled" }, "No results")
11565
11824
  ));
11566
11825
  });
11567
11826
 
11568
11827
  // src/components/CommandPalette.tsx
11569
- var CommandPalette = (0, import_react74.memo)(function CommandPalette2({
11828
+ var CommandPalette = (0, import_react75.memo)(function CommandPalette2({
11570
11829
  showCommandPalette,
11571
11830
  setShowCommandPalette,
11572
11831
  items,
11573
11832
  onSelect,
11574
11833
  onHover
11575
11834
  }) {
11576
- const menuRef = import_react74.default.useRef(null);
11577
- const handleClose = import_react74.default.useCallback(() => {
11835
+ const menuRef = import_react75.default.useRef(null);
11836
+ const handleClose = import_react75.default.useCallback(() => {
11578
11837
  setShowCommandPalette(false);
11579
11838
  }, [setShowCommandPalette]);
11580
- return /* @__PURE__ */ import_react74.default.createElement(
11839
+ return /* @__PURE__ */ import_react75.default.createElement(
11581
11840
  Dialog,
11582
11841
  {
11583
11842
  style: {
@@ -11603,7 +11862,7 @@ var CommandPalette = (0, import_react74.memo)(function CommandPalette2({
11603
11862
  }, 0);
11604
11863
  }
11605
11864
  },
11606
- /* @__PURE__ */ import_react74.default.createElement("div", { className: "n-flex n-flex-col n-flex-1" }, /* @__PURE__ */ import_react74.default.createElement(AutoSizer, null, (size) => /* @__PURE__ */ import_react74.default.createElement(
11865
+ /* @__PURE__ */ import_react75.default.createElement("div", { className: "n-flex n-flex-col n-flex-1" }, /* @__PURE__ */ import_react75.default.createElement(AutoSizer, null, (size) => /* @__PURE__ */ import_react75.default.createElement(
11607
11866
  SearchCompletionMenu,
11608
11867
  {
11609
11868
  ref: menuRef,
@@ -11618,21 +11877,21 @@ var CommandPalette = (0, import_react74.memo)(function CommandPalette2({
11618
11877
  });
11619
11878
 
11620
11879
  // src/components/connected-users-menu/ConnectedUsersMenuLayout.tsx
11621
- var import_react75 = __toESM(require("react"));
11622
- var UserAvatar = ({ userId, name, image }) => /* @__PURE__ */ import_react75.default.createElement(
11880
+ var import_react76 = __toESM(require("react"));
11881
+ var UserAvatar = ({ userId, name, image }) => /* @__PURE__ */ import_react76.default.createElement(
11623
11882
  Tooltip,
11624
11883
  {
11625
11884
  key: userId,
11626
- content: /* @__PURE__ */ import_react75.default.createElement("div", { className: "n-flex n-flex-col" }, /* @__PURE__ */ import_react75.default.createElement(Small, null, name))
11885
+ content: /* @__PURE__ */ import_react76.default.createElement("div", { className: "n-flex n-flex-col" }, /* @__PURE__ */ import_react76.default.createElement(Small, null, name))
11627
11886
  },
11628
- /* @__PURE__ */ import_react75.default.createElement(Avatar, { size: INPUT_HEIGHT, userId, name, image })
11887
+ /* @__PURE__ */ import_react76.default.createElement(Avatar, { size: INPUT_HEIGHT, userId, name, image })
11629
11888
  );
11630
11889
  var ConnectedUsersMenuLayout = ({
11631
11890
  renderUsers,
11632
11891
  launchAIAssistant,
11633
11892
  isAssistantOpen
11634
11893
  }) => {
11635
- return /* @__PURE__ */ import_react75.default.createElement("div", { className: "n-flex n-gap-1.5" }, /* @__PURE__ */ import_react75.default.createElement(AvatarStack, { size: INPUT_HEIGHT }, renderUsers()), launchAIAssistant && /* @__PURE__ */ import_react75.default.createElement(Tooltip, { content: "AI Assistant" }, /* @__PURE__ */ import_react75.default.createElement(
11894
+ return /* @__PURE__ */ import_react76.default.createElement("div", { className: "n-flex n-gap-1.5" }, /* @__PURE__ */ import_react76.default.createElement(AvatarStack, { size: INPUT_HEIGHT }, renderUsers()), launchAIAssistant && /* @__PURE__ */ import_react76.default.createElement(Tooltip, { content: "AI Assistant" }, /* @__PURE__ */ import_react76.default.createElement(
11636
11895
  Button,
11637
11896
  {
11638
11897
  active: isAssistantOpen,
@@ -11644,7 +11903,7 @@ var ConnectedUsersMenuLayout = ({
11644
11903
  };
11645
11904
 
11646
11905
  // src/components/DraggableMenuButton.tsx
11647
- var import_react76 = __toESM(require("react"));
11906
+ var import_react77 = __toESM(require("react"));
11648
11907
  var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11649
11908
  open: openProp,
11650
11909
  onOpenChange: onOpenChangeProp,
@@ -11662,8 +11921,8 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11662
11921
  onChange: onOpenChangeProp,
11663
11922
  defaultValue: false
11664
11923
  });
11665
- const [downPosition, setDownPosition] = (0, import_react76.useState)(null);
11666
- const handlePointerDownCapture = (0, import_react76.useCallback)(
11924
+ const [downPosition, setDownPosition] = (0, import_react77.useState)(null);
11925
+ const handlePointerDownCapture = (0, import_react77.useCallback)(
11667
11926
  (event) => {
11668
11927
  if (open) {
11669
11928
  setDownPosition(null);
@@ -11676,7 +11935,7 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11676
11935
  },
11677
11936
  [open]
11678
11937
  );
11679
- const handlePointerUp = (0, import_react76.useCallback)(
11938
+ const handlePointerUp = (0, import_react77.useCallback)(
11680
11939
  (event) => {
11681
11940
  if (open || !downPosition) {
11682
11941
  setDownPosition(null);
@@ -11695,13 +11954,13 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11695
11954
  },
11696
11955
  [downPosition, open, setOpen]
11697
11956
  );
11698
- const handleOpenChange = (0, import_react76.useCallback)(
11957
+ const handleOpenChange = (0, import_react77.useCallback)(
11699
11958
  (isOpen) => {
11700
11959
  if (!isOpen) setOpen(false);
11701
11960
  },
11702
11961
  [setOpen]
11703
11962
  );
11704
- return /* @__PURE__ */ import_react76.default.createElement(
11963
+ return /* @__PURE__ */ import_react77.default.createElement(
11705
11964
  "div",
11706
11965
  {
11707
11966
  ...rest,
@@ -11718,7 +11977,7 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11718
11977
  onClick?.();
11719
11978
  }
11720
11979
  },
11721
- items && onSelect ? /* @__PURE__ */ import_react76.default.createElement(
11980
+ items && onSelect ? /* @__PURE__ */ import_react77.default.createElement(
11722
11981
  DropdownMenu,
11723
11982
  {
11724
11983
  open,
@@ -11727,14 +11986,14 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11727
11986
  onSelect,
11728
11987
  shouldBindKeyboardShortcuts: false
11729
11988
  },
11730
- /* @__PURE__ */ import_react76.default.createElement("div", { className: "n-pointer-events-none n-h-[15px]" }, /* @__PURE__ */ import_react76.default.createElement(
11989
+ /* @__PURE__ */ import_react77.default.createElement("div", { className: "n-pointer-events-none n-h-[15px]" }, /* @__PURE__ */ import_react77.default.createElement(
11731
11990
  Icon,
11732
11991
  {
11733
11992
  name: iconName,
11734
11993
  color: isVisible || open ? cssVars.colors.icon : "transparent"
11735
11994
  }
11736
11995
  ))
11737
- ) : /* @__PURE__ */ import_react76.default.createElement(
11996
+ ) : /* @__PURE__ */ import_react77.default.createElement(
11738
11997
  Icon,
11739
11998
  {
11740
11999
  name: iconName,
@@ -11746,10 +12005,10 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11746
12005
 
11747
12006
  // src/components/Drawer.tsx
11748
12007
  var import_radix_ui10 = require("radix-ui");
11749
- var React71 = __toESM(require("react"));
11750
- var import_react77 = require("react");
11751
- var Drawer = React71.memo(
11752
- React71.forwardRef(function Drawer2({
12008
+ var React73 = __toESM(require("react"));
12009
+ var import_react78 = require("react");
12010
+ var Drawer = React73.memo(
12011
+ React73.forwardRef(function Drawer2({
11753
12012
  open,
11754
12013
  onOpenChange,
11755
12014
  trigger,
@@ -11770,7 +12029,7 @@ var Drawer = React71.memo(
11770
12029
  value: open,
11771
12030
  onChange: onOpenChange
11772
12031
  });
11773
- (0, import_react77.useImperativeHandle)(forwardedRef, () => ({
12032
+ (0, import_react78.useImperativeHandle)(forwardedRef, () => ({
11774
12033
  expand: () => {
11775
12034
  setInternalOpen(true);
11776
12035
  },
@@ -11781,7 +12040,7 @@ var Drawer = React71.memo(
11781
12040
  return internalOpen;
11782
12041
  }
11783
12042
  }));
11784
- const inner = /* @__PURE__ */ React71.createElement(React71.Fragment, null, /* @__PURE__ */ React71.createElement(
12043
+ const inner = /* @__PURE__ */ React73.createElement(React73.Fragment, null, /* @__PURE__ */ React73.createElement(
11785
12044
  import_radix_ui10.Dialog.Overlay,
11786
12045
  {
11787
12046
  className: cx(
@@ -11791,7 +12050,7 @@ var Drawer = React71.memo(
11791
12050
  ),
11792
12051
  style: overlayStyle
11793
12052
  }
11794
- ), /* @__PURE__ */ React71.createElement(
12053
+ ), /* @__PURE__ */ React73.createElement(
11795
12054
  import_radix_ui10.Dialog.Content,
11796
12055
  {
11797
12056
  id,
@@ -11803,24 +12062,24 @@ var Drawer = React71.memo(
11803
12062
  className
11804
12063
  )
11805
12064
  },
11806
- title && /* @__PURE__ */ React71.createElement(import_radix_ui10.Dialog.Title, null, title),
12065
+ title && /* @__PURE__ */ React73.createElement(import_radix_ui10.Dialog.Title, null, title),
11807
12066
  children
11808
12067
  ));
11809
- return /* @__PURE__ */ React71.createElement(
12068
+ return /* @__PURE__ */ React73.createElement(
11810
12069
  import_radix_ui10.Dialog.Root,
11811
12070
  {
11812
12071
  key: "dialog",
11813
12072
  open: internalOpen,
11814
12073
  onOpenChange: setInternalOpen
11815
12074
  },
11816
- /* @__PURE__ */ React71.createElement(import_radix_ui10.Dialog.Trigger, { key: "trigger" }, trigger),
11817
- portalled ? /* @__PURE__ */ React71.createElement(import_radix_ui10.Dialog.Portal, { container: portalContainer }, inner) : inner
12075
+ /* @__PURE__ */ React73.createElement(import_radix_ui10.Dialog.Trigger, { key: "trigger" }, trigger),
12076
+ portalled ? /* @__PURE__ */ React73.createElement(import_radix_ui10.Dialog.Portal, { container: portalContainer }, inner) : inner
11818
12077
  );
11819
12078
  })
11820
12079
  );
11821
12080
 
11822
12081
  // src/components/Fade.tsx
11823
- var import_react78 = __toESM(require("react"));
12082
+ var import_react79 = __toESM(require("react"));
11824
12083
  var Fade = ({
11825
12084
  children,
11826
12085
  direction = "right",
@@ -11842,7 +12101,7 @@ var Fade = ({
11842
12101
  top: "n-left-0 n-right-0 n-top-0",
11843
12102
  bottom: "n-left-0 n-right-0 n-bottom-0"
11844
12103
  }[direction];
11845
- return /* @__PURE__ */ import_react78.default.createElement("div", { className: cx("n-relative", className), style: { height } }, position === "front" ? children : null, /* @__PURE__ */ import_react78.default.createElement(
12104
+ return /* @__PURE__ */ import_react79.default.createElement("div", { className: cx("n-relative", className), style: { height } }, position === "front" ? children : null, /* @__PURE__ */ import_react79.default.createElement(
11846
12105
  "div",
11847
12106
  {
11848
12107
  className: cx(
@@ -11861,21 +12120,21 @@ var Fade = ({
11861
12120
  };
11862
12121
 
11863
12122
  // src/components/file-explorer/FileExplorerLayout.tsx
11864
- var import_react79 = __toESM(require("react"));
12123
+ var import_react80 = __toESM(require("react"));
11865
12124
  var FileExplorerLayout = ({
11866
12125
  children,
11867
12126
  className,
11868
12127
  ...props
11869
- }) => /* @__PURE__ */ import_react79.default.createElement(Section, { className: cx(className, "n-px-3 n-flex-1"), ...props }, children);
12128
+ }) => /* @__PURE__ */ import_react80.default.createElement(Section, { className: cx(className, "n-px-3 n-flex-1"), ...props }, children);
11870
12129
  var FileExplorerUploadButton = ({
11871
12130
  showUploadButton,
11872
12131
  onUpload,
11873
12132
  isUploading,
11874
12133
  children
11875
- }) => /* @__PURE__ */ import_react79.default.createElement("div", { className: "n-flex n-items-center n-gap-2" }, showUploadButton && /* @__PURE__ */ import_react79.default.createElement(
12134
+ }) => /* @__PURE__ */ import_react80.default.createElement("div", { className: "n-flex n-items-center n-gap-2" }, showUploadButton && /* @__PURE__ */ import_react80.default.createElement(
11876
12135
  Button,
11877
12136
  {
11878
- icon: isUploading ? /* @__PURE__ */ import_react79.default.createElement(ActivityIndicator, { size: 15 }) : "UploadIcon",
12137
+ icon: isUploading ? /* @__PURE__ */ import_react80.default.createElement(ActivityIndicator, { size: 15 }) : "UploadIcon",
11879
12138
  onClick: onUpload,
11880
12139
  "aria-label": "Upload file",
11881
12140
  tooltip: "Upload file",
@@ -11885,7 +12144,7 @@ var FileExplorerUploadButton = ({
11885
12144
  ), children);
11886
12145
  var FileExplorerCollection = forwardRefGeneric(
11887
12146
  function FileExplorerCollection2({ ...props }, ref) {
11888
- return /* @__PURE__ */ import_react79.default.createElement(Collection, { ref, className: "-n-mx-3 n-flex-1", ...props });
12147
+ return /* @__PURE__ */ import_react80.default.createElement(Collection, { ref, className: "-n-mx-3 n-flex-1", ...props });
11889
12148
  }
11890
12149
  );
11891
12150
  var FileExplorerDetail = ({
@@ -11894,7 +12153,7 @@ var FileExplorerDetail = ({
11894
12153
  children,
11895
12154
  className,
11896
12155
  style: style2
11897
- }) => /* @__PURE__ */ import_react79.default.createElement(
12156
+ }) => /* @__PURE__ */ import_react80.default.createElement(
11898
12157
  "span",
11899
12158
  {
11900
12159
  className: cx(
@@ -11909,10 +12168,10 @@ var FileExplorerDetail = ({
11909
12168
  var FileExplorerEmptyState = ({
11910
12169
  children: label = "No files",
11911
12170
  ...props
11912
- }) => /* @__PURE__ */ import_react79.default.createElement(Banner, { className: "n-mx-3", ...props }, label);
12171
+ }) => /* @__PURE__ */ import_react80.default.createElement(Banner, { className: "n-mx-3", ...props }, label);
11913
12172
 
11914
12173
  // src/components/FileUploadIndicator.tsx
11915
- var import_react81 = __toESM(require("react"));
12174
+ var import_react82 = __toESM(require("react"));
11916
12175
 
11917
12176
  // src/utils/formatByteSize.ts
11918
12177
  var byteSizeUnits = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
@@ -11926,7 +12185,7 @@ function formatByteSize(size) {
11926
12185
 
11927
12186
  // src/components/MediaThumbnail.tsx
11928
12187
  var import_noya_icons9 = require("@noya-app/noya-icons");
11929
- var import_react80 = __toESM(require("react"));
12188
+ var import_react81 = __toESM(require("react"));
11930
12189
 
11931
12190
  // src/components/catppuccin/fileIcons.ts
11932
12191
  var fileIcons = {
@@ -14366,7 +14625,7 @@ var getThumbnailColors = (colorScheme, selected) => {
14366
14625
  };
14367
14626
  }
14368
14627
  };
14369
- var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14628
+ var MediaThumbnail = (0, import_react81.memo)(function MediaThumbnail2({
14370
14629
  contentType: contentTypeProp,
14371
14630
  selected = false,
14372
14631
  className,
@@ -14384,14 +14643,14 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14384
14643
  selected
14385
14644
  );
14386
14645
  const contentType = getAssetType(contentTypeProp);
14387
- const iconStyles = (0, import_react80.useMemo)(
14646
+ const iconStyles = (0, import_react81.useMemo)(
14388
14647
  () => ({
14389
14648
  width: iconSizeMap[size],
14390
14649
  height: iconSizeMap[size]
14391
14650
  }),
14392
14651
  [size]
14393
14652
  );
14394
- const content = (0, import_react80.useMemo)(() => {
14653
+ const content = (0, import_react81.useMemo)(() => {
14395
14654
  if (renderThumbnailIcon) {
14396
14655
  const rendered = renderThumbnailIcon({ fileName, contentType });
14397
14656
  if (rendered) return rendered;
@@ -14411,7 +14670,7 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14411
14670
  renderUrl.searchParams.set("url", url);
14412
14671
  renderUrl.searchParams.set("fit", aspect);
14413
14672
  renderUrl.searchParams.set("theme", "light");
14414
- return /* @__PURE__ */ import_react80.default.createElement(
14673
+ return /* @__PURE__ */ import_react81.default.createElement(
14415
14674
  "img",
14416
14675
  {
14417
14676
  src: renderUrl.toString(),
@@ -14425,23 +14684,23 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14425
14684
  }
14426
14685
  switch (contentType) {
14427
14686
  case "image":
14428
- return /* @__PURE__ */ import_react80.default.createElement(import_noya_icons9.ImageIcon, { color: iconColor, style: iconStyles });
14687
+ return /* @__PURE__ */ import_react81.default.createElement(import_noya_icons9.ImageIcon, { color: iconColor, style: iconStyles });
14429
14688
  case "video":
14430
- return /* @__PURE__ */ import_react80.default.createElement(import_noya_icons9.VideoIcon, { color: iconColor, style: iconStyles });
14689
+ return /* @__PURE__ */ import_react81.default.createElement(import_noya_icons9.VideoIcon, { color: iconColor, style: iconStyles });
14431
14690
  case "audio":
14432
- return /* @__PURE__ */ import_react80.default.createElement(import_noya_icons9.SpeakerLoudIcon, { color: iconColor, style: iconStyles });
14691
+ return /* @__PURE__ */ import_react81.default.createElement(import_noya_icons9.SpeakerLoudIcon, { color: iconColor, style: iconStyles });
14433
14692
  default:
14434
14693
  if (iconName) {
14435
14694
  const Icon2 = Icons[iconName];
14436
- return /* @__PURE__ */ import_react80.default.createElement(Icon2, { color: iconColor, style: iconStyles });
14695
+ return /* @__PURE__ */ import_react81.default.createElement(Icon2, { color: iconColor, style: iconStyles });
14437
14696
  }
14438
14697
  if (fileName) {
14439
14698
  if (fileName.endsWith(".noya")) {
14440
- return /* @__PURE__ */ import_react80.default.createElement(import_noya_icons9.NoyaIcon, { color: iconColor, style: iconStyles });
14699
+ return /* @__PURE__ */ import_react81.default.createElement(import_noya_icons9.NoyaIcon, { color: iconColor, style: iconStyles });
14441
14700
  }
14442
14701
  const fileIcon = findFileIcon(fileName);
14443
14702
  if (fileIcon) {
14444
- return /* @__PURE__ */ import_react80.default.createElement(
14703
+ return /* @__PURE__ */ import_react81.default.createElement(
14445
14704
  "img",
14446
14705
  {
14447
14706
  src: `https://api.iconify.design/catppuccin/${fileIcon}.svg?height=none&box=1`,
@@ -14451,7 +14710,7 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14451
14710
  );
14452
14711
  }
14453
14712
  }
14454
- return /* @__PURE__ */ import_react80.default.createElement(import_noya_icons9.FileIcon, { color: iconColor, style: iconStyles });
14713
+ return /* @__PURE__ */ import_react81.default.createElement(import_noya_icons9.FileIcon, { color: iconColor, style: iconStyles });
14455
14714
  }
14456
14715
  }, [
14457
14716
  renderThumbnailIcon,
@@ -14465,7 +14724,7 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14465
14724
  iconStyles,
14466
14725
  iconName
14467
14726
  ]);
14468
- return /* @__PURE__ */ import_react80.default.createElement(
14727
+ return /* @__PURE__ */ import_react81.default.createElement(
14469
14728
  "div",
14470
14729
  {
14471
14730
  className: cx(
@@ -14508,7 +14767,7 @@ function findFileIcon(fileName) {
14508
14767
  // src/components/Progress.tsx
14509
14768
  var import_noya_utils14 = require("@noya-app/noya-utils");
14510
14769
  var import_radix_ui11 = require("radix-ui");
14511
- var React75 = __toESM(require("react"));
14770
+ var React77 = __toESM(require("react"));
14512
14771
  function Progress({
14513
14772
  value,
14514
14773
  colorScheme = "normal",
@@ -14517,18 +14776,18 @@ function Progress({
14517
14776
  style: styleProp
14518
14777
  }) {
14519
14778
  const clampedValue = (0, import_noya_utils14.clamp)(value, 0, 100);
14520
- const transformStyles = React75.useMemo(
14779
+ const transformStyles = React77.useMemo(
14521
14780
  () => ({
14522
14781
  transform: `translateX(-${100 - clampedValue}%)`,
14523
14782
  backgroundColor: color
14524
14783
  }),
14525
14784
  [color, clampedValue]
14526
14785
  );
14527
- const style2 = React75.useMemo(
14786
+ const style2 = React77.useMemo(
14528
14787
  () => ({ transform: "translateZ(0)", ...styleProp }),
14529
14788
  [styleProp]
14530
14789
  );
14531
- return /* @__PURE__ */ React75.createElement(
14790
+ return /* @__PURE__ */ React77.createElement(
14532
14791
  import_radix_ui11.Progress.Root,
14533
14792
  {
14534
14793
  className: cx(
@@ -14538,7 +14797,7 @@ function Progress({
14538
14797
  style: style2,
14539
14798
  value: clampedValue
14540
14799
  },
14541
- /* @__PURE__ */ React75.createElement(
14800
+ /* @__PURE__ */ React77.createElement(
14542
14801
  import_radix_ui11.Progress.Indicator,
14543
14802
  {
14544
14803
  className: cx(
@@ -14563,14 +14822,14 @@ function FileUploadIndicator({
14563
14822
  }) {
14564
14823
  const done = percent === 1;
14565
14824
  const value = typeof percent === "number" ? Math.round(percent) : 0;
14566
- return /* @__PURE__ */ import_react81.default.createElement("div", { className: "n-flex n-items-center n-gap-2" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "n-w-12 n-h-12 n-bg-background n-rounded-md n-overflow-hidden" }, /* @__PURE__ */ import_react81.default.createElement(
14825
+ return /* @__PURE__ */ import_react82.default.createElement("div", { className: "n-flex n-items-center n-gap-2" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "n-w-12 n-h-12 n-bg-background n-rounded-md n-overflow-hidden" }, /* @__PURE__ */ import_react82.default.createElement(
14567
14826
  MediaThumbnail,
14568
14827
  {
14569
14828
  size: "medium",
14570
14829
  fileName: name,
14571
14830
  contentType
14572
14831
  }
14573
- )), /* @__PURE__ */ import_react81.default.createElement("div", { className: "n-flex n-flex-col n-flex-1 n-justify-center n-gap-1 n-min-w-0" }, name && /* @__PURE__ */ import_react81.default.createElement(Small, { color: "text", className: "n-truncate n-leading-none" }, name), typeof total === "number" && typeof percent === "number" && /* @__PURE__ */ import_react81.default.createElement(
14832
+ )), /* @__PURE__ */ import_react82.default.createElement("div", { className: "n-flex n-flex-col n-flex-1 n-justify-center n-gap-1 n-min-w-0" }, name && /* @__PURE__ */ import_react82.default.createElement(Small, { color: "text", className: "n-truncate n-leading-none" }, name), typeof total === "number" && typeof percent === "number" && /* @__PURE__ */ import_react82.default.createElement(
14574
14833
  Small,
14575
14834
  {
14576
14835
  color: "textSubtle",
@@ -14581,7 +14840,7 @@ function FileUploadIndicator({
14581
14840
  " /",
14582
14841
  " ",
14583
14842
  formatByteSize(total)
14584
- ), typeof value === "number" && /* @__PURE__ */ import_react81.default.createElement(
14843
+ ), typeof value === "number" && /* @__PURE__ */ import_react82.default.createElement(
14585
14844
  Progress,
14586
14845
  {
14587
14846
  value,
@@ -14589,7 +14848,7 @@ function FileUploadIndicator({
14589
14848
  className: "n-rounded-sm",
14590
14849
  colorScheme: "secondary"
14591
14850
  }
14592
- )), /* @__PURE__ */ import_react81.default.createElement("div", { className: "n-flex n-items-center n-justify-center n-gap-2" }, typeof value === "number" && /* @__PURE__ */ import_react81.default.createElement(
14851
+ )), /* @__PURE__ */ import_react82.default.createElement("div", { className: "n-flex n-items-center n-justify-center n-gap-2" }, typeof value === "number" && /* @__PURE__ */ import_react82.default.createElement(
14593
14852
  Small,
14594
14853
  {
14595
14854
  color: "textSubtle",
@@ -14598,12 +14857,12 @@ function FileUploadIndicator({
14598
14857
  },
14599
14858
  value,
14600
14859
  "%"
14601
- ), done ? /* @__PURE__ */ import_react81.default.createElement("div", { className: "n-w-[15px] n-h-[15px] n-bg-secondary n-rounded-full n-flex n-items-center n-justify-center n-text-white" }, /* @__PURE__ */ import_react81.default.createElement(Checkmark, null)) : /* @__PURE__ */ import_react81.default.createElement(ActivityIndicator, { size: 15 })));
14860
+ ), done ? /* @__PURE__ */ import_react82.default.createElement("div", { className: "n-w-[15px] n-h-[15px] n-bg-secondary n-rounded-full n-flex n-items-center n-justify-center n-text-white" }, /* @__PURE__ */ import_react82.default.createElement(Checkmark, null)) : /* @__PURE__ */ import_react82.default.createElement(ActivityIndicator, { size: 15 })));
14602
14861
  }
14603
14862
  function FileUploadList({
14604
14863
  uploads
14605
14864
  }) {
14606
- return /* @__PURE__ */ import_react81.default.createElement(import_react81.default.Fragment, null, /* @__PURE__ */ import_react81.default.createElement("div", { className: "n-flex n-items-center n-gap-2 n-py-2 n-px-4" }, /* @__PURE__ */ import_react81.default.createElement(Heading5, null, "Uploading ", uploads.length, " ", uploads.length === 1 ? "asset" : "assets")), /* @__PURE__ */ import_react81.default.createElement(Divider, null), /* @__PURE__ */ import_react81.default.createElement("div", { className: "n-flex n-flex-col n-gap-3 n-max-h-[500px] n-overflow-y-auto n-overflow-x-hidden n-py-4 n-px-4" }, uploads.map((upload) => /* @__PURE__ */ import_react81.default.createElement(
14865
+ return /* @__PURE__ */ import_react82.default.createElement(import_react82.default.Fragment, null, /* @__PURE__ */ import_react82.default.createElement("div", { className: "n-flex n-items-center n-gap-2 n-py-2 n-px-4" }, /* @__PURE__ */ import_react82.default.createElement(Heading5, null, "Uploading ", uploads.length, " ", uploads.length === 1 ? "asset" : "assets")), /* @__PURE__ */ import_react82.default.createElement(Divider, null), /* @__PURE__ */ import_react82.default.createElement("div", { className: "n-flex n-flex-col n-gap-3 n-max-h-[500px] n-overflow-y-auto n-overflow-x-hidden n-py-4 n-px-4" }, uploads.map((upload) => /* @__PURE__ */ import_react82.default.createElement(
14607
14866
  FileUploadIndicator,
14608
14867
  {
14609
14868
  key: upload.id,
@@ -14616,7 +14875,7 @@ function FileUploadList({
14616
14875
  }
14617
14876
 
14618
14877
  // src/components/FloatingWindow.tsx
14619
- var import_react82 = __toESM(require("react"));
14878
+ var import_react83 = __toESM(require("react"));
14620
14879
  var styles2 = {
14621
14880
  noSelect: {
14622
14881
  userSelect: "none",
@@ -14709,7 +14968,7 @@ function defaultRenderToolbar({
14709
14968
  toolbarContent,
14710
14969
  onClose
14711
14970
  }) {
14712
- return /* @__PURE__ */ import_react82.default.createElement(import_react82.default.Fragment, null, /* @__PURE__ */ import_react82.default.createElement(Small, { className: "n-flex-1 n-font-medium n-text-text" }, title), toolbarContent, /* @__PURE__ */ import_react82.default.createElement(
14971
+ return /* @__PURE__ */ import_react83.default.createElement(import_react83.default.Fragment, null, /* @__PURE__ */ import_react83.default.createElement(Small, { className: "n-flex-1 n-font-medium n-text-text" }, title), toolbarContent, /* @__PURE__ */ import_react83.default.createElement(
14713
14972
  IconButton,
14714
14973
  {
14715
14974
  iconName: "Cross3Icon",
@@ -14736,16 +14995,16 @@ var FloatingWindow = ({
14736
14995
  toolbarContent,
14737
14996
  renderToolbar = defaultRenderToolbar
14738
14997
  }) => {
14739
- const [position, setPosition] = (0, import_react82.useState)({ x: initialX, y: initialY });
14740
- const [size, setSize] = (0, import_react82.useState)({
14998
+ const [position, setPosition] = (0, import_react83.useState)({ x: initialX, y: initialY });
14999
+ const [size, setSize] = (0, import_react83.useState)({
14741
15000
  width: initialWidth,
14742
15001
  height: initialHeight
14743
15002
  });
14744
- const [isDragging, setIsDragging] = (0, import_react82.useState)(false);
14745
- const [isResizing, setIsResizing] = (0, import_react82.useState)(false);
14746
- const [dragOffset, setDragOffset] = (0, import_react82.useState)({ x: 0, y: 0 });
14747
- const [resizeDirection, setResizeDirection] = (0, import_react82.useState)(null);
14748
- const wrapperRef = (0, import_react82.useRef)(null);
15003
+ const [isDragging, setIsDragging] = (0, import_react83.useState)(false);
15004
+ const [isResizing, setIsResizing] = (0, import_react83.useState)(false);
15005
+ const [dragOffset, setDragOffset] = (0, import_react83.useState)({ x: 0, y: 0 });
15006
+ const [resizeDirection, setResizeDirection] = (0, import_react83.useState)(null);
15007
+ const wrapperRef = (0, import_react83.useRef)(null);
14749
15008
  const toggleGlobalTextSelection = (disable) => {
14750
15009
  if (disable) {
14751
15010
  document.body.style.userSelect = "none";
@@ -14753,7 +15012,7 @@ var FloatingWindow = ({
14753
15012
  document.body.style.userSelect = "";
14754
15013
  }
14755
15014
  };
14756
- const handleMouseDown = (0, import_react82.useCallback)((e) => {
15015
+ const handleMouseDown = (0, import_react83.useCallback)((e) => {
14757
15016
  if (!wrapperRef.current) return;
14758
15017
  const rect = wrapperRef.current.getBoundingClientRect();
14759
15018
  setDragOffset({
@@ -14762,7 +15021,7 @@ var FloatingWindow = ({
14762
15021
  });
14763
15022
  setIsDragging(true);
14764
15023
  }, []);
14765
- const handleResizeStart = (0, import_react82.useCallback)(
15024
+ const handleResizeStart = (0, import_react83.useCallback)(
14766
15025
  (direction) => (e) => {
14767
15026
  e.stopPropagation();
14768
15027
  setIsResizing(true);
@@ -14771,7 +15030,7 @@ var FloatingWindow = ({
14771
15030
  },
14772
15031
  []
14773
15032
  );
14774
- const handleMouseMove = (0, import_react82.useCallback)(
15033
+ const handleMouseMove = (0, import_react83.useCallback)(
14775
15034
  (e) => {
14776
15035
  if (isDragging) {
14777
15036
  setPosition({
@@ -14825,13 +15084,13 @@ var FloatingWindow = ({
14825
15084
  minHeight
14826
15085
  ]
14827
15086
  );
14828
- const handleMouseUp = (0, import_react82.useCallback)((_e) => {
15087
+ const handleMouseUp = (0, import_react83.useCallback)((_e) => {
14829
15088
  setIsDragging(false);
14830
15089
  setIsResizing(false);
14831
15090
  setResizeDirection(null);
14832
15091
  toggleGlobalTextSelection(false);
14833
15092
  }, []);
14834
- import_react82.default.useEffect(() => {
15093
+ import_react83.default.useEffect(() => {
14835
15094
  document.addEventListener("mousemove", handleMouseMove);
14836
15095
  document.addEventListener("mouseup", handleMouseUp);
14837
15096
  return () => {
@@ -14841,11 +15100,11 @@ var FloatingWindow = ({
14841
15100
  }, [handleMouseMove, handleMouseUp]);
14842
15101
  const floatingWindowManager = useFloatingWindowManager();
14843
15102
  const currentFloatingWindow = useCurrentFloatingWindowInternal();
14844
- const handleClose = (0, import_react82.useCallback)(() => {
15103
+ const handleClose = (0, import_react83.useCallback)(() => {
14845
15104
  if (onClose) onClose();
14846
15105
  floatingWindowManager.closeWindow(currentFloatingWindow.id);
14847
15106
  }, [currentFloatingWindow.id, floatingWindowManager, onClose]);
14848
- return /* @__PURE__ */ import_react82.default.createElement(
15107
+ return /* @__PURE__ */ import_react83.default.createElement(
14849
15108
  "div",
14850
15109
  {
14851
15110
  ref: wrapperRef,
@@ -14860,7 +15119,7 @@ var FloatingWindow = ({
14860
15119
  zIndex: cssVars.zIndex.menu
14861
15120
  }
14862
15121
  },
14863
- /* @__PURE__ */ import_react82.default.createElement(
15122
+ /* @__PURE__ */ import_react83.default.createElement(
14864
15123
  "div",
14865
15124
  {
14866
15125
  style: {
@@ -14871,9 +15130,9 @@ var FloatingWindow = ({
14871
15130
  },
14872
15131
  renderToolbar({ title, toolbarContent, onClose: handleClose })
14873
15132
  ),
14874
- /* @__PURE__ */ import_react82.default.createElement(Divider, null),
14875
- /* @__PURE__ */ import_react82.default.createElement("div", { style: styles2.content }, children),
14876
- Object.entries(resizeHandlePositions).map(([direction, style2]) => /* @__PURE__ */ import_react82.default.createElement(
15133
+ /* @__PURE__ */ import_react83.default.createElement(Divider, null),
15134
+ /* @__PURE__ */ import_react83.default.createElement("div", { style: styles2.content }, children),
15135
+ Object.entries(resizeHandlePositions).map(([direction, style2]) => /* @__PURE__ */ import_react83.default.createElement(
14877
15136
  "div",
14878
15137
  {
14879
15138
  key: direction,
@@ -14885,9 +15144,9 @@ var FloatingWindow = ({
14885
15144
  };
14886
15145
 
14887
15146
  // src/components/InspectorContainer.tsx
14888
- var import_react83 = __toESM(require("react"));
14889
- var InspectorContainer = (0, import_react83.memo)(
14890
- (0, import_react83.forwardRef)(function InspectorContainer2({
15147
+ var import_react84 = __toESM(require("react"));
15148
+ var InspectorContainer = (0, import_react84.memo)(
15149
+ (0, import_react84.forwardRef)(function InspectorContainer2({
14891
15150
  header,
14892
15151
  children,
14893
15152
  fallback,
@@ -14896,7 +15155,7 @@ var InspectorContainer = (0, import_react83.memo)(
14896
15155
  className,
14897
15156
  style: style2
14898
15157
  }, forwardedRef) {
14899
- return /* @__PURE__ */ import_react83.default.createElement(
15158
+ return /* @__PURE__ */ import_react84.default.createElement(
14900
15159
  "div",
14901
15160
  {
14902
15161
  ref: forwardedRef,
@@ -14911,32 +15170,32 @@ var InspectorContainer = (0, import_react83.memo)(
14911
15170
  }
14912
15171
  },
14913
15172
  header,
14914
- children ? /* @__PURE__ */ import_react83.default.createElement(ScrollArea, null, /* @__PURE__ */ import_react83.default.createElement("div", { className: "n-flex n-flex-col n-relative" }, showDividers ? withSeparatorElements(children, /* @__PURE__ */ import_react83.default.createElement(Divider, null)) : children)) : fallback ? /* @__PURE__ */ import_react83.default.createElement("div", { className: "n-flex n-flex-col n-relative n-h-full" }, fallback) : null
15173
+ children ? /* @__PURE__ */ import_react84.default.createElement(ScrollArea, null, /* @__PURE__ */ import_react84.default.createElement("div", { className: "n-flex n-flex-col n-relative" }, showDividers ? withSeparatorElements(children, /* @__PURE__ */ import_react84.default.createElement(Divider, null)) : children)) : fallback ? /* @__PURE__ */ import_react84.default.createElement("div", { className: "n-flex n-flex-col n-relative n-h-full" }, fallback) : null
14915
15174
  );
14916
15175
  })
14917
15176
  );
14918
15177
 
14919
15178
  // src/components/LabeledElementView.tsx
14920
15179
  var kiwi = __toESM(require("kiwi.js"));
14921
- var React79 = __toESM(require("react"));
14922
- var LabeledElementView = React79.memo(function LabeledElementView2({
15180
+ var React81 = __toESM(require("react"));
15181
+ var LabeledElementView = React81.memo(function LabeledElementView2({
14923
15182
  children,
14924
15183
  renderLabel
14925
15184
  }) {
14926
- const elementIds = React79.Children.toArray(children).flatMap(
14927
- (child) => React79.isValidElement(child) && child.type === React79.Fragment ? child.props.children : [child]
15185
+ const elementIds = React81.Children.toArray(children).flatMap(
15186
+ (child) => React81.isValidElement(child) && child.type === React81.Fragment ? child.props.children : [child]
14928
15187
  ).map(
14929
- (child) => React79.isValidElement(child) && "id" in child.props ? child.props.id : null
15188
+ (child) => React81.isValidElement(child) && "id" in child.props ? child.props.id : null
14930
15189
  ).filter((id) => !!id);
14931
15190
  const serializedIds = elementIds.join(",");
14932
- const containerRef = React79.useRef(null);
14933
- const refs = React79.useMemo(() => {
15191
+ const containerRef = React81.useRef(null);
15192
+ const refs = React81.useMemo(() => {
14934
15193
  return Object.fromEntries(
14935
- serializedIds.split(",").map((id) => [id, React79.createRef()])
15194
+ serializedIds.split(",").map((id) => [id, React81.createRef()])
14936
15195
  );
14937
15196
  }, [serializedIds]);
14938
- const labelElements = React79.useMemo(() => {
14939
- return serializedIds.split(",").map((id, index) => /* @__PURE__ */ React79.createElement(
15197
+ const labelElements = React81.useMemo(() => {
15198
+ return serializedIds.split(",").map((id, index) => /* @__PURE__ */ React81.createElement(
14940
15199
  "span",
14941
15200
  {
14942
15201
  key: id,
@@ -14949,7 +15208,7 @@ var LabeledElementView = React79.memo(function LabeledElementView2({
14949
15208
  })
14950
15209
  ));
14951
15210
  }, [refs, serializedIds, renderLabel]);
14952
- React79.useLayoutEffect(() => {
15211
+ React81.useLayoutEffect(() => {
14953
15212
  if (!containerRef.current) return;
14954
15213
  const containerRect = containerRef.current.getBoundingClientRect();
14955
15214
  const solver = new kiwi.Solver();
@@ -15011,17 +15270,17 @@ var LabeledElementView = React79.memo(function LabeledElementView2({
15011
15270
  `${Math.max(...heights)}px`
15012
15271
  );
15013
15272
  }, [refs, labelElements]);
15014
- return /* @__PURE__ */ React79.createElement("div", { className: "n-flex n-flex-1 n-flex-col n-relative", ref: containerRef }, /* @__PURE__ */ React79.createElement("div", { className: "n-flex n-flex-1 n-items-center" }, children), /* @__PURE__ */ React79.createElement("div", { className: "n-relative n-overflow-hidden n-select-none" }, labelElements));
15273
+ return /* @__PURE__ */ React81.createElement("div", { className: "n-flex n-flex-1 n-flex-col n-relative", ref: containerRef }, /* @__PURE__ */ React81.createElement("div", { className: "n-flex n-flex-1 n-items-center" }, children), /* @__PURE__ */ React81.createElement("div", { className: "n-relative n-overflow-hidden n-select-none" }, labelElements));
15015
15274
  });
15016
15275
 
15017
15276
  // src/components/LabeledField.tsx
15018
- var import_react85 = __toESM(require("react"));
15277
+ var import_react86 = __toESM(require("react"));
15019
15278
 
15020
15279
  // src/hooks/useIndent.ts
15021
- var import_react84 = __toESM(require("react"));
15022
- var IndentContext = import_react84.default.createContext(0);
15280
+ var import_react85 = __toESM(require("react"));
15281
+ var IndentContext = import_react85.default.createContext(0);
15023
15282
  var useIndent = () => {
15024
- return import_react84.default.useContext(IndentContext);
15283
+ return import_react85.default.useContext(IndentContext);
15025
15284
  };
15026
15285
 
15027
15286
  // src/components/LabeledField.tsx
@@ -15033,7 +15292,7 @@ var labeledFieldStyles = (labelType) => cx(
15033
15292
  var labelTypeInset = {
15034
15293
  type: "inset"
15035
15294
  };
15036
- var LabeledField = (0, import_react85.memo)(function LabeledField2({
15295
+ var LabeledField = (0, import_react86.memo)(function LabeledField2({
15037
15296
  children,
15038
15297
  label,
15039
15298
  labelType: labelTypeProp,
@@ -15049,15 +15308,15 @@ var LabeledField = (0, import_react85.memo)(function LabeledField2({
15049
15308
  const labelWidth = labelWidthFromContext ?? minWidth;
15050
15309
  const labelTypeFromContext = useLabelType();
15051
15310
  const labelType = labelTypeProp ?? labelTypeFromContext;
15052
- const labeledFieldClasses = (0, import_react85.useMemo)(
15311
+ const labeledFieldClasses = (0, import_react86.useMemo)(
15053
15312
  () => labeledFieldStyles(labelType),
15054
15313
  [labelType]
15055
15314
  );
15056
- const labelContextValue = (0, import_react85.useMemo)(
15315
+ const labelContextValue = (0, import_react86.useMemo)(
15057
15316
  () => ({ fieldId, label }),
15058
15317
  [fieldId, label]
15059
15318
  );
15060
- const indentStyle = (0, import_react85.useMemo)(
15319
+ const indentStyle = (0, import_react86.useMemo)(
15061
15320
  () => ({
15062
15321
  width: indentLevel * 8,
15063
15322
  flexBasis: indentLevel * 8,
@@ -15066,20 +15325,20 @@ var LabeledField = (0, import_react85.memo)(function LabeledField2({
15066
15325
  }),
15067
15326
  [indentLevel]
15068
15327
  );
15069
- const fieldStyle = (0, import_react85.useMemo)(
15328
+ const fieldStyle = (0, import_react86.useMemo)(
15070
15329
  () => ({
15071
15330
  minWidth: `calc(100% - ${labelWidth + indentLevel * 8 + 6}px)`
15072
15331
  }),
15073
15332
  [labelWidth, indentLevel]
15074
15333
  );
15075
- const labelStyle = (0, import_react85.useMemo)(
15334
+ const labelStyle = (0, import_react86.useMemo)(
15076
15335
  () => ({
15077
15336
  minWidth: `calc(${labelWidth}px - ${indentLevel * 8}px)`,
15078
15337
  ...labelStyleProp
15079
15338
  }),
15080
15339
  [labelWidth, indentLevel, labelStyleProp]
15081
15340
  );
15082
- return /* @__PURE__ */ import_react85.default.createElement(LabelContext.Provider, { value: labelContextValue }, labelType === "inset" ? /* @__PURE__ */ import_react85.default.createElement(LabelTypeContext.Provider, { value: labelTypeInset }, children) : /* @__PURE__ */ import_react85.default.createElement("div", { className: cx("n-flex n-relative n-flex-1", className), style: style2 }, Boolean(indentLevel) && /* @__PURE__ */ import_react85.default.createElement("div", { style: indentStyle }), /* @__PURE__ */ import_react85.default.createElement("div", { className: labeledFieldClasses }, labelType !== "none" && /* @__PURE__ */ import_react85.default.createElement(
15341
+ return /* @__PURE__ */ import_react86.default.createElement(LabelContext.Provider, { value: labelContextValue }, labelType === "inset" ? /* @__PURE__ */ import_react86.default.createElement(LabelTypeContext.Provider, { value: labelTypeInset }, children) : /* @__PURE__ */ import_react86.default.createElement("div", { className: cx("n-flex n-relative n-flex-1", className), style: style2 }, Boolean(indentLevel) && /* @__PURE__ */ import_react86.default.createElement("div", { style: indentStyle }), /* @__PURE__ */ import_react86.default.createElement("div", { className: labeledFieldClasses }, labelType !== "none" && /* @__PURE__ */ import_react86.default.createElement(
15083
15342
  Label,
15084
15343
  {
15085
15344
  htmlFor: fieldId,
@@ -15088,13 +15347,13 @@ var LabeledField = (0, import_react85.memo)(function LabeledField2({
15088
15347
  ...props
15089
15348
  },
15090
15349
  label
15091
- ), labelType === "start" ? /* @__PURE__ */ import_react85.default.createElement("div", { className: "n-flex-auto n-flex", style: fieldStyle }, children) : children)));
15350
+ ), labelType === "start" ? /* @__PURE__ */ import_react86.default.createElement("div", { className: "n-flex-auto n-flex", style: fieldStyle }, children) : children)));
15092
15351
  });
15093
15352
 
15094
15353
  // src/components/ListMenu.tsx
15095
15354
  var import_noya_icons10 = require("@noya-app/noya-icons");
15096
15355
  var import_noya_utils15 = require("@noya-app/noya-utils");
15097
- var import_react86 = __toESM(require("react"));
15356
+ var import_react87 = __toESM(require("react"));
15098
15357
  function getItemId(item) {
15099
15358
  if (item.type === "submenu") {
15100
15359
  return item.id;
@@ -15110,7 +15369,7 @@ function ListMenu({
15110
15369
  }) {
15111
15370
  const selectedIds = items.flatMap(
15112
15371
  (item) => isSelectableMenuItem(item) && item.checked ? [item.value] : []
15113
- ).concat(selectedIdsProp);
15372
+ ).concat(selectedIdsProp ?? []);
15114
15373
  let chunks = (0, import_noya_utils15.chunkBy)(
15115
15374
  items,
15116
15375
  (a, b) => a.type !== "separator" && b.type !== "separator"
@@ -15123,7 +15382,7 @@ function ListMenu({
15123
15382
  const regularItems = chunk.filter(
15124
15383
  (item) => isSubMenuItem(item) || isSelectableMenuItem(item)
15125
15384
  );
15126
- return /* @__PURE__ */ import_react86.default.createElement(
15385
+ return /* @__PURE__ */ import_react87.default.createElement(
15127
15386
  List,
15128
15387
  {
15129
15388
  key: regularItems.map(getItemId).join("-"),
@@ -15135,30 +15394,30 @@ function ListMenu({
15135
15394
  getName: (item) => item.title.toString(),
15136
15395
  selectedIds,
15137
15396
  renderRight,
15138
- renderThumbnail: ({ item }) => /* @__PURE__ */ import_react86.default.createElement("div", { className: "n-flex n-flex-1 n-items-center n-justify-center n-bg-divider-subtle n-w-full n-h-full n-rounded-sm" }, renderIcon(item.icon)),
15139
- renderDetail: (item) => isSubMenuItem(item) && /* @__PURE__ */ import_react86.default.createElement(import_noya_icons10.ArrowRightIcon, null),
15397
+ renderThumbnail: ({ item }) => /* @__PURE__ */ import_react87.default.createElement("div", { className: "n-flex n-flex-1 n-items-center n-justify-center n-bg-divider-subtle n-w-full n-h-full n-rounded-sm" }, renderIcon(item.icon)),
15398
+ renderDetail: (item) => isSubMenuItem(item) && /* @__PURE__ */ import_react87.default.createElement(import_noya_icons10.ArrowRightIcon, null),
15140
15399
  onClickItem: (itemId) => onSelect(itemId)
15141
15400
  }
15142
15401
  );
15143
15402
  });
15144
15403
  return withSeparatorElements(
15145
15404
  lists,
15146
- /* @__PURE__ */ import_react86.default.createElement(Divider, { overflow: 12, className: "n-my-1" })
15405
+ /* @__PURE__ */ import_react87.default.createElement(Divider, { overflow: 12, className: "n-my-1" })
15147
15406
  );
15148
15407
  }
15149
15408
 
15150
15409
  // src/components/ListNavigator.tsx
15151
- var import_react90 = __toESM(require("react"));
15410
+ var import_react91 = __toESM(require("react"));
15152
15411
 
15153
15412
  // src/components/Navigator.tsx
15154
- var import_react89 = __toESM(require("react"));
15413
+ var import_react90 = __toESM(require("react"));
15155
15414
 
15156
15415
  // src/components/StackNavigator.tsx
15157
15416
  var import_noya_utils16 = require("@noya-app/noya-utils");
15158
- var import_react88 = __toESM(require("react"));
15417
+ var import_react89 = __toESM(require("react"));
15159
15418
 
15160
15419
  // src/components/BaseToolbar.tsx
15161
- var import_react87 = __toESM(require("react"));
15420
+ var import_react88 = __toESM(require("react"));
15162
15421
  var toolbarStyle = {
15163
15422
  [cssVarNames.colors.buttonBackground]: "transparent",
15164
15423
  [cssVarNames.colors.inputBackground]: "transparent"
@@ -15170,7 +15429,7 @@ function BaseToolbarContainer({
15170
15429
  innerClassName,
15171
15430
  enableAbsoluteBreakpoint = true
15172
15431
  }) {
15173
- return /* @__PURE__ */ import_react87.default.createElement("div", { className: cx("n-flex n-flex-col", className), style: toolbarStyle }, /* @__PURE__ */ import_react87.default.createElement(
15432
+ return /* @__PURE__ */ import_react88.default.createElement("div", { className: cx("n-flex n-flex-col", className), style: toolbarStyle }, /* @__PURE__ */ import_react88.default.createElement(
15174
15433
  "div",
15175
15434
  {
15176
15435
  className: cx(
@@ -15183,7 +15442,7 @@ function BaseToolbarContainer({
15183
15442
  }
15184
15443
  },
15185
15444
  children
15186
- ), showDivider && /* @__PURE__ */ import_react87.default.createElement(Divider, { variant: "strong" }));
15445
+ ), showDivider && /* @__PURE__ */ import_react88.default.createElement(Divider, { variant: "strong" }));
15187
15446
  }
15188
15447
  function BaseToolbar({
15189
15448
  children,
@@ -15195,7 +15454,7 @@ function BaseToolbar({
15195
15454
  innerClassName,
15196
15455
  enableAbsoluteBreakpoint = true
15197
15456
  }) {
15198
- return /* @__PURE__ */ import_react87.default.createElement(
15457
+ return /* @__PURE__ */ import_react88.default.createElement(
15199
15458
  BaseToolbarContainer,
15200
15459
  {
15201
15460
  showDivider,
@@ -15203,25 +15462,25 @@ function BaseToolbar({
15203
15462
  innerClassName,
15204
15463
  enableAbsoluteBreakpoint
15205
15464
  },
15206
- logo && /* @__PURE__ */ import_react87.default.createElement(import_react87.default.Fragment, null, logo, /* @__PURE__ */ import_react87.default.createElement(DividerVertical, null)),
15207
- /* @__PURE__ */ import_react87.default.createElement(Spacer.Horizontal, { size: 10 }),
15208
- left && /* @__PURE__ */ import_react87.default.createElement(import_react87.default.Fragment, null, /* @__PURE__ */ import_react87.default.createElement("div", { className: "n-flex n-gap-toolbar-separator" }, left), /* @__PURE__ */ import_react87.default.createElement(Spacer.Horizontal, { size: 10 })),
15209
- children && /* @__PURE__ */ import_react87.default.createElement(
15465
+ logo && /* @__PURE__ */ import_react88.default.createElement(import_react88.default.Fragment, null, logo, /* @__PURE__ */ import_react88.default.createElement(DividerVertical, null)),
15466
+ /* @__PURE__ */ import_react88.default.createElement(Spacer.Horizontal, { size: 10 }),
15467
+ left && /* @__PURE__ */ import_react88.default.createElement(import_react88.default.Fragment, null, /* @__PURE__ */ import_react88.default.createElement("div", { className: "n-flex n-gap-toolbar-separator" }, left), /* @__PURE__ */ import_react88.default.createElement(Spacer.Horizontal, { size: 10 })),
15468
+ children && /* @__PURE__ */ import_react88.default.createElement(
15210
15469
  "div",
15211
15470
  {
15212
- className: "n-flex n-items-center n-justify-center n-text-text-muted n-pointer-events-none @2xl/toolbar:n-absolute n-inset-0"
15471
+ className: "n-flex n-items-center n-justify-center n-text-text-muted n-pointer-events-none @xl/toolbar:!n-absolute n-inset-0"
15213
15472
  },
15214
- /* @__PURE__ */ import_react87.default.createElement("div", { className: "n-flex n-items-center n-justify-center n-pointer-events-auto" }, children)
15473
+ /* @__PURE__ */ import_react88.default.createElement("div", { className: "n-flex n-items-center n-justify-center n-pointer-events-auto" }, children)
15215
15474
  ),
15216
- /* @__PURE__ */ import_react87.default.createElement(Spacer.Horizontal, null),
15217
- /* @__PURE__ */ import_react87.default.createElement(Spacer.Horizontal, { size: 10 }),
15218
- /* @__PURE__ */ import_react87.default.createElement("div", { className: "n-flex n-gap-toolbar-separator" }, right),
15219
- /* @__PURE__ */ import_react87.default.createElement(Spacer.Horizontal, { size: 10 })
15475
+ /* @__PURE__ */ import_react88.default.createElement(Spacer.Horizontal, null),
15476
+ /* @__PURE__ */ import_react88.default.createElement(Spacer.Horizontal, { size: 10 }),
15477
+ /* @__PURE__ */ import_react88.default.createElement("div", { className: "n-flex n-gap-toolbar-separator" }, right),
15478
+ /* @__PURE__ */ import_react88.default.createElement(Spacer.Horizontal, { size: 10 })
15220
15479
  );
15221
15480
  }
15222
15481
 
15223
15482
  // src/components/StackNavigator.tsx
15224
- var StackRenderContext = import_react88.default.createContext({});
15483
+ var StackRenderContext = import_react89.default.createContext({});
15225
15484
  function StackNavigator({
15226
15485
  items,
15227
15486
  onBack,
@@ -15235,15 +15494,15 @@ function StackNavigator({
15235
15494
  renderHeader
15236
15495
  }) {
15237
15496
  const top = items.at(-1);
15238
- const previousLengthRef = (0, import_react88.useRef)(items.length);
15239
- const direction = (0, import_react88.useMemo)(() => {
15497
+ const previousLengthRef = (0, import_react89.useRef)(items.length);
15498
+ const direction = (0, import_react89.useMemo)(() => {
15240
15499
  const previous = previousLengthRef.current;
15241
15500
  previousLengthRef.current = items.length;
15242
15501
  return items.length >= previous ? "forward" : "back";
15243
15502
  }, [items.length]);
15244
- const [cardSizes, setCardSizes] = (0, import_react88.useState)({});
15245
- const [containerSize, setContainerSize] = (0, import_react88.useState)();
15246
- const handleSizeChange = (0, import_react88.useCallback)((key, size) => {
15503
+ const [cardSizes, setCardSizes] = (0, import_react89.useState)({});
15504
+ const [containerSize, setContainerSize] = (0, import_react89.useState)();
15505
+ const handleSizeChange = (0, import_react89.useCallback)((key, size) => {
15247
15506
  setCardSizes((prev) => {
15248
15507
  if ((0, import_noya_utils16.isDeepEqual)(prev[key], size)) {
15249
15508
  return prev;
@@ -15251,7 +15510,7 @@ function StackNavigator({
15251
15510
  return { ...prev, [key]: size };
15252
15511
  });
15253
15512
  }, []);
15254
- (0, import_react88.useEffect)(() => {
15513
+ (0, import_react89.useEffect)(() => {
15255
15514
  if (!top) {
15256
15515
  setContainerSize(void 0);
15257
15516
  return;
@@ -15265,7 +15524,7 @@ function StackNavigator({
15265
15524
  return measuredSize;
15266
15525
  });
15267
15526
  }, [cardSizes, top]);
15268
- (0, import_react88.useEffect)(() => {
15527
+ (0, import_react89.useEffect)(() => {
15269
15528
  setCardSizes((prev) => {
15270
15529
  const next = {};
15271
15530
  let changed = false;
@@ -15283,7 +15542,7 @@ function StackNavigator({
15283
15542
  return changed ? next : prev;
15284
15543
  });
15285
15544
  }, [items]);
15286
- const animationStyles = (0, import_react88.useMemo)(() => {
15545
+ const animationStyles = (0, import_react89.useMemo)(() => {
15287
15546
  return {
15288
15547
  entering: {
15289
15548
  opacity: 0,
@@ -15303,7 +15562,7 @@ function StackNavigator({
15303
15562
  };
15304
15563
  }, [direction]);
15305
15564
  const shouldAnimateSize = containerSize !== void 0;
15306
- const contentStyle = (0, import_react88.useMemo)(() => {
15565
+ const contentStyle = (0, import_react89.useMemo)(() => {
15307
15566
  if (!containerSize) return void 0;
15308
15567
  const style3 = {
15309
15568
  // width: containerSize.width,
@@ -15316,11 +15575,11 @@ function StackNavigator({
15316
15575
  }
15317
15576
  return style3;
15318
15577
  }, [containerSize, shouldAnimateSize]);
15319
- const [animationStates, setAnimationStates] = (0, import_react88.useState)({});
15320
- const [renderContentCache, setRenderContentCache] = (0, import_react88.useState)(
15578
+ const [animationStates, setAnimationStates] = (0, import_react89.useState)({});
15579
+ const [renderContentCache, setRenderContentCache] = (0, import_react89.useState)(
15321
15580
  () => Object.fromEntries(items.map((item) => [item.key, item.renderContent]))
15322
15581
  );
15323
- (0, import_react88.useEffect)(() => {
15582
+ (0, import_react89.useEffect)(() => {
15324
15583
  setRenderContentCache((prev) => {
15325
15584
  let changed = false;
15326
15585
  const next = { ...prev };
@@ -15338,7 +15597,7 @@ function StackNavigator({
15338
15597
  return changed ? next : prev;
15339
15598
  });
15340
15599
  }, [animationStates, items]);
15341
- const handleChildStateChange = (0, import_react88.useCallback)(
15600
+ const handleChildStateChange = (0, import_react89.useCallback)(
15342
15601
  (key, state) => {
15343
15602
  if (!key) return;
15344
15603
  setAnimationStates((prev) => {
@@ -15381,7 +15640,7 @@ function StackNavigator({
15381
15640
  }
15382
15641
  return defaultRenderHeader(headerProps);
15383
15642
  };
15384
- return /* @__PURE__ */ import_react88.default.createElement(
15643
+ return /* @__PURE__ */ import_react89.default.createElement(
15385
15644
  "div",
15386
15645
  {
15387
15646
  className: cx("n-flex n-flex-col", className),
@@ -15397,13 +15656,13 @@ function StackNavigator({
15397
15656
  }
15398
15657
  },
15399
15658
  showHeader && renderHeaderContent(),
15400
- /* @__PURE__ */ import_react88.default.createElement(
15659
+ /* @__PURE__ */ import_react89.default.createElement(
15401
15660
  "div",
15402
15661
  {
15403
15662
  className: cx("n-relative n-overflow-hidden", contentClassName),
15404
15663
  style: contentStyle
15405
15664
  },
15406
- /* @__PURE__ */ import_react88.default.createElement(StackRenderContext.Provider, { value: renderContentCache }, /* @__PURE__ */ import_react88.default.createElement(
15665
+ /* @__PURE__ */ import_react89.default.createElement(StackRenderContext.Provider, { value: renderContentCache }, /* @__PURE__ */ import_react89.default.createElement(
15407
15666
  AnimatePresence,
15408
15667
  {
15409
15668
  duration: 200,
@@ -15412,7 +15671,7 @@ function StackNavigator({
15412
15671
  mode: "wait",
15413
15672
  onChildStateChange: handleChildStateChange
15414
15673
  },
15415
- /* @__PURE__ */ import_react88.default.createElement(
15674
+ /* @__PURE__ */ import_react89.default.createElement(
15416
15675
  StackNavigatorCard,
15417
15676
  {
15418
15677
  key: top.key,
@@ -15432,15 +15691,15 @@ var StackNavigatorCard = ({
15432
15691
  style: style2,
15433
15692
  className
15434
15693
  }) => {
15435
- const ref = import_react88.default.useRef(null);
15694
+ const ref = import_react89.default.useRef(null);
15436
15695
  const size = useSize(ref);
15437
- const renderContext = import_react88.default.useContext(StackRenderContext);
15696
+ const renderContext = import_react89.default.useContext(StackRenderContext);
15438
15697
  const renderContent = renderContext?.[item.key] ?? item.renderContent;
15439
- import_react88.default.useEffect(() => {
15698
+ import_react89.default.useEffect(() => {
15440
15699
  if (!size || size.width === 0 || size.height === 0) return;
15441
15700
  onSizeChange(item.key, size);
15442
15701
  }, [item.key, onSizeChange, size]);
15443
- return /* @__PURE__ */ import_react88.default.createElement("div", { ref, className: cx("n-flex n-flex-col", className), style: style2 }, renderContent?.());
15702
+ return /* @__PURE__ */ import_react89.default.createElement("div", { ref, className: cx("n-flex n-flex-col", className), style: style2 }, renderContent?.());
15444
15703
  };
15445
15704
  function defaultRenderHeader({
15446
15705
  showDivider,
@@ -15449,13 +15708,13 @@ function defaultRenderHeader({
15449
15708
  right,
15450
15709
  title
15451
15710
  }) {
15452
- return /* @__PURE__ */ import_react88.default.createElement(
15711
+ return /* @__PURE__ */ import_react89.default.createElement(
15453
15712
  BaseToolbar,
15454
15713
  {
15455
15714
  innerClassName: "n-px-1",
15456
15715
  showDivider,
15457
15716
  enableAbsoluteBreakpoint: false,
15458
- left: showBackButton && /* @__PURE__ */ import_react88.default.createElement(
15717
+ left: showBackButton && /* @__PURE__ */ import_react89.default.createElement(
15459
15718
  Button,
15460
15719
  {
15461
15720
  className: "-n-mx-2",
@@ -15466,7 +15725,7 @@ function defaultRenderHeader({
15466
15725
  ),
15467
15726
  right
15468
15727
  },
15469
- typeof title === "string" || typeof title === "number" ? /* @__PURE__ */ import_react88.default.createElement(Body, null, title) : title
15728
+ typeof title === "string" || typeof title === "number" ? /* @__PURE__ */ import_react89.default.createElement(Body, null, title) : title
15470
15729
  );
15471
15730
  }
15472
15731
 
@@ -15478,23 +15737,23 @@ var NavigatorScreen = Object.assign(
15478
15737
  [navigatorScreenIdentifier]: true
15479
15738
  }
15480
15739
  );
15481
- var NavigatorScreenContext = import_react89.default.createContext(null);
15740
+ var NavigatorScreenContext = import_react90.default.createContext(null);
15482
15741
  function useNavigator() {
15483
- const context = import_react89.default.useContext(NavigatorScreenContext);
15742
+ const context = import_react90.default.useContext(NavigatorScreenContext);
15484
15743
  if (!context) {
15485
15744
  throw new Error("useNavigator must be used within a Navigator screen");
15486
15745
  }
15487
15746
  return context.navigation;
15488
15747
  }
15489
15748
  function useNavigatorRoute() {
15490
- const context = import_react89.default.useContext(NavigatorScreenContext);
15749
+ const context = import_react90.default.useContext(NavigatorScreenContext);
15491
15750
  if (!context) {
15492
15751
  throw new Error("useNavigatorRoute must be used within a Navigator screen");
15493
15752
  }
15494
15753
  return context.route;
15495
15754
  }
15496
15755
  function isNavigatorScreenElement(child) {
15497
- return (0, import_react89.isValidElement)(child) && Boolean(
15756
+ return (0, import_react90.isValidElement)(child) && Boolean(
15498
15757
  child.type?.[navigatorScreenIdentifier]
15499
15758
  );
15500
15759
  }
@@ -15515,15 +15774,15 @@ function NavigatorImpl({
15515
15774
  showHeader,
15516
15775
  renderHeader
15517
15776
  }) {
15518
- const screens = (0, import_react89.useMemo)(() => {
15777
+ const screens = (0, import_react90.useMemo)(() => {
15519
15778
  const configs = [];
15520
- import_react89.Children.forEach(children, (child) => {
15779
+ import_react90.Children.forEach(children, (child) => {
15521
15780
  if (!isNavigatorScreenElement(child)) return;
15522
15781
  configs.push(child.props);
15523
15782
  });
15524
15783
  return configs;
15525
15784
  }, [children]);
15526
- const screenMap = (0, import_react89.useMemo)(() => {
15785
+ const screenMap = (0, import_react90.useMemo)(() => {
15527
15786
  const map = /* @__PURE__ */ new Map();
15528
15787
  for (const screen of screens) {
15529
15788
  if (map.has(screen.name)) {
@@ -15535,8 +15794,8 @@ function NavigatorImpl({
15535
15794
  }
15536
15795
  return map;
15537
15796
  }, [screens]);
15538
- const keyRef = (0, import_react89.useRef)(0);
15539
- const createEntry = (0, import_react89.useCallback)(
15797
+ const keyRef = (0, import_react90.useRef)(0);
15798
+ const createEntry = (0, import_react90.useCallback)(
15540
15799
  (name, params) => ({
15541
15800
  key: `${String(name)}-${keyRef.current++}`,
15542
15801
  name,
@@ -15550,13 +15809,13 @@ function NavigatorImpl({
15550
15809
  `Navigator: initial route "${String(initialScreenName)}" is not registered as a screen.`
15551
15810
  );
15552
15811
  }
15553
- const [stack, setStack] = (0, import_react89.useState)(() => [
15812
+ const [stack, setStack] = (0, import_react90.useState)(() => [
15554
15813
  createEntry(
15555
15814
  initialScreenName,
15556
15815
  initialRoute.params
15557
15816
  )
15558
15817
  ]);
15559
- const push = (0, import_react89.useCallback)(
15818
+ const push = (0, import_react90.useCallback)(
15560
15819
  (...args) => {
15561
15820
  const [name, params] = args;
15562
15821
  const screen = screenMap.get(name);
@@ -15570,7 +15829,7 @@ function NavigatorImpl({
15570
15829
  },
15571
15830
  [createEntry, screenMap]
15572
15831
  );
15573
- const pop = (0, import_react89.useCallback)(() => {
15832
+ const pop = (0, import_react90.useCallback)(() => {
15574
15833
  setStack((prev) => {
15575
15834
  if (prev.length <= 1) return prev;
15576
15835
  const nextStack = prev.slice(0, -1);
@@ -15586,7 +15845,7 @@ function NavigatorImpl({
15586
15845
  return updatedStack;
15587
15846
  });
15588
15847
  }, [createEntry]);
15589
- const replace = (0, import_react89.useCallback)(
15848
+ const replace = (0, import_react90.useCallback)(
15590
15849
  (targetKey, name, params) => {
15591
15850
  const screen = screenMap.get(name);
15592
15851
  if (!screen) {
@@ -15612,7 +15871,7 @@ function NavigatorImpl({
15612
15871
  },
15613
15872
  [createEntry, screenMap]
15614
15873
  );
15615
- const items = (0, import_react89.useMemo)(() => {
15874
+ const items = (0, import_react90.useMemo)(() => {
15616
15875
  return stack.flatMap((entry) => {
15617
15876
  const screen = screenMap.get(entry.name);
15618
15877
  if (!screen) return [];
@@ -15650,7 +15909,7 @@ function NavigatorImpl({
15650
15909
  onBack: headerProps.onBack
15651
15910
  }),
15652
15911
  renderContent: () => {
15653
- return /* @__PURE__ */ import_react89.default.createElement(NavigatorScreenContext.Provider, { value: context }, evaluateOption(screen.children, context));
15912
+ return /* @__PURE__ */ import_react90.default.createElement(NavigatorScreenContext.Provider, { value: context }, evaluateOption(screen.children, context));
15654
15913
  }
15655
15914
  };
15656
15915
  });
@@ -15658,7 +15917,7 @@ function NavigatorImpl({
15658
15917
  const shouldShowHeader = evaluateOption(showHeader, {
15659
15918
  stack
15660
15919
  });
15661
- return /* @__PURE__ */ import_react89.default.createElement(
15920
+ return /* @__PURE__ */ import_react90.default.createElement(
15662
15921
  StackNavigator,
15663
15922
  {
15664
15923
  items,
@@ -15698,7 +15957,7 @@ function ListNavigator({
15698
15957
  renderHeader,
15699
15958
  selectedIds
15700
15959
  }) {
15701
- return /* @__PURE__ */ import_react90.default.createElement(
15960
+ return /* @__PURE__ */ import_react91.default.createElement(
15702
15961
  ListNavigatorInternal,
15703
15962
  {
15704
15963
  initialRoute: { name: "screen", params: { id: void 0 } },
@@ -15716,7 +15975,7 @@ function ListNavigator({
15716
15975
  className,
15717
15976
  style: style2
15718
15977
  },
15719
- /* @__PURE__ */ import_react90.default.createElement(
15978
+ /* @__PURE__ */ import_react91.default.createElement(
15720
15979
  ListNavigatorInternal.Screen,
15721
15980
  {
15722
15981
  name: "screen",
@@ -15731,7 +15990,7 @@ function ListNavigator({
15731
15990
  const nestedItem = items.find(
15732
15991
  (item) => isSubMenuItem(item) && item.id === route.params.id
15733
15992
  );
15734
- return /* @__PURE__ */ import_react90.default.createElement(
15993
+ return /* @__PURE__ */ import_react91.default.createElement(
15735
15994
  ListMenu,
15736
15995
  {
15737
15996
  items: nestedItem?.items ?? items,
@@ -15756,18 +16015,19 @@ function ListNavigator({
15756
16015
 
15757
16016
  // src/components/Message.tsx
15758
16017
  var import_noya_utils17 = require("@noya-app/noya-utils");
15759
- var import_react91 = __toESM(require("react"));
15760
- var Message = (0, import_react91.memo)(
15761
- (0, import_react91.forwardRef)(function Message2({ role, children, user, avatarSize = INPUT_HEIGHT }, ref) {
16018
+ var import_react92 = __toESM(require("react"));
16019
+ var Message = (0, import_react92.memo)(
16020
+ (0, import_react92.forwardRef)(function Message2({ role, children, user, avatarSize = INPUT_HEIGHT }, ref) {
15762
16021
  const randomId = (0, import_noya_utils17.uuid)();
15763
- const userMessageBackgroundColor = colorFromString(user?.id ?? randomId);
15764
- const styles3 = (0, import_react91.useMemo)(
16022
+ const resolvedUserId = user?.userId ?? user?.connectionId ?? randomId;
16023
+ const userMessageBackgroundColor = colorFromString(resolvedUserId);
16024
+ const styles3 = (0, import_react92.useMemo)(
15765
16025
  () => role === "user" ? {
15766
16026
  backgroundColor: userMessageBackgroundColor
15767
16027
  } : void 0,
15768
16028
  [userMessageBackgroundColor, role]
15769
16029
  );
15770
- return /* @__PURE__ */ import_react91.default.createElement(
16030
+ return /* @__PURE__ */ import_react92.default.createElement(
15771
16031
  "div",
15772
16032
  {
15773
16033
  className: cx(
@@ -15775,24 +16035,24 @@ var Message = (0, import_react91.memo)(
15775
16035
  role === "user" ? "n-flex-row-reverse" : "n-flex-row"
15776
16036
  )
15777
16037
  },
15778
- role === "assistant" ? /* @__PURE__ */ import_react91.default.createElement(
16038
+ role === "assistant" ? /* @__PURE__ */ import_react92.default.createElement(
15779
16039
  Avatar,
15780
16040
  {
15781
16041
  name: "Assistant",
15782
16042
  size: avatarSize,
15783
16043
  backgroundColor: cssVars.colors.primaryPastel
15784
16044
  },
15785
- /* @__PURE__ */ import_react91.default.createElement(Logo, { style: { width: 15 }, fill: cssVars.colors.primary })
15786
- ) : /* @__PURE__ */ import_react91.default.createElement(
16045
+ /* @__PURE__ */ import_react92.default.createElement(Logo, { style: { width: 15 }, fill: cssVars.colors.primary })
16046
+ ) : /* @__PURE__ */ import_react92.default.createElement(
15787
16047
  Avatar,
15788
16048
  {
15789
- userId: !user ? randomId : user?.id,
16049
+ userId: resolvedUserId,
15790
16050
  name: user?.name ?? "Anonymous",
15791
16051
  image: user?.image,
15792
16052
  size: avatarSize
15793
16053
  }
15794
16054
  ),
15795
- /* @__PURE__ */ import_react91.default.createElement(
16055
+ /* @__PURE__ */ import_react92.default.createElement(
15796
16056
  "div",
15797
16057
  {
15798
16058
  className: cx(
@@ -15812,9 +16072,9 @@ var Message = (0, import_react91.memo)(
15812
16072
 
15813
16073
  // src/components/pipeline/PipelineResultLayout.tsx
15814
16074
  var import_noya_icons11 = require("@noya-app/noya-icons");
15815
- var import_react92 = __toESM(require("react"));
16075
+ var import_react93 = __toESM(require("react"));
15816
16076
  var PipelineResultLink = ({ url }) => {
15817
- return /* @__PURE__ */ import_react92.default.createElement("div", { className: "n-flex n-flex-col gap-0.5" }, /* @__PURE__ */ import_react92.default.createElement(
16077
+ return /* @__PURE__ */ import_react93.default.createElement("div", { className: "n-flex n-flex-col gap-0.5" }, /* @__PURE__ */ import_react93.default.createElement(
15818
16078
  "a",
15819
16079
  {
15820
16080
  href: url,
@@ -15822,15 +16082,15 @@ var PipelineResultLink = ({ url }) => {
15822
16082
  rel: "noopener noreferrer",
15823
16083
  className: "n-flex n-text-primary hover:n-opacity-80 n-border n-border-divider n-rounded-md"
15824
16084
  },
15825
- /* @__PURE__ */ import_react92.default.createElement("div", { className: "n-flex n-gap-1 n-items-center n-p-2" }, /* @__PURE__ */ import_react92.default.createElement(import_noya_icons11.Link1Icon, { className: "n-w-[15px] n-h-[15px] n-flex-shrink-0" })),
15826
- /* @__PURE__ */ import_react92.default.createElement(DividerVertical, null),
15827
- /* @__PURE__ */ import_react92.default.createElement(Small, { className: "n-truncate n-p-2 n-flex-1" }, url)
16085
+ /* @__PURE__ */ import_react93.default.createElement("div", { className: "n-flex n-gap-1 n-items-center n-p-2" }, /* @__PURE__ */ import_react93.default.createElement(import_noya_icons11.Link1Icon, { className: "n-w-[15px] n-h-[15px] n-flex-shrink-0" })),
16086
+ /* @__PURE__ */ import_react93.default.createElement(DividerVertical, null),
16087
+ /* @__PURE__ */ import_react93.default.createElement(Small, { className: "n-truncate n-p-2 n-flex-1" }, url)
15828
16088
  ));
15829
16089
  };
15830
16090
  var PipelineResultLayout = ({
15831
16091
  children
15832
16092
  }) => {
15833
- return /* @__PURE__ */ import_react92.default.createElement("div", { className: "n-flex n-flex-col n-gap-2" }, children);
16093
+ return /* @__PURE__ */ import_react93.default.createElement("div", { className: "n-flex n-flex-col n-gap-2" }, children);
15834
16094
  };
15835
16095
  function getPipelineResultLink(value) {
15836
16096
  if (typeof value !== "object" || value === null) return void 0;
@@ -15844,7 +16104,7 @@ function getPipelineResultLink(value) {
15844
16104
  }
15845
16105
 
15846
16106
  // src/components/ResizableContainer.tsx
15847
- var import_react93 = __toESM(require("react"));
16107
+ var import_react94 = __toESM(require("react"));
15848
16108
  var ResizableContainer = ({
15849
16109
  children,
15850
16110
  minWidth,
@@ -15857,13 +16117,13 @@ var ResizableContainer = ({
15857
16117
  onChangeWidth,
15858
16118
  shouldResetWidthOnGestureEnd: shouldResetWidth
15859
16119
  }) => {
15860
- const containerRef = (0, import_react93.useRef)(null);
15861
- const resizeableRef = (0, import_react93.useRef)(null);
15862
- const handleRef = (0, import_react93.useRef)(null);
15863
- const clickCounter = (0, import_react93.useRef)(createClickCounter({ delay: 250 }));
15864
- const [width, setWidth] = (0, import_react93.useState)();
15865
- const [drag, setDrag] = (0, import_react93.useState)();
15866
- const handlePointerDown = (0, import_react93.useCallback)(
16120
+ const containerRef = (0, import_react94.useRef)(null);
16121
+ const resizeableRef = (0, import_react94.useRef)(null);
16122
+ const handleRef = (0, import_react94.useRef)(null);
16123
+ const clickCounter = (0, import_react94.useRef)(createClickCounter({ delay: 250 }));
16124
+ const [width, setWidth] = (0, import_react94.useState)();
16125
+ const [drag, setDrag] = (0, import_react94.useState)();
16126
+ const handlePointerDown = (0, import_react94.useCallback)(
15867
16127
  (event) => {
15868
16128
  const containerWidth = containerRef.current?.getBoundingClientRect().width;
15869
16129
  const resizeableWidth = resizeableRef.current?.getBoundingClientRect().width;
@@ -15881,7 +16141,7 @@ var ResizableContainer = ({
15881
16141
  },
15882
16142
  [maxWidth, minWidth]
15883
16143
  );
15884
- const handlePointerMove = (0, import_react93.useCallback)(
16144
+ const handlePointerMove = (0, import_react94.useCallback)(
15885
16145
  (event) => {
15886
16146
  if (!drag) return;
15887
16147
  const delta = event.clientX - drag.startX;
@@ -15897,7 +16157,7 @@ var ResizableContainer = ({
15897
16157
  },
15898
16158
  [drag, onChangeWidth]
15899
16159
  );
15900
- const handlePointerUp = (0, import_react93.useCallback)(
16160
+ const handlePointerUp = (0, import_react94.useCallback)(
15901
16161
  (event) => {
15902
16162
  setDrag(void 0);
15903
16163
  handleRef.current?.releasePointerCapture(event.pointerId);
@@ -15913,7 +16173,7 @@ var ResizableContainer = ({
15913
16173
  },
15914
16174
  [shouldResetWidth]
15915
16175
  );
15916
- return /* @__PURE__ */ import_react93.default.createElement(
16176
+ return /* @__PURE__ */ import_react94.default.createElement(
15917
16177
  "div",
15918
16178
  {
15919
16179
  ref: containerRef,
@@ -15921,7 +16181,7 @@ var ResizableContainer = ({
15921
16181
  style: { position: "relative", ...style2 },
15922
16182
  className
15923
16183
  },
15924
- /* @__PURE__ */ import_react93.default.createElement(
16184
+ /* @__PURE__ */ import_react94.default.createElement(
15925
16185
  "div",
15926
16186
  {
15927
16187
  ref: resizeableRef,
@@ -15932,7 +16192,7 @@ var ResizableContainer = ({
15932
16192
  }
15933
16193
  },
15934
16194
  typeof children === "function" ? children({ width }) : children,
15935
- /* @__PURE__ */ import_react93.default.createElement(
16195
+ /* @__PURE__ */ import_react94.default.createElement(
15936
16196
  "div",
15937
16197
  {
15938
16198
  ref: handleRef,
@@ -15957,7 +16217,7 @@ var ResizableContainer = ({
15957
16217
  onPointerUp: handlePointerUp,
15958
16218
  onPointerCancel: handlePointerUp
15959
16219
  },
15960
- /* @__PURE__ */ import_react93.default.createElement(
16220
+ /* @__PURE__ */ import_react94.default.createElement(
15961
16221
  "div",
15962
16222
  {
15963
16223
  style: {
@@ -15975,7 +16235,7 @@ var ResizableContainer = ({
15975
16235
  }
15976
16236
  )
15977
16237
  ),
15978
- drag && /* @__PURE__ */ import_react93.default.createElement(
16238
+ drag && /* @__PURE__ */ import_react94.default.createElement(
15979
16239
  "div",
15980
16240
  {
15981
16241
  style: {
@@ -15998,7 +16258,7 @@ function clamp5(value, min, max) {
15998
16258
 
15999
16259
  // src/components/RingProgress.tsx
16000
16260
  var import_noya_utils18 = require("@noya-app/noya-utils");
16001
- var React90 = __toESM(require("react"));
16261
+ var React92 = __toESM(require("react"));
16002
16262
  function RingProgress({
16003
16263
  value,
16004
16264
  dividedBy = 100,
@@ -16014,14 +16274,14 @@ function RingProgress({
16014
16274
  const safeDivisor = dividedBy > 0 ? dividedBy : 1;
16015
16275
  const clampedRaw = (0, import_noya_utils18.clamp)(value, 0, safeDivisor);
16016
16276
  const clampedPercent = clampedRaw / safeDivisor * 100;
16017
- const radius = React90.useMemo(() => (size - thickness) / 2, [size, thickness]);
16018
- const circumference = React90.useMemo(() => 2 * Math.PI * radius, [radius]);
16019
- const dashOffset = React90.useMemo(
16277
+ const radius = React92.useMemo(() => (size - thickness) / 2, [size, thickness]);
16278
+ const circumference = React92.useMemo(() => 2 * Math.PI * radius, [radius]);
16279
+ const dashOffset = React92.useMemo(
16020
16280
  () => (100 - clampedPercent) / 100 * circumference,
16021
16281
  [circumference, clampedPercent]
16022
16282
  );
16023
16283
  const trackStroke = trackColor ?? "var(--n-input-background, rgba(0,0,0,0.08))";
16024
- const colorClass = React90.useMemo(() => {
16284
+ const colorClass = React92.useMemo(() => {
16025
16285
  switch (colorScheme) {
16026
16286
  case "primary":
16027
16287
  return "n-stroke-primary";
@@ -16034,7 +16294,7 @@ function RingProgress({
16034
16294
  return "n-stroke-text";
16035
16295
  }
16036
16296
  }, [colorScheme]);
16037
- const computedStroke = React90.useMemo(() => {
16297
+ const computedStroke = React92.useMemo(() => {
16038
16298
  if (color) return color;
16039
16299
  switch (colorScheme) {
16040
16300
  case "primary":
@@ -16048,7 +16308,7 @@ function RingProgress({
16048
16308
  return "var(--n-text, currentColor)";
16049
16309
  }
16050
16310
  }, [color, colorScheme]);
16051
- return /* @__PURE__ */ React90.createElement(
16311
+ return /* @__PURE__ */ React92.createElement(
16052
16312
  "span",
16053
16313
  {
16054
16314
  className: cx("n-inline-flex n-items-center n-justify-center", className),
@@ -16059,7 +16319,7 @@ function RingProgress({
16059
16319
  "aria-valuemax": safeDivisor,
16060
16320
  "aria-label": ariaLabel
16061
16321
  },
16062
- /* @__PURE__ */ React90.createElement(
16322
+ /* @__PURE__ */ React92.createElement(
16063
16323
  "svg",
16064
16324
  {
16065
16325
  width: size,
@@ -16067,7 +16327,7 @@ function RingProgress({
16067
16327
  viewBox: `0 0 ${size} ${size}`,
16068
16328
  style: { display: "block" }
16069
16329
  },
16070
- /* @__PURE__ */ React90.createElement(
16330
+ /* @__PURE__ */ React92.createElement(
16071
16331
  "circle",
16072
16332
  {
16073
16333
  cx: size / 2,
@@ -16078,7 +16338,7 @@ function RingProgress({
16078
16338
  strokeWidth: thickness
16079
16339
  }
16080
16340
  ),
16081
- /* @__PURE__ */ React90.createElement(
16341
+ /* @__PURE__ */ React92.createElement(
16082
16342
  "circle",
16083
16343
  {
16084
16344
  cx: size / 2,
@@ -16102,49 +16362,13 @@ function RingProgress({
16102
16362
  }
16103
16363
 
16104
16364
  // src/components/ScrollableSidebar.tsx
16105
- var import_react94 = __toESM(require("react"));
16365
+ var import_react95 = __toESM(require("react"));
16106
16366
  function ScrollableSidebar({ children }) {
16107
- return /* @__PURE__ */ import_react94.default.createElement("div", { className: "n-relative n-flex n-flex-col n-flex-1 n-max-h-full" }, /* @__PURE__ */ import_react94.default.createElement(ScrollArea, null, children));
16108
- }
16109
-
16110
- // src/components/ScrollArea2.tsx
16111
- var import_scroll_area = require("@base-ui-components/react/scroll-area");
16112
- var React92 = __toESM(require("react"));
16113
- var SCROLLBAR_STATE_CLASSES = "scroll-component n-opacity-0 n-transition-opacity n-delay-300 n-pointer-events-none data-[hovering]:n-opacity-100 data-[hovering]:n-delay-0 data-[hovering]:n-duration-75 data-[hovering]:n-pointer-events-auto data-[scrolling]:n-opacity-100 data-[scrolling]:n-delay-0 data-[scrolling]:n-duration-75 data-[scrolling]:n-pointer-events-auto";
16114
- var SCROLLBAR_TRACK_VERTICAL = "n-m-1 n-w-1 flex n-justify-center n-rounded-md n-bg-divider-subtle";
16115
- var SCROLLBAR_TRACK_HORIZONTAL = "n-m-1 n-h-1 flex n-justify-center n-rounded-md n-bg-divider-subtle";
16116
- var SCROLLBAR_THUMB_VERTICAL = "scroll-component n-w-full n-rounded n-bg-scrollbar";
16117
- var SCROLLBAR_THUMB_HORIZONTAL = "scroll-component n-h-full n-rounded n-bg-scrollbar";
16118
- function ScrollArea22({
16119
- children,
16120
- className,
16121
- viewportClassName,
16122
- orientation = "vertical"
16123
- }) {
16124
- return /* @__PURE__ */ React92.createElement(import_scroll_area.ScrollArea.Root, { className: cx("n-relative", className) }, /* @__PURE__ */ React92.createElement(
16125
- import_scroll_area.ScrollArea.Viewport,
16126
- {
16127
- className: cx("n-h-full n-overscroll-contain", viewportClassName)
16128
- },
16129
- children
16130
- ), (orientation === "vertical" || orientation === "both") && /* @__PURE__ */ React92.createElement(
16131
- import_scroll_area.ScrollArea.Scrollbar,
16132
- {
16133
- className: cx(SCROLLBAR_STATE_CLASSES, SCROLLBAR_TRACK_VERTICAL)
16134
- },
16135
- /* @__PURE__ */ React92.createElement(import_scroll_area.ScrollArea.Thumb, { className: SCROLLBAR_THUMB_VERTICAL })
16136
- ), (orientation === "horizontal" || orientation === "both") && /* @__PURE__ */ React92.createElement(
16137
- import_scroll_area.ScrollArea.Scrollbar,
16138
- {
16139
- orientation: "horizontal",
16140
- className: cx(SCROLLBAR_STATE_CLASSES, SCROLLBAR_TRACK_HORIZONTAL)
16141
- },
16142
- /* @__PURE__ */ React92.createElement(import_scroll_area.ScrollArea.Thumb, { className: SCROLLBAR_THUMB_HORIZONTAL })
16143
- ), orientation === "both" && /* @__PURE__ */ React92.createElement(import_scroll_area.ScrollArea.Corner, null));
16367
+ return /* @__PURE__ */ import_react95.default.createElement("div", { className: "n-relative n-flex n-flex-col n-flex-1 n-max-h-full" }, /* @__PURE__ */ import_react95.default.createElement(ScrollArea, null, children));
16144
16368
  }
16145
16369
 
16146
16370
  // src/components/Section.tsx
16147
- var import_react95 = __toESM(require("react"));
16371
+ var import_react96 = __toESM(require("react"));
16148
16372
  var titleIconStyle = {
16149
16373
  marginRight: "6px",
16150
16374
  alignSelf: "flex-start",
@@ -16165,14 +16389,14 @@ function SectionHeader({
16165
16389
  titleClassName,
16166
16390
  onClickTitle
16167
16391
  }) {
16168
- const headerStyle = (0, import_react95.useMemo)(
16392
+ const headerStyle = (0, import_react96.useMemo)(
16169
16393
  () => ({
16170
16394
  minHeight: INPUT_HEIGHT,
16171
16395
  ...style2
16172
16396
  }),
16173
16397
  [style2]
16174
16398
  );
16175
- const titleElement = title ? /* @__PURE__ */ import_react95.default.createElement(
16399
+ const titleElement = title ? /* @__PURE__ */ import_react96.default.createElement(
16176
16400
  InspectorPrimitives_exports.Title,
16177
16401
  {
16178
16402
  $textStyle: titleTextStyle,
@@ -16180,16 +16404,16 @@ function SectionHeader({
16180
16404
  },
16181
16405
  title
16182
16406
  ) : null;
16183
- return /* @__PURE__ */ import_react95.default.createElement(
16407
+ return /* @__PURE__ */ import_react96.default.createElement(
16184
16408
  InspectorPrimitives_exports.SectionHeader,
16185
16409
  {
16186
16410
  style: headerStyle,
16187
16411
  className
16188
16412
  },
16189
- titleIcon && /* @__PURE__ */ import_react95.default.createElement("div", { style: titleIconStyle, className: textStyles[titleTextStyle] }, "\u200B", renderIcon(titleIcon)),
16190
- titleElement && /* @__PURE__ */ import_react95.default.createElement(import_react95.default.Fragment, null, onClickTitle ? /* @__PURE__ */ import_react95.default.createElement(Button, { variant: "none", onClick: onClickTitle }, titleElement) : titleElement),
16191
- headerSeparator === "space" && /* @__PURE__ */ import_react95.default.createElement(Spacer.Horizontal, null),
16192
- headerSeparator === "dot" && /* @__PURE__ */ import_react95.default.createElement(
16413
+ titleIcon && /* @__PURE__ */ import_react96.default.createElement("div", { style: titleIconStyle, className: textStyles[titleTextStyle] }, "\u200B", renderIcon(titleIcon)),
16414
+ titleElement && /* @__PURE__ */ import_react96.default.createElement(import_react96.default.Fragment, null, onClickTitle ? /* @__PURE__ */ import_react96.default.createElement(Button, { variant: "none", onClick: onClickTitle }, titleElement) : titleElement),
16415
+ headerSeparator === "space" && /* @__PURE__ */ import_react96.default.createElement(Spacer.Horizontal, null),
16416
+ headerSeparator === "dot" && /* @__PURE__ */ import_react96.default.createElement(
16193
16417
  Text,
16194
16418
  {
16195
16419
  variant: titleTextStyle,
@@ -16215,7 +16439,7 @@ var SectionInternal = ({
16215
16439
  titleClassName,
16216
16440
  headerStyle: headerStyleProp
16217
16441
  }) => {
16218
- const style2 = (0, import_react95.useMemo)(
16442
+ const style2 = (0, import_react96.useMemo)(
16219
16443
  () => ({
16220
16444
  display: "flex",
16221
16445
  flexDirection: "column",
@@ -16226,15 +16450,15 @@ var SectionInternal = ({
16226
16450
  }),
16227
16451
  [titleTextStyle, title, extraPadding, styleProp]
16228
16452
  );
16229
- const hasChildren = import_react95.default.Children.toArray(children).some((child) => !!child);
16230
- const headerStyle = (0, import_react95.useMemo)(
16453
+ const hasChildren = import_react96.default.Children.toArray(children).some((child) => !!child);
16454
+ const headerStyle = (0, import_react96.useMemo)(
16231
16455
  () => ({
16232
16456
  marginBottom: hasChildren ? "4px" : void 0,
16233
16457
  ...headerStyleProp
16234
16458
  }),
16235
16459
  [hasChildren, headerStyleProp]
16236
16460
  );
16237
- return /* @__PURE__ */ import_react95.default.createElement("div", { style: style2, className }, (title || titleIcon || right) && /* @__PURE__ */ import_react95.default.createElement(
16461
+ return /* @__PURE__ */ import_react96.default.createElement("div", { style: style2, className }, (title || titleIcon || right) && /* @__PURE__ */ import_react96.default.createElement(
16238
16462
  SectionHeader,
16239
16463
  {
16240
16464
  style: headerStyle,
@@ -16246,7 +16470,7 @@ var SectionInternal = ({
16246
16470
  right,
16247
16471
  headerSeparator
16248
16472
  }
16249
- ), /* @__PURE__ */ import_react95.default.createElement(IndentContext.Provider, { value: 0 }, children));
16473
+ ), /* @__PURE__ */ import_react96.default.createElement(IndentContext.Provider, { value: 0 }, children));
16250
16474
  };
16251
16475
  var ExpandableSection = ({
16252
16476
  storageKey,
@@ -16259,12 +16483,12 @@ var ExpandableSection = ({
16259
16483
  initialVisibility
16260
16484
  );
16261
16485
  const expanded = visibility === "show";
16262
- return /* @__PURE__ */ import_react95.default.createElement(
16486
+ return /* @__PURE__ */ import_react96.default.createElement(
16263
16487
  SectionInternal,
16264
16488
  {
16265
16489
  ...props,
16266
16490
  right: !props.hideRightWhenCollapsed || expanded ? props.right : null,
16267
- title: /* @__PURE__ */ import_react95.default.createElement("div", { className: "n-flex n-gap-1 n-items-center" }, props.title, /* @__PURE__ */ import_react95.default.createElement(
16491
+ title: /* @__PURE__ */ import_react96.default.createElement("div", { className: "n-flex n-gap-1 n-items-center" }, props.title, /* @__PURE__ */ import_react96.default.createElement(
16268
16492
  IconButton,
16269
16493
  {
16270
16494
  iconName: expanded ? "ChevronDownIcon2" : "ChevronRightIcon2",
@@ -16275,20 +16499,20 @@ var ExpandableSection = ({
16275
16499
  expanded && props.children
16276
16500
  );
16277
16501
  };
16278
- var Section = (0, import_react95.memo)(function InspectorSection({
16502
+ var Section = (0, import_react96.memo)(function InspectorSection({
16279
16503
  storageKey,
16280
16504
  ...props
16281
16505
  }) {
16282
- return storageKey ? /* @__PURE__ */ import_react95.default.createElement(ExpandableSection, { ...props, storageKey }) : /* @__PURE__ */ import_react95.default.createElement(SectionInternal, { ...props });
16506
+ return storageKey ? /* @__PURE__ */ import_react96.default.createElement(ExpandableSection, { ...props, storageKey }) : /* @__PURE__ */ import_react96.default.createElement(SectionInternal, { ...props });
16283
16507
  });
16284
16508
 
16285
16509
  // src/components/SegmentedControl.tsx
16286
16510
  var import_radix_ui12 = require("radix-ui");
16287
- var import_react96 = __toESM(require("react"));
16288
- var SegmentedControlContext = (0, import_react96.createContext)({
16511
+ var import_react97 = __toESM(require("react"));
16512
+ var SegmentedControlContext = (0, import_react97.createContext)({
16289
16513
  colorScheme: "primary"
16290
16514
  });
16291
- var SegmentedControlItem = (0, import_react96.forwardRef)(function SegmentedControlItem2({
16515
+ var SegmentedControlItem = (0, import_react97.forwardRef)(function SegmentedControlItem2({
16292
16516
  value,
16293
16517
  tooltip,
16294
16518
  title,
@@ -16298,8 +16522,8 @@ var SegmentedControlItem = (0, import_react96.forwardRef)(function SegmentedCont
16298
16522
  variant = "default",
16299
16523
  ...props
16300
16524
  }, forwardedRef) {
16301
- const { colorScheme } = (0, import_react96.useContext)(SegmentedControlContext);
16302
- const itemElement = /* @__PURE__ */ import_react96.default.createElement(
16525
+ const { colorScheme } = (0, import_react97.useContext)(SegmentedControlContext);
16526
+ const itemElement = /* @__PURE__ */ import_react97.default.createElement(
16303
16527
  import_radix_ui12.ToggleGroup.Item,
16304
16528
  {
16305
16529
  ref: forwardedRef,
@@ -16330,7 +16554,7 @@ var SegmentedControlItem = (0, import_react96.forwardRef)(function SegmentedCont
16330
16554
  ),
16331
16555
  ...props
16332
16556
  },
16333
- /* @__PURE__ */ import_react96.default.createElement(
16557
+ /* @__PURE__ */ import_react97.default.createElement(
16334
16558
  "span",
16335
16559
  {
16336
16560
  className: cx(
@@ -16342,7 +16566,7 @@ var SegmentedControlItem = (0, import_react96.forwardRef)(function SegmentedCont
16342
16566
  title
16343
16567
  )
16344
16568
  );
16345
- return tooltip ? /* @__PURE__ */ import_react96.default.createElement(Tooltip, { content: tooltip }, itemElement) : itemElement;
16569
+ return tooltip ? /* @__PURE__ */ import_react97.default.createElement(Tooltip, { content: tooltip }, itemElement) : itemElement;
16346
16570
  });
16347
16571
  var SegmentedControl = memoGeneric(function SegmentedControl2({
16348
16572
  id: idProp,
@@ -16355,16 +16579,16 @@ var SegmentedControl = memoGeneric(function SegmentedControl2({
16355
16579
  className,
16356
16580
  style: style2
16357
16581
  }) {
16358
- const contextValue = (0, import_react96.useMemo)(() => ({ colorScheme }), [colorScheme]);
16582
+ const contextValue = (0, import_react97.useMemo)(() => ({ colorScheme }), [colorScheme]);
16359
16583
  const { fieldId: id } = useLabel({ fieldId: idProp });
16360
- const handleValueChange = (0, import_react96.useCallback)(
16584
+ const handleValueChange = (0, import_react97.useCallback)(
16361
16585
  (value2) => {
16362
16586
  if (!allowEmpty && !value2) return;
16363
16587
  onValueChange?.(value2);
16364
16588
  },
16365
16589
  [allowEmpty, onValueChange]
16366
16590
  );
16367
- return /* @__PURE__ */ import_react96.default.createElement(SegmentedControlContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react96.default.createElement(
16591
+ return /* @__PURE__ */ import_react97.default.createElement(SegmentedControlContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react97.default.createElement(
16368
16592
  import_radix_ui12.ToggleGroup.Root,
16369
16593
  {
16370
16594
  id,
@@ -16383,14 +16607,14 @@ var SegmentedControl = memoGeneric(function SegmentedControl2({
16383
16607
  gridTemplateColumns: `repeat(${items.length}, 1fr)`
16384
16608
  }
16385
16609
  },
16386
- items.map((item, index) => /* @__PURE__ */ import_react96.default.createElement(SegmentedControlItem, { key: index, ...item, variant }))
16610
+ items.map((item, index) => /* @__PURE__ */ import_react97.default.createElement(SegmentedControlItem, { key: index, ...item, variant }))
16387
16611
  ));
16388
16612
  });
16389
16613
 
16390
16614
  // src/components/SelectionToolbar.tsx
16391
16615
  var PopperPrimitive = __toESM(require("@radix-ui/react-popper"));
16392
- var import_react97 = __toESM(require("react"));
16393
- var import_react_dom3 = require("react-dom");
16616
+ var import_react98 = __toESM(require("react"));
16617
+ var import_react_dom4 = require("react-dom");
16394
16618
  var createVirtualElement = (rect) => ({
16395
16619
  getBoundingClientRect: () => ({
16396
16620
  width: rect.width,
@@ -16404,7 +16628,7 @@ var createVirtualElement = (rect) => ({
16404
16628
  toJSON: () => null
16405
16629
  })
16406
16630
  });
16407
- var SelectionToolbarContainer = (0, import_react97.memo)(
16631
+ var SelectionToolbarContainer = (0, import_react98.memo)(
16408
16632
  function SelectionToolbarContainer2({
16409
16633
  rect,
16410
16634
  children,
@@ -16418,15 +16642,15 @@ var SelectionToolbarContainer = (0, import_react97.memo)(
16418
16642
  transitionDuration = 0.2
16419
16643
  }) {
16420
16644
  const portalScopeId = usePortalScopeId();
16421
- const containerRef = import_react97.default.useRef(null);
16645
+ const containerRef = import_react98.default.useRef(null);
16422
16646
  const size = useSize(containerRef, "width");
16423
- const virtualRef = (0, import_react97.useMemo)(
16647
+ const virtualRef = (0, import_react98.useMemo)(
16424
16648
  () => ({
16425
16649
  current: createVirtualElement(rect)
16426
16650
  }),
16427
16651
  [rect]
16428
16652
  );
16429
- const popperContent = /* @__PURE__ */ import_react97.default.createElement(
16653
+ const popperContent = /* @__PURE__ */ import_react98.default.createElement(
16430
16654
  PopperPrimitive.Content,
16431
16655
  {
16432
16656
  ...portalScopeProps(portalScopeId),
@@ -16444,7 +16668,7 @@ var SelectionToolbarContainer = (0, import_react97.memo)(
16444
16668
  [cssVarNames.colors.buttonBackground]: "transparent"
16445
16669
  }
16446
16670
  },
16447
- /* @__PURE__ */ import_react97.default.createElement(
16671
+ /* @__PURE__ */ import_react98.default.createElement(
16448
16672
  "div",
16449
16673
  {
16450
16674
  ref: containerRef,
@@ -16461,14 +16685,14 @@ var SelectionToolbarContainer = (0, import_react97.memo)(
16461
16685
  children
16462
16686
  )
16463
16687
  );
16464
- return /* @__PURE__ */ import_react97.default.createElement(PopperPrimitive.Root, null, /* @__PURE__ */ import_react97.default.createElement(PopperPrimitive.Anchor, { virtualRef }), portalContainer ? (0, import_react_dom3.createPortal)(popperContent, portalContainer) : popperContent);
16688
+ return /* @__PURE__ */ import_react98.default.createElement(PopperPrimitive.Root, null, /* @__PURE__ */ import_react98.default.createElement(PopperPrimitive.Anchor, { virtualRef }), portalContainer ? (0, import_react_dom4.createPortal)(popperContent, portalContainer) : popperContent);
16465
16689
  }
16466
16690
  );
16467
16691
 
16468
16692
  // src/components/SelectMenu.tsx
16469
16693
  var import_noya_icons12 = require("@noya-app/noya-icons");
16470
16694
  var import_radix_ui13 = require("radix-ui");
16471
- var import_react98 = __toESM(require("react"));
16695
+ var import_react99 = __toESM(require("react"));
16472
16696
  var readOnlyStyle = {
16473
16697
  justifyContent: "flex-start",
16474
16698
  textAlign: "left"
@@ -16491,7 +16715,7 @@ var SelectMenuTrigger = memoGeneric(function SelectMenuTrigger2({
16491
16715
  fieldId: props.id
16492
16716
  });
16493
16717
  const labelType = useLabelType();
16494
- return /* @__PURE__ */ import_react98.default.createElement(import_radix_ui13.Select.SelectTrigger, { asChild: true, onFocus, onBlur }, /* @__PURE__ */ import_react98.default.createElement(
16718
+ return /* @__PURE__ */ import_react99.default.createElement(import_radix_ui13.Select.SelectTrigger, { asChild: true, onFocus, onBlur }, /* @__PURE__ */ import_react99.default.createElement(
16495
16719
  Button,
16496
16720
  {
16497
16721
  id,
@@ -16503,10 +16727,10 @@ var SelectMenuTrigger = memoGeneric(function SelectMenuTrigger2({
16503
16727
  ),
16504
16728
  disabled
16505
16729
  },
16506
- icon && /* @__PURE__ */ import_react98.default.createElement("span", { className: "n-pr-1.5" }, renderIcon(icon)),
16507
- label && labelType === "inset" && /* @__PURE__ */ import_react98.default.createElement("div", { className: insetEndStyles }, /* @__PURE__ */ import_react98.default.createElement(Label, { className: "n-pr-4 n-text-text-disabled", htmlFor: id }, label)),
16508
- /* @__PURE__ */ import_react98.default.createElement("span", { className: "n-flex-1 n-flex" }, /* @__PURE__ */ import_react98.default.createElement(import_radix_ui13.Select.Value, { placeholder })),
16509
- /* @__PURE__ */ import_react98.default.createElement(
16730
+ icon && /* @__PURE__ */ import_react99.default.createElement("span", { className: "n-pr-1.5" }, renderIcon(icon)),
16731
+ label && labelType === "inset" && /* @__PURE__ */ import_react99.default.createElement("div", { className: insetEndStyles }, /* @__PURE__ */ import_react99.default.createElement(Label, { className: "n-pr-4 n-text-text-disabled", htmlFor: id }, label)),
16732
+ /* @__PURE__ */ import_react99.default.createElement("span", { className: "n-flex-1 n-flex" }, /* @__PURE__ */ import_react99.default.createElement(import_radix_ui13.Select.Value, { placeholder })),
16733
+ /* @__PURE__ */ import_react99.default.createElement(
16510
16734
  import_noya_icons12.DropdownChevronIcon,
16511
16735
  {
16512
16736
  className: cx(
@@ -16543,7 +16767,7 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16543
16767
  (item) => isSelectableMenuItem(item) && item.value === value
16544
16768
  );
16545
16769
  const icon = selectedItem?.icon;
16546
- const [internalOpen, setInternalOpen] = (0, import_react98.useState)(open);
16770
+ const [internalOpen, setInternalOpen] = (0, import_react99.useState)(open);
16547
16771
  const { label, fieldId: id } = useLabel({
16548
16772
  label: props.label,
16549
16773
  fieldId: props.id
@@ -16554,8 +16778,8 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16554
16778
  }
16555
16779
  setInternalOpen(open2);
16556
16780
  };
16557
- const readOnlyButton = (0, import_react98.useMemo)(
16558
- () => /* @__PURE__ */ import_react98.default.createElement(
16781
+ const readOnlyButton = (0, import_react99.useMemo)(
16782
+ () => /* @__PURE__ */ import_react99.default.createElement(
16559
16783
  Button,
16560
16784
  {
16561
16785
  id,
@@ -16565,11 +16789,11 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16565
16789
  disabled
16566
16790
  },
16567
16791
  icon && renderIcon(icon),
16568
- /* @__PURE__ */ import_react98.default.createElement("span", { className: "n-flex n-flex-1" }, selectedItem?.title ?? value)
16792
+ /* @__PURE__ */ import_react99.default.createElement("span", { className: "n-flex n-flex-1" }, selectedItem?.title ?? value)
16569
16793
  ),
16570
16794
  [icon, id, style2, className, disabled, value, selectedItem]
16571
16795
  );
16572
- const contentStyle = (0, import_react98.useMemo)(() => {
16796
+ const contentStyle = (0, import_react99.useMemo)(() => {
16573
16797
  return {
16574
16798
  width: "var(--radix-select-trigger-width)",
16575
16799
  minWidth: "max-content",
@@ -16577,7 +16801,7 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16577
16801
  ...contentStyleProp
16578
16802
  };
16579
16803
  }, [contentStyleProp]);
16580
- const content = /* @__PURE__ */ import_react98.default.createElement(
16804
+ const content = /* @__PURE__ */ import_react99.default.createElement(
16581
16805
  import_radix_ui13.Select.Root,
16582
16806
  {
16583
16807
  value,
@@ -16585,7 +16809,7 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16585
16809
  open,
16586
16810
  onOpenChange: handleOpenChange
16587
16811
  },
16588
- /* @__PURE__ */ import_react98.default.createElement(
16812
+ /* @__PURE__ */ import_react99.default.createElement(
16589
16813
  SelectMenuTrigger,
16590
16814
  {
16591
16815
  id,
@@ -16600,7 +16824,7 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16600
16824
  label
16601
16825
  }
16602
16826
  ),
16603
- /* @__PURE__ */ import_react98.default.createElement(import_radix_ui13.Select.Portal, null, /* @__PURE__ */ import_react98.default.createElement(
16827
+ /* @__PURE__ */ import_react99.default.createElement(import_radix_ui13.Select.Portal, null, /* @__PURE__ */ import_react99.default.createElement(
16604
16828
  import_radix_ui13.Select.Content,
16605
16829
  {
16606
16830
  ...portalScopeProps(portalScopeId),
@@ -16611,14 +16835,14 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16611
16835
  align: "center",
16612
16836
  style: contentStyle
16613
16837
  },
16614
- /* @__PURE__ */ import_react98.default.createElement(import_radix_ui13.Select.ScrollUpButton, { className: scrollButtonStyles }, /* @__PURE__ */ import_react98.default.createElement(
16838
+ /* @__PURE__ */ import_react99.default.createElement(import_radix_ui13.Select.ScrollUpButton, { className: scrollButtonStyles }, /* @__PURE__ */ import_react99.default.createElement(
16615
16839
  import_noya_icons12.ChevronUpIcon,
16616
16840
  {
16617
16841
  className: cx("n-transition-transform n-duration-100")
16618
16842
  }
16619
16843
  )),
16620
- /* @__PURE__ */ import_react98.default.createElement(import_radix_ui13.Select.Viewport, null, /* @__PURE__ */ import_react98.default.createElement(MenuViewport, { items, Components: Components3 })),
16621
- /* @__PURE__ */ import_react98.default.createElement(import_radix_ui13.Select.ScrollDownButton, { className: scrollButtonStyles }, /* @__PURE__ */ import_react98.default.createElement(import_noya_icons12.ChevronDownIcon, null))
16844
+ /* @__PURE__ */ import_react99.default.createElement(import_radix_ui13.Select.Viewport, null, /* @__PURE__ */ import_react99.default.createElement(MenuViewport, { items, Components: Components3 })),
16845
+ /* @__PURE__ */ import_react99.default.createElement(import_radix_ui13.Select.ScrollDownButton, { className: scrollButtonStyles }, /* @__PURE__ */ import_react99.default.createElement(import_noya_icons12.ChevronDownIcon, null))
16622
16846
  ))
16623
16847
  );
16624
16848
  return readOnly ? readOnlyButton : content;
@@ -16626,12 +16850,12 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16626
16850
 
16627
16851
  // src/components/Slider.tsx
16628
16852
  var import_radix_ui14 = require("radix-ui");
16629
- var import_react99 = __toESM(require("react"));
16853
+ var import_react100 = __toESM(require("react"));
16630
16854
  var THUMB_WIDTH = 8;
16631
16855
  var thumbStyle = {
16632
16856
  width: THUMB_WIDTH
16633
16857
  };
16634
- var Slider = (0, import_react99.memo)(function Slider2({
16858
+ var Slider = (0, import_react100.memo)(function Slider2({
16635
16859
  style: style2,
16636
16860
  className,
16637
16861
  value,
@@ -16645,21 +16869,21 @@ var Slider = (0, import_react99.memo)(function Slider2({
16645
16869
  readOnly = false,
16646
16870
  ...props
16647
16871
  }) {
16648
- const arrayValue = (0, import_react99.useMemo)(
16872
+ const arrayValue = (0, import_react100.useMemo)(
16649
16873
  () => [Math.min(Math.max(value, min), max)],
16650
16874
  [value, min, max]
16651
16875
  );
16652
16876
  const { fieldId: id } = useLabel({
16653
16877
  fieldId: props.id
16654
16878
  });
16655
- const handleValueChange = (0, import_react99.useCallback)(
16879
+ const handleValueChange = (0, import_react100.useCallback)(
16656
16880
  (arrayValue2) => {
16657
16881
  onValueChange(arrayValue2[0]);
16658
16882
  },
16659
16883
  [onValueChange]
16660
16884
  );
16661
16885
  const ratio = (arrayValue[0] - min) / (max - min);
16662
- return /* @__PURE__ */ import_react99.default.createElement(
16886
+ return /* @__PURE__ */ import_react100.default.createElement(
16663
16887
  import_radix_ui14.Slider.Root,
16664
16888
  {
16665
16889
  min,
@@ -16677,7 +16901,7 @@ var Slider = (0, import_react99.memo)(function Slider2({
16677
16901
  onBlur,
16678
16902
  disabled: readOnly
16679
16903
  },
16680
- /* @__PURE__ */ import_react99.default.createElement("div", { className: "n-relative n-flex-grow n-h-[3px] n-overflow-hidden" }, /* @__PURE__ */ import_react99.default.createElement(
16904
+ /* @__PURE__ */ import_react100.default.createElement("div", { className: "n-relative n-flex-grow n-h-[3px] n-overflow-hidden" }, /* @__PURE__ */ import_react100.default.createElement(
16681
16905
  "div",
16682
16906
  {
16683
16907
  className: "n-absolute n-h-full n-rounded-l n-bg-slider-active-background",
@@ -16686,7 +16910,7 @@ var Slider = (0, import_react99.memo)(function Slider2({
16686
16910
  width: `calc(${ratio * 100}% - ${ratio * 8}px - 2px)`
16687
16911
  }
16688
16912
  }
16689
- ), /* @__PURE__ */ import_react99.default.createElement(
16913
+ ), /* @__PURE__ */ import_react100.default.createElement(
16690
16914
  "div",
16691
16915
  {
16692
16916
  className: "n-absolute n-h-full n-rounded-r n-bg-input-background",
@@ -16696,7 +16920,7 @@ var Slider = (0, import_react99.memo)(function Slider2({
16696
16920
  }
16697
16921
  }
16698
16922
  )),
16699
- /* @__PURE__ */ import_react99.default.createElement(
16923
+ /* @__PURE__ */ import_react100.default.createElement(
16700
16924
  import_radix_ui14.Slider.Thumb,
16701
16925
  {
16702
16926
  style: thumbStyle,
@@ -16714,28 +16938,28 @@ var Slider = (0, import_react99.memo)(function Slider2({
16714
16938
  });
16715
16939
 
16716
16940
  // src/components/sorting/createSharedDrag.tsx
16717
- var React98 = __toESM(require("react"));
16941
+ var React99 = __toESM(require("react"));
16718
16942
  function createSharedDrag() {
16719
- const dragRegistrationContext = React98.createContext(null);
16720
- const activeDragContext = React98.createContext(
16943
+ const dragRegistrationContext = React99.createContext(null);
16944
+ const activeDragContext = React99.createContext(
16721
16945
  null
16722
16946
  );
16723
16947
  const sharedDragProps = {
16724
16948
  dragRegistrationContext,
16725
16949
  activeDragContext
16726
16950
  };
16727
- const Provider = (props) => /* @__PURE__ */ React98.createElement(SharedDragProvider, { sharedDragProps, ...props });
16951
+ const Provider = (props) => /* @__PURE__ */ React99.createElement(SharedDragProvider, { sharedDragProps, ...props });
16728
16952
  return {
16729
16953
  Provider,
16730
- Sortable: (props) => /* @__PURE__ */ React98.createElement(Sortable, { sharedDragProps, ...props }),
16954
+ Sortable: (props) => /* @__PURE__ */ React99.createElement(Sortable, { sharedDragProps, ...props }),
16731
16955
  props: sharedDragProps
16732
16956
  };
16733
16957
  }
16734
16958
 
16735
16959
  // src/components/Stepper.tsx
16736
16960
  var import_noya_utils19 = require("@noya-app/noya-utils");
16737
- var import_react100 = __toESM(require("react"));
16738
- var Stepper = (0, import_react100.memo)(function Stepper2({
16961
+ var import_react101 = __toESM(require("react"));
16962
+ var Stepper = (0, import_react101.memo)(function Stepper2({
16739
16963
  style: style2,
16740
16964
  className,
16741
16965
  value: valueProp,
@@ -16752,17 +16976,17 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16752
16976
  const { fieldId: id } = useLabel({
16753
16977
  fieldId: props.id
16754
16978
  });
16755
- const value = (0, import_react100.useMemo)(() => {
16979
+ const value = (0, import_react101.useMemo)(() => {
16756
16980
  return (0, import_noya_utils19.clamp)(valueProp, min, max);
16757
16981
  }, [valueProp, min, max]);
16758
- const handleValueChange = (0, import_react100.useCallback)(
16982
+ const handleValueChange = (0, import_react101.useCallback)(
16759
16983
  (value2) => {
16760
16984
  const newValue = (0, import_noya_utils19.clamp)(value2, min, max);
16761
16985
  onValueChange(newValue);
16762
16986
  },
16763
16987
  [onValueChange, min, max]
16764
16988
  );
16765
- return /* @__PURE__ */ import_react100.default.createElement(
16989
+ return /* @__PURE__ */ import_react101.default.createElement(
16766
16990
  "div",
16767
16991
  {
16768
16992
  id,
@@ -16774,7 +16998,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16774
16998
  onFocus,
16775
16999
  onBlur
16776
17000
  },
16777
- /* @__PURE__ */ import_react100.default.createElement(
17001
+ /* @__PURE__ */ import_react101.default.createElement(
16778
17002
  InputField2.Root,
16779
17003
  {
16780
17004
  className: "n-flex-1",
@@ -16782,7 +17006,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16782
17006
  startClassName: "-n-ml-[3px]",
16783
17007
  endWidth: 17,
16784
17008
  endClassName: "-n-mr-[3px]",
16785
- start: /* @__PURE__ */ import_react100.default.createElement(
17009
+ start: /* @__PURE__ */ import_react101.default.createElement(
16786
17010
  IconButton,
16787
17011
  {
16788
17012
  iconName: "MinusIcon",
@@ -16796,7 +17020,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16796
17020
  }
16797
17021
  }
16798
17022
  ),
16799
- end: /* @__PURE__ */ import_react100.default.createElement(
17023
+ end: /* @__PURE__ */ import_react101.default.createElement(
16800
17024
  IconButton,
16801
17025
  {
16802
17026
  iconName: "PlusIcon",
@@ -16811,7 +17035,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16811
17035
  }
16812
17036
  )
16813
17037
  },
16814
- /* @__PURE__ */ import_react100.default.createElement(
17038
+ /* @__PURE__ */ import_react101.default.createElement(
16815
17039
  InputField2.NumberInput,
16816
17040
  {
16817
17041
  value,
@@ -16826,7 +17050,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16826
17050
 
16827
17051
  // src/components/Switch.tsx
16828
17052
  var import_radix_ui15 = require("radix-ui");
16829
- var React100 = __toESM(require("react"));
17053
+ var React101 = __toESM(require("react"));
16830
17054
  var Switch = function Switch2({
16831
17055
  id,
16832
17056
  value,
@@ -16838,7 +17062,7 @@ var Switch = function Switch2({
16838
17062
  style: style2,
16839
17063
  className
16840
17064
  }) {
16841
- return /* @__PURE__ */ React100.createElement(
17065
+ return /* @__PURE__ */ React101.createElement(
16842
17066
  import_radix_ui15.Switch.Root,
16843
17067
  {
16844
17068
  id,
@@ -16857,12 +17081,12 @@ var Switch = function Switch2({
16857
17081
  onFocus,
16858
17082
  onBlur
16859
17083
  },
16860
- /* @__PURE__ */ React100.createElement(import_radix_ui15.Switch.Thumb, { className: "n-block n-w-[15px] n-h-[15px] n-bg-background n-rounded-full n-transition-transform n-translate-x-[2px] data-[state=checked]:n-translate-x-[15px]" })
17084
+ /* @__PURE__ */ React101.createElement(import_radix_ui15.Switch.Thumb, { className: "n-block n-w-[15px] n-h-[15px] n-bg-background n-rounded-full n-transition-transform n-translate-x-[2px] data-[state=checked]:n-translate-x-[15px]" })
16861
17085
  );
16862
17086
  };
16863
17087
 
16864
17088
  // src/components/Tabs.tsx
16865
- var React101 = __toESM(require("react"));
17089
+ var React102 = __toESM(require("react"));
16866
17090
  function Tabs({
16867
17091
  value,
16868
17092
  onValueChange,
@@ -16877,7 +17101,7 @@ function Tabs({
16877
17101
  value,
16878
17102
  onChange: onValueChange
16879
17103
  });
16880
- return /* @__PURE__ */ React101.createElement("div", { ...props, className: cx("n-flex n-flex-col", props.className) }, /* @__PURE__ */ React101.createElement("div", { className: "n-flex n-flex-row n-px-3" }, /* @__PURE__ */ React101.createElement(
17104
+ return /* @__PURE__ */ React102.createElement("div", { ...props, className: cx("n-flex n-flex-col", props.className) }, /* @__PURE__ */ React102.createElement("div", { className: "n-flex n-flex-row n-px-3" }, /* @__PURE__ */ React102.createElement(
16881
17105
  SegmentedControl,
16882
17106
  {
16883
17107
  className: "n-flex-1",
@@ -16886,19 +17110,108 @@ function Tabs({
16886
17110
  variant,
16887
17111
  items: selectableItems
16888
17112
  }
16889
- )), /* @__PURE__ */ React101.createElement(Divider, null), renderContent({ value: activeTab }));
17113
+ )), /* @__PURE__ */ React102.createElement(Divider, null), renderContent({ value: activeTab }));
17114
+ }
17115
+
17116
+ // src/components/UserPicker.tsx
17117
+ var import_react102 = __toESM(require("react"));
17118
+ function UserPicker({
17119
+ users,
17120
+ value,
17121
+ defaultValue: defaultValue2,
17122
+ onChangeUserId,
17123
+ onSelectUser,
17124
+ placeholder = "Search users...",
17125
+ ...rest
17126
+ }) {
17127
+ const sortedUsers = (0, import_react102.useMemo)(() => {
17128
+ return [...users].sort(
17129
+ (a, b) => getUserDisplayName(a).localeCompare(getUserDisplayName(b), void 0, {
17130
+ sensitivity: "base"
17131
+ })
17132
+ );
17133
+ }, [users]);
17134
+ const usersById = (0, import_react102.useMemo)(() => {
17135
+ return new Map(sortedUsers.map((user) => [user.id, user]));
17136
+ }, [sortedUsers]);
17137
+ const items = (0, import_react102.useMemo)(() => {
17138
+ return sortedUsers.map(createUserMenuItem);
17139
+ }, [sortedUsers]);
17140
+ const isControlled = value !== void 0;
17141
+ const [uncontrolledValue, setUncontrolledValue] = (0, import_react102.useState)(defaultValue2);
17142
+ const selectedUserId = isControlled ? value : uncontrolledValue;
17143
+ const selectedItem = (0, import_react102.useMemo)(() => {
17144
+ if (!selectedUserId) return void 0;
17145
+ return items.find((item) => item.value === selectedUserId);
17146
+ }, [items, selectedUserId]);
17147
+ const updateSelectedUserId = (0, import_react102.useCallback)(
17148
+ (userId) => {
17149
+ if (!isControlled) {
17150
+ setUncontrolledValue(userId);
17151
+ }
17152
+ onChangeUserId?.(userId);
17153
+ },
17154
+ [isControlled, onChangeUserId]
17155
+ );
17156
+ const handleSelectItem = (0, import_react102.useCallback)(
17157
+ (item) => {
17158
+ updateSelectedUserId(item.value);
17159
+ onSelectUser?.(usersById.get(item.value));
17160
+ },
17161
+ [updateSelectedUserId, onSelectUser, usersById]
17162
+ );
17163
+ return /* @__PURE__ */ import_react102.default.createElement(
17164
+ Combobox,
17165
+ {
17166
+ ...rest,
17167
+ placeholder,
17168
+ mode: "option",
17169
+ items,
17170
+ value: selectedItem,
17171
+ onSelectItem: handleSelectItem,
17172
+ iconPosition: "left"
17173
+ }
17174
+ );
17175
+ }
17176
+ function getUserDisplayName(user) {
17177
+ const name = user.name?.trim();
17178
+ const email = user.email?.trim();
17179
+ return name || email || "Anonymous user";
17180
+ }
17181
+ function createUserMenuItem(user) {
17182
+ const title = getUserDisplayName(user);
17183
+ const overflow = 3;
17184
+ return {
17185
+ value: user.id,
17186
+ title,
17187
+ icon: /* @__PURE__ */ import_react102.default.createElement("div", { className: "n-relative n-w-[15px] n-h-[15px]" }, /* @__PURE__ */ import_react102.default.createElement(
17188
+ Avatar,
17189
+ {
17190
+ size: 15 + overflow * 2,
17191
+ name: title,
17192
+ userId: user.id,
17193
+ image: user.image ?? void 0,
17194
+ className: "n-pointer-events-none",
17195
+ variant: "bare",
17196
+ style: {
17197
+ position: "absolute",
17198
+ inset: -overflow
17199
+ }
17200
+ }
17201
+ ))
17202
+ };
16890
17203
  }
16891
17204
 
16892
17205
  // src/components/UserPointer.tsx
16893
- var import_react101 = __toESM(require("react"));
16894
- var UserPointerContainer = (0, import_react101.memo)(function UserPointerContainer2({
17206
+ var import_react103 = __toESM(require("react"));
17207
+ var UserPointerContainer = (0, import_react103.memo)(function UserPointerContainer2({
16895
17208
  point,
16896
17209
  visible,
16897
17210
  children,
16898
17211
  className,
16899
17212
  style: style2
16900
17213
  }) {
16901
- return /* @__PURE__ */ import_react101.default.createElement(
17214
+ return /* @__PURE__ */ import_react103.default.createElement(
16902
17215
  "div",
16903
17216
  {
16904
17217
  style: {
@@ -16915,7 +17228,7 @@ var UserPointerContainer = (0, import_react101.memo)(function UserPointerContain
16915
17228
  children
16916
17229
  );
16917
17230
  });
16918
- var UserNameTag = (0, import_react101.memo)(function UserNameTag2({
17231
+ var UserNameTag = (0, import_react103.memo)(function UserNameTag2({
16919
17232
  backgroundColor,
16920
17233
  className,
16921
17234
  style: style2,
@@ -16924,7 +17237,7 @@ var UserNameTag = (0, import_react101.memo)(function UserNameTag2({
16924
17237
  size = "medium",
16925
17238
  bordered = true
16926
17239
  }) {
16927
- return /* @__PURE__ */ import_react101.default.createElement(
17240
+ return /* @__PURE__ */ import_react103.default.createElement(
16928
17241
  "span",
16929
17242
  {
16930
17243
  className: cx(
@@ -16943,14 +17256,14 @@ var UserNameTag = (0, import_react101.memo)(function UserNameTag2({
16943
17256
  children
16944
17257
  );
16945
17258
  });
16946
- var UserPointerIcon = (0, import_react101.memo)(function PointerIcon({
17259
+ var UserPointerIcon = (0, import_react103.memo)(function PointerIcon({
16947
17260
  size,
16948
17261
  color = "black",
16949
17262
  className,
16950
17263
  style: style2
16951
17264
  }) {
16952
17265
  const points = "0,5 10,0 10,10";
16953
- return /* @__PURE__ */ import_react101.default.createElement(
17266
+ return /* @__PURE__ */ import_react103.default.createElement(
16954
17267
  "svg",
16955
17268
  {
16956
17269
  width: size,
@@ -16965,7 +17278,7 @@ var UserPointerIcon = (0, import_react101.memo)(function PointerIcon({
16965
17278
  ...style2
16966
17279
  }
16967
17280
  },
16968
- /* @__PURE__ */ import_react101.default.createElement(
17281
+ /* @__PURE__ */ import_react103.default.createElement(
16969
17282
  "polygon",
16970
17283
  {
16971
17284
  points,
@@ -16978,7 +17291,7 @@ var UserPointerIcon = (0, import_react101.memo)(function PointerIcon({
16978
17291
  });
16979
17292
  var POINTER_SIZE = 12;
16980
17293
  var POINTER_OVERLAP = 6;
16981
- var UserPointer = (0, import_react101.memo)(function UserPointer2({
17294
+ var UserPointer = (0, import_react103.memo)(function UserPointer2({
16982
17295
  userId,
16983
17296
  name,
16984
17297
  visible = true,
@@ -16991,22 +17304,22 @@ var UserPointer = (0, import_react101.memo)(function UserPointer2({
16991
17304
  labelSize = "medium",
16992
17305
  bordered = true
16993
17306
  }) {
16994
- const userBackgroundColor = (0, import_react101.useMemo)(
17307
+ const userBackgroundColor = (0, import_react103.useMemo)(
16995
17308
  () => backgroundColor ?? colorFromString(userId ?? name ?? ""),
16996
17309
  [backgroundColor, userId, name]
16997
17310
  );
16998
- const pointerOverlapStyle = (0, import_react101.useMemo)(
17311
+ const pointerOverlapStyle = (0, import_react103.useMemo)(
16999
17312
  () => ({
17000
17313
  marginRight: `-${POINTER_OVERLAP}px`,
17001
17314
  marginBottom: `-${POINTER_OVERLAP}px`
17002
17315
  }),
17003
17316
  []
17004
17317
  );
17005
- const nameTagOverlapStyle = (0, import_react101.useMemo)(
17318
+ const nameTagOverlapStyle = (0, import_react103.useMemo)(
17006
17319
  () => ({ marginLeft: `${POINTER_SIZE - POINTER_OVERLAP + 1}px` }),
17007
17320
  []
17008
17321
  );
17009
- return /* @__PURE__ */ import_react101.default.createElement(
17322
+ return /* @__PURE__ */ import_react103.default.createElement(
17010
17323
  UserPointerContainer,
17011
17324
  {
17012
17325
  point,
@@ -17014,14 +17327,14 @@ var UserPointer = (0, import_react101.memo)(function UserPointer2({
17014
17327
  className,
17015
17328
  style: style2
17016
17329
  },
17017
- name && /* @__PURE__ */ import_react101.default.createElement("div", { className: "n-relative" }, showPointerIcon && /* @__PURE__ */ import_react101.default.createElement(
17330
+ name && /* @__PURE__ */ import_react103.default.createElement("div", { className: "n-relative" }, showPointerIcon && /* @__PURE__ */ import_react103.default.createElement(
17018
17331
  UserPointerIcon,
17019
17332
  {
17020
17333
  size: POINTER_SIZE,
17021
17334
  color: userBackgroundColor,
17022
17335
  style: pointerOverlapStyle
17023
17336
  }
17024
- ), /* @__PURE__ */ import_react101.default.createElement(
17337
+ ), /* @__PURE__ */ import_react103.default.createElement(
17025
17338
  UserNameTag,
17026
17339
  {
17027
17340
  backgroundColor: userBackgroundColor,
@@ -17037,10 +17350,10 @@ var UserPointer = (0, import_react101.memo)(function UserPointer2({
17037
17350
 
17038
17351
  // src/components/workspace/WorkspaceLayout.tsx
17039
17352
  var import_noya_keymap7 = require("@noya-app/noya-keymap");
17040
- var import_react108 = __toESM(require("react"));
17353
+ var import_react110 = __toESM(require("react"));
17041
17354
 
17042
17355
  // src/components/workspace/DrawerWorkspaceLayout.tsx
17043
- var import_react105 = __toESM(require("react"));
17356
+ var import_react107 = __toESM(require("react"));
17044
17357
 
17045
17358
  // src/components/workspace/constants.ts
17046
17359
  var EDITOR_PANEL_GROUP_ID = "editor-panel-group";
@@ -17049,17 +17362,17 @@ var RIGHT_SIDEBAR_ID = "editor-3-right-sidebar";
17049
17362
  var CONTENT_AREA_ID = "editor-2-content-area";
17050
17363
 
17051
17364
  // src/components/workspace/VerticalTabMenu.tsx
17052
- var import_react104 = __toESM(require("react"));
17365
+ var import_react106 = __toESM(require("react"));
17053
17366
 
17054
17367
  // src/components/Toolbar.tsx
17055
17368
  var import_noya_keymap6 = require("@noya-app/noya-keymap");
17056
- var import_react103 = __toESM(require("react"));
17369
+ var import_react105 = __toESM(require("react"));
17057
17370
 
17058
17371
  // src/components/ToolbarDrawer.tsx
17059
- var import_react102 = __toESM(require("react"));
17060
- var ToolbarDrawer = (0, import_react102.memo)(
17061
- (0, import_react102.forwardRef)(function ToolbarDrawer2({ children, trigger, sideOffset = 8 }, ref) {
17062
- return /* @__PURE__ */ import_react102.default.createElement("div", { className: "n-relative", ref }, /* @__PURE__ */ import_react102.default.createElement(
17372
+ var import_react104 = __toESM(require("react"));
17373
+ var ToolbarDrawer = (0, import_react104.memo)(
17374
+ (0, import_react104.forwardRef)(function ToolbarDrawer2({ children, trigger, sideOffset = 8 }, ref) {
17375
+ return /* @__PURE__ */ import_react104.default.createElement("div", { className: "n-relative", ref }, /* @__PURE__ */ import_react104.default.createElement(
17063
17376
  "div",
17064
17377
  {
17065
17378
  className: "n-absolute n-bottom-full n-left-1/2 -n-translate-x-1/2 n-rounded-t-lg n-border n-border-toolbar-drawer-border n-border-b-transparent n-bg-toolbar-drawer-background -n-z-10",
@@ -17075,13 +17388,13 @@ var ToolbarDrawer = (0, import_react102.memo)(
17075
17388
 
17076
17389
  // src/components/Toolbar.tsx
17077
17390
  var SIDE_OFFSET = 6;
17078
- var ToolbarMenuContext = (0, import_react103.createContext)({});
17391
+ var ToolbarMenuContext = (0, import_react105.createContext)({});
17079
17392
  var ToolbarMenuDropdown = memoGeneric(function ToolbarMenuDropdown2({
17080
17393
  item,
17081
17394
  onSelectMenuItem
17082
17395
  }) {
17083
- const [open, setOpen] = import_react103.default.useState(false);
17084
- return /* @__PURE__ */ import_react103.default.createElement(
17396
+ const [open, setOpen] = import_react105.default.useState(false);
17397
+ return /* @__PURE__ */ import_react105.default.createElement(
17085
17398
  DropdownMenu,
17086
17399
  {
17087
17400
  open,
@@ -17093,7 +17406,7 @@ var ToolbarMenuDropdown = memoGeneric(function ToolbarMenuDropdown2({
17093
17406
  }
17094
17407
  }
17095
17408
  },
17096
- /* @__PURE__ */ import_react103.default.createElement(
17409
+ /* @__PURE__ */ import_react105.default.createElement(
17097
17410
  Button,
17098
17411
  {
17099
17412
  disabled: item.disabled,
@@ -17109,7 +17422,7 @@ var ToolbarShortcut = ({
17109
17422
  shortcut,
17110
17423
  label
17111
17424
  }) => {
17112
- return /* @__PURE__ */ import_react103.default.createElement("div", { className: "n-flex n-items-center" }, label, /* @__PURE__ */ import_react103.default.createElement(Spacer.Horizontal, { size: 6 }), /* @__PURE__ */ import_react103.default.createElement(KeyboardShortcut, { shortcut }));
17425
+ return /* @__PURE__ */ import_react105.default.createElement("div", { className: "n-flex n-items-center" }, label, /* @__PURE__ */ import_react105.default.createElement(Spacer.Horizontal, { size: 6 }), /* @__PURE__ */ import_react105.default.createElement(KeyboardShortcut, { shortcut }));
17113
17426
  };
17114
17427
  var ToolbarMenuPopover = memoGeneric(function ToolbarMenuPopover2({
17115
17428
  item,
@@ -17123,8 +17436,8 @@ var ToolbarMenuPopover = memoGeneric(function ToolbarMenuPopover2({
17123
17436
  content: itemContent,
17124
17437
  checked
17125
17438
  } = item;
17126
- const [open, setOpen] = import_react103.default.useState(false);
17127
- const content = /* @__PURE__ */ import_react103.default.createElement("span", null, /* @__PURE__ */ import_react103.default.createElement(
17439
+ const [open, setOpen] = import_react105.default.useState(false);
17440
+ const content = /* @__PURE__ */ import_react105.default.createElement("span", null, /* @__PURE__ */ import_react105.default.createElement(
17128
17441
  Popover,
17129
17442
  {
17130
17443
  open,
@@ -17133,7 +17446,7 @@ var ToolbarMenuPopover = memoGeneric(function ToolbarMenuPopover2({
17133
17446
  showArrow: false,
17134
17447
  sideOffset: SIDE_OFFSET,
17135
17448
  portalContainer,
17136
- trigger: /* @__PURE__ */ import_react103.default.createElement(
17449
+ trigger: /* @__PURE__ */ import_react105.default.createElement(
17137
17450
  Button,
17138
17451
  {
17139
17452
  disabled,
@@ -17146,7 +17459,7 @@ var ToolbarMenuPopover = memoGeneric(function ToolbarMenuPopover2({
17146
17459
  },
17147
17460
  typeof itemContent === "function" ? itemContent({ close: () => setOpen(false) }) : itemContent
17148
17461
  ));
17149
- return tooltip && !open ? /* @__PURE__ */ import_react103.default.createElement(
17462
+ return tooltip && !open ? /* @__PURE__ */ import_react105.default.createElement(
17150
17463
  Tooltip,
17151
17464
  {
17152
17465
  sideOffset: SIDE_OFFSET,
@@ -17166,7 +17479,7 @@ var ToolbarMenuButton = memoGeneric(function ToolbarMenuButton2({
17166
17479
  displayFilter
17167
17480
  }) {
17168
17481
  const isActive = item.checked || activeValue === item.value;
17169
- const content = /* @__PURE__ */ import_react103.default.createElement(
17482
+ const content = /* @__PURE__ */ import_react105.default.createElement(
17170
17483
  Button,
17171
17484
  {
17172
17485
  as,
@@ -17183,7 +17496,7 @@ var ToolbarMenuButton = memoGeneric(function ToolbarMenuButton2({
17183
17496
  displayFilter === "iconOnly" ? void 0 : item.title
17184
17497
  );
17185
17498
  const tooltip = item.tooltip ?? (displayFilter === "iconOnly" && item.title ? item.title : void 0);
17186
- return item.drawer && isActive ? /* @__PURE__ */ import_react103.default.createElement(ToolbarDrawer, { trigger: content }, item.drawer) : tooltip ? /* @__PURE__ */ import_react103.default.createElement(Tooltip, { sideOffset: SIDE_OFFSET, content: tooltip, side: tooltipSide }, content) : content;
17499
+ return item.drawer && isActive ? /* @__PURE__ */ import_react105.default.createElement(ToolbarDrawer, { trigger: content }, item.drawer) : tooltip ? /* @__PURE__ */ import_react105.default.createElement(Tooltip, { sideOffset: SIDE_OFFSET, content: tooltip, side: tooltipSide }, content) : content;
17187
17500
  });
17188
17501
  var ToolbarMenuItem = memoGeneric(function ToolbarMenuItem2({
17189
17502
  item,
@@ -17195,17 +17508,17 @@ var ToolbarMenuItem = memoGeneric(function ToolbarMenuItem2({
17195
17508
  displayFilter,
17196
17509
  dividerOverflow: dividerOverflowProp
17197
17510
  }) {
17198
- const { dividerOverflow: contextDividerOverflow } = (0, import_react103.useContext)(ToolbarMenuContext);
17511
+ const { dividerOverflow: contextDividerOverflow } = (0, import_react105.useContext)(ToolbarMenuContext);
17199
17512
  const dividerOverflow = dividerOverflowProp ?? contextDividerOverflow ?? 4;
17200
17513
  if (item.type === "sectionHeader") return null;
17201
17514
  if (item.type === "separator") {
17202
- return /* @__PURE__ */ import_react103.default.createElement(DividerVertical, { overflow: dividerOverflow });
17515
+ return /* @__PURE__ */ import_react105.default.createElement(DividerVertical, { overflow: dividerOverflow });
17203
17516
  }
17204
17517
  if (item.type === "popover") {
17205
- return /* @__PURE__ */ import_react103.default.createElement(ToolbarMenuPopover, { item, portalContainer });
17518
+ return /* @__PURE__ */ import_react105.default.createElement(ToolbarMenuPopover, { item, portalContainer });
17206
17519
  }
17207
17520
  if (isSelectableMenuItem(item)) {
17208
- return /* @__PURE__ */ import_react103.default.createElement(
17521
+ return /* @__PURE__ */ import_react105.default.createElement(
17209
17522
  ToolbarMenuButton,
17210
17523
  {
17211
17524
  item,
@@ -17217,7 +17530,7 @@ var ToolbarMenuItem = memoGeneric(function ToolbarMenuItem2({
17217
17530
  }
17218
17531
  );
17219
17532
  }
17220
- return /* @__PURE__ */ import_react103.default.createElement(ToolbarMenuDropdown, { item, onSelectMenuItem });
17533
+ return /* @__PURE__ */ import_react105.default.createElement(ToolbarMenuDropdown, { item, onSelectMenuItem });
17221
17534
  });
17222
17535
  var ToolbarMenu = memoGeneric(function ToolbarMenu2({
17223
17536
  items,
@@ -17229,8 +17542,8 @@ var ToolbarMenu = memoGeneric(function ToolbarMenu2({
17229
17542
  displayFilter = "iconAndText",
17230
17543
  dividerOverflow
17231
17544
  }) {
17232
- return /* @__PURE__ */ import_react103.default.createElement(import_react103.default.Fragment, null, items.map((item, i) => {
17233
- return /* @__PURE__ */ import_react103.default.createElement(
17545
+ return /* @__PURE__ */ import_react105.default.createElement(import_react105.default.Fragment, null, items.map((item, i) => {
17546
+ return /* @__PURE__ */ import_react105.default.createElement(
17234
17547
  ToolbarMenuItem,
17235
17548
  {
17236
17549
  key: i,
@@ -17255,21 +17568,21 @@ function Toolbar({
17255
17568
  shouldBindKeyboardShortcuts = true,
17256
17569
  dividerOverflow
17257
17570
  }) {
17258
- const allMenuItems = import_react103.default.useMemo(
17571
+ const allMenuItems = import_react105.default.useMemo(
17259
17572
  () => [...leftMenuItems, ...rightMenuItems],
17260
17573
  [leftMenuItems, rightMenuItems]
17261
17574
  );
17262
17575
  (0, import_noya_keymap6.useKeyboardShortcuts)(
17263
- import_react103.default.useMemo(
17576
+ import_react105.default.useMemo(
17264
17577
  () => onSelectMenuItem && shouldBindKeyboardShortcuts ? getKeyboardShortcutsForMenuItems(allMenuItems, onSelectMenuItem) : {},
17265
17578
  [allMenuItems, onSelectMenuItem, shouldBindKeyboardShortcuts]
17266
17579
  )
17267
17580
  );
17268
- return /* @__PURE__ */ import_react103.default.createElement(
17581
+ return /* @__PURE__ */ import_react105.default.createElement(
17269
17582
  BaseToolbar,
17270
17583
  {
17271
17584
  logo,
17272
- left: leftMenuItems.length > 0 && /* @__PURE__ */ import_react103.default.createElement("div", { className: "n-flex n-gap-2" }, /* @__PURE__ */ import_react103.default.createElement(
17585
+ left: leftMenuItems.length > 0 && /* @__PURE__ */ import_react105.default.createElement("div", { className: "n-flex n-gap-2" }, /* @__PURE__ */ import_react105.default.createElement(
17273
17586
  ToolbarMenu,
17274
17587
  {
17275
17588
  items: leftMenuItems,
@@ -17277,7 +17590,7 @@ function Toolbar({
17277
17590
  dividerOverflow
17278
17591
  }
17279
17592
  )),
17280
- right: rightMenuItems.length > 0 && /* @__PURE__ */ import_react103.default.createElement("div", { className: "n-flex n-gap-2" }, /* @__PURE__ */ import_react103.default.createElement(
17593
+ right: rightMenuItems.length > 0 && /* @__PURE__ */ import_react105.default.createElement("div", { className: "n-flex n-gap-2" }, /* @__PURE__ */ import_react105.default.createElement(
17281
17594
  ToolbarMenu,
17282
17595
  {
17283
17596
  items: rightMenuItems,
@@ -17298,19 +17611,19 @@ var VerticalTabMenu = memoGeneric(function VerticalTabMenu2({
17298
17611
  onChange,
17299
17612
  tooltipSide
17300
17613
  }) {
17301
- const style2 = (0, import_react104.useMemo)(() => {
17614
+ const style2 = (0, import_react106.useMemo)(() => {
17302
17615
  return {
17303
17616
  [cssVarNames.colors.inputBackground]: "transparent",
17304
17617
  [cssVarNames.colors.buttonBackground]: "transparent"
17305
17618
  };
17306
17619
  }, []);
17307
- return /* @__PURE__ */ import_react104.default.createElement(
17620
+ return /* @__PURE__ */ import_react106.default.createElement(
17308
17621
  "div",
17309
17622
  {
17310
17623
  className: "n-w-[calc(var(--n-toolbar-height)+1px)] n-h-full n-bg-sidebar-background n-flex n-flex-col n-items-center n-py-3 n-gap-3",
17311
17624
  style: style2
17312
17625
  },
17313
- /* @__PURE__ */ import_react104.default.createElement(
17626
+ /* @__PURE__ */ import_react106.default.createElement(
17314
17627
  ToolbarMenu,
17315
17628
  {
17316
17629
  items,
@@ -17338,12 +17651,12 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17338
17651
  onChangeLeftTab,
17339
17652
  compactDrawerMenu
17340
17653
  }) {
17341
- const portalContainer = (0, import_react105.useRef)(null);
17342
- const [{ leftSidebarCollapsed, rightSidebarCollapsed }, setLayoutState] = (0, import_react105.useState)({
17654
+ const portalContainer = (0, import_react107.useRef)(null);
17655
+ const [{ leftSidebarCollapsed, rightSidebarCollapsed }, setLayoutState] = (0, import_react107.useState)({
17343
17656
  leftSidebarCollapsed: true,
17344
17657
  rightSidebarCollapsed: true
17345
17658
  });
17346
- const allTabItems = (0, import_react105.useMemo)(
17659
+ const allTabItems = (0, import_react107.useMemo)(
17347
17660
  () => [
17348
17661
  ...leftPanel ? leftTabItems ?? [] : [],
17349
17662
  ...rightPanel ? rightTabItems ?? [] : []
@@ -17351,16 +17664,16 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17351
17664
  [leftTabItems, rightTabItems, leftPanel, rightPanel]
17352
17665
  );
17353
17666
  const hasTabs = allTabItems.length > 0;
17354
- const allSelectableTabItems = (0, import_react105.useMemo)(
17667
+ const allSelectableTabItems = (0, import_react107.useMemo)(
17355
17668
  () => allTabItems.filter(isSelectableMenuItem),
17356
17669
  [allTabItems]
17357
17670
  );
17358
17671
  const useCompactInToolbar = !!compactDrawerMenu && allSelectableTabItems.length <= 1;
17359
- const leftSelectableTabItems = (0, import_react105.useMemo)(
17672
+ const leftSelectableTabItems = (0, import_react107.useMemo)(
17360
17673
  () => (leftTabItems ?? []).filter(isSelectableMenuItem),
17361
17674
  [leftTabItems]
17362
17675
  );
17363
- const rightSelectableTabItems = (0, import_react105.useMemo)(
17676
+ const rightSelectableTabItems = (0, import_react107.useMemo)(
17364
17677
  () => (rightTabItems ?? []).filter(isSelectableMenuItem),
17365
17678
  [rightTabItems]
17366
17679
  );
@@ -17397,14 +17710,14 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17397
17710
  activeValue: rightTabValue,
17398
17711
  isSidebarCollapsed: rightSidebarCollapsed
17399
17712
  } : { activeValue: void 0, isSidebarCollapsed: true };
17400
- return /* @__PURE__ */ import_react105.default.createElement(
17713
+ return /* @__PURE__ */ import_react107.default.createElement(
17401
17714
  "div",
17402
17715
  {
17403
17716
  ref: portalContainer,
17404
17717
  id: EDITOR_PANEL_GROUP_ID,
17405
17718
  className: "n-flex n-flex-1 n-relative focus:n-outline-none"
17406
17719
  },
17407
- hasTabs && !useCompactInToolbar && /* @__PURE__ */ import_react105.default.createElement(import_react105.default.Fragment, null, /* @__PURE__ */ import_react105.default.createElement(
17720
+ hasTabs && !useCompactInToolbar && /* @__PURE__ */ import_react107.default.createElement(import_react107.default.Fragment, null, /* @__PURE__ */ import_react107.default.createElement(
17408
17721
  VerticalTabMenu,
17409
17722
  {
17410
17723
  tooltipSide: "right",
@@ -17413,8 +17726,8 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17413
17726
  isSidebarCollapsed,
17414
17727
  onChange: (value) => handleSelectTab(value)
17415
17728
  }
17416
- ), /* @__PURE__ */ import_react105.default.createElement(DividerVertical, { className: "n-h-full" })),
17417
- useCompactInToolbar && /* @__PURE__ */ import_react105.default.createElement("div", { className: "n-absolute n-top-0 n-left-0 n-h-[calc(var(--n-toolbar-height)+1px)] n-w-[calc(var(--n-toolbar-height)+1px)] n-bg-sidebar-background n-border-r n-border-b n-border-divider-strong n-z-10 n-flex n-items-center n-justify-center" }, allSelectableTabItems[0] && /* @__PURE__ */ import_react105.default.createElement(
17729
+ ), /* @__PURE__ */ import_react107.default.createElement(DividerVertical, { className: "n-h-full" })),
17730
+ useCompactInToolbar && /* @__PURE__ */ import_react107.default.createElement("div", { className: "n-absolute n-top-0 n-left-0 n-h-[calc(var(--n-toolbar-height)+1px)] n-w-[calc(var(--n-toolbar-height)+1px)] n-bg-sidebar-background n-border-r n-border-b n-border-divider-strong n-z-10 n-flex n-items-center n-justify-center" }, allSelectableTabItems[0] && /* @__PURE__ */ import_react107.default.createElement(
17418
17731
  Button,
17419
17732
  {
17420
17733
  variant: "none",
@@ -17437,8 +17750,8 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17437
17750
  }
17438
17751
  }
17439
17752
  )),
17440
- /* @__PURE__ */ import_react105.default.createElement("div", { className: "n-flex-1 n-flex n-relative" }, centerPanel),
17441
- leftPanel && /* @__PURE__ */ import_react105.default.createElement(
17753
+ /* @__PURE__ */ import_react107.default.createElement("div", { className: "n-flex-1 n-flex n-relative" }, centerPanel),
17754
+ leftPanel && /* @__PURE__ */ import_react107.default.createElement(
17442
17755
  Drawer,
17443
17756
  {
17444
17757
  ref: leftSidebarRef,
@@ -17459,7 +17772,7 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17459
17772
  },
17460
17773
  leftPanel
17461
17774
  ),
17462
- rightPanel && /* @__PURE__ */ import_react105.default.createElement(
17775
+ rightPanel && /* @__PURE__ */ import_react107.default.createElement(
17463
17776
  Drawer,
17464
17777
  {
17465
17778
  id: RIGHT_SIDEBAR_ID,
@@ -17485,7 +17798,7 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17485
17798
  });
17486
17799
 
17487
17800
  // src/components/workspace/PanelWorkspaceLayout.tsx
17488
- var import_react106 = __toESM(require("react"));
17801
+ var import_react108 = __toESM(require("react"));
17489
17802
  var import_react_resizable_panels = require("react-resizable-panels");
17490
17803
 
17491
17804
  // src/components/workspace/panelStorage.ts
@@ -17651,11 +17964,11 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17651
17964
  onChangeRightTab,
17652
17965
  compactDrawerMenu
17653
17966
  }) {
17654
- const panelGroupRef = (0, import_react106.useRef)(null);
17967
+ const panelGroupRef = (0, import_react108.useRef)(null);
17655
17968
  const hasLeftPanel = !!leftPanel;
17656
17969
  const hasRightPanel = !!rightPanel;
17657
17970
  const hasCenterPanel = !!centerPanel;
17658
- const autoSaveId = (0, import_react106.useMemo)(() => {
17971
+ const autoSaveId = (0, import_react108.useMemo)(() => {
17659
17972
  return autoSavePrefix ? `${autoSavePrefix}--v2--${EDITOR_PANEL_GROUP_ID}` : Math.random().toString(36).substring(2, 15);
17660
17973
  }, [autoSavePrefix]);
17661
17974
  const layoutIds = getLayoutIds({
@@ -17682,7 +17995,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17682
17995
  });
17683
17996
  const [data, setData] = usePersistentStateObject(clientStorage, storageKey, {});
17684
17997
  const layoutGroup = data?.[propertyKey];
17685
- const { leftSidebarCollapsed, rightSidebarCollapsed } = (0, import_react106.useMemo)(() => {
17998
+ const { leftSidebarCollapsed, rightSidebarCollapsed } = (0, import_react108.useMemo)(() => {
17686
17999
  return getLayoutCollapsedState({
17687
18000
  layoutGroup,
17688
18001
  propertyKey,
@@ -17691,7 +18004,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17691
18004
  hasRightPanel
17692
18005
  });
17693
18006
  }, [layoutGroup, propertyKey, layoutIds, hasLeftPanel, hasRightPanel]);
17694
- const handleLeftTabChange = (0, import_react106.useCallback)(
18007
+ const handleLeftTabChange = (0, import_react108.useCallback)(
17695
18008
  (value) => {
17696
18009
  if (value === leftTabValue) {
17697
18010
  if (leftSidebarRef.current?.isExpanded()) {
@@ -17708,7 +18021,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17708
18021
  },
17709
18022
  [leftSidebarRef, leftTabValue, onChangeLeftTab]
17710
18023
  );
17711
- const handleRightTabChange = (0, import_react106.useCallback)(
18024
+ const handleRightTabChange = (0, import_react108.useCallback)(
17712
18025
  (value) => {
17713
18026
  if (value === rightTabValue) {
17714
18027
  if (rightSidebarRef.current?.isExpanded()) {
@@ -17725,7 +18038,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17725
18038
  },
17726
18039
  [onChangeRightTab, rightSidebarRef, rightTabValue]
17727
18040
  );
17728
- const handleLayoutChange = (0, import_react106.useCallback)(
18041
+ const handleLayoutChange = (0, import_react108.useCallback)(
17729
18042
  (layout) => {
17730
18043
  setData((prev) => {
17731
18044
  const newData = {
@@ -17743,7 +18056,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17743
18056
  const showLeftTabs = !!leftSidebarOptions.showTabs && !!leftTabItems && // When compact drawer UI is enabled, only show the rail when the
17744
18057
  // sidebar is collapsed (for large screens/panel layout).
17745
18058
  (!compactDrawerMenu || leftSidebarCollapsed);
17746
- return /* @__PURE__ */ import_react106.default.createElement(
18059
+ return /* @__PURE__ */ import_react108.default.createElement(
17747
18060
  import_react_resizable_panels.PanelGroup,
17748
18061
  {
17749
18062
  ref: panelGroupRef,
@@ -17754,7 +18067,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17754
18067
  autoSaveId,
17755
18068
  onLayout: handleLayoutChange
17756
18069
  },
17757
- leftPanel && /* @__PURE__ */ import_react106.default.createElement(import_react106.default.Fragment, null, showLeftTabs && /* @__PURE__ */ import_react106.default.createElement(
18070
+ leftPanel && /* @__PURE__ */ import_react108.default.createElement(import_react108.default.Fragment, null, showLeftTabs && /* @__PURE__ */ import_react108.default.createElement(
17758
18071
  VerticalTabMenu,
17759
18072
  {
17760
18073
  tooltipSide: "right",
@@ -17763,7 +18076,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17763
18076
  isSidebarCollapsed: leftSidebarCollapsed,
17764
18077
  onChange: handleLeftTabChange
17765
18078
  }
17766
- ), showLeftTabs && !leftSidebarCollapsed && /* @__PURE__ */ import_react106.default.createElement(DividerVertical, { className: "n-h-full" }), /* @__PURE__ */ import_react106.default.createElement(
18079
+ ), showLeftTabs && !leftSidebarCollapsed && /* @__PURE__ */ import_react108.default.createElement(DividerVertical, { className: "n-h-full" }), /* @__PURE__ */ import_react108.default.createElement(
17767
18080
  import_react_resizable_panels.Panel,
17768
18081
  {
17769
18082
  id: LEFT_SIDEBAR_ID,
@@ -17776,8 +18089,8 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17776
18089
  collapsible: true
17777
18090
  },
17778
18091
  leftSidebarCollapsed ? null : leftPanel
17779
- ), /* @__PURE__ */ import_react106.default.createElement(import_react_resizable_panels.PanelResizeHandle, { className: "n-cursor-col-resize n-w-px n-h-full n-bg-divider" })),
17780
- /* @__PURE__ */ import_react106.default.createElement(
18092
+ ), /* @__PURE__ */ import_react108.default.createElement(import_react_resizable_panels.PanelResizeHandle, { className: "n-cursor-col-resize n-w-px n-h-full n-bg-divider" })),
18093
+ /* @__PURE__ */ import_react108.default.createElement(
17781
18094
  import_react_resizable_panels.Panel,
17782
18095
  {
17783
18096
  id: CONTENT_AREA_ID,
@@ -17788,7 +18101,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17788
18101
  },
17789
18102
  centerPanel
17790
18103
  ),
17791
- rightPanel && /* @__PURE__ */ import_react106.default.createElement(import_react106.default.Fragment, null, /* @__PURE__ */ import_react106.default.createElement(import_react_resizable_panels.PanelResizeHandle, { className: "n-cursor-col-resize n-w-px n-h-full n-bg-divider" }), /* @__PURE__ */ import_react106.default.createElement(
18104
+ rightPanel && /* @__PURE__ */ import_react108.default.createElement(import_react108.default.Fragment, null, /* @__PURE__ */ import_react108.default.createElement(import_react_resizable_panels.PanelResizeHandle, { className: "n-cursor-col-resize n-w-px n-h-full n-bg-divider" }), /* @__PURE__ */ import_react108.default.createElement(
17792
18105
  import_react_resizable_panels.Panel,
17793
18106
  {
17794
18107
  id: RIGHT_SIDEBAR_ID,
@@ -17801,7 +18114,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17801
18114
  collapsible: true
17802
18115
  },
17803
18116
  rightSidebarCollapsed ? null : rightPanel
17804
- ), rightSidebarOptions.showTabs && rightTabItems && !rightSidebarCollapsed && /* @__PURE__ */ import_react106.default.createElement(DividerVertical, { className: "n-h-full" }), rightSidebarOptions.showTabs && rightTabItems && /* @__PURE__ */ import_react106.default.createElement(
18117
+ ), rightSidebarOptions.showTabs && rightTabItems && !rightSidebarCollapsed && /* @__PURE__ */ import_react108.default.createElement(DividerVertical, { className: "n-h-full" }), rightSidebarOptions.showTabs && rightTabItems && /* @__PURE__ */ import_react108.default.createElement(
17805
18118
  VerticalTabMenu,
17806
18119
  {
17807
18120
  tooltipSide: "left",
@@ -17823,11 +18136,11 @@ function renderPanelChildren(fn, props) {
17823
18136
  }
17824
18137
 
17825
18138
  // src/components/workspace/WorkspaceSideContext.tsx
17826
- var import_react107 = require("react");
17827
- var WorkspaceSideContext = (0, import_react107.createContext)({});
18139
+ var import_react109 = require("react");
18140
+ var WorkspaceSideContext = (0, import_react109.createContext)({});
17828
18141
  var WorkspaceSideProvider = WorkspaceSideContext.Provider;
17829
18142
  function useWorkspaceSide() {
17830
- return (0, import_react107.useContext)(WorkspaceSideContext);
18143
+ return (0, import_react109.useContext)(WorkspaceSideContext);
17831
18144
  }
17832
18145
 
17833
18146
  // src/components/workspace/WorkspaceLayout.tsx
@@ -17890,7 +18203,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
17890
18203
  theme,
17891
18204
  compactDrawerMenu
17892
18205
  }, forwardedRef) {
17893
- const containerRef = import_react108.default.useRef(null);
18206
+ const containerRef = import_react110.default.useRef(null);
17894
18207
  const containerSize = useSize(containerRef);
17895
18208
  const windowSize = useWindowSize();
17896
18209
  const parentSize = detectSize === "window" ? windowSize : containerSize && containerSize.width > 0 ? containerSize : windowSize;
@@ -17921,8 +18234,8 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
17921
18234
  rightSidebarMinPercentage,
17922
18235
  rightSidebarMaxPercentage
17923
18236
  );
17924
- const leftSidebarRef = (0, import_react108.useRef)(null);
17925
- const rightSidebarRef = (0, import_react108.useRef)(null);
18237
+ const leftSidebarRef = (0, import_react110.useRef)(null);
18238
+ const rightSidebarRef = (0, import_react110.useRef)(null);
17926
18239
  const [leftTabValue, setLeftTabValue] = useControlledOrUncontrolled({
17927
18240
  value: leftTabValueProp,
17928
18241
  onChange: onChangeLeftTab,
@@ -17933,7 +18246,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
17933
18246
  onChange: onChangeRightTab,
17934
18247
  defaultValue: getFirstTabValue(rightTabItems, "")
17935
18248
  });
17936
- (0, import_react108.useImperativeHandle)(forwardedRef, () => ({
18249
+ (0, import_react110.useImperativeHandle)(forwardedRef, () => ({
17937
18250
  setLeftExpanded: (expanded) => {
17938
18251
  if (expanded) {
17939
18252
  leftSidebarRef.current?.expand();
@@ -17991,56 +18304,56 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
17991
18304
  });
17992
18305
  const centerPanelPercentage = 100 - (left ? leftSidebarPercentage : 0) - (right ? rightSidebarPercentage : 0);
17993
18306
  const isDrawerActive = sideType === "drawer" || sideType === "auto" && parentSize.width <= sideTypeBreakpoint;
17994
- const closeLeftSidebar = (0, import_react108.useCallback)(() => {
18307
+ const closeLeftSidebar = (0, import_react110.useCallback)(() => {
17995
18308
  if (isDrawerActive) {
17996
18309
  leftSidebarRef.current?.collapse();
17997
18310
  }
17998
18311
  }, [isDrawerActive]);
17999
- const closeRightSidebar = (0, import_react108.useCallback)(() => {
18312
+ const closeRightSidebar = (0, import_react110.useCallback)(() => {
18000
18313
  if (isDrawerActive) {
18001
18314
  rightSidebarRef.current?.collapse();
18002
18315
  }
18003
18316
  }, [isDrawerActive]);
18004
- const leftChildrenProps = (0, import_react108.useMemo)(() => {
18317
+ const leftChildrenProps = (0, import_react110.useMemo)(() => {
18005
18318
  return {
18006
18319
  activeTabValue: leftTabValue,
18007
18320
  closeSidebar: closeLeftSidebar
18008
18321
  };
18009
18322
  }, [leftTabValue, closeLeftSidebar]);
18010
- const rightChildrenProps = (0, import_react108.useMemo)(() => {
18323
+ const rightChildrenProps = (0, import_react110.useMemo)(() => {
18011
18324
  return {
18012
18325
  activeTabValue: rightTabValue,
18013
18326
  closeSidebar: closeRightSidebar
18014
18327
  };
18015
18328
  }, [rightTabValue, closeRightSidebar]);
18016
- const leftSidebarProviderValue = (0, import_react108.useMemo)(() => {
18329
+ const leftSidebarProviderValue = (0, import_react110.useMemo)(() => {
18017
18330
  return {
18018
18331
  closeSidebar: closeLeftSidebar
18019
18332
  };
18020
18333
  }, [closeLeftSidebar]);
18021
- const rightSidebarProviderValue = (0, import_react108.useMemo)(() => {
18334
+ const rightSidebarProviderValue = (0, import_react110.useMemo)(() => {
18022
18335
  return {
18023
18336
  closeSidebar: closeRightSidebar
18024
18337
  };
18025
18338
  }, [closeRightSidebar]);
18026
- const leftPanel = left && leftVisible !== false ? /* @__PURE__ */ import_react108.default.createElement(
18339
+ const leftPanel = left && leftVisible !== false ? /* @__PURE__ */ import_react110.default.createElement(
18027
18340
  PanelInner,
18028
18341
  {
18029
18342
  style: leftStyle,
18030
18343
  className: cx("n-bg-sidebar-background n-flex-col", leftClassName)
18031
18344
  },
18032
- /* @__PURE__ */ import_react108.default.createElement(WorkspaceSideProvider, { value: leftSidebarProviderValue }, leftTabValue ? renderPanelChildren(left, leftChildrenProps) : null)
18345
+ /* @__PURE__ */ import_react110.default.createElement(WorkspaceSideProvider, { value: leftSidebarProviderValue }, leftTabValue ? renderPanelChildren(left, leftChildrenProps) : null)
18033
18346
  ) : null;
18034
- const rightPanel = right && rightVisible !== false ? /* @__PURE__ */ import_react108.default.createElement(
18347
+ const rightPanel = right && rightVisible !== false ? /* @__PURE__ */ import_react110.default.createElement(
18035
18348
  PanelInner,
18036
18349
  {
18037
18350
  style: rightStyle,
18038
18351
  className: cx("n-bg-sidebar-background n-flex-col", rightClassName)
18039
18352
  },
18040
- /* @__PURE__ */ import_react108.default.createElement(WorkspaceSideProvider, { value: rightSidebarProviderValue }, rightTabValue ? renderPanelChildren(right, rightChildrenProps) : null)
18353
+ /* @__PURE__ */ import_react110.default.createElement(WorkspaceSideProvider, { value: rightSidebarProviderValue }, rightTabValue ? renderPanelChildren(right, rightChildrenProps) : null)
18041
18354
  ) : null;
18042
- const centerPanel = /* @__PURE__ */ import_react108.default.createElement(PanelInner, { className: "n-bg-canvas-background" }, children);
18043
- const leftSidebarOptions = (0, import_react108.useMemo)(
18355
+ const centerPanel = /* @__PURE__ */ import_react110.default.createElement(PanelInner, { className: "n-bg-canvas-background" }, children);
18356
+ const leftSidebarOptions = (0, import_react110.useMemo)(
18044
18357
  () => ({
18045
18358
  minSize: leftSidebarMinPercentage,
18046
18359
  maxSize: leftSidebarMaxPercentage,
@@ -18058,7 +18371,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18058
18371
  leftShowTabs
18059
18372
  ]
18060
18373
  );
18061
- const rightSidebarOptions = (0, import_react108.useMemo)(
18374
+ const rightSidebarOptions = (0, import_react110.useMemo)(
18062
18375
  () => ({
18063
18376
  minSize: rightSidebarMinPercentage,
18064
18377
  maxSize: rightSidebarMaxPercentage,
@@ -18078,7 +18391,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18078
18391
  );
18079
18392
  const LayoutComponent = sideType === "panel" ? PanelWorkspaceLayout : sideType === "drawer" ? DrawerWorkspaceLayout : parentSize.width > sideTypeBreakpoint ? PanelWorkspaceLayout : DrawerWorkspaceLayout;
18080
18393
  const readyToRender = detectSize === "window" || containerSize && containerSize.width > 0;
18081
- return /* @__PURE__ */ import_react108.default.createElement(
18394
+ return /* @__PURE__ */ import_react110.default.createElement(
18082
18395
  "div",
18083
18396
  {
18084
18397
  ref: containerRef,
@@ -18091,7 +18404,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18091
18404
  "data-theme": theme
18092
18405
  },
18093
18406
  toolbar,
18094
- /* @__PURE__ */ import_react108.default.createElement("div", { className: "n-flex n-flex-row n-flex-1 n-relative" }, readyToRender && /* @__PURE__ */ import_react108.default.createElement(
18407
+ /* @__PURE__ */ import_react110.default.createElement("div", { className: "n-flex n-flex-row n-flex-1 n-relative" }, readyToRender && /* @__PURE__ */ import_react110.default.createElement(
18095
18408
  LayoutComponent,
18096
18409
  {
18097
18410
  leftPanel,
@@ -18114,12 +18427,12 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18114
18427
  ))
18115
18428
  );
18116
18429
  });
18117
- var PanelInner = (0, import_react108.memo)(function PanelInner2({
18430
+ var PanelInner = (0, import_react110.memo)(function PanelInner2({
18118
18431
  children,
18119
18432
  style: style2,
18120
18433
  className
18121
18434
  }) {
18122
- return /* @__PURE__ */ import_react108.default.createElement(
18435
+ return /* @__PURE__ */ import_react110.default.createElement(
18123
18436
  "div",
18124
18437
  {
18125
18438
  style: style2,
@@ -18134,22 +18447,22 @@ function getFirstTabValue(items, defaultValue2) {
18134
18447
  }
18135
18448
 
18136
18449
  // src/contexts/ImageDataContext.tsx
18137
- var React109 = __toESM(require("react"));
18138
- var ImageDataContext = React109.createContext(
18450
+ var React111 = __toESM(require("react"));
18451
+ var ImageDataContext = React111.createContext(
18139
18452
  void 0
18140
18453
  );
18141
- var ImageDataProvider = React109.memo(function ImageDataProvider2({
18454
+ var ImageDataProvider = React111.memo(function ImageDataProvider2({
18142
18455
  children,
18143
18456
  getImageData
18144
18457
  }) {
18145
- const contextValue = React109.useMemo(
18458
+ const contextValue = React111.useMemo(
18146
18459
  () => ({ getImageData: getImageData ?? (() => void 0) }),
18147
18460
  [getImageData]
18148
18461
  );
18149
- return /* @__PURE__ */ React109.createElement(ImageDataContext.Provider, { value: contextValue }, children);
18462
+ return /* @__PURE__ */ React111.createElement(ImageDataContext.Provider, { value: contextValue }, children);
18150
18463
  });
18151
18464
  function useImageData(ref) {
18152
- const value = React109.useContext(ImageDataContext);
18465
+ const value = React111.useContext(ImageDataContext);
18153
18466
  if (!value) {
18154
18467
  throw new Error("Missing ImageDataProvider");
18155
18468
  }
@@ -18166,9 +18479,9 @@ function usePlatformModKey() {
18166
18479
  }
18167
18480
 
18168
18481
  // src/hooks/useTheme.ts
18169
- var import_react109 = require("react");
18482
+ var import_react111 = require("react");
18170
18483
  function useTheme() {
18171
- const [theme, setTheme] = (0, import_react109.useState)("light");
18484
+ const [theme, setTheme] = (0, import_react111.useState)("light");
18172
18485
  const checkTheme = () => {
18173
18486
  const currentTheme = document.body.getAttribute("data-theme");
18174
18487
  switch (currentTheme) {
@@ -18180,7 +18493,7 @@ function useTheme() {
18180
18493
  break;
18181
18494
  }
18182
18495
  };
18183
- (0, import_react109.useEffect)(() => {
18496
+ (0, import_react111.useEffect)(() => {
18184
18497
  checkTheme();
18185
18498
  const observer = new MutationObserver((mutations) => {
18186
18499
  mutations.forEach((mutation) => {
@@ -18303,11 +18616,11 @@ var SUPPORTED_CANVAS_UPLOAD_TYPES = [
18303
18616
 
18304
18617
  // src/components/DimensionInput.tsx
18305
18618
  var import_noya_utils21 = require("@noya-app/noya-utils");
18306
- var React110 = __toESM(require("react"));
18619
+ var React112 = __toESM(require("react"));
18307
18620
  function getNewValue(value, mode, delta) {
18308
18621
  return delta === void 0 ? value : mode === "replace" ? delta : value + delta;
18309
18622
  }
18310
- var DimensionInput = React110.memo(function DimensionInput2({
18623
+ var DimensionInput = React112.memo(function DimensionInput2({
18311
18624
  id,
18312
18625
  value,
18313
18626
  onSetValue,
@@ -18317,15 +18630,15 @@ var DimensionInput = React110.memo(function DimensionInput2({
18317
18630
  disabled,
18318
18631
  trigger = "submit"
18319
18632
  }) {
18320
- const handleNudgeValue = React110.useCallback(
18633
+ const handleNudgeValue = React112.useCallback(
18321
18634
  (value2) => onSetValue(value2, "adjust"),
18322
18635
  [onSetValue]
18323
18636
  );
18324
- const handleSetValue = React110.useCallback(
18637
+ const handleSetValue = React112.useCallback(
18325
18638
  (value2) => onSetValue(value2, "replace"),
18326
18639
  [onSetValue]
18327
18640
  );
18328
- return /* @__PURE__ */ React110.createElement(LabeledField, { label, labelType: "inset" }, /* @__PURE__ */ React110.createElement(InputField2.Root, { id, width: size }, /* @__PURE__ */ React110.createElement(
18641
+ return /* @__PURE__ */ React112.createElement(LabeledField, { label, labelType: "inset" }, /* @__PURE__ */ React112.createElement(InputField2.Root, { id, width: size }, /* @__PURE__ */ React112.createElement(
18329
18642
  InputField2.NumberInput,
18330
18643
  {
18331
18644
  value: value === void 0 ? value : (0, import_noya_utils21.round)(value, 2),
@@ -18352,8 +18665,8 @@ __export(InspectorPrimitives_exports, {
18352
18665
  Title: () => Title,
18353
18666
  VerticalSeparator: () => VerticalSeparator
18354
18667
  });
18355
- var import_react110 = __toESM(require("react"));
18356
- var Section2 = (0, import_react110.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react110.default.createElement(
18668
+ var import_react112 = __toESM(require("react"));
18669
+ var Section2 = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18357
18670
  "div",
18358
18671
  {
18359
18672
  ref,
@@ -18361,8 +18674,8 @@ var Section2 = (0, import_react110.forwardRef)(({ className, ...props }, ref) =>
18361
18674
  ...props
18362
18675
  }
18363
18676
  ));
18364
- var SectionHeader2 = (0, import_react110.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react110.default.createElement("div", { ref, className: cx(`n-flex n-items-center`, className), ...props }));
18365
- var Title = (0, import_react110.forwardRef)(({ className, $textStyle, ...props }, ref) => /* @__PURE__ */ import_react110.default.createElement(
18677
+ var SectionHeader2 = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement("div", { ref, className: cx(`n-flex n-items-center`, className), ...props }));
18678
+ var Title = (0, import_react112.forwardRef)(({ className, $textStyle, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18366
18679
  "div",
18367
18680
  {
18368
18681
  ref,
@@ -18373,7 +18686,7 @@ var Title = (0, import_react110.forwardRef)(({ className, $textStyle, ...props }
18373
18686
  ...props
18374
18687
  }
18375
18688
  ));
18376
- var Row = (0, import_react110.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react110.default.createElement(
18689
+ var Row = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18377
18690
  "div",
18378
18691
  {
18379
18692
  ref,
@@ -18381,7 +18694,7 @@ var Row = (0, import_react110.forwardRef)(({ className, ...props }, ref) => /* @
18381
18694
  ...props
18382
18695
  }
18383
18696
  ));
18384
- var Column = (0, import_react110.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react110.default.createElement(
18697
+ var Column = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18385
18698
  "div",
18386
18699
  {
18387
18700
  ref,
@@ -18389,7 +18702,7 @@ var Column = (0, import_react110.forwardRef)(({ className, ...props }, ref) => /
18389
18702
  ...props
18390
18703
  }
18391
18704
  ));
18392
- var Checkbox3 = (0, import_react110.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react110.default.createElement(
18705
+ var Checkbox3 = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18393
18706
  "input",
18394
18707
  {
18395
18708
  ref,
@@ -18398,7 +18711,7 @@ var Checkbox3 = (0, import_react110.forwardRef)(({ className, ...props }, ref) =
18398
18711
  ...props
18399
18712
  }
18400
18713
  ));
18401
- var Text3 = (0, import_react110.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react110.default.createElement(
18714
+ var Text3 = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18402
18715
  "span",
18403
18716
  {
18404
18717
  ref,
@@ -18406,14 +18719,14 @@ var Text3 = (0, import_react110.forwardRef)(({ className, ...props }, ref) => /*
18406
18719
  ...props
18407
18720
  }
18408
18721
  ));
18409
- var VerticalSeparator = () => /* @__PURE__ */ import_react110.default.createElement(Spacer.Vertical, { size: "inspector-v-separator" });
18410
- var HorizontalSeparator = () => /* @__PURE__ */ import_react110.default.createElement(Spacer.Horizontal, { size: "inspector-h-separator" });
18411
- var RowLabel = (0, import_react110.forwardRef)(function RowLabel2({
18722
+ var VerticalSeparator = () => /* @__PURE__ */ import_react112.default.createElement(Spacer.Vertical, { size: "inspector-v-separator" });
18723
+ var HorizontalSeparator = () => /* @__PURE__ */ import_react112.default.createElement(Spacer.Horizontal, { size: "inspector-h-separator" });
18724
+ var RowLabel = (0, import_react112.forwardRef)(function RowLabel2({
18412
18725
  className,
18413
18726
  $textStyle,
18414
18727
  ...props
18415
18728
  }, ref) {
18416
- return /* @__PURE__ */ import_react110.default.createElement(
18729
+ return /* @__PURE__ */ import_react112.default.createElement(
18417
18730
  "label",
18418
18731
  {
18419
18732
  ref,
@@ -18425,7 +18738,7 @@ var RowLabel = (0, import_react110.forwardRef)(function RowLabel2({
18425
18738
  }
18426
18739
  );
18427
18740
  });
18428
- var LabeledRow = (0, import_react110.memo)(function LabeledRow2({
18741
+ var LabeledRow = (0, import_react112.memo)(function LabeledRow2({
18429
18742
  id,
18430
18743
  children,
18431
18744
  label,
@@ -18433,7 +18746,7 @@ var LabeledRow = (0, import_react110.memo)(function LabeledRow2({
18433
18746
  right,
18434
18747
  className
18435
18748
  }) {
18436
- return /* @__PURE__ */ import_react110.default.createElement(Row, { id, className }, /* @__PURE__ */ import_react110.default.createElement(Column, null, /* @__PURE__ */ import_react110.default.createElement(RowLabel, { $textStyle: labelTextStyle }, label, right && /* @__PURE__ */ import_react110.default.createElement(Spacer.Horizontal, null), right), /* @__PURE__ */ import_react110.default.createElement(Row, null, children)));
18749
+ return /* @__PURE__ */ import_react112.default.createElement(Row, { id, className }, /* @__PURE__ */ import_react112.default.createElement(Column, null, /* @__PURE__ */ import_react112.default.createElement(RowLabel, { $textStyle: labelTextStyle }, label, right && /* @__PURE__ */ import_react112.default.createElement(Spacer.Horizontal, null), right), /* @__PURE__ */ import_react112.default.createElement(Row, null, children)));
18437
18750
  });
18438
18751
  // Annotate the CommonJS export names for ESM import in node:
18439
18752
  0 && (module.exports = {
@@ -18573,7 +18886,9 @@ var LabeledRow = (0, import_react110.memo)(function LabeledRow2({
18573
18886
  Tooltip,
18574
18887
  TreeView,
18575
18888
  UserAvatar,
18889
+ UserPicker,
18576
18890
  UserPointer,
18891
+ Virtualized,
18577
18892
  WorkspaceLayout,
18578
18893
  WorkspaceSideProvider,
18579
18894
  acceptsDrop,
@@ -18606,6 +18921,7 @@ var LabeledRow = (0, import_react110.memo)(function LabeledRow2({
18606
18921
  getNextIndex,
18607
18922
  getPipelineResultLink,
18608
18923
  getThumbnailColors,
18924
+ getUserDisplayName,
18609
18925
  isMenuItemSectionHeader,
18610
18926
  isNonSelectableMenuItem,
18611
18927
  isPopoverMenuItem,