@noya-app/noya-designsystem 0.1.71 → 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 = [];
@@ -3259,6 +3259,7 @@ __export(src_exports, {
3259
3259
  UserAvatar: () => UserAvatar,
3260
3260
  UserPicker: () => UserPicker,
3261
3261
  UserPointer: () => UserPointer,
3262
+ Virtualized: () => Virtualized2,
3262
3263
  WorkspaceLayout: () => WorkspaceLayout,
3263
3264
  WorkspaceSideProvider: () => WorkspaceSideProvider,
3264
3265
  acceptsDrop: () => acceptsDrop,
@@ -7218,7 +7219,8 @@ var BreadcrumbSlash = () => {
7218
7219
  fill: "none",
7219
7220
  xmlns: "http://www.w3.org/2000/svg",
7220
7221
  opacity: 0.5,
7221
- style: slashStyle
7222
+ style: slashStyle,
7223
+ className: "n-flex-none"
7222
7224
  },
7223
7225
  /* @__PURE__ */ import_react51.default.createElement(
7224
7226
  "path",
@@ -7536,7 +7538,7 @@ var Chip = (0, import_react52.memo)(
7536
7538
  );
7537
7539
 
7538
7540
  // src/components/Collection.tsx
7539
- var import_react67 = __toESM(require("react"));
7541
+ var import_react68 = __toESM(require("react"));
7540
7542
 
7541
7543
  // src/components/Grid.tsx
7542
7544
  var import_react56 = __toESM(require("react"));
@@ -8344,7 +8346,7 @@ var Grid = memoGeneric(
8344
8346
  );
8345
8347
 
8346
8348
  // src/components/List.tsx
8347
- var import_react66 = __toESM(require("react"));
8349
+ var import_react67 = __toESM(require("react"));
8348
8350
 
8349
8351
  // src/components/listView/ListViewContexts.tsx
8350
8352
  var import_react57 = require("react");
@@ -8368,10 +8370,6 @@ var ListRowContext = (0, import_react57.createContext)({
8368
8370
  isSectionHeader: false
8369
8371
  });
8370
8372
  ListRowContext.displayName = "ListRowContext";
8371
- var RenderItemContext = (0, import_react57.createContext)(
8372
- () => null
8373
- );
8374
- RenderItemContext.displayName = "RenderItemContext";
8375
8373
 
8376
8374
  // src/components/listView/ListViewEditableRowTitle.tsx
8377
8375
  var import_react58 = __toESM(require("react"));
@@ -8424,21 +8422,348 @@ var ListViewEditableRowTitle = (0, import_react58.memo)(function ListViewEditabl
8424
8422
 
8425
8423
  // src/components/listView/ListViewRoot.tsx
8426
8424
  var import_noya_utils8 = require("@noya-app/noya-utils");
8427
- var import_react62 = __toESM(require("react"));
8428
- var import_react_virtualized = require("react-virtualized");
8429
- 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);
8430
8755
 
8431
8756
  // src/components/sorting/Sortable.tsx
8432
8757
  var import_core2 = require("@dnd-kit/core");
8433
8758
  var import_sortable = require("@dnd-kit/sortable");
8434
- var React55 = __toESM(require("react"));
8435
- var import_react61 = require("react");
8759
+ var React57 = __toESM(require("react"));
8760
+ var import_react62 = require("react");
8436
8761
 
8437
8762
  // src/components/sorting/DragRegistration.tsx
8438
- var import_react59 = __toESM(require("react"));
8439
- var DragRegistrationContext = import_react59.default.createContext(null);
8763
+ var import_react60 = __toESM(require("react"));
8764
+ var DragRegistrationContext = import_react60.default.createContext(null);
8440
8765
  function useDragRegistration(context) {
8441
- const value = import_react59.default.useContext(context);
8766
+ const value = import_react60.default.useContext(context);
8442
8767
  if (!value) {
8443
8768
  throw new Error(
8444
8769
  "useDragRegistration must be used within a DragRegistrationProvider"
@@ -8447,11 +8772,11 @@ function useDragRegistration(context) {
8447
8772
  return value;
8448
8773
  }
8449
8774
  function useDragRegistrationManager() {
8450
- const [registeredLists, setRegisteredLists] = import_react59.default.useState(/* @__PURE__ */ new Map());
8451
- 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) => {
8452
8777
  setRegisteredLists((prev) => new Map(prev).set(list.id, list));
8453
8778
  }, []);
8454
- const unregisterList = import_react59.default.useCallback((listId) => {
8779
+ const unregisterList = import_react60.default.useCallback((listId) => {
8455
8780
  setRegisteredLists((prev) => {
8456
8781
  const newMap = new Map(prev);
8457
8782
  newMap.delete(listId);
@@ -8460,23 +8785,23 @@ function useDragRegistrationManager() {
8460
8785
  }, []);
8461
8786
  return { registerList, unregisterList, registeredLists };
8462
8787
  }
8463
- var ActiveDragContext = import_react59.default.createContext(null);
8788
+ var ActiveDragContext = import_react60.default.createContext(null);
8464
8789
  function useActiveDrag(context) {
8465
- const value = import_react59.default.useContext(context);
8790
+ const value = import_react60.default.useContext(context);
8466
8791
  if (!value) {
8467
8792
  throw new Error("useActiveDrag must be used within a ActiveDragProvider");
8468
8793
  }
8469
8794
  return value;
8470
8795
  }
8471
- var AnyDragContext = import_react59.default.createContext(false);
8796
+ var AnyDragContext = import_react60.default.createContext(false);
8472
8797
 
8473
8798
  // src/components/sorting/SharedDragProvider.tsx
8474
8799
  var import_core = require("@dnd-kit/core");
8475
8800
  var import_noya_geometry = require("@noya-app/noya-geometry");
8476
8801
  var import_noya_utils7 = require("@noya-app/noya-utils");
8477
- var React53 = __toESM(require("react"));
8478
- var import_react60 = require("react");
8479
- 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");
8480
8805
  function SharedDragProvider({
8481
8806
  children,
8482
8807
  acceptsDrop: acceptsDrop2,
@@ -8495,22 +8820,22 @@ function SharedDragProvider({
8495
8820
  })
8496
8821
  );
8497
8822
  const mounted = useMounted();
8498
- const [dragState, setDragState] = React53.useState({
8823
+ const [dragState, setDragState] = React55.useState({
8499
8824
  source: null,
8500
8825
  target: null,
8501
8826
  indicator: null
8502
8827
  });
8503
- const stableOnMoveItem = React53.useRef(onMoveItem);
8828
+ const stableOnMoveItem = React55.useRef(onMoveItem);
8504
8829
  useIsomorphicLayoutEffect(() => {
8505
8830
  stableOnMoveItem.current = onMoveItem;
8506
8831
  }, [onMoveItem]);
8507
- const stableAcceptsDrop = React53.useRef(acceptsDrop2);
8832
+ const stableAcceptsDrop = React55.useRef(acceptsDrop2);
8508
8833
  useIsomorphicLayoutEffect(() => {
8509
8834
  stableAcceptsDrop.current = acceptsDrop2;
8510
8835
  }, [acceptsDrop2]);
8511
8836
  const { registerList, unregisterList, registeredLists } = useDragRegistrationManager();
8512
- const activatorEventRef = React53.useRef(null);
8513
- const handleDragStart = React53.useCallback(
8837
+ const activatorEventRef = React55.useRef(null);
8838
+ const handleDragStart = React55.useCallback(
8514
8839
  (event) => {
8515
8840
  activatorEventRef.current = event.activatorEvent;
8516
8841
  for (const [listId, list] of registeredLists) {
@@ -8532,7 +8857,7 @@ function SharedDragProvider({
8532
8857
  },
8533
8858
  [registeredLists]
8534
8859
  );
8535
- const handleDragMove = React53.useCallback(
8860
+ const handleDragMove = React55.useCallback(
8536
8861
  (event) => {
8537
8862
  const { active, over } = event;
8538
8863
  if (!activatorEventRef.current || !dragState.source) return;
@@ -8556,7 +8881,7 @@ function SharedDragProvider({
8556
8881
  },
8557
8882
  [registeredLists, dragState.source]
8558
8883
  );
8559
- const handleDragEnd = React53.useCallback(
8884
+ const handleDragEnd = React55.useCallback(
8560
8885
  (event) => {
8561
8886
  const { active, over } = event;
8562
8887
  if (!activatorEventRef.current || !dragState.source) return;
@@ -8600,7 +8925,7 @@ function SharedDragProvider({
8600
8925
  },
8601
8926
  [registeredLists, dragState.source, stableOnMoveItem]
8602
8927
  );
8603
- const contextValue = React53.useMemo(
8928
+ const contextValue = React55.useMemo(
8604
8929
  () => ({
8605
8930
  registerList,
8606
8931
  unregisterList
@@ -8608,19 +8933,19 @@ function SharedDragProvider({
8608
8933
  [registerList, unregisterList]
8609
8934
  );
8610
8935
  const activeList = dragState.source ? registeredLists.get(dragState.source.listId) : null;
8611
- const activeDragContextValue = React53.useMemo(
8936
+ const activeDragContextValue = React55.useMemo(
8612
8937
  () => dragState,
8613
8938
  [dragState]
8614
8939
  );
8615
- const collisionDetection = (0, import_react60.useMemo)(() => {
8940
+ const collisionDetection = (0, import_react61.useMemo)(() => {
8616
8941
  return getItemFirstCollisionDetection(registeredLists, itemHitSlop);
8617
8942
  }, [registeredLists, itemHitSlop]);
8618
- 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(
8619
8944
  sharedDragProps.activeDragContext.Provider,
8620
8945
  {
8621
8946
  value: activeDragContextValue
8622
8947
  },
8623
- /* @__PURE__ */ React53.createElement(
8948
+ /* @__PURE__ */ React55.createElement(
8624
8949
  import_core.DndContext,
8625
8950
  {
8626
8951
  sensors,
@@ -8630,27 +8955,27 @@ function SharedDragProvider({
8630
8955
  onDragEnd: handleDragEnd
8631
8956
  },
8632
8957
  children,
8633
- mounted && activeList?.renderOverlay && dragState.source && (0, import_react_dom2.createPortal)(
8634
- /* @__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)),
8635
8960
  document.body
8636
8961
  )
8637
8962
  )
8638
8963
  )));
8639
8964
  }
8640
8965
  function useMounted() {
8641
- const [mounted, setMounted] = React53.useState(false);
8642
- React53.useEffect(() => {
8966
+ const [mounted, setMounted] = React55.useState(false);
8967
+ React55.useEffect(() => {
8643
8968
  setMounted(true);
8644
8969
  }, []);
8645
8970
  return mounted;
8646
8971
  }
8647
8972
  function withDragProvider(Component) {
8648
8973
  return function WithDragProvider(props) {
8649
- const anyDragContext = React53.useContext(AnyDragContext);
8974
+ const anyDragContext = React55.useContext(AnyDragContext);
8650
8975
  if (!anyDragContext) {
8651
- return /* @__PURE__ */ React53.createElement(SharedDragProvider, null, /* @__PURE__ */ React53.createElement(Component, { ...props }));
8976
+ return /* @__PURE__ */ React55.createElement(SharedDragProvider, null, /* @__PURE__ */ React55.createElement(Component, { ...props }));
8652
8977
  }
8653
- return /* @__PURE__ */ React53.createElement(Component, { ...props });
8978
+ return /* @__PURE__ */ React55.createElement(Component, { ...props });
8654
8979
  };
8655
8980
  }
8656
8981
  var getItemFirstCollisionDetection = (registeredLists, itemHitSlop) => (parameters) => {
@@ -8827,7 +9152,7 @@ function findDropTarget({
8827
9152
  }
8828
9153
 
8829
9154
  // src/components/sorting/sorting.ts
8830
- var React54 = __toESM(require("react"));
9155
+ var React56 = __toESM(require("react"));
8831
9156
  var normalizeListTargetIndex = (index, position) => {
8832
9157
  return position === "above" ? index : index + 1;
8833
9158
  };
@@ -8843,7 +9168,7 @@ var defaultAcceptsDrop = ({
8843
9168
  }
8844
9169
  return true;
8845
9170
  };
8846
- var SortableItemContext = React54.createContext({
9171
+ var SortableItemContext = React56.createContext({
8847
9172
  keys: [],
8848
9173
  acceptsDrop: defaultAcceptsDrop,
8849
9174
  axis: "y",
@@ -8909,7 +9234,7 @@ function parseDragItemKey(key) {
8909
9234
  }
8910
9235
 
8911
9236
  // src/components/sorting/Sortable.tsx
8912
- var SortableItemContext2 = React55.createContext({
9237
+ var SortableItemContext2 = React57.createContext({
8913
9238
  acceptsDrop: defaultAcceptsDrop,
8914
9239
  listId: "",
8915
9240
  getDropTargetParentIndex: void 0,
@@ -8922,7 +9247,7 @@ function useSortableDropIndicator({
8922
9247
  acceptsDrop: acceptsDrop2,
8923
9248
  getDropTargetParentIndex
8924
9249
  }) {
8925
- const { activeDragContext } = React55.useContext(SortableItemContext2);
9250
+ const { activeDragContext } = React57.useContext(SortableItemContext2);
8926
9251
  const activeDrag = useActiveDrag(activeDragContext);
8927
9252
  const { source, target } = activeDrag;
8928
9253
  if (!source || !target) return;
@@ -8953,7 +9278,7 @@ function SortableItem({
8953
9278
  disabled,
8954
9279
  children
8955
9280
  }) {
8956
- const { acceptsDrop: acceptsDrop2, listId, getDropTargetParentIndex } = React55.useContext(SortableItemContext2);
9281
+ const { acceptsDrop: acceptsDrop2, listId, getDropTargetParentIndex } = React57.useContext(SortableItemContext2);
8957
9282
  const dragItemKey = createDragItemKey(listId, id);
8958
9283
  const {
8959
9284
  attributes,
@@ -8968,7 +9293,7 @@ function SortableItem({
8968
9293
  id: dragItemKey,
8969
9294
  disabled
8970
9295
  });
8971
- const ref = React55.useCallback(
9296
+ const ref = React57.useCallback(
8972
9297
  (node) => setNodeRef(node),
8973
9298
  [setNodeRef]
8974
9299
  );
@@ -8979,7 +9304,7 @@ function SortableItem({
8979
9304
  acceptsDrop: acceptsDrop2,
8980
9305
  getDropTargetParentIndex
8981
9306
  });
8982
- const props = (0, import_react61.useMemo)(
9307
+ const props = (0, import_react62.useMemo)(
8983
9308
  () => ({
8984
9309
  ref,
8985
9310
  ...attributes,
@@ -8988,7 +9313,7 @@ function SortableItem({
8988
9313
  }),
8989
9314
  [ref, attributes, listeners, isDragging]
8990
9315
  );
8991
- const extraProps = (0, import_react61.useMemo)(
9316
+ const extraProps = (0, import_react62.useMemo)(
8992
9317
  () => ({
8993
9318
  isDragging,
8994
9319
  isOverlay: false,
@@ -9022,9 +9347,9 @@ function SortableRoot_({
9022
9347
  containerRef,
9023
9348
  itemHitSlop
9024
9349
  }) {
9025
- const defaultId = React55.useId();
9350
+ const defaultId = React57.useId();
9026
9351
  const id = idProp ?? defaultId;
9027
- const keys = React55.useMemo(() => {
9352
+ const keys = React57.useMemo(() => {
9028
9353
  return keysProp.map((key) => createDragItemKey(id, key));
9029
9354
  }, [keysProp, id]);
9030
9355
  const { registerList, unregisterList } = useDragRegistration(
@@ -9033,7 +9358,7 @@ function SortableRoot_({
9033
9358
  const { setNodeRef: setDroppableRef } = (0, import_core2.useDroppable)({
9034
9359
  id
9035
9360
  });
9036
- React55.useEffect(() => {
9361
+ React57.useEffect(() => {
9037
9362
  const listConfig = {
9038
9363
  id,
9039
9364
  keys,
@@ -9087,7 +9412,7 @@ function SortableRoot_({
9087
9412
  keys,
9088
9413
  itemHitSlop
9089
9414
  ]);
9090
- const contextValue = React55.useMemo(
9415
+ const contextValue = React57.useMemo(
9091
9416
  () => ({
9092
9417
  keys,
9093
9418
  acceptsDrop: acceptsDrop2,
@@ -9098,17 +9423,17 @@ function SortableRoot_({
9098
9423
  [keys, acceptsDrop2, id, getDropTargetParentIndex, sharedDragProps]
9099
9424
  );
9100
9425
  const activeDragContext = sharedDragProps?.activeDragContext ?? ActiveDragContext;
9101
- const dragState = React55.useContext(activeDragContext);
9426
+ const dragState = React57.useContext(activeDragContext);
9102
9427
  const isDragging = !!dragState?.source;
9103
- React55.useEffect(() => {
9428
+ React57.useEffect(() => {
9104
9429
  onIsDraggingChange?.(isDragging);
9105
9430
  }, [isDragging, onIsDraggingChange]);
9106
- React55.useEffect(() => {
9431
+ React57.useEffect(() => {
9107
9432
  if (containerRef) {
9108
9433
  setDroppableRef(containerRef.current);
9109
9434
  }
9110
9435
  });
9111
- return /* @__PURE__ */ React55.createElement(SortableItemContext2.Provider, { value: contextValue }, /* @__PURE__ */ React55.createElement(
9436
+ return /* @__PURE__ */ React57.createElement(SortableItemContext2.Provider, { value: contextValue }, /* @__PURE__ */ React57.createElement(
9112
9437
  import_sortable.SortableContext,
9113
9438
  {
9114
9439
  items: keys,
@@ -9125,11 +9450,11 @@ var Sortable_ = function Sortable_2({
9125
9450
  renderItem,
9126
9451
  ...rest
9127
9452
  }) {
9128
- const keys = React55.useMemo(
9453
+ const keys = React57.useMemo(
9129
9454
  () => items.map(keyExtractor),
9130
9455
  [items, keyExtractor]
9131
9456
  );
9132
- const renderOverlay = React55.useCallback(
9457
+ const renderOverlay = React57.useCallback(
9133
9458
  (index) => {
9134
9459
  return renderItem(
9135
9460
  items[index],
@@ -9159,14 +9484,14 @@ var Sortable_ = function Sortable_2({
9159
9484
  },
9160
9485
  [renderItem, items]
9161
9486
  );
9162
- return /* @__PURE__ */ React55.createElement(
9487
+ return /* @__PURE__ */ React57.createElement(
9163
9488
  SortableRoot,
9164
9489
  {
9165
9490
  ...rest,
9166
9491
  keys,
9167
9492
  renderOverlay: shouldRenderOverlay ? renderOverlay : void 0
9168
9493
  },
9169
- 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) => {
9170
9495
  return renderItem(items[index], props, extraProps);
9171
9496
  }))
9172
9497
  );
@@ -9180,87 +9505,6 @@ var Sortable = Object.assign(Sortable_, {
9180
9505
  var ROW_HEIGHT = 31;
9181
9506
  var SECTION_HEADER_LABEL_HEIGHT = 24;
9182
9507
  var TALL_ROW_HEIGHT = 50;
9183
- var VirtualizedListRow = (0, import_react62.memo)(function VirtualizedListRow2({
9184
- index,
9185
- style: style2
9186
- }) {
9187
- const renderItem = (0, import_react62.useContext)(RenderItemContext);
9188
- return /* @__PURE__ */ import_react62.default.createElement("div", { key: index, style: style2 }, renderItem(index));
9189
- });
9190
- var VirtualizedListInner = forwardRefGeneric(function VirtualizedListInner2({
9191
- size,
9192
- scrollElement,
9193
- items,
9194
- getItemHeight,
9195
- keyExtractor,
9196
- renderItem
9197
- }, ref) {
9198
- const listRef = (0, import_react62.useRef)(null);
9199
- (0, import_react62.useImperativeHandle)(ref, () => ({
9200
- scrollToIndex(index) {
9201
- listRef.current?.scrollToItem(index);
9202
- }
9203
- }));
9204
- (0, import_react62.useLayoutEffect)(() => {
9205
- listRef.current?.resetAfterIndex(0);
9206
- }, [
9207
- // When items or the height resolver change, re-render the virtualized list
9208
- // since VariableSizeList caches sizes per index.
9209
- items,
9210
- getItemHeight
9211
- ]);
9212
- const listStyle = (0, import_react62.useMemo)(
9213
- () => ({
9214
- overflowX: "initial",
9215
- overflowY: "initial",
9216
- overflow: "initial"
9217
- }),
9218
- []
9219
- );
9220
- return /* @__PURE__ */ import_react62.default.createElement(RenderItemContext.Provider, { value: renderItem }, /* @__PURE__ */ import_react62.default.createElement(
9221
- import_react_virtualized.WindowScroller,
9222
- {
9223
- scrollElement,
9224
- style: (0, import_react62.useMemo)(() => ({ flex: "1 1 auto" }), [])
9225
- },
9226
- (0, import_react62.useCallback)(
9227
- ({
9228
- registerChild,
9229
- onChildScroll,
9230
- scrollTop
9231
- }) => /* @__PURE__ */ import_react62.default.createElement("div", { ref: registerChild }, /* @__PURE__ */ import_react62.default.createElement(
9232
- import_react_window.VariableSizeList,
9233
- {
9234
- ref: listRef,
9235
- key: scrollTop,
9236
- style: listStyle,
9237
- itemKey: keyExtractor,
9238
- onScroll: ({ scrollOffset }) => {
9239
- onChildScroll({ scrollTop: scrollOffset });
9240
- },
9241
- initialScrollOffset: scrollTop,
9242
- width: size.width,
9243
- height: size.height,
9244
- itemCount: items.length,
9245
- itemSize: getItemHeight,
9246
- estimatedItemSize: ROW_HEIGHT
9247
- },
9248
- VirtualizedListRow
9249
- )),
9250
- [
9251
- listStyle,
9252
- keyExtractor,
9253
- size.width,
9254
- size.height,
9255
- items.length,
9256
- getItemHeight
9257
- ]
9258
- )
9259
- ));
9260
- });
9261
- var VirtualizedList = (0, import_react62.memo)(
9262
- VirtualizedListInner
9263
- );
9264
9508
  var ListViewRoot = memoGeneric(
9265
9509
  forwardRefGeneric(function ListViewRootInner({
9266
9510
  id,
@@ -9299,7 +9543,7 @@ var ListViewRoot = memoGeneric(
9299
9543
  itemHeight,
9300
9544
  getItemHeightForItem
9301
9545
  }, forwardedRef) {
9302
- const handleClick = (0, import_react62.useCallback)(
9546
+ const handleClick = (0, import_react63.useCallback)(
9303
9547
  (event) => {
9304
9548
  if (event.target instanceof HTMLElement && event.target.classList.contains("scroll-component"))
9305
9549
  return;
@@ -9309,11 +9553,11 @@ var ListViewRoot = memoGeneric(
9309
9553
  },
9310
9554
  [onPress]
9311
9555
  );
9312
- const renderChild = (0, import_react62.useCallback)(
9556
+ const renderChild = (0, import_react63.useCallback)(
9313
9557
  (index) => renderItem(data[index], index, { isDragOverlay: false }),
9314
9558
  [data, renderItem]
9315
9559
  );
9316
- const defaultContextValue = (0, import_react62.useMemo)(
9560
+ const defaultContextValue = (0, import_react63.useMemo)(
9317
9561
  () => ({
9318
9562
  marginType: "none",
9319
9563
  selectedPosition: "only",
@@ -9321,22 +9565,22 @@ var ListViewRoot = memoGeneric(
9321
9565
  }),
9322
9566
  []
9323
9567
  );
9324
- const getItemContextValue = (0, import_react62.useCallback)(
9568
+ const getItemContextValue = (0, import_react63.useCallback)(
9325
9569
  (i) => {
9326
9570
  if (variant === "bare" || variant === "normal") {
9327
9571
  const current2 = renderChild(i);
9328
- if (!(0, import_react62.isValidElement)(current2)) return defaultContextValue;
9572
+ if (!(0, import_react63.isValidElement)(current2)) return defaultContextValue;
9329
9573
  return {
9330
9574
  ...defaultContextValue,
9331
9575
  isSectionHeader: !!current2.props.isSectionHeader
9332
9576
  };
9333
9577
  }
9334
9578
  const current = renderChild(i);
9335
- if (!(0, import_react62.isValidElement)(current)) return;
9579
+ if (!(0, import_react63.isValidElement)(current)) return;
9336
9580
  const prevChild = i - 1 >= 0 && renderChild(i - 1);
9337
9581
  const nextChild = i + 1 < data.length && renderChild(i + 1);
9338
- const next = (0, import_react62.isValidElement)(nextChild) ? nextChild : void 0;
9339
- 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;
9340
9584
  const hasMarginTop = !prev;
9341
9585
  const hasMarginBottom = !next || current.props.isSectionHeader || next && next.props.isSectionHeader;
9342
9586
  let marginType;
@@ -9369,27 +9613,27 @@ var ListViewRoot = memoGeneric(
9369
9613
  },
9370
9614
  [variant, defaultContextValue, renderChild, data.length]
9371
9615
  );
9372
- const draggingContextOverlayValue = (0, import_react62.useMemo)(
9616
+ const draggingContextOverlayValue = (0, import_react63.useMemo)(
9373
9617
  () => ({
9374
9618
  isDragOverlay: true
9375
9619
  }),
9376
9620
  []
9377
9621
  );
9378
- const renderOverlay = (0, import_react62.useCallback)(
9379
- (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 }))),
9380
9624
  [draggingContextOverlayValue, renderItem, data]
9381
9625
  );
9382
- const renderWrappedChild = (0, import_react62.useCallback)(
9626
+ const renderWrappedChild = (0, import_react63.useCallback)(
9383
9627
  (index) => {
9384
9628
  const contextValue2 = getItemContextValue(index);
9385
9629
  const current = renderChild(index);
9386
- if (!contextValue2 || !(0, import_react62.isValidElement)(current)) return null;
9387
- 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);
9388
9632
  },
9389
9633
  [getItemContextValue, renderChild]
9390
9634
  );
9391
- const ids = (0, import_react62.useMemo)(() => data.map(keyExtractor), [keyExtractor, data]);
9392
- 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(
9393
9637
  Sortable.Root,
9394
9638
  {
9395
9639
  id: sortableId,
@@ -9402,8 +9646,8 @@ var ListViewRoot = memoGeneric(
9402
9646
  },
9403
9647
  children
9404
9648
  ) : children;
9405
- const withScrollable = (children) => scrollable ? /* @__PURE__ */ import_react62.default.createElement(ScrollArea, null, children) : children(null);
9406
- 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)(
9407
9651
  (index) => {
9408
9652
  const child = getItemContextValue(index);
9409
9653
  if (child?.isSectionHeader && sectionHeaderVariant === "label") {
@@ -9423,13 +9667,13 @@ var ListViewRoot = memoGeneric(
9423
9667
  data
9424
9668
  ]
9425
9669
  );
9426
- const getKey = (0, import_react62.useCallback)(
9670
+ const getKey = (0, import_react63.useCallback)(
9427
9671
  (index) => keyExtractor(data[index], index),
9428
9672
  [data, keyExtractor]
9429
9673
  );
9430
- const draggingContextValue = (0, import_react62.useMemo)(() => ({}), []);
9431
- const gapStyle = (0, import_react62.useMemo)(() => ({ gap: `${gap}px` }), [gap]);
9432
- 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)(
9433
9677
  () => ({
9434
9678
  pressEventName,
9435
9679
  colorScheme,
@@ -9453,7 +9697,7 @@ var ListViewRoot = memoGeneric(
9453
9697
  indentation
9454
9698
  ]
9455
9699
  );
9456
- 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(
9457
9701
  "div",
9458
9702
  {
9459
9703
  id,
@@ -9480,21 +9724,21 @@ var ListViewRoot = memoGeneric(
9480
9724
  onDragLeave,
9481
9725
  onDrop
9482
9726
  },
9483
- data.length === 0 && renderEmptyState ? renderEmptyState() : withScrollable(
9484
- (scrollElementRef) => withSortable(
9485
- virtualized ? /* @__PURE__ */ import_react62.default.createElement(
9486
- VirtualizedList,
9487
- {
9488
- ref: forwardedRef,
9489
- scrollElement: scrollElementRef,
9490
- items: data,
9491
- size: virtualized,
9492
- getItemHeight,
9493
- keyExtractor: getKey,
9494
- renderItem: renderWrappedChild
9495
- }
9496
- ) : (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
+ }
9497
9739
  )
9740
+ ) : withScrollable(
9741
+ withSortable((0, import_noya_utils8.range)(0, data.length).map(renderWrappedChild))
9498
9742
  )
9499
9743
  )));
9500
9744
  })
@@ -9502,7 +9746,7 @@ var ListViewRoot = memoGeneric(
9502
9746
 
9503
9747
  // src/components/listView/ListViewRow.tsx
9504
9748
  var import_react_compose_refs2 = require("@radix-ui/react-compose-refs");
9505
- var import_react63 = __toESM(require("react"));
9749
+ var import_react64 = __toESM(require("react"));
9506
9750
 
9507
9751
  // src/hooks/mergeEventHandlers.ts
9508
9752
  var import_noya_utils9 = require("@noya-app/noya-utils");
@@ -9528,7 +9772,7 @@ function mergeEventHandlers(...handlerMaps) {
9528
9772
  }
9529
9773
 
9530
9774
  // src/components/listView/ListViewRow.tsx
9531
- var RowContainer = (0, import_react63.forwardRef)(
9775
+ var RowContainer = (0, import_react64.forwardRef)(
9532
9776
  ({
9533
9777
  as: Component = "div",
9534
9778
  href,
@@ -9555,7 +9799,7 @@ var RowContainer = (0, import_react63.forwardRef)(
9555
9799
  "aria-selected": ariaSelected,
9556
9800
  ...props
9557
9801
  }, ref) => {
9558
- return /* @__PURE__ */ import_react63.default.createElement(
9802
+ return /* @__PURE__ */ import_react64.default.createElement(
9559
9803
  Component,
9560
9804
  {
9561
9805
  ref,
@@ -9627,7 +9871,7 @@ var RowContainer = (0, import_react63.forwardRef)(
9627
9871
  );
9628
9872
  }
9629
9873
  );
9630
- var ListViewDragIndicatorElement = (0, import_react63.forwardRef)(
9874
+ var ListViewDragIndicatorElement = (0, import_react64.forwardRef)(
9631
9875
  ({
9632
9876
  className,
9633
9877
  $relativeDropPosition,
@@ -9637,7 +9881,7 @@ var ListViewDragIndicatorElement = (0, import_react63.forwardRef)(
9637
9881
  style: style2,
9638
9882
  ...props
9639
9883
  }, ref) => {
9640
- return /* @__PURE__ */ import_react63.default.createElement(
9884
+ return /* @__PURE__ */ import_react64.default.createElement(
9641
9885
  "div",
9642
9886
  {
9643
9887
  ref,
@@ -9705,27 +9949,27 @@ var ListViewRow = memoGeneric(
9705
9949
  divider,
9706
9950
  sortable,
9707
9951
  indentation
9708
- } = (0, import_react63.useContext)(ListViewContext);
9709
- const { marginType, selectedPosition } = (0, import_react63.useContext)(ListRowContext);
9952
+ } = (0, import_react64.useContext)(ListViewContext);
9953
+ const { marginType, selectedPosition } = (0, import_react64.useContext)(ListRowContext);
9710
9954
  const { hoverProps } = useHover({
9711
9955
  onHoverChange
9712
9956
  });
9713
- const { isDragOverlay } = (0, import_react63.useContext)(ListViewDraggingContext);
9714
- const handlePress = (0, import_react63.useCallback)(
9957
+ const { isDragOverlay } = (0, import_react64.useContext)(ListViewDraggingContext);
9958
+ const handlePress = (0, import_react64.useCallback)(
9715
9959
  (event) => {
9716
9960
  if (event.button !== 0) return;
9717
9961
  onPress?.(event);
9718
9962
  },
9719
9963
  [onPress]
9720
9964
  );
9721
- const handleDoubleClick = (0, import_react63.useCallback)(
9965
+ const handleDoubleClick = (0, import_react64.useCallback)(
9722
9966
  (event) => {
9723
9967
  event.stopPropagation();
9724
9968
  onDoubleClick?.();
9725
9969
  },
9726
9970
  [onDoubleClick]
9727
9971
  );
9728
- const mergedStyle = (0, import_react63.useMemo)(() => {
9972
+ const mergedStyle = (0, import_react64.useMemo)(() => {
9729
9973
  return isDragOverlay ? {
9730
9974
  // TODO: Where do these offsets actually come from?
9731
9975
  transform: `translate3d(-36px, -6px, 0)`,
@@ -9736,7 +9980,7 @@ var ListViewRow = memoGeneric(
9736
9980
  const renderContent = (renderProps, ref, relativeDropPositionProp) => {
9737
9981
  const Component = RowContainer;
9738
9982
  const relativeDropPosition = testRelativeDropPosition ?? relativeDropPositionProp;
9739
- const element = /* @__PURE__ */ import_react63.default.createElement(
9983
+ const element = /* @__PURE__ */ import_react64.default.createElement(
9740
9984
  Component,
9741
9985
  {
9742
9986
  as,
@@ -9771,7 +10015,7 @@ var ListViewRow = memoGeneric(
9771
10015
  className,
9772
10016
  $clickable: !!onPress
9773
10017
  },
9774
- relativeDropPosition && /* @__PURE__ */ import_react63.default.createElement(
10018
+ relativeDropPosition && /* @__PURE__ */ import_react64.default.createElement(
9775
10019
  ListViewDragIndicatorElement,
9776
10020
  {
9777
10021
  key: relativeDropPosition,
@@ -9786,11 +10030,11 @@ var ListViewRow = memoGeneric(
9786
10030
  }) : dragIndicatorStyle
9787
10031
  }
9788
10032
  ),
9789
- 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 }),
9790
10034
  children
9791
10035
  );
9792
10036
  if (menuItems && onSelectMenuItem) {
9793
- return /* @__PURE__ */ import_react63.default.createElement(
10037
+ return /* @__PURE__ */ import_react64.default.createElement(
9794
10038
  ContextMenu,
9795
10039
  {
9796
10040
  items: menuItems,
@@ -9803,7 +10047,7 @@ var ListViewRow = memoGeneric(
9803
10047
  return element;
9804
10048
  };
9805
10049
  if (sortable && id) {
9806
- return /* @__PURE__ */ import_react63.default.createElement(
10050
+ return /* @__PURE__ */ import_react64.default.createElement(
9807
10051
  Sortable.Item,
9808
10052
  {
9809
10053
  id,
@@ -9821,12 +10065,12 @@ var ListViewRow = memoGeneric(
9821
10065
  );
9822
10066
 
9823
10067
  // src/components/listView/ListViewRowTitle.tsx
9824
- var import_react64 = __toESM(require("react"));
9825
- var ListViewRowTitle = (0, import_react64.memo)(function ListViewRowTitle2({
10068
+ var import_react65 = __toESM(require("react"));
10069
+ var ListViewRowTitle = (0, import_react65.memo)(function ListViewRowTitle2({
9826
10070
  className,
9827
10071
  ...props
9828
10072
  }) {
9829
- return /* @__PURE__ */ import_react64.default.createElement(
10073
+ return /* @__PURE__ */ import_react65.default.createElement(
9830
10074
  "span",
9831
10075
  {
9832
10076
  className: cx(
@@ -9883,7 +10127,7 @@ var ListView;
9883
10127
  })(ListView || (ListView = {}));
9884
10128
 
9885
10129
  // src/components/TreeView.tsx
9886
- var import_react65 = __toESM(require("react"));
10130
+ var import_react66 = __toESM(require("react"));
9887
10131
  var TreeRow = forwardRefGeneric(function TreeRow2({
9888
10132
  icon,
9889
10133
  expanded,
@@ -9894,9 +10138,9 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9894
10138
  children,
9895
10139
  ...rest
9896
10140
  }, forwardedRef) {
9897
- const { expandable } = (0, import_react65.useContext)(ListViewContext);
10141
+ const { expandable } = (0, import_react66.useContext)(ListViewContext);
9898
10142
  const stableOnClickChevron = useStableCallback(onClickChevron);
9899
- const handleClickChevron = (0, import_react65.useCallback)(
10143
+ const handleClickChevron = (0, import_react66.useCallback)(
9900
10144
  (event) => {
9901
10145
  event.stopPropagation();
9902
10146
  event.preventDefault();
@@ -9904,7 +10148,7 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9904
10148
  },
9905
10149
  [stableOnClickChevron]
9906
10150
  );
9907
- 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(
9908
10152
  IconButton,
9909
10153
  {
9910
10154
  as: chevronAs,
@@ -9913,7 +10157,7 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9913
10157
  onClick: handleClickChevron,
9914
10158
  selected: rest.selected
9915
10159
  }
9916
- ), /* @__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(
9917
10161
  IconButton,
9918
10162
  {
9919
10163
  as: chevronAs,
@@ -9922,7 +10166,7 @@ var TreeRow = forwardRefGeneric(function TreeRow2({
9922
10166
  onClick: handleClickChevron,
9923
10167
  selected: rest.selected
9924
10168
  }
9925
- ), /* @__PURE__ */ import_react65.default.createElement(Spacer.Horizontal, { size: 8 }))));
10169
+ ), /* @__PURE__ */ import_react66.default.createElement(Spacer.Horizontal, { size: 8 }))));
9926
10170
  });
9927
10171
  var TreeView;
9928
10172
  ((TreeView2) => {
@@ -9990,9 +10234,9 @@ var List = memoGeneric(
9990
10234
  getItemStyle,
9991
10235
  getItemClassName
9992
10236
  } = props;
9993
- const [internalHoveredId, setHoveredId] = (0, import_react66.useState)();
9994
- const [internalRenamingId, setRenamingId] = (0, import_react66.useState)();
9995
- 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)();
9996
10240
  const hoveredId = internalHoveredId ?? testHoveredId;
9997
10241
  const renamingId = testRenamingId ?? internalRenamingId;
9998
10242
  const itemClassName = cx(
@@ -10000,7 +10244,7 @@ var List = memoGeneric(
10000
10244
  pyMap[size],
10001
10245
  itemClassNameProp
10002
10246
  );
10003
- const itemStyle = (0, import_react66.useMemo)(
10247
+ const itemStyle = (0, import_react67.useMemo)(
10004
10248
  () => ({ ...cssVarOverrides, ...itemStyleProp }),
10005
10249
  [itemStyleProp]
10006
10250
  );
@@ -10028,17 +10272,17 @@ var List = memoGeneric(
10028
10272
  };
10029
10273
  const ViewComponent = expandable ? TreeView : ListView;
10030
10274
  const LinkComponent2 = useLinkComponent();
10031
- const fileDropTargetRef = (0, import_react66.useRef)(null);
10275
+ const fileDropTargetRef = (0, import_react67.useRef)(null);
10032
10276
  const { isDropTargetActive, dropTargetProps } = useFileDropTarget(
10033
10277
  fileDropTargetRef,
10034
10278
  onFilesDrop
10035
10279
  );
10036
- (0, import_react66.useImperativeHandle)(ref, () => ({
10280
+ (0, import_react67.useImperativeHandle)(ref, () => ({
10037
10281
  editName: (id) => {
10038
10282
  setRenamingId(id);
10039
10283
  }
10040
10284
  }));
10041
- return /* @__PURE__ */ import_react66.default.createElement(
10285
+ return /* @__PURE__ */ import_react67.default.createElement(
10042
10286
  ViewComponent.Root,
10043
10287
  {
10044
10288
  variant: "bare",
@@ -10087,7 +10331,7 @@ var List = memoGeneric(
10087
10331
  handleSelect(id);
10088
10332
  }
10089
10333
  };
10090
- 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(
10091
10335
  ActionMenu,
10092
10336
  {
10093
10337
  menuItems,
@@ -10107,7 +10351,7 @@ var List = memoGeneric(
10107
10351
  let below = detailPosition === "below" ? detailContent : void 0;
10108
10352
  if (below && normalizedDetailLineClamp) {
10109
10353
  const clampClassName = DETAIL_LINE_CLAMP_CLASSES[normalizedDetailLineClamp];
10110
- below = /* @__PURE__ */ import_react66.default.createElement(
10354
+ below = /* @__PURE__ */ import_react67.default.createElement(
10111
10355
  "div",
10112
10356
  {
10113
10357
  className: cx(
@@ -10120,7 +10364,7 @@ var List = memoGeneric(
10120
10364
  }
10121
10365
  const perItemStyle = getItemStyle?.(item, isSelected);
10122
10366
  const perItemClassName = getItemClassName?.(item, isSelected);
10123
- return /* @__PURE__ */ import_react66.default.createElement(
10367
+ return /* @__PURE__ */ import_react67.default.createElement(
10124
10368
  ViewComponent.Row,
10125
10369
  {
10126
10370
  as: typeof href === "string" ? LinkComponent2 : void 0,
@@ -10175,7 +10419,7 @@ var List = memoGeneric(
10175
10419
  },
10176
10420
  dragIndicatorStyle
10177
10421
  },
10178
- /* @__PURE__ */ import_react66.default.createElement(
10422
+ /* @__PURE__ */ import_react67.default.createElement(
10179
10423
  "div",
10180
10424
  {
10181
10425
  className: cx(
@@ -10183,7 +10427,7 @@ var List = memoGeneric(
10183
10427
  rowGapMap[size]
10184
10428
  )
10185
10429
  },
10186
- thumbnail && /* @__PURE__ */ import_react66.default.createElement(
10430
+ thumbnail && /* @__PURE__ */ import_react67.default.createElement(
10187
10431
  "div",
10188
10432
  {
10189
10433
  className: cx(
@@ -10196,13 +10440,13 @@ var List = memoGeneric(
10196
10440
  },
10197
10441
  thumbnail
10198
10442
  ),
10199
- /* @__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(
10200
10444
  "div",
10201
10445
  {
10202
10446
  className: "n-flex-1 n-w-0 n-flex n-items-center",
10203
10447
  tabIndex: -1
10204
10448
  },
10205
- isRenaming ? /* @__PURE__ */ import_react66.default.createElement(
10449
+ isRenaming ? /* @__PURE__ */ import_react67.default.createElement(
10206
10450
  ViewComponent.EditableRowTitle,
10207
10451
  {
10208
10452
  value: getName(item),
@@ -10218,7 +10462,7 @@ var List = memoGeneric(
10218
10462
  e.stopPropagation();
10219
10463
  }
10220
10464
  }
10221
- ) : /* @__PURE__ */ import_react66.default.createElement(
10465
+ ) : /* @__PURE__ */ import_react67.default.createElement(
10222
10466
  ViewComponent.RowTitle,
10223
10467
  {
10224
10468
  className: cx(
@@ -10228,7 +10472,7 @@ var List = memoGeneric(
10228
10472
  },
10229
10473
  getName(item)
10230
10474
  )
10231
- ), 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(
10232
10476
  DetailContainer,
10233
10477
  {
10234
10478
  selected: isSelected,
@@ -10236,8 +10480,8 @@ var List = memoGeneric(
10236
10480
  },
10237
10481
  below
10238
10482
  )),
10239
- right && detailPosition === "below" && /* @__PURE__ */ import_react66.default.createElement(DetailContainer, { selected: isSelected }, right),
10240
- 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)
10241
10485
  )
10242
10486
  );
10243
10487
  }
@@ -10245,12 +10489,12 @@ var List = memoGeneric(
10245
10489
  );
10246
10490
  })
10247
10491
  );
10248
- var DetailContainer = (0, import_react66.memo)(function DetailContainer2({
10492
+ var DetailContainer = (0, import_react67.memo)(function DetailContainer2({
10249
10493
  children,
10250
10494
  selected,
10251
10495
  align = "center"
10252
10496
  }) {
10253
- return /* @__PURE__ */ import_react66.default.createElement(
10497
+ return /* @__PURE__ */ import_react67.default.createElement(
10254
10498
  "div",
10255
10499
  {
10256
10500
  className: cx(
@@ -10321,7 +10565,7 @@ var itemHeightMap = {
10321
10565
  // src/components/Collection.tsx
10322
10566
  var Collection = forwardRefGeneric(function Collection2(props, ref) {
10323
10567
  const { viewType, ...rest } = props;
10324
- 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 });
10325
10569
  });
10326
10570
 
10327
10571
  // ../noya-color/src/convert.ts
@@ -10478,7 +10722,7 @@ var import_css_background = __toESM(require_css_background());
10478
10722
 
10479
10723
  // src/components/ColorSwatch.tsx
10480
10724
  var import_noya_icons6 = require("@noya-app/noya-icons");
10481
- var import_react68 = __toESM(require("react"));
10725
+ var import_react69 = __toESM(require("react"));
10482
10726
  var colorSwatchSizeMap = {
10483
10727
  xxsmall: 15,
10484
10728
  xsmall: 21,
@@ -10486,7 +10730,7 @@ var colorSwatchSizeMap = {
10486
10730
  medium: 36,
10487
10731
  large: 48
10488
10732
  };
10489
- var ColorSwatch = (0, import_react68.forwardRef)(function ColorSwatch2({
10733
+ var ColorSwatch = (0, import_react69.forwardRef)(function ColorSwatch2({
10490
10734
  color,
10491
10735
  size = "small",
10492
10736
  checked,
@@ -10496,7 +10740,7 @@ var ColorSwatch = (0, import_react68.forwardRef)(function ColorSwatch2({
10496
10740
  }, ref) {
10497
10741
  const sizePx = colorSwatchSizeMap[size];
10498
10742
  const checkedColor = getContrastColorForBackground(color);
10499
- 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(
10500
10744
  Component,
10501
10745
  {
10502
10746
  ...props,
@@ -10512,7 +10756,7 @@ var ColorSwatch = (0, import_react68.forwardRef)(function ColorSwatch2({
10512
10756
  ...style2
10513
10757
  }
10514
10758
  }
10515
- ), checked && /* @__PURE__ */ import_react68.default.createElement(
10759
+ ), checked && /* @__PURE__ */ import_react69.default.createElement(
10516
10760
  import_noya_icons6.CheckIcon,
10517
10761
  {
10518
10762
  color: checkedColor,
@@ -10523,7 +10767,7 @@ var ColorSwatch = (0, import_react68.forwardRef)(function ColorSwatch2({
10523
10767
 
10524
10768
  // src/components/ColorSwatchControl.tsx
10525
10769
  var import_radix_ui9 = require("radix-ui");
10526
- var import_react69 = __toESM(require("react"));
10770
+ var import_react70 = __toESM(require("react"));
10527
10771
  function ColorSwatchControl(props) {
10528
10772
  const {
10529
10773
  options,
@@ -10538,7 +10782,7 @@ function ColorSwatchControl(props) {
10538
10782
  id,
10539
10783
  style: style2
10540
10784
  } = props;
10541
- const styles3 = (0, import_react69.useMemo)(() => {
10785
+ const styles3 = (0, import_react70.useMemo)(() => {
10542
10786
  return {
10543
10787
  display: "grid",
10544
10788
  gridTemplateColumns: `repeat(auto-fill, minmax(${colorSwatchSizeMap[size]}px, 1fr))`,
@@ -10546,8 +10790,8 @@ function ColorSwatchControl(props) {
10546
10790
  ...style2
10547
10791
  };
10548
10792
  }, [size, style2]);
10549
- const content = /* @__PURE__ */ import_react69.default.createElement("div", { className, id, style: styles3 }, options.map((option) => {
10550
- 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(
10551
10795
  ColorSwatch,
10552
10796
  {
10553
10797
  key: `${option}-color-swatch`,
@@ -10560,7 +10804,7 @@ function ColorSwatchControl(props) {
10560
10804
  checked: value === option
10561
10805
  }
10562
10806
  );
10563
- return /* @__PURE__ */ import_react69.default.createElement(
10807
+ return /* @__PURE__ */ import_react70.default.createElement(
10564
10808
  import_radix_ui9.ToggleGroup.Item,
10565
10809
  {
10566
10810
  asChild: true,
@@ -10571,7 +10815,7 @@ function ColorSwatchControl(props) {
10571
10815
  item
10572
10816
  );
10573
10817
  }));
10574
- return /* @__PURE__ */ import_react69.default.createElement(
10818
+ return /* @__PURE__ */ import_react70.default.createElement(
10575
10819
  import_radix_ui9.ToggleGroup.Root,
10576
10820
  {
10577
10821
  type: "single",
@@ -10586,11 +10830,11 @@ function ColorSwatchControl(props) {
10586
10830
 
10587
10831
  // src/components/Combobox.tsx
10588
10832
  var import_noya_icons8 = require("@noya-app/noya-icons");
10589
- var import_react72 = __toESM(require("react"));
10833
+ var import_react73 = __toESM(require("react"));
10590
10834
 
10591
10835
  // src/utils/combobox.ts
10592
10836
  var import_noya_utils13 = require("@noya-app/noya-utils");
10593
- var import_react70 = __toESM(require("react"));
10837
+ var import_react71 = __toESM(require("react"));
10594
10838
 
10595
10839
  // src/utils/fuzzyScorer.ts
10596
10840
  var import_vscode_fuzzy_scorer = require("vscode-fuzzy-scorer");
@@ -10916,7 +11160,7 @@ function getNextIndex({
10916
11160
  return nextIndex;
10917
11161
  }
10918
11162
  function useComboboxState(state) {
10919
- return (0, import_react70.useSyncExternalStore)(
11163
+ return (0, import_react71.useSyncExternalStore)(
10920
11164
  state.subscribe,
10921
11165
  state.getSnapshot,
10922
11166
  state.getSnapshot
@@ -10927,7 +11171,7 @@ function getNodeText(node) {
10927
11171
  return "";
10928
11172
  if (typeof node === "string" || typeof node === "number") return String(node);
10929
11173
  if (Array.isArray(node)) return node.map(getNodeText).join("");
10930
- if (import_react70.default.isValidElement(node)) {
11174
+ if (import_react71.default.isValidElement(node)) {
10931
11175
  return getNodeText(node.props?.children);
10932
11176
  }
10933
11177
  return "";
@@ -10935,7 +11179,7 @@ function getNodeText(node) {
10935
11179
 
10936
11180
  // src/components/ComboboxMenu.tsx
10937
11181
  var import_noya_icons7 = require("@noya-app/noya-icons");
10938
- var import_react71 = __toESM(require("react"));
11182
+ var import_react72 = __toESM(require("react"));
10939
11183
  var ComboboxMenu = memoGeneric(
10940
11184
  forwardRefGeneric(function ComboboxMenu2({
10941
11185
  items,
@@ -10949,7 +11193,7 @@ var ComboboxMenu = memoGeneric(
10949
11193
  itemHeight,
10950
11194
  getRowHeightForItem
10951
11195
  }, forwardedRef) {
10952
- return /* @__PURE__ */ import_react71.default.createElement(
11196
+ return /* @__PURE__ */ import_react72.default.createElement(
10953
11197
  ListView.Root,
10954
11198
  {
10955
11199
  ref: forwardedRef,
@@ -10959,7 +11203,7 @@ var ComboboxMenu = memoGeneric(
10959
11203
  return item.value;
10960
11204
  },
10961
11205
  data: items,
10962
- virtualized: listSize,
11206
+ virtualized: listSize.height,
10963
11207
  ...itemHeight ? { itemHeight } : {},
10964
11208
  ...getRowHeightForItem ? { getItemHeightForItem: getRowHeightForItem } : {},
10965
11209
  pressEventName: "onPointerDown",
@@ -10967,7 +11211,7 @@ var ComboboxMenu = memoGeneric(
10967
11211
  style: style2,
10968
11212
  renderItem: (item, i) => {
10969
11213
  if (item.type === "sectionHeader") {
10970
- 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(
10971
11215
  Spacer.Horizontal,
10972
11216
  {
10973
11217
  size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET + CHECKBOX_INDENT_WIDTH
@@ -10982,7 +11226,7 @@ var ComboboxMenu = memoGeneric(
10982
11226
  // Only selectable items can have tooltips in this menu
10983
11227
  isSelectableMenuItem(item) ? item.tooltip : void 0
10984
11228
  );
10985
- return /* @__PURE__ */ import_react71.default.createElement(
11229
+ return /* @__PURE__ */ import_react72.default.createElement(
10986
11230
  ListView.Row,
10987
11231
  {
10988
11232
  key: item.value,
@@ -10995,12 +11239,12 @@ var ComboboxMenu = memoGeneric(
10995
11239
  }
10996
11240
  }
10997
11241
  },
10998
- /* @__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(
10999
11243
  Spacer.Horizontal,
11000
11244
  {
11001
11245
  size: CHECKBOX_WIDTH - CHECKBOX_RIGHT_INSET
11002
11246
  }
11003
- ) : 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(
11004
11248
  "span",
11005
11249
  {
11006
11250
  key: `${item.value}-token-${j}`,
@@ -11010,16 +11254,16 @@ var ComboboxMenu = memoGeneric(
11010
11254
  )
11011
11255
  },
11012
11256
  token.text
11013
- ))), tooltip && /* @__PURE__ */ import_react71.default.createElement(Small, { color: "textSubtle", className: "n-truncate" }, tooltip))),
11014
- (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 }))
11015
11259
  );
11016
11260
  }
11017
11261
  }
11018
11262
  );
11019
11263
  })
11020
11264
  );
11021
- var MenuIcon = (0, import_react71.memo)(function MenuIcon2({ icon }) {
11022
- 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));
11023
11267
  });
11024
11268
 
11025
11269
  // src/components/Combobox.tsx
@@ -11043,7 +11287,7 @@ var Combobox = memoGeneric(
11043
11287
  iconPosition = "right",
11044
11288
  ...rest
11045
11289
  }, forwardedRef) {
11046
- const props = (0, import_react72.useMemo)(() => {
11290
+ const props = (0, import_react73.useMemo)(() => {
11047
11291
  if (rest.mode === "string") {
11048
11292
  return {
11049
11293
  mode: rest.mode,
@@ -11073,7 +11317,7 @@ var Combobox = memoGeneric(
11073
11317
  rest.onBlur,
11074
11318
  rest.allowArbitraryValues
11075
11319
  ]);
11076
- const ref = (0, import_react72.useRef)(null);
11320
+ const ref = (0, import_react73.useRef)(null);
11077
11321
  function getInitialValueString() {
11078
11322
  if (props.mode === "string") {
11079
11323
  return props.value ?? "";
@@ -11082,7 +11326,7 @@ var Combobox = memoGeneric(
11082
11326
  }
11083
11327
  }
11084
11328
  const initialValueString = getInitialValueString();
11085
- const [comboboxState] = (0, import_react72.useState)(
11329
+ const [comboboxState] = (0, import_react73.useState)(
11086
11330
  () => new ComboboxState(
11087
11331
  items,
11088
11332
  initialValueString,
@@ -11090,26 +11334,26 @@ var Combobox = memoGeneric(
11090
11334
  )
11091
11335
  );
11092
11336
  const state = useComboboxState(comboboxState);
11093
- const [isFocused, setIsFocused] = (0, import_react72.useState)(false);
11094
- const listRef = (0, import_react72.useRef)(null);
11095
- 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);
11096
11340
  const { fieldId: id } = useLabel({
11097
11341
  fieldId: rest.id
11098
11342
  });
11099
- (0, import_react72.useEffect)(() => {
11343
+ (0, import_react73.useEffect)(() => {
11100
11344
  comboboxState.setItems(items);
11101
11345
  }, [items, comboboxState]);
11102
- (0, import_react72.useEffect)(() => {
11346
+ (0, import_react73.useEffect)(() => {
11103
11347
  comboboxState.setFilter(initialValueString);
11104
11348
  }, [comboboxState, initialValueString]);
11105
11349
  const { filter, selectedIndex, filteredItems } = state;
11106
11350
  const shouldShowMenu = isFocused && !(hideMenuWhenEmptyValue && filter === "");
11107
- (0, import_react72.useEffect)(() => {
11351
+ (0, import_react73.useEffect)(() => {
11108
11352
  if (listRef.current) {
11109
11353
  listRef.current.scrollToIndex(selectedIndex);
11110
11354
  }
11111
11355
  }, [selectedIndex]);
11112
- const handleBlur = (0, import_react72.useCallback)(() => {
11356
+ const handleBlur = (0, import_react73.useCallback)(() => {
11113
11357
  ref.current?.blur();
11114
11358
  comboboxState.reset(initialValueString);
11115
11359
  if (props.mode === "string") {
@@ -11128,7 +11372,7 @@ var Combobox = memoGeneric(
11128
11372
  }
11129
11373
  setIsFocused(false);
11130
11374
  }, [filter, initialValueString, props, state, comboboxState]);
11131
- const handleFocus = (0, import_react72.useCallback)(
11375
+ const handleFocus = (0, import_react73.useCallback)(
11132
11376
  (event) => {
11133
11377
  setIsFocused(true);
11134
11378
  comboboxState.reset(
@@ -11142,7 +11386,7 @@ var Combobox = memoGeneric(
11142
11386
  },
11143
11387
  [initialValueString, onFocus, openMenuBehavior, comboboxState]
11144
11388
  );
11145
- const handleUpdateSelection = (0, import_react72.useCallback)(
11389
+ const handleUpdateSelection = (0, import_react73.useCallback)(
11146
11390
  (item) => {
11147
11391
  if (item.type !== void 0) return;
11148
11392
  const selectedItem = comboboxState.selectCurrentItem(item);
@@ -11158,7 +11402,7 @@ var Combobox = memoGeneric(
11158
11402
  },
11159
11403
  [props, comboboxState]
11160
11404
  );
11161
- const handleIndexChange = (0, import_react72.useCallback)(
11405
+ const handleIndexChange = (0, import_react73.useCallback)(
11162
11406
  (index) => {
11163
11407
  comboboxState.setSelectedIndex(index);
11164
11408
  const item = comboboxState.getSelectedItem();
@@ -11174,7 +11418,7 @@ var Combobox = memoGeneric(
11174
11418
  },
11175
11419
  [props, comboboxState]
11176
11420
  );
11177
- const handleChange = (0, import_react72.useCallback)(
11421
+ const handleChange = (0, import_react73.useCallback)(
11178
11422
  (value) => {
11179
11423
  if (readOnly) return;
11180
11424
  comboboxState.setFilter(value);
@@ -11189,7 +11433,7 @@ var Combobox = memoGeneric(
11189
11433
  },
11190
11434
  [readOnly, props, comboboxState]
11191
11435
  );
11192
- const handleKeyDown = (0, import_react72.useCallback)(
11436
+ const handleKeyDown = (0, import_react73.useCallback)(
11193
11437
  (event) => {
11194
11438
  let handled = false;
11195
11439
  const item = comboboxState.getSelectedItem();
@@ -11278,7 +11522,7 @@ var Combobox = memoGeneric(
11278
11522
  ]
11279
11523
  );
11280
11524
  const typeaheadValue = comboboxState.getTypeaheadValue();
11281
- (0, import_react72.useImperativeHandle)(forwardedRef, () => ({
11525
+ (0, import_react73.useImperativeHandle)(forwardedRef, () => ({
11282
11526
  focus: () => {
11283
11527
  ref.current?.focus();
11284
11528
  if (ref.current) {
@@ -11297,7 +11541,7 @@ var Combobox = memoGeneric(
11297
11541
  ref.current?.setSelectionRange(0, ref.current.value.length);
11298
11542
  }
11299
11543
  }));
11300
- const handleChevronClick = (0, import_react72.useCallback)(
11544
+ const handleChevronClick = (0, import_react73.useCallback)(
11301
11545
  (event) => {
11302
11546
  event.stopPropagation();
11303
11547
  if (shouldShowMenu) {
@@ -11317,34 +11561,34 @@ var Combobox = memoGeneric(
11317
11561
  comboboxState
11318
11562
  ]
11319
11563
  );
11320
- (0, import_react72.useEffect)(() => {
11564
+ (0, import_react73.useEffect)(() => {
11321
11565
  if (!shouldBlur) return;
11322
11566
  if (document.activeElement !== ref.current) return;
11323
11567
  setShouldBlur(false);
11324
11568
  ref.current?.focus();
11325
11569
  handleBlur();
11326
11570
  }, [shouldBlur, handleBlur]);
11327
- const { sectionHeaderCount, menuItemsCount, tallMenuItemsCount } = (0, import_react72.useMemo)(
11571
+ const { sectionHeaderCount, menuItemsCount, tallMenuItemsCount } = (0, import_react73.useMemo)(
11328
11572
  () => ListView.getMenuMetrics(filteredItems),
11329
11573
  [filteredItems]
11330
11574
  );
11331
11575
  const hasCheckedItems = items.some(
11332
11576
  (item) => isSelectableMenuItem(item) && item.checked
11333
11577
  );
11334
- return /* @__PURE__ */ import_react72.default.createElement(
11578
+ return /* @__PURE__ */ import_react73.default.createElement(
11335
11579
  InputField2.Root,
11336
11580
  {
11337
11581
  id,
11338
11582
  size,
11339
11583
  sideOffset: 6,
11340
11584
  start: icon ? renderIcon(icon) : void 0,
11341
- 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(
11342
11586
  InputField2.Button,
11343
11587
  {
11344
11588
  variant: "floating",
11345
11589
  onClick: handleChevronClick
11346
11590
  },
11347
- /* @__PURE__ */ import_react72.default.createElement(
11591
+ /* @__PURE__ */ import_react73.default.createElement(
11348
11592
  import_noya_icons8.DropdownChevronIcon,
11349
11593
  {
11350
11594
  className: cx(
@@ -11364,7 +11608,7 @@ var Combobox = memoGeneric(
11364
11608
  maxBaseRows: 10.5
11365
11609
  });
11366
11610
  const adjustedListSize = { width, height: computedHeight };
11367
- return /* @__PURE__ */ import_react72.default.createElement(
11611
+ return /* @__PURE__ */ import_react73.default.createElement(
11368
11612
  "div",
11369
11613
  {
11370
11614
  className: cx(
@@ -11372,7 +11616,7 @@ var Combobox = memoGeneric(
11372
11616
  shouldShowMenu && !readOnly ? "n-flex" : "n-hidden"
11373
11617
  )
11374
11618
  },
11375
- filteredItems.length > 0 && !loading ? /* @__PURE__ */ import_react72.default.createElement(
11619
+ filteredItems.length > 0 && !loading ? /* @__PURE__ */ import_react73.default.createElement(
11376
11620
  ComboboxMenu,
11377
11621
  {
11378
11622
  ref: listRef,
@@ -11390,11 +11634,11 @@ var Combobox = memoGeneric(
11390
11634
  getRowHeightForItem: (item) => isSelectableMenuItem(item) && item.tooltip ? ListView.tallRowHeight : baseRowHeight
11391
11635
  } : { itemHeight: baseRowHeight }
11392
11636
  }
11393
- ) : /* @__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"))
11394
11638
  );
11395
11639
  }
11396
11640
  },
11397
- /* @__PURE__ */ import_react72.default.createElement(
11641
+ /* @__PURE__ */ import_react73.default.createElement(
11398
11642
  InputField2.Input,
11399
11643
  {
11400
11644
  ref,
@@ -11419,7 +11663,7 @@ var Combobox = memoGeneric(
11419
11663
  ...readOnly ? { readOnly: true } : {}
11420
11664
  }
11421
11665
  ),
11422
- 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(
11423
11667
  InputField2.Typeahead,
11424
11668
  {
11425
11669
  value: typeaheadValue,
@@ -11433,12 +11677,12 @@ var Combobox = memoGeneric(
11433
11677
  );
11434
11678
 
11435
11679
  // src/components/CommandPalette.tsx
11436
- var import_react74 = __toESM(require("react"));
11680
+ var import_react75 = __toESM(require("react"));
11437
11681
 
11438
11682
  // src/components/SearchCompletionMenu.tsx
11439
11683
  var import_noya_keymap5 = require("@noya-app/noya-keymap");
11440
- var import_react73 = __toESM(require("react"));
11441
- var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchCompletionMenu2({
11684
+ var import_react74 = __toESM(require("react"));
11685
+ var SearchCompletionMenu = (0, import_react74.forwardRef)(function SearchCompletionMenu2({
11442
11686
  onSelect,
11443
11687
  onHover,
11444
11688
  onClose,
@@ -11447,17 +11691,17 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11447
11691
  testSelectedIndex,
11448
11692
  testSearch
11449
11693
  }, forwardedRef) {
11450
- const [state, setState] = (0, import_react73.useState)({
11694
+ const [state, setState] = (0, import_react74.useState)({
11451
11695
  search: testSearch ?? "",
11452
11696
  index: 0
11453
11697
  });
11454
11698
  const { index, search } = state;
11455
- const listRef = import_react73.default.useRef(null);
11699
+ const listRef = import_react74.default.useRef(null);
11456
11700
  const hasCheckedItems = items.some((item) => item.checked);
11457
- (0, import_react73.useEffect)(() => {
11701
+ (0, import_react74.useEffect)(() => {
11458
11702
  listRef.current?.scrollToIndex(index);
11459
11703
  }, [index]);
11460
- const results = (0, import_react73.useMemo)(
11704
+ const results = (0, import_react74.useMemo)(
11461
11705
  () => fuzzyFilter({
11462
11706
  items: items.map(
11463
11707
  (item) => typeof item.title === "string" ? item.title : item.value
@@ -11469,13 +11713,13 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11469
11713
  })),
11470
11714
  [items, search]
11471
11715
  );
11472
- const setSearch = (0, import_react73.useCallback)((search2) => {
11716
+ const setSearch = (0, import_react74.useCallback)((search2) => {
11473
11717
  setState((state2) => ({ ...state2, search: search2, index: 0 }));
11474
11718
  }, []);
11475
- const setIndex = (0, import_react73.useCallback)((index2) => {
11719
+ const setIndex = (0, import_react74.useCallback)((index2) => {
11476
11720
  setState((state2) => ({ ...state2, index: index2 }));
11477
11721
  }, []);
11478
- (0, import_react73.useEffect)(() => {
11722
+ (0, import_react74.useEffect)(() => {
11479
11723
  onHover?.(results[index]);
11480
11724
  }, [index, onHover, results]);
11481
11725
  const baseRowHeight = ListView.rowHeight;
@@ -11494,14 +11738,14 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11494
11738
  width: listSize.width,
11495
11739
  height: searchHeight + listSize.height
11496
11740
  };
11497
- const selectAndClose = (0, import_react73.useCallback)(
11741
+ const selectAndClose = (0, import_react74.useCallback)(
11498
11742
  (item) => {
11499
11743
  onSelect(item);
11500
11744
  onClose();
11501
11745
  },
11502
11746
  [onSelect, onClose]
11503
11747
  );
11504
- const handleKeyDown = (0, import_react73.useCallback)(
11748
+ const handleKeyDown = (0, import_react74.useCallback)(
11505
11749
  (event) => {
11506
11750
  (0, import_noya_keymap5.handleKeyboardEvent)(event.nativeEvent, (0, import_noya_keymap5.getCurrentPlatform)(navigator), {
11507
11751
  ArrowUp: () => {
@@ -11529,13 +11773,13 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11529
11773
  },
11530
11774
  [index, onClose, selectAndClose, results, setIndex]
11531
11775
  );
11532
- const inputRef = (0, import_react73.useRef)(null);
11533
- (0, import_react73.useImperativeHandle)(forwardedRef, () => ({
11776
+ const inputRef = (0, import_react74.useRef)(null);
11777
+ (0, import_react74.useImperativeHandle)(forwardedRef, () => ({
11534
11778
  focus: () => {
11535
11779
  inputRef.current?.focus();
11536
11780
  }
11537
11781
  }));
11538
- 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(
11539
11783
  InputField2.Input,
11540
11784
  {
11541
11785
  ref: inputRef,
@@ -11555,7 +11799,7 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11555
11799
  onChange: setSearch,
11556
11800
  onKeyDown: handleKeyDown
11557
11801
  }
11558
- )), /* @__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(
11559
11803
  ComboboxMenu,
11560
11804
  {
11561
11805
  ref: listRef,
@@ -11570,29 +11814,29 @@ var SearchCompletionMenu = (0, import_react73.forwardRef)(function SearchComplet
11570
11814
  onHoverIndex: setIndex,
11571
11815
  indented: hasCheckedItems
11572
11816
  }
11573
- ) : /* @__PURE__ */ import_react73.default.createElement(
11817
+ ) : /* @__PURE__ */ import_react74.default.createElement(
11574
11818
  "div",
11575
11819
  {
11576
11820
  ...listSize,
11577
11821
  className: "n-flex n-flex-col n-p-20 n-items-center n-justify-center"
11578
11822
  },
11579
- /* @__PURE__ */ import_react73.default.createElement(Small, { color: "textDisabled" }, "No results")
11823
+ /* @__PURE__ */ import_react74.default.createElement(Small, { color: "textDisabled" }, "No results")
11580
11824
  ));
11581
11825
  });
11582
11826
 
11583
11827
  // src/components/CommandPalette.tsx
11584
- var CommandPalette = (0, import_react74.memo)(function CommandPalette2({
11828
+ var CommandPalette = (0, import_react75.memo)(function CommandPalette2({
11585
11829
  showCommandPalette,
11586
11830
  setShowCommandPalette,
11587
11831
  items,
11588
11832
  onSelect,
11589
11833
  onHover
11590
11834
  }) {
11591
- const menuRef = import_react74.default.useRef(null);
11592
- const handleClose = import_react74.default.useCallback(() => {
11835
+ const menuRef = import_react75.default.useRef(null);
11836
+ const handleClose = import_react75.default.useCallback(() => {
11593
11837
  setShowCommandPalette(false);
11594
11838
  }, [setShowCommandPalette]);
11595
- return /* @__PURE__ */ import_react74.default.createElement(
11839
+ return /* @__PURE__ */ import_react75.default.createElement(
11596
11840
  Dialog,
11597
11841
  {
11598
11842
  style: {
@@ -11618,7 +11862,7 @@ var CommandPalette = (0, import_react74.memo)(function CommandPalette2({
11618
11862
  }, 0);
11619
11863
  }
11620
11864
  },
11621
- /* @__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(
11622
11866
  SearchCompletionMenu,
11623
11867
  {
11624
11868
  ref: menuRef,
@@ -11633,21 +11877,21 @@ var CommandPalette = (0, import_react74.memo)(function CommandPalette2({
11633
11877
  });
11634
11878
 
11635
11879
  // src/components/connected-users-menu/ConnectedUsersMenuLayout.tsx
11636
- var import_react75 = __toESM(require("react"));
11637
- 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(
11638
11882
  Tooltip,
11639
11883
  {
11640
11884
  key: userId,
11641
- 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))
11642
11886
  },
11643
- /* @__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 })
11644
11888
  );
11645
11889
  var ConnectedUsersMenuLayout = ({
11646
11890
  renderUsers,
11647
11891
  launchAIAssistant,
11648
11892
  isAssistantOpen
11649
11893
  }) => {
11650
- 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(
11651
11895
  Button,
11652
11896
  {
11653
11897
  active: isAssistantOpen,
@@ -11659,7 +11903,7 @@ var ConnectedUsersMenuLayout = ({
11659
11903
  };
11660
11904
 
11661
11905
  // src/components/DraggableMenuButton.tsx
11662
- var import_react76 = __toESM(require("react"));
11906
+ var import_react77 = __toESM(require("react"));
11663
11907
  var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11664
11908
  open: openProp,
11665
11909
  onOpenChange: onOpenChangeProp,
@@ -11677,8 +11921,8 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11677
11921
  onChange: onOpenChangeProp,
11678
11922
  defaultValue: false
11679
11923
  });
11680
- const [downPosition, setDownPosition] = (0, import_react76.useState)(null);
11681
- const handlePointerDownCapture = (0, import_react76.useCallback)(
11924
+ const [downPosition, setDownPosition] = (0, import_react77.useState)(null);
11925
+ const handlePointerDownCapture = (0, import_react77.useCallback)(
11682
11926
  (event) => {
11683
11927
  if (open) {
11684
11928
  setDownPosition(null);
@@ -11691,7 +11935,7 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11691
11935
  },
11692
11936
  [open]
11693
11937
  );
11694
- const handlePointerUp = (0, import_react76.useCallback)(
11938
+ const handlePointerUp = (0, import_react77.useCallback)(
11695
11939
  (event) => {
11696
11940
  if (open || !downPosition) {
11697
11941
  setDownPosition(null);
@@ -11710,13 +11954,13 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11710
11954
  },
11711
11955
  [downPosition, open, setOpen]
11712
11956
  );
11713
- const handleOpenChange = (0, import_react76.useCallback)(
11957
+ const handleOpenChange = (0, import_react77.useCallback)(
11714
11958
  (isOpen) => {
11715
11959
  if (!isOpen) setOpen(false);
11716
11960
  },
11717
11961
  [setOpen]
11718
11962
  );
11719
- return /* @__PURE__ */ import_react76.default.createElement(
11963
+ return /* @__PURE__ */ import_react77.default.createElement(
11720
11964
  "div",
11721
11965
  {
11722
11966
  ...rest,
@@ -11733,7 +11977,7 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11733
11977
  onClick?.();
11734
11978
  }
11735
11979
  },
11736
- items && onSelect ? /* @__PURE__ */ import_react76.default.createElement(
11980
+ items && onSelect ? /* @__PURE__ */ import_react77.default.createElement(
11737
11981
  DropdownMenu,
11738
11982
  {
11739
11983
  open,
@@ -11742,14 +11986,14 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11742
11986
  onSelect,
11743
11987
  shouldBindKeyboardShortcuts: false
11744
11988
  },
11745
- /* @__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(
11746
11990
  Icon,
11747
11991
  {
11748
11992
  name: iconName,
11749
11993
  color: isVisible || open ? cssVars.colors.icon : "transparent"
11750
11994
  }
11751
11995
  ))
11752
- ) : /* @__PURE__ */ import_react76.default.createElement(
11996
+ ) : /* @__PURE__ */ import_react77.default.createElement(
11753
11997
  Icon,
11754
11998
  {
11755
11999
  name: iconName,
@@ -11761,10 +12005,10 @@ var DraggableMenuButton = memoGeneric(function DraggableMenuButton2({
11761
12005
 
11762
12006
  // src/components/Drawer.tsx
11763
12007
  var import_radix_ui10 = require("radix-ui");
11764
- var React71 = __toESM(require("react"));
11765
- var import_react77 = require("react");
11766
- var Drawer = React71.memo(
11767
- 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({
11768
12012
  open,
11769
12013
  onOpenChange,
11770
12014
  trigger,
@@ -11785,7 +12029,7 @@ var Drawer = React71.memo(
11785
12029
  value: open,
11786
12030
  onChange: onOpenChange
11787
12031
  });
11788
- (0, import_react77.useImperativeHandle)(forwardedRef, () => ({
12032
+ (0, import_react78.useImperativeHandle)(forwardedRef, () => ({
11789
12033
  expand: () => {
11790
12034
  setInternalOpen(true);
11791
12035
  },
@@ -11796,7 +12040,7 @@ var Drawer = React71.memo(
11796
12040
  return internalOpen;
11797
12041
  }
11798
12042
  }));
11799
- const inner = /* @__PURE__ */ React71.createElement(React71.Fragment, null, /* @__PURE__ */ React71.createElement(
12043
+ const inner = /* @__PURE__ */ React73.createElement(React73.Fragment, null, /* @__PURE__ */ React73.createElement(
11800
12044
  import_radix_ui10.Dialog.Overlay,
11801
12045
  {
11802
12046
  className: cx(
@@ -11806,7 +12050,7 @@ var Drawer = React71.memo(
11806
12050
  ),
11807
12051
  style: overlayStyle
11808
12052
  }
11809
- ), /* @__PURE__ */ React71.createElement(
12053
+ ), /* @__PURE__ */ React73.createElement(
11810
12054
  import_radix_ui10.Dialog.Content,
11811
12055
  {
11812
12056
  id,
@@ -11818,24 +12062,24 @@ var Drawer = React71.memo(
11818
12062
  className
11819
12063
  )
11820
12064
  },
11821
- title && /* @__PURE__ */ React71.createElement(import_radix_ui10.Dialog.Title, null, title),
12065
+ title && /* @__PURE__ */ React73.createElement(import_radix_ui10.Dialog.Title, null, title),
11822
12066
  children
11823
12067
  ));
11824
- return /* @__PURE__ */ React71.createElement(
12068
+ return /* @__PURE__ */ React73.createElement(
11825
12069
  import_radix_ui10.Dialog.Root,
11826
12070
  {
11827
12071
  key: "dialog",
11828
12072
  open: internalOpen,
11829
12073
  onOpenChange: setInternalOpen
11830
12074
  },
11831
- /* @__PURE__ */ React71.createElement(import_radix_ui10.Dialog.Trigger, { key: "trigger" }, trigger),
11832
- 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
11833
12077
  );
11834
12078
  })
11835
12079
  );
11836
12080
 
11837
12081
  // src/components/Fade.tsx
11838
- var import_react78 = __toESM(require("react"));
12082
+ var import_react79 = __toESM(require("react"));
11839
12083
  var Fade = ({
11840
12084
  children,
11841
12085
  direction = "right",
@@ -11857,7 +12101,7 @@ var Fade = ({
11857
12101
  top: "n-left-0 n-right-0 n-top-0",
11858
12102
  bottom: "n-left-0 n-right-0 n-bottom-0"
11859
12103
  }[direction];
11860
- 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(
11861
12105
  "div",
11862
12106
  {
11863
12107
  className: cx(
@@ -11876,21 +12120,21 @@ var Fade = ({
11876
12120
  };
11877
12121
 
11878
12122
  // src/components/file-explorer/FileExplorerLayout.tsx
11879
- var import_react79 = __toESM(require("react"));
12123
+ var import_react80 = __toESM(require("react"));
11880
12124
  var FileExplorerLayout = ({
11881
12125
  children,
11882
12126
  className,
11883
12127
  ...props
11884
- }) => /* @__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);
11885
12129
  var FileExplorerUploadButton = ({
11886
12130
  showUploadButton,
11887
12131
  onUpload,
11888
12132
  isUploading,
11889
12133
  children
11890
- }) => /* @__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(
11891
12135
  Button,
11892
12136
  {
11893
- icon: isUploading ? /* @__PURE__ */ import_react79.default.createElement(ActivityIndicator, { size: 15 }) : "UploadIcon",
12137
+ icon: isUploading ? /* @__PURE__ */ import_react80.default.createElement(ActivityIndicator, { size: 15 }) : "UploadIcon",
11894
12138
  onClick: onUpload,
11895
12139
  "aria-label": "Upload file",
11896
12140
  tooltip: "Upload file",
@@ -11900,7 +12144,7 @@ var FileExplorerUploadButton = ({
11900
12144
  ), children);
11901
12145
  var FileExplorerCollection = forwardRefGeneric(
11902
12146
  function FileExplorerCollection2({ ...props }, ref) {
11903
- 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 });
11904
12148
  }
11905
12149
  );
11906
12150
  var FileExplorerDetail = ({
@@ -11909,7 +12153,7 @@ var FileExplorerDetail = ({
11909
12153
  children,
11910
12154
  className,
11911
12155
  style: style2
11912
- }) => /* @__PURE__ */ import_react79.default.createElement(
12156
+ }) => /* @__PURE__ */ import_react80.default.createElement(
11913
12157
  "span",
11914
12158
  {
11915
12159
  className: cx(
@@ -11924,10 +12168,10 @@ var FileExplorerDetail = ({
11924
12168
  var FileExplorerEmptyState = ({
11925
12169
  children: label = "No files",
11926
12170
  ...props
11927
- }) => /* @__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);
11928
12172
 
11929
12173
  // src/components/FileUploadIndicator.tsx
11930
- var import_react81 = __toESM(require("react"));
12174
+ var import_react82 = __toESM(require("react"));
11931
12175
 
11932
12176
  // src/utils/formatByteSize.ts
11933
12177
  var byteSizeUnits = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
@@ -11941,7 +12185,7 @@ function formatByteSize(size) {
11941
12185
 
11942
12186
  // src/components/MediaThumbnail.tsx
11943
12187
  var import_noya_icons9 = require("@noya-app/noya-icons");
11944
- var import_react80 = __toESM(require("react"));
12188
+ var import_react81 = __toESM(require("react"));
11945
12189
 
11946
12190
  // src/components/catppuccin/fileIcons.ts
11947
12191
  var fileIcons = {
@@ -14381,7 +14625,7 @@ var getThumbnailColors = (colorScheme, selected) => {
14381
14625
  };
14382
14626
  }
14383
14627
  };
14384
- var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14628
+ var MediaThumbnail = (0, import_react81.memo)(function MediaThumbnail2({
14385
14629
  contentType: contentTypeProp,
14386
14630
  selected = false,
14387
14631
  className,
@@ -14399,14 +14643,14 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14399
14643
  selected
14400
14644
  );
14401
14645
  const contentType = getAssetType(contentTypeProp);
14402
- const iconStyles = (0, import_react80.useMemo)(
14646
+ const iconStyles = (0, import_react81.useMemo)(
14403
14647
  () => ({
14404
14648
  width: iconSizeMap[size],
14405
14649
  height: iconSizeMap[size]
14406
14650
  }),
14407
14651
  [size]
14408
14652
  );
14409
- const content = (0, import_react80.useMemo)(() => {
14653
+ const content = (0, import_react81.useMemo)(() => {
14410
14654
  if (renderThumbnailIcon) {
14411
14655
  const rendered = renderThumbnailIcon({ fileName, contentType });
14412
14656
  if (rendered) return rendered;
@@ -14426,7 +14670,7 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14426
14670
  renderUrl.searchParams.set("url", url);
14427
14671
  renderUrl.searchParams.set("fit", aspect);
14428
14672
  renderUrl.searchParams.set("theme", "light");
14429
- return /* @__PURE__ */ import_react80.default.createElement(
14673
+ return /* @__PURE__ */ import_react81.default.createElement(
14430
14674
  "img",
14431
14675
  {
14432
14676
  src: renderUrl.toString(),
@@ -14440,23 +14684,23 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14440
14684
  }
14441
14685
  switch (contentType) {
14442
14686
  case "image":
14443
- 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 });
14444
14688
  case "video":
14445
- 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 });
14446
14690
  case "audio":
14447
- 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 });
14448
14692
  default:
14449
14693
  if (iconName) {
14450
14694
  const Icon2 = Icons[iconName];
14451
- return /* @__PURE__ */ import_react80.default.createElement(Icon2, { color: iconColor, style: iconStyles });
14695
+ return /* @__PURE__ */ import_react81.default.createElement(Icon2, { color: iconColor, style: iconStyles });
14452
14696
  }
14453
14697
  if (fileName) {
14454
14698
  if (fileName.endsWith(".noya")) {
14455
- 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 });
14456
14700
  }
14457
14701
  const fileIcon = findFileIcon(fileName);
14458
14702
  if (fileIcon) {
14459
- return /* @__PURE__ */ import_react80.default.createElement(
14703
+ return /* @__PURE__ */ import_react81.default.createElement(
14460
14704
  "img",
14461
14705
  {
14462
14706
  src: `https://api.iconify.design/catppuccin/${fileIcon}.svg?height=none&box=1`,
@@ -14466,7 +14710,7 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14466
14710
  );
14467
14711
  }
14468
14712
  }
14469
- 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 });
14470
14714
  }
14471
14715
  }, [
14472
14716
  renderThumbnailIcon,
@@ -14480,7 +14724,7 @@ var MediaThumbnail = (0, import_react80.memo)(function MediaThumbnail2({
14480
14724
  iconStyles,
14481
14725
  iconName
14482
14726
  ]);
14483
- return /* @__PURE__ */ import_react80.default.createElement(
14727
+ return /* @__PURE__ */ import_react81.default.createElement(
14484
14728
  "div",
14485
14729
  {
14486
14730
  className: cx(
@@ -14523,7 +14767,7 @@ function findFileIcon(fileName) {
14523
14767
  // src/components/Progress.tsx
14524
14768
  var import_noya_utils14 = require("@noya-app/noya-utils");
14525
14769
  var import_radix_ui11 = require("radix-ui");
14526
- var React75 = __toESM(require("react"));
14770
+ var React77 = __toESM(require("react"));
14527
14771
  function Progress({
14528
14772
  value,
14529
14773
  colorScheme = "normal",
@@ -14532,18 +14776,18 @@ function Progress({
14532
14776
  style: styleProp
14533
14777
  }) {
14534
14778
  const clampedValue = (0, import_noya_utils14.clamp)(value, 0, 100);
14535
- const transformStyles = React75.useMemo(
14779
+ const transformStyles = React77.useMemo(
14536
14780
  () => ({
14537
14781
  transform: `translateX(-${100 - clampedValue}%)`,
14538
14782
  backgroundColor: color
14539
14783
  }),
14540
14784
  [color, clampedValue]
14541
14785
  );
14542
- const style2 = React75.useMemo(
14786
+ const style2 = React77.useMemo(
14543
14787
  () => ({ transform: "translateZ(0)", ...styleProp }),
14544
14788
  [styleProp]
14545
14789
  );
14546
- return /* @__PURE__ */ React75.createElement(
14790
+ return /* @__PURE__ */ React77.createElement(
14547
14791
  import_radix_ui11.Progress.Root,
14548
14792
  {
14549
14793
  className: cx(
@@ -14553,7 +14797,7 @@ function Progress({
14553
14797
  style: style2,
14554
14798
  value: clampedValue
14555
14799
  },
14556
- /* @__PURE__ */ React75.createElement(
14800
+ /* @__PURE__ */ React77.createElement(
14557
14801
  import_radix_ui11.Progress.Indicator,
14558
14802
  {
14559
14803
  className: cx(
@@ -14578,14 +14822,14 @@ function FileUploadIndicator({
14578
14822
  }) {
14579
14823
  const done = percent === 1;
14580
14824
  const value = typeof percent === "number" ? Math.round(percent) : 0;
14581
- 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(
14582
14826
  MediaThumbnail,
14583
14827
  {
14584
14828
  size: "medium",
14585
14829
  fileName: name,
14586
14830
  contentType
14587
14831
  }
14588
- )), /* @__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(
14589
14833
  Small,
14590
14834
  {
14591
14835
  color: "textSubtle",
@@ -14596,7 +14840,7 @@ function FileUploadIndicator({
14596
14840
  " /",
14597
14841
  " ",
14598
14842
  formatByteSize(total)
14599
- ), typeof value === "number" && /* @__PURE__ */ import_react81.default.createElement(
14843
+ ), typeof value === "number" && /* @__PURE__ */ import_react82.default.createElement(
14600
14844
  Progress,
14601
14845
  {
14602
14846
  value,
@@ -14604,7 +14848,7 @@ function FileUploadIndicator({
14604
14848
  className: "n-rounded-sm",
14605
14849
  colorScheme: "secondary"
14606
14850
  }
14607
- )), /* @__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(
14608
14852
  Small,
14609
14853
  {
14610
14854
  color: "textSubtle",
@@ -14613,12 +14857,12 @@ function FileUploadIndicator({
14613
14857
  },
14614
14858
  value,
14615
14859
  "%"
14616
- ), 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 })));
14617
14861
  }
14618
14862
  function FileUploadList({
14619
14863
  uploads
14620
14864
  }) {
14621
- 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(
14622
14866
  FileUploadIndicator,
14623
14867
  {
14624
14868
  key: upload.id,
@@ -14631,7 +14875,7 @@ function FileUploadList({
14631
14875
  }
14632
14876
 
14633
14877
  // src/components/FloatingWindow.tsx
14634
- var import_react82 = __toESM(require("react"));
14878
+ var import_react83 = __toESM(require("react"));
14635
14879
  var styles2 = {
14636
14880
  noSelect: {
14637
14881
  userSelect: "none",
@@ -14724,7 +14968,7 @@ function defaultRenderToolbar({
14724
14968
  toolbarContent,
14725
14969
  onClose
14726
14970
  }) {
14727
- 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(
14728
14972
  IconButton,
14729
14973
  {
14730
14974
  iconName: "Cross3Icon",
@@ -14751,16 +14995,16 @@ var FloatingWindow = ({
14751
14995
  toolbarContent,
14752
14996
  renderToolbar = defaultRenderToolbar
14753
14997
  }) => {
14754
- const [position, setPosition] = (0, import_react82.useState)({ x: initialX, y: initialY });
14755
- 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)({
14756
15000
  width: initialWidth,
14757
15001
  height: initialHeight
14758
15002
  });
14759
- const [isDragging, setIsDragging] = (0, import_react82.useState)(false);
14760
- const [isResizing, setIsResizing] = (0, import_react82.useState)(false);
14761
- const [dragOffset, setDragOffset] = (0, import_react82.useState)({ x: 0, y: 0 });
14762
- const [resizeDirection, setResizeDirection] = (0, import_react82.useState)(null);
14763
- 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);
14764
15008
  const toggleGlobalTextSelection = (disable) => {
14765
15009
  if (disable) {
14766
15010
  document.body.style.userSelect = "none";
@@ -14768,7 +15012,7 @@ var FloatingWindow = ({
14768
15012
  document.body.style.userSelect = "";
14769
15013
  }
14770
15014
  };
14771
- const handleMouseDown = (0, import_react82.useCallback)((e) => {
15015
+ const handleMouseDown = (0, import_react83.useCallback)((e) => {
14772
15016
  if (!wrapperRef.current) return;
14773
15017
  const rect = wrapperRef.current.getBoundingClientRect();
14774
15018
  setDragOffset({
@@ -14777,7 +15021,7 @@ var FloatingWindow = ({
14777
15021
  });
14778
15022
  setIsDragging(true);
14779
15023
  }, []);
14780
- const handleResizeStart = (0, import_react82.useCallback)(
15024
+ const handleResizeStart = (0, import_react83.useCallback)(
14781
15025
  (direction) => (e) => {
14782
15026
  e.stopPropagation();
14783
15027
  setIsResizing(true);
@@ -14786,7 +15030,7 @@ var FloatingWindow = ({
14786
15030
  },
14787
15031
  []
14788
15032
  );
14789
- const handleMouseMove = (0, import_react82.useCallback)(
15033
+ const handleMouseMove = (0, import_react83.useCallback)(
14790
15034
  (e) => {
14791
15035
  if (isDragging) {
14792
15036
  setPosition({
@@ -14840,13 +15084,13 @@ var FloatingWindow = ({
14840
15084
  minHeight
14841
15085
  ]
14842
15086
  );
14843
- const handleMouseUp = (0, import_react82.useCallback)((_e) => {
15087
+ const handleMouseUp = (0, import_react83.useCallback)((_e) => {
14844
15088
  setIsDragging(false);
14845
15089
  setIsResizing(false);
14846
15090
  setResizeDirection(null);
14847
15091
  toggleGlobalTextSelection(false);
14848
15092
  }, []);
14849
- import_react82.default.useEffect(() => {
15093
+ import_react83.default.useEffect(() => {
14850
15094
  document.addEventListener("mousemove", handleMouseMove);
14851
15095
  document.addEventListener("mouseup", handleMouseUp);
14852
15096
  return () => {
@@ -14856,11 +15100,11 @@ var FloatingWindow = ({
14856
15100
  }, [handleMouseMove, handleMouseUp]);
14857
15101
  const floatingWindowManager = useFloatingWindowManager();
14858
15102
  const currentFloatingWindow = useCurrentFloatingWindowInternal();
14859
- const handleClose = (0, import_react82.useCallback)(() => {
15103
+ const handleClose = (0, import_react83.useCallback)(() => {
14860
15104
  if (onClose) onClose();
14861
15105
  floatingWindowManager.closeWindow(currentFloatingWindow.id);
14862
15106
  }, [currentFloatingWindow.id, floatingWindowManager, onClose]);
14863
- return /* @__PURE__ */ import_react82.default.createElement(
15107
+ return /* @__PURE__ */ import_react83.default.createElement(
14864
15108
  "div",
14865
15109
  {
14866
15110
  ref: wrapperRef,
@@ -14875,7 +15119,7 @@ var FloatingWindow = ({
14875
15119
  zIndex: cssVars.zIndex.menu
14876
15120
  }
14877
15121
  },
14878
- /* @__PURE__ */ import_react82.default.createElement(
15122
+ /* @__PURE__ */ import_react83.default.createElement(
14879
15123
  "div",
14880
15124
  {
14881
15125
  style: {
@@ -14886,9 +15130,9 @@ var FloatingWindow = ({
14886
15130
  },
14887
15131
  renderToolbar({ title, toolbarContent, onClose: handleClose })
14888
15132
  ),
14889
- /* @__PURE__ */ import_react82.default.createElement(Divider, null),
14890
- /* @__PURE__ */ import_react82.default.createElement("div", { style: styles2.content }, children),
14891
- 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(
14892
15136
  "div",
14893
15137
  {
14894
15138
  key: direction,
@@ -14900,9 +15144,9 @@ var FloatingWindow = ({
14900
15144
  };
14901
15145
 
14902
15146
  // src/components/InspectorContainer.tsx
14903
- var import_react83 = __toESM(require("react"));
14904
- var InspectorContainer = (0, import_react83.memo)(
14905
- (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({
14906
15150
  header,
14907
15151
  children,
14908
15152
  fallback,
@@ -14911,7 +15155,7 @@ var InspectorContainer = (0, import_react83.memo)(
14911
15155
  className,
14912
15156
  style: style2
14913
15157
  }, forwardedRef) {
14914
- return /* @__PURE__ */ import_react83.default.createElement(
15158
+ return /* @__PURE__ */ import_react84.default.createElement(
14915
15159
  "div",
14916
15160
  {
14917
15161
  ref: forwardedRef,
@@ -14926,32 +15170,32 @@ var InspectorContainer = (0, import_react83.memo)(
14926
15170
  }
14927
15171
  },
14928
15172
  header,
14929
- 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
14930
15174
  );
14931
15175
  })
14932
15176
  );
14933
15177
 
14934
15178
  // src/components/LabeledElementView.tsx
14935
15179
  var kiwi = __toESM(require("kiwi.js"));
14936
- var React79 = __toESM(require("react"));
14937
- var LabeledElementView = React79.memo(function LabeledElementView2({
15180
+ var React81 = __toESM(require("react"));
15181
+ var LabeledElementView = React81.memo(function LabeledElementView2({
14938
15182
  children,
14939
15183
  renderLabel
14940
15184
  }) {
14941
- const elementIds = React79.Children.toArray(children).flatMap(
14942
- (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]
14943
15187
  ).map(
14944
- (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
14945
15189
  ).filter((id) => !!id);
14946
15190
  const serializedIds = elementIds.join(",");
14947
- const containerRef = React79.useRef(null);
14948
- const refs = React79.useMemo(() => {
15191
+ const containerRef = React81.useRef(null);
15192
+ const refs = React81.useMemo(() => {
14949
15193
  return Object.fromEntries(
14950
- serializedIds.split(",").map((id) => [id, React79.createRef()])
15194
+ serializedIds.split(",").map((id) => [id, React81.createRef()])
14951
15195
  );
14952
15196
  }, [serializedIds]);
14953
- const labelElements = React79.useMemo(() => {
14954
- return serializedIds.split(",").map((id, index) => /* @__PURE__ */ React79.createElement(
15197
+ const labelElements = React81.useMemo(() => {
15198
+ return serializedIds.split(",").map((id, index) => /* @__PURE__ */ React81.createElement(
14955
15199
  "span",
14956
15200
  {
14957
15201
  key: id,
@@ -14964,7 +15208,7 @@ var LabeledElementView = React79.memo(function LabeledElementView2({
14964
15208
  })
14965
15209
  ));
14966
15210
  }, [refs, serializedIds, renderLabel]);
14967
- React79.useLayoutEffect(() => {
15211
+ React81.useLayoutEffect(() => {
14968
15212
  if (!containerRef.current) return;
14969
15213
  const containerRect = containerRef.current.getBoundingClientRect();
14970
15214
  const solver = new kiwi.Solver();
@@ -15026,17 +15270,17 @@ var LabeledElementView = React79.memo(function LabeledElementView2({
15026
15270
  `${Math.max(...heights)}px`
15027
15271
  );
15028
15272
  }, [refs, labelElements]);
15029
- 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));
15030
15274
  });
15031
15275
 
15032
15276
  // src/components/LabeledField.tsx
15033
- var import_react85 = __toESM(require("react"));
15277
+ var import_react86 = __toESM(require("react"));
15034
15278
 
15035
15279
  // src/hooks/useIndent.ts
15036
- var import_react84 = __toESM(require("react"));
15037
- var IndentContext = import_react84.default.createContext(0);
15280
+ var import_react85 = __toESM(require("react"));
15281
+ var IndentContext = import_react85.default.createContext(0);
15038
15282
  var useIndent = () => {
15039
- return import_react84.default.useContext(IndentContext);
15283
+ return import_react85.default.useContext(IndentContext);
15040
15284
  };
15041
15285
 
15042
15286
  // src/components/LabeledField.tsx
@@ -15048,7 +15292,7 @@ var labeledFieldStyles = (labelType) => cx(
15048
15292
  var labelTypeInset = {
15049
15293
  type: "inset"
15050
15294
  };
15051
- var LabeledField = (0, import_react85.memo)(function LabeledField2({
15295
+ var LabeledField = (0, import_react86.memo)(function LabeledField2({
15052
15296
  children,
15053
15297
  label,
15054
15298
  labelType: labelTypeProp,
@@ -15064,15 +15308,15 @@ var LabeledField = (0, import_react85.memo)(function LabeledField2({
15064
15308
  const labelWidth = labelWidthFromContext ?? minWidth;
15065
15309
  const labelTypeFromContext = useLabelType();
15066
15310
  const labelType = labelTypeProp ?? labelTypeFromContext;
15067
- const labeledFieldClasses = (0, import_react85.useMemo)(
15311
+ const labeledFieldClasses = (0, import_react86.useMemo)(
15068
15312
  () => labeledFieldStyles(labelType),
15069
15313
  [labelType]
15070
15314
  );
15071
- const labelContextValue = (0, import_react85.useMemo)(
15315
+ const labelContextValue = (0, import_react86.useMemo)(
15072
15316
  () => ({ fieldId, label }),
15073
15317
  [fieldId, label]
15074
15318
  );
15075
- const indentStyle = (0, import_react85.useMemo)(
15319
+ const indentStyle = (0, import_react86.useMemo)(
15076
15320
  () => ({
15077
15321
  width: indentLevel * 8,
15078
15322
  flexBasis: indentLevel * 8,
@@ -15081,20 +15325,20 @@ var LabeledField = (0, import_react85.memo)(function LabeledField2({
15081
15325
  }),
15082
15326
  [indentLevel]
15083
15327
  );
15084
- const fieldStyle = (0, import_react85.useMemo)(
15328
+ const fieldStyle = (0, import_react86.useMemo)(
15085
15329
  () => ({
15086
15330
  minWidth: `calc(100% - ${labelWidth + indentLevel * 8 + 6}px)`
15087
15331
  }),
15088
15332
  [labelWidth, indentLevel]
15089
15333
  );
15090
- const labelStyle = (0, import_react85.useMemo)(
15334
+ const labelStyle = (0, import_react86.useMemo)(
15091
15335
  () => ({
15092
15336
  minWidth: `calc(${labelWidth}px - ${indentLevel * 8}px)`,
15093
15337
  ...labelStyleProp
15094
15338
  }),
15095
15339
  [labelWidth, indentLevel, labelStyleProp]
15096
15340
  );
15097
- 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(
15098
15342
  Label,
15099
15343
  {
15100
15344
  htmlFor: fieldId,
@@ -15103,13 +15347,13 @@ var LabeledField = (0, import_react85.memo)(function LabeledField2({
15103
15347
  ...props
15104
15348
  },
15105
15349
  label
15106
- ), 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)));
15107
15351
  });
15108
15352
 
15109
15353
  // src/components/ListMenu.tsx
15110
15354
  var import_noya_icons10 = require("@noya-app/noya-icons");
15111
15355
  var import_noya_utils15 = require("@noya-app/noya-utils");
15112
- var import_react86 = __toESM(require("react"));
15356
+ var import_react87 = __toESM(require("react"));
15113
15357
  function getItemId(item) {
15114
15358
  if (item.type === "submenu") {
15115
15359
  return item.id;
@@ -15138,7 +15382,7 @@ function ListMenu({
15138
15382
  const regularItems = chunk.filter(
15139
15383
  (item) => isSubMenuItem(item) || isSelectableMenuItem(item)
15140
15384
  );
15141
- return /* @__PURE__ */ import_react86.default.createElement(
15385
+ return /* @__PURE__ */ import_react87.default.createElement(
15142
15386
  List,
15143
15387
  {
15144
15388
  key: regularItems.map(getItemId).join("-"),
@@ -15150,30 +15394,30 @@ function ListMenu({
15150
15394
  getName: (item) => item.title.toString(),
15151
15395
  selectedIds,
15152
15396
  renderRight,
15153
- 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)),
15154
- 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),
15155
15399
  onClickItem: (itemId) => onSelect(itemId)
15156
15400
  }
15157
15401
  );
15158
15402
  });
15159
15403
  return withSeparatorElements(
15160
15404
  lists,
15161
- /* @__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" })
15162
15406
  );
15163
15407
  }
15164
15408
 
15165
15409
  // src/components/ListNavigator.tsx
15166
- var import_react90 = __toESM(require("react"));
15410
+ var import_react91 = __toESM(require("react"));
15167
15411
 
15168
15412
  // src/components/Navigator.tsx
15169
- var import_react89 = __toESM(require("react"));
15413
+ var import_react90 = __toESM(require("react"));
15170
15414
 
15171
15415
  // src/components/StackNavigator.tsx
15172
15416
  var import_noya_utils16 = require("@noya-app/noya-utils");
15173
- var import_react88 = __toESM(require("react"));
15417
+ var import_react89 = __toESM(require("react"));
15174
15418
 
15175
15419
  // src/components/BaseToolbar.tsx
15176
- var import_react87 = __toESM(require("react"));
15420
+ var import_react88 = __toESM(require("react"));
15177
15421
  var toolbarStyle = {
15178
15422
  [cssVarNames.colors.buttonBackground]: "transparent",
15179
15423
  [cssVarNames.colors.inputBackground]: "transparent"
@@ -15185,7 +15429,7 @@ function BaseToolbarContainer({
15185
15429
  innerClassName,
15186
15430
  enableAbsoluteBreakpoint = true
15187
15431
  }) {
15188
- 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(
15189
15433
  "div",
15190
15434
  {
15191
15435
  className: cx(
@@ -15198,7 +15442,7 @@ function BaseToolbarContainer({
15198
15442
  }
15199
15443
  },
15200
15444
  children
15201
- ), showDivider && /* @__PURE__ */ import_react87.default.createElement(Divider, { variant: "strong" }));
15445
+ ), showDivider && /* @__PURE__ */ import_react88.default.createElement(Divider, { variant: "strong" }));
15202
15446
  }
15203
15447
  function BaseToolbar({
15204
15448
  children,
@@ -15210,7 +15454,7 @@ function BaseToolbar({
15210
15454
  innerClassName,
15211
15455
  enableAbsoluteBreakpoint = true
15212
15456
  }) {
15213
- return /* @__PURE__ */ import_react87.default.createElement(
15457
+ return /* @__PURE__ */ import_react88.default.createElement(
15214
15458
  BaseToolbarContainer,
15215
15459
  {
15216
15460
  showDivider,
@@ -15218,25 +15462,25 @@ function BaseToolbar({
15218
15462
  innerClassName,
15219
15463
  enableAbsoluteBreakpoint
15220
15464
  },
15221
- logo && /* @__PURE__ */ import_react87.default.createElement(import_react87.default.Fragment, null, logo, /* @__PURE__ */ import_react87.default.createElement(DividerVertical, null)),
15222
- /* @__PURE__ */ import_react87.default.createElement(Spacer.Horizontal, { size: 10 }),
15223
- 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 })),
15224
- 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(
15225
15469
  "div",
15226
15470
  {
15227
- 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"
15228
15472
  },
15229
- /* @__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)
15230
15474
  ),
15231
- /* @__PURE__ */ import_react87.default.createElement(Spacer.Horizontal, null),
15232
- /* @__PURE__ */ import_react87.default.createElement(Spacer.Horizontal, { size: 10 }),
15233
- /* @__PURE__ */ import_react87.default.createElement("div", { className: "n-flex n-gap-toolbar-separator" }, right),
15234
- /* @__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 })
15235
15479
  );
15236
15480
  }
15237
15481
 
15238
15482
  // src/components/StackNavigator.tsx
15239
- var StackRenderContext = import_react88.default.createContext({});
15483
+ var StackRenderContext = import_react89.default.createContext({});
15240
15484
  function StackNavigator({
15241
15485
  items,
15242
15486
  onBack,
@@ -15250,15 +15494,15 @@ function StackNavigator({
15250
15494
  renderHeader
15251
15495
  }) {
15252
15496
  const top = items.at(-1);
15253
- const previousLengthRef = (0, import_react88.useRef)(items.length);
15254
- const direction = (0, import_react88.useMemo)(() => {
15497
+ const previousLengthRef = (0, import_react89.useRef)(items.length);
15498
+ const direction = (0, import_react89.useMemo)(() => {
15255
15499
  const previous = previousLengthRef.current;
15256
15500
  previousLengthRef.current = items.length;
15257
15501
  return items.length >= previous ? "forward" : "back";
15258
15502
  }, [items.length]);
15259
- const [cardSizes, setCardSizes] = (0, import_react88.useState)({});
15260
- const [containerSize, setContainerSize] = (0, import_react88.useState)();
15261
- 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) => {
15262
15506
  setCardSizes((prev) => {
15263
15507
  if ((0, import_noya_utils16.isDeepEqual)(prev[key], size)) {
15264
15508
  return prev;
@@ -15266,7 +15510,7 @@ function StackNavigator({
15266
15510
  return { ...prev, [key]: size };
15267
15511
  });
15268
15512
  }, []);
15269
- (0, import_react88.useEffect)(() => {
15513
+ (0, import_react89.useEffect)(() => {
15270
15514
  if (!top) {
15271
15515
  setContainerSize(void 0);
15272
15516
  return;
@@ -15280,7 +15524,7 @@ function StackNavigator({
15280
15524
  return measuredSize;
15281
15525
  });
15282
15526
  }, [cardSizes, top]);
15283
- (0, import_react88.useEffect)(() => {
15527
+ (0, import_react89.useEffect)(() => {
15284
15528
  setCardSizes((prev) => {
15285
15529
  const next = {};
15286
15530
  let changed = false;
@@ -15298,7 +15542,7 @@ function StackNavigator({
15298
15542
  return changed ? next : prev;
15299
15543
  });
15300
15544
  }, [items]);
15301
- const animationStyles = (0, import_react88.useMemo)(() => {
15545
+ const animationStyles = (0, import_react89.useMemo)(() => {
15302
15546
  return {
15303
15547
  entering: {
15304
15548
  opacity: 0,
@@ -15318,7 +15562,7 @@ function StackNavigator({
15318
15562
  };
15319
15563
  }, [direction]);
15320
15564
  const shouldAnimateSize = containerSize !== void 0;
15321
- const contentStyle = (0, import_react88.useMemo)(() => {
15565
+ const contentStyle = (0, import_react89.useMemo)(() => {
15322
15566
  if (!containerSize) return void 0;
15323
15567
  const style3 = {
15324
15568
  // width: containerSize.width,
@@ -15331,11 +15575,11 @@ function StackNavigator({
15331
15575
  }
15332
15576
  return style3;
15333
15577
  }, [containerSize, shouldAnimateSize]);
15334
- const [animationStates, setAnimationStates] = (0, import_react88.useState)({});
15335
- const [renderContentCache, setRenderContentCache] = (0, import_react88.useState)(
15578
+ const [animationStates, setAnimationStates] = (0, import_react89.useState)({});
15579
+ const [renderContentCache, setRenderContentCache] = (0, import_react89.useState)(
15336
15580
  () => Object.fromEntries(items.map((item) => [item.key, item.renderContent]))
15337
15581
  );
15338
- (0, import_react88.useEffect)(() => {
15582
+ (0, import_react89.useEffect)(() => {
15339
15583
  setRenderContentCache((prev) => {
15340
15584
  let changed = false;
15341
15585
  const next = { ...prev };
@@ -15353,7 +15597,7 @@ function StackNavigator({
15353
15597
  return changed ? next : prev;
15354
15598
  });
15355
15599
  }, [animationStates, items]);
15356
- const handleChildStateChange = (0, import_react88.useCallback)(
15600
+ const handleChildStateChange = (0, import_react89.useCallback)(
15357
15601
  (key, state) => {
15358
15602
  if (!key) return;
15359
15603
  setAnimationStates((prev) => {
@@ -15396,7 +15640,7 @@ function StackNavigator({
15396
15640
  }
15397
15641
  return defaultRenderHeader(headerProps);
15398
15642
  };
15399
- return /* @__PURE__ */ import_react88.default.createElement(
15643
+ return /* @__PURE__ */ import_react89.default.createElement(
15400
15644
  "div",
15401
15645
  {
15402
15646
  className: cx("n-flex n-flex-col", className),
@@ -15412,13 +15656,13 @@ function StackNavigator({
15412
15656
  }
15413
15657
  },
15414
15658
  showHeader && renderHeaderContent(),
15415
- /* @__PURE__ */ import_react88.default.createElement(
15659
+ /* @__PURE__ */ import_react89.default.createElement(
15416
15660
  "div",
15417
15661
  {
15418
15662
  className: cx("n-relative n-overflow-hidden", contentClassName),
15419
15663
  style: contentStyle
15420
15664
  },
15421
- /* @__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(
15422
15666
  AnimatePresence,
15423
15667
  {
15424
15668
  duration: 200,
@@ -15427,7 +15671,7 @@ function StackNavigator({
15427
15671
  mode: "wait",
15428
15672
  onChildStateChange: handleChildStateChange
15429
15673
  },
15430
- /* @__PURE__ */ import_react88.default.createElement(
15674
+ /* @__PURE__ */ import_react89.default.createElement(
15431
15675
  StackNavigatorCard,
15432
15676
  {
15433
15677
  key: top.key,
@@ -15447,15 +15691,15 @@ var StackNavigatorCard = ({
15447
15691
  style: style2,
15448
15692
  className
15449
15693
  }) => {
15450
- const ref = import_react88.default.useRef(null);
15694
+ const ref = import_react89.default.useRef(null);
15451
15695
  const size = useSize(ref);
15452
- const renderContext = import_react88.default.useContext(StackRenderContext);
15696
+ const renderContext = import_react89.default.useContext(StackRenderContext);
15453
15697
  const renderContent = renderContext?.[item.key] ?? item.renderContent;
15454
- import_react88.default.useEffect(() => {
15698
+ import_react89.default.useEffect(() => {
15455
15699
  if (!size || size.width === 0 || size.height === 0) return;
15456
15700
  onSizeChange(item.key, size);
15457
15701
  }, [item.key, onSizeChange, size]);
15458
- 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?.());
15459
15703
  };
15460
15704
  function defaultRenderHeader({
15461
15705
  showDivider,
@@ -15464,13 +15708,13 @@ function defaultRenderHeader({
15464
15708
  right,
15465
15709
  title
15466
15710
  }) {
15467
- return /* @__PURE__ */ import_react88.default.createElement(
15711
+ return /* @__PURE__ */ import_react89.default.createElement(
15468
15712
  BaseToolbar,
15469
15713
  {
15470
15714
  innerClassName: "n-px-1",
15471
15715
  showDivider,
15472
15716
  enableAbsoluteBreakpoint: false,
15473
- left: showBackButton && /* @__PURE__ */ import_react88.default.createElement(
15717
+ left: showBackButton && /* @__PURE__ */ import_react89.default.createElement(
15474
15718
  Button,
15475
15719
  {
15476
15720
  className: "-n-mx-2",
@@ -15481,7 +15725,7 @@ function defaultRenderHeader({
15481
15725
  ),
15482
15726
  right
15483
15727
  },
15484
- 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
15485
15729
  );
15486
15730
  }
15487
15731
 
@@ -15493,23 +15737,23 @@ var NavigatorScreen = Object.assign(
15493
15737
  [navigatorScreenIdentifier]: true
15494
15738
  }
15495
15739
  );
15496
- var NavigatorScreenContext = import_react89.default.createContext(null);
15740
+ var NavigatorScreenContext = import_react90.default.createContext(null);
15497
15741
  function useNavigator() {
15498
- const context = import_react89.default.useContext(NavigatorScreenContext);
15742
+ const context = import_react90.default.useContext(NavigatorScreenContext);
15499
15743
  if (!context) {
15500
15744
  throw new Error("useNavigator must be used within a Navigator screen");
15501
15745
  }
15502
15746
  return context.navigation;
15503
15747
  }
15504
15748
  function useNavigatorRoute() {
15505
- const context = import_react89.default.useContext(NavigatorScreenContext);
15749
+ const context = import_react90.default.useContext(NavigatorScreenContext);
15506
15750
  if (!context) {
15507
15751
  throw new Error("useNavigatorRoute must be used within a Navigator screen");
15508
15752
  }
15509
15753
  return context.route;
15510
15754
  }
15511
15755
  function isNavigatorScreenElement(child) {
15512
- return (0, import_react89.isValidElement)(child) && Boolean(
15756
+ return (0, import_react90.isValidElement)(child) && Boolean(
15513
15757
  child.type?.[navigatorScreenIdentifier]
15514
15758
  );
15515
15759
  }
@@ -15530,15 +15774,15 @@ function NavigatorImpl({
15530
15774
  showHeader,
15531
15775
  renderHeader
15532
15776
  }) {
15533
- const screens = (0, import_react89.useMemo)(() => {
15777
+ const screens = (0, import_react90.useMemo)(() => {
15534
15778
  const configs = [];
15535
- import_react89.Children.forEach(children, (child) => {
15779
+ import_react90.Children.forEach(children, (child) => {
15536
15780
  if (!isNavigatorScreenElement(child)) return;
15537
15781
  configs.push(child.props);
15538
15782
  });
15539
15783
  return configs;
15540
15784
  }, [children]);
15541
- const screenMap = (0, import_react89.useMemo)(() => {
15785
+ const screenMap = (0, import_react90.useMemo)(() => {
15542
15786
  const map = /* @__PURE__ */ new Map();
15543
15787
  for (const screen of screens) {
15544
15788
  if (map.has(screen.name)) {
@@ -15550,8 +15794,8 @@ function NavigatorImpl({
15550
15794
  }
15551
15795
  return map;
15552
15796
  }, [screens]);
15553
- const keyRef = (0, import_react89.useRef)(0);
15554
- const createEntry = (0, import_react89.useCallback)(
15797
+ const keyRef = (0, import_react90.useRef)(0);
15798
+ const createEntry = (0, import_react90.useCallback)(
15555
15799
  (name, params) => ({
15556
15800
  key: `${String(name)}-${keyRef.current++}`,
15557
15801
  name,
@@ -15565,13 +15809,13 @@ function NavigatorImpl({
15565
15809
  `Navigator: initial route "${String(initialScreenName)}" is not registered as a screen.`
15566
15810
  );
15567
15811
  }
15568
- const [stack, setStack] = (0, import_react89.useState)(() => [
15812
+ const [stack, setStack] = (0, import_react90.useState)(() => [
15569
15813
  createEntry(
15570
15814
  initialScreenName,
15571
15815
  initialRoute.params
15572
15816
  )
15573
15817
  ]);
15574
- const push = (0, import_react89.useCallback)(
15818
+ const push = (0, import_react90.useCallback)(
15575
15819
  (...args) => {
15576
15820
  const [name, params] = args;
15577
15821
  const screen = screenMap.get(name);
@@ -15585,7 +15829,7 @@ function NavigatorImpl({
15585
15829
  },
15586
15830
  [createEntry, screenMap]
15587
15831
  );
15588
- const pop = (0, import_react89.useCallback)(() => {
15832
+ const pop = (0, import_react90.useCallback)(() => {
15589
15833
  setStack((prev) => {
15590
15834
  if (prev.length <= 1) return prev;
15591
15835
  const nextStack = prev.slice(0, -1);
@@ -15601,7 +15845,7 @@ function NavigatorImpl({
15601
15845
  return updatedStack;
15602
15846
  });
15603
15847
  }, [createEntry]);
15604
- const replace = (0, import_react89.useCallback)(
15848
+ const replace = (0, import_react90.useCallback)(
15605
15849
  (targetKey, name, params) => {
15606
15850
  const screen = screenMap.get(name);
15607
15851
  if (!screen) {
@@ -15627,7 +15871,7 @@ function NavigatorImpl({
15627
15871
  },
15628
15872
  [createEntry, screenMap]
15629
15873
  );
15630
- const items = (0, import_react89.useMemo)(() => {
15874
+ const items = (0, import_react90.useMemo)(() => {
15631
15875
  return stack.flatMap((entry) => {
15632
15876
  const screen = screenMap.get(entry.name);
15633
15877
  if (!screen) return [];
@@ -15665,7 +15909,7 @@ function NavigatorImpl({
15665
15909
  onBack: headerProps.onBack
15666
15910
  }),
15667
15911
  renderContent: () => {
15668
- 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));
15669
15913
  }
15670
15914
  };
15671
15915
  });
@@ -15673,7 +15917,7 @@ function NavigatorImpl({
15673
15917
  const shouldShowHeader = evaluateOption(showHeader, {
15674
15918
  stack
15675
15919
  });
15676
- return /* @__PURE__ */ import_react89.default.createElement(
15920
+ return /* @__PURE__ */ import_react90.default.createElement(
15677
15921
  StackNavigator,
15678
15922
  {
15679
15923
  items,
@@ -15713,7 +15957,7 @@ function ListNavigator({
15713
15957
  renderHeader,
15714
15958
  selectedIds
15715
15959
  }) {
15716
- return /* @__PURE__ */ import_react90.default.createElement(
15960
+ return /* @__PURE__ */ import_react91.default.createElement(
15717
15961
  ListNavigatorInternal,
15718
15962
  {
15719
15963
  initialRoute: { name: "screen", params: { id: void 0 } },
@@ -15731,7 +15975,7 @@ function ListNavigator({
15731
15975
  className,
15732
15976
  style: style2
15733
15977
  },
15734
- /* @__PURE__ */ import_react90.default.createElement(
15978
+ /* @__PURE__ */ import_react91.default.createElement(
15735
15979
  ListNavigatorInternal.Screen,
15736
15980
  {
15737
15981
  name: "screen",
@@ -15746,7 +15990,7 @@ function ListNavigator({
15746
15990
  const nestedItem = items.find(
15747
15991
  (item) => isSubMenuItem(item) && item.id === route.params.id
15748
15992
  );
15749
- return /* @__PURE__ */ import_react90.default.createElement(
15993
+ return /* @__PURE__ */ import_react91.default.createElement(
15750
15994
  ListMenu,
15751
15995
  {
15752
15996
  items: nestedItem?.items ?? items,
@@ -15771,18 +16015,19 @@ function ListNavigator({
15771
16015
 
15772
16016
  // src/components/Message.tsx
15773
16017
  var import_noya_utils17 = require("@noya-app/noya-utils");
15774
- var import_react91 = __toESM(require("react"));
15775
- var Message = (0, import_react91.memo)(
15776
- (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) {
15777
16021
  const randomId = (0, import_noya_utils17.uuid)();
15778
- const userMessageBackgroundColor = colorFromString(user?.id ?? randomId);
15779
- 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)(
15780
16025
  () => role === "user" ? {
15781
16026
  backgroundColor: userMessageBackgroundColor
15782
16027
  } : void 0,
15783
16028
  [userMessageBackgroundColor, role]
15784
16029
  );
15785
- return /* @__PURE__ */ import_react91.default.createElement(
16030
+ return /* @__PURE__ */ import_react92.default.createElement(
15786
16031
  "div",
15787
16032
  {
15788
16033
  className: cx(
@@ -15790,24 +16035,24 @@ var Message = (0, import_react91.memo)(
15790
16035
  role === "user" ? "n-flex-row-reverse" : "n-flex-row"
15791
16036
  )
15792
16037
  },
15793
- role === "assistant" ? /* @__PURE__ */ import_react91.default.createElement(
16038
+ role === "assistant" ? /* @__PURE__ */ import_react92.default.createElement(
15794
16039
  Avatar,
15795
16040
  {
15796
16041
  name: "Assistant",
15797
16042
  size: avatarSize,
15798
16043
  backgroundColor: cssVars.colors.primaryPastel
15799
16044
  },
15800
- /* @__PURE__ */ import_react91.default.createElement(Logo, { style: { width: 15 }, fill: cssVars.colors.primary })
15801
- ) : /* @__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(
15802
16047
  Avatar,
15803
16048
  {
15804
- userId: !user ? randomId : user?.id,
16049
+ userId: resolvedUserId,
15805
16050
  name: user?.name ?? "Anonymous",
15806
16051
  image: user?.image,
15807
16052
  size: avatarSize
15808
16053
  }
15809
16054
  ),
15810
- /* @__PURE__ */ import_react91.default.createElement(
16055
+ /* @__PURE__ */ import_react92.default.createElement(
15811
16056
  "div",
15812
16057
  {
15813
16058
  className: cx(
@@ -15827,9 +16072,9 @@ var Message = (0, import_react91.memo)(
15827
16072
 
15828
16073
  // src/components/pipeline/PipelineResultLayout.tsx
15829
16074
  var import_noya_icons11 = require("@noya-app/noya-icons");
15830
- var import_react92 = __toESM(require("react"));
16075
+ var import_react93 = __toESM(require("react"));
15831
16076
  var PipelineResultLink = ({ url }) => {
15832
- 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(
15833
16078
  "a",
15834
16079
  {
15835
16080
  href: url,
@@ -15837,15 +16082,15 @@ var PipelineResultLink = ({ url }) => {
15837
16082
  rel: "noopener noreferrer",
15838
16083
  className: "n-flex n-text-primary hover:n-opacity-80 n-border n-border-divider n-rounded-md"
15839
16084
  },
15840
- /* @__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" })),
15841
- /* @__PURE__ */ import_react92.default.createElement(DividerVertical, null),
15842
- /* @__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)
15843
16088
  ));
15844
16089
  };
15845
16090
  var PipelineResultLayout = ({
15846
16091
  children
15847
16092
  }) => {
15848
- 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);
15849
16094
  };
15850
16095
  function getPipelineResultLink(value) {
15851
16096
  if (typeof value !== "object" || value === null) return void 0;
@@ -15859,7 +16104,7 @@ function getPipelineResultLink(value) {
15859
16104
  }
15860
16105
 
15861
16106
  // src/components/ResizableContainer.tsx
15862
- var import_react93 = __toESM(require("react"));
16107
+ var import_react94 = __toESM(require("react"));
15863
16108
  var ResizableContainer = ({
15864
16109
  children,
15865
16110
  minWidth,
@@ -15872,13 +16117,13 @@ var ResizableContainer = ({
15872
16117
  onChangeWidth,
15873
16118
  shouldResetWidthOnGestureEnd: shouldResetWidth
15874
16119
  }) => {
15875
- const containerRef = (0, import_react93.useRef)(null);
15876
- const resizeableRef = (0, import_react93.useRef)(null);
15877
- const handleRef = (0, import_react93.useRef)(null);
15878
- const clickCounter = (0, import_react93.useRef)(createClickCounter({ delay: 250 }));
15879
- const [width, setWidth] = (0, import_react93.useState)();
15880
- const [drag, setDrag] = (0, import_react93.useState)();
15881
- 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)(
15882
16127
  (event) => {
15883
16128
  const containerWidth = containerRef.current?.getBoundingClientRect().width;
15884
16129
  const resizeableWidth = resizeableRef.current?.getBoundingClientRect().width;
@@ -15896,7 +16141,7 @@ var ResizableContainer = ({
15896
16141
  },
15897
16142
  [maxWidth, minWidth]
15898
16143
  );
15899
- const handlePointerMove = (0, import_react93.useCallback)(
16144
+ const handlePointerMove = (0, import_react94.useCallback)(
15900
16145
  (event) => {
15901
16146
  if (!drag) return;
15902
16147
  const delta = event.clientX - drag.startX;
@@ -15912,7 +16157,7 @@ var ResizableContainer = ({
15912
16157
  },
15913
16158
  [drag, onChangeWidth]
15914
16159
  );
15915
- const handlePointerUp = (0, import_react93.useCallback)(
16160
+ const handlePointerUp = (0, import_react94.useCallback)(
15916
16161
  (event) => {
15917
16162
  setDrag(void 0);
15918
16163
  handleRef.current?.releasePointerCapture(event.pointerId);
@@ -15928,7 +16173,7 @@ var ResizableContainer = ({
15928
16173
  },
15929
16174
  [shouldResetWidth]
15930
16175
  );
15931
- return /* @__PURE__ */ import_react93.default.createElement(
16176
+ return /* @__PURE__ */ import_react94.default.createElement(
15932
16177
  "div",
15933
16178
  {
15934
16179
  ref: containerRef,
@@ -15936,7 +16181,7 @@ var ResizableContainer = ({
15936
16181
  style: { position: "relative", ...style2 },
15937
16182
  className
15938
16183
  },
15939
- /* @__PURE__ */ import_react93.default.createElement(
16184
+ /* @__PURE__ */ import_react94.default.createElement(
15940
16185
  "div",
15941
16186
  {
15942
16187
  ref: resizeableRef,
@@ -15947,7 +16192,7 @@ var ResizableContainer = ({
15947
16192
  }
15948
16193
  },
15949
16194
  typeof children === "function" ? children({ width }) : children,
15950
- /* @__PURE__ */ import_react93.default.createElement(
16195
+ /* @__PURE__ */ import_react94.default.createElement(
15951
16196
  "div",
15952
16197
  {
15953
16198
  ref: handleRef,
@@ -15972,7 +16217,7 @@ var ResizableContainer = ({
15972
16217
  onPointerUp: handlePointerUp,
15973
16218
  onPointerCancel: handlePointerUp
15974
16219
  },
15975
- /* @__PURE__ */ import_react93.default.createElement(
16220
+ /* @__PURE__ */ import_react94.default.createElement(
15976
16221
  "div",
15977
16222
  {
15978
16223
  style: {
@@ -15990,7 +16235,7 @@ var ResizableContainer = ({
15990
16235
  }
15991
16236
  )
15992
16237
  ),
15993
- drag && /* @__PURE__ */ import_react93.default.createElement(
16238
+ drag && /* @__PURE__ */ import_react94.default.createElement(
15994
16239
  "div",
15995
16240
  {
15996
16241
  style: {
@@ -16013,7 +16258,7 @@ function clamp5(value, min, max) {
16013
16258
 
16014
16259
  // src/components/RingProgress.tsx
16015
16260
  var import_noya_utils18 = require("@noya-app/noya-utils");
16016
- var React90 = __toESM(require("react"));
16261
+ var React92 = __toESM(require("react"));
16017
16262
  function RingProgress({
16018
16263
  value,
16019
16264
  dividedBy = 100,
@@ -16029,14 +16274,14 @@ function RingProgress({
16029
16274
  const safeDivisor = dividedBy > 0 ? dividedBy : 1;
16030
16275
  const clampedRaw = (0, import_noya_utils18.clamp)(value, 0, safeDivisor);
16031
16276
  const clampedPercent = clampedRaw / safeDivisor * 100;
16032
- const radius = React90.useMemo(() => (size - thickness) / 2, [size, thickness]);
16033
- const circumference = React90.useMemo(() => 2 * Math.PI * radius, [radius]);
16034
- 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(
16035
16280
  () => (100 - clampedPercent) / 100 * circumference,
16036
16281
  [circumference, clampedPercent]
16037
16282
  );
16038
16283
  const trackStroke = trackColor ?? "var(--n-input-background, rgba(0,0,0,0.08))";
16039
- const colorClass = React90.useMemo(() => {
16284
+ const colorClass = React92.useMemo(() => {
16040
16285
  switch (colorScheme) {
16041
16286
  case "primary":
16042
16287
  return "n-stroke-primary";
@@ -16049,7 +16294,7 @@ function RingProgress({
16049
16294
  return "n-stroke-text";
16050
16295
  }
16051
16296
  }, [colorScheme]);
16052
- const computedStroke = React90.useMemo(() => {
16297
+ const computedStroke = React92.useMemo(() => {
16053
16298
  if (color) return color;
16054
16299
  switch (colorScheme) {
16055
16300
  case "primary":
@@ -16063,7 +16308,7 @@ function RingProgress({
16063
16308
  return "var(--n-text, currentColor)";
16064
16309
  }
16065
16310
  }, [color, colorScheme]);
16066
- return /* @__PURE__ */ React90.createElement(
16311
+ return /* @__PURE__ */ React92.createElement(
16067
16312
  "span",
16068
16313
  {
16069
16314
  className: cx("n-inline-flex n-items-center n-justify-center", className),
@@ -16074,7 +16319,7 @@ function RingProgress({
16074
16319
  "aria-valuemax": safeDivisor,
16075
16320
  "aria-label": ariaLabel
16076
16321
  },
16077
- /* @__PURE__ */ React90.createElement(
16322
+ /* @__PURE__ */ React92.createElement(
16078
16323
  "svg",
16079
16324
  {
16080
16325
  width: size,
@@ -16082,7 +16327,7 @@ function RingProgress({
16082
16327
  viewBox: `0 0 ${size} ${size}`,
16083
16328
  style: { display: "block" }
16084
16329
  },
16085
- /* @__PURE__ */ React90.createElement(
16330
+ /* @__PURE__ */ React92.createElement(
16086
16331
  "circle",
16087
16332
  {
16088
16333
  cx: size / 2,
@@ -16093,7 +16338,7 @@ function RingProgress({
16093
16338
  strokeWidth: thickness
16094
16339
  }
16095
16340
  ),
16096
- /* @__PURE__ */ React90.createElement(
16341
+ /* @__PURE__ */ React92.createElement(
16097
16342
  "circle",
16098
16343
  {
16099
16344
  cx: size / 2,
@@ -16117,49 +16362,13 @@ function RingProgress({
16117
16362
  }
16118
16363
 
16119
16364
  // src/components/ScrollableSidebar.tsx
16120
- var import_react94 = __toESM(require("react"));
16365
+ var import_react95 = __toESM(require("react"));
16121
16366
  function ScrollableSidebar({ children }) {
16122
- 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));
16123
- }
16124
-
16125
- // src/components/ScrollArea2.tsx
16126
- var import_scroll_area = require("@base-ui-components/react/scroll-area");
16127
- var React92 = __toESM(require("react"));
16128
- 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";
16129
- var SCROLLBAR_TRACK_VERTICAL = "n-m-1 n-w-1 flex n-justify-center n-rounded-md n-bg-divider-subtle";
16130
- var SCROLLBAR_TRACK_HORIZONTAL = "n-m-1 n-h-1 flex n-justify-center n-rounded-md n-bg-divider-subtle";
16131
- var SCROLLBAR_THUMB_VERTICAL = "scroll-component n-w-full n-rounded n-bg-scrollbar";
16132
- var SCROLLBAR_THUMB_HORIZONTAL = "scroll-component n-h-full n-rounded n-bg-scrollbar";
16133
- function ScrollArea22({
16134
- children,
16135
- className,
16136
- viewportClassName,
16137
- orientation = "vertical"
16138
- }) {
16139
- return /* @__PURE__ */ React92.createElement(import_scroll_area.ScrollArea.Root, { className: cx("n-relative", className) }, /* @__PURE__ */ React92.createElement(
16140
- import_scroll_area.ScrollArea.Viewport,
16141
- {
16142
- className: cx("n-h-full n-overscroll-contain", viewportClassName)
16143
- },
16144
- children
16145
- ), (orientation === "vertical" || orientation === "both") && /* @__PURE__ */ React92.createElement(
16146
- import_scroll_area.ScrollArea.Scrollbar,
16147
- {
16148
- className: cx(SCROLLBAR_STATE_CLASSES, SCROLLBAR_TRACK_VERTICAL)
16149
- },
16150
- /* @__PURE__ */ React92.createElement(import_scroll_area.ScrollArea.Thumb, { className: SCROLLBAR_THUMB_VERTICAL })
16151
- ), (orientation === "horizontal" || orientation === "both") && /* @__PURE__ */ React92.createElement(
16152
- import_scroll_area.ScrollArea.Scrollbar,
16153
- {
16154
- orientation: "horizontal",
16155
- className: cx(SCROLLBAR_STATE_CLASSES, SCROLLBAR_TRACK_HORIZONTAL)
16156
- },
16157
- /* @__PURE__ */ React92.createElement(import_scroll_area.ScrollArea.Thumb, { className: SCROLLBAR_THUMB_HORIZONTAL })
16158
- ), 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));
16159
16368
  }
16160
16369
 
16161
16370
  // src/components/Section.tsx
16162
- var import_react95 = __toESM(require("react"));
16371
+ var import_react96 = __toESM(require("react"));
16163
16372
  var titleIconStyle = {
16164
16373
  marginRight: "6px",
16165
16374
  alignSelf: "flex-start",
@@ -16180,14 +16389,14 @@ function SectionHeader({
16180
16389
  titleClassName,
16181
16390
  onClickTitle
16182
16391
  }) {
16183
- const headerStyle = (0, import_react95.useMemo)(
16392
+ const headerStyle = (0, import_react96.useMemo)(
16184
16393
  () => ({
16185
16394
  minHeight: INPUT_HEIGHT,
16186
16395
  ...style2
16187
16396
  }),
16188
16397
  [style2]
16189
16398
  );
16190
- const titleElement = title ? /* @__PURE__ */ import_react95.default.createElement(
16399
+ const titleElement = title ? /* @__PURE__ */ import_react96.default.createElement(
16191
16400
  InspectorPrimitives_exports.Title,
16192
16401
  {
16193
16402
  $textStyle: titleTextStyle,
@@ -16195,16 +16404,16 @@ function SectionHeader({
16195
16404
  },
16196
16405
  title
16197
16406
  ) : null;
16198
- return /* @__PURE__ */ import_react95.default.createElement(
16407
+ return /* @__PURE__ */ import_react96.default.createElement(
16199
16408
  InspectorPrimitives_exports.SectionHeader,
16200
16409
  {
16201
16410
  style: headerStyle,
16202
16411
  className
16203
16412
  },
16204
- titleIcon && /* @__PURE__ */ import_react95.default.createElement("div", { style: titleIconStyle, className: textStyles[titleTextStyle] }, "\u200B", renderIcon(titleIcon)),
16205
- titleElement && /* @__PURE__ */ import_react95.default.createElement(import_react95.default.Fragment, null, onClickTitle ? /* @__PURE__ */ import_react95.default.createElement(Button, { variant: "none", onClick: onClickTitle }, titleElement) : titleElement),
16206
- headerSeparator === "space" && /* @__PURE__ */ import_react95.default.createElement(Spacer.Horizontal, null),
16207
- 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(
16208
16417
  Text,
16209
16418
  {
16210
16419
  variant: titleTextStyle,
@@ -16230,7 +16439,7 @@ var SectionInternal = ({
16230
16439
  titleClassName,
16231
16440
  headerStyle: headerStyleProp
16232
16441
  }) => {
16233
- const style2 = (0, import_react95.useMemo)(
16442
+ const style2 = (0, import_react96.useMemo)(
16234
16443
  () => ({
16235
16444
  display: "flex",
16236
16445
  flexDirection: "column",
@@ -16241,15 +16450,15 @@ var SectionInternal = ({
16241
16450
  }),
16242
16451
  [titleTextStyle, title, extraPadding, styleProp]
16243
16452
  );
16244
- const hasChildren = import_react95.default.Children.toArray(children).some((child) => !!child);
16245
- 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)(
16246
16455
  () => ({
16247
16456
  marginBottom: hasChildren ? "4px" : void 0,
16248
16457
  ...headerStyleProp
16249
16458
  }),
16250
16459
  [hasChildren, headerStyleProp]
16251
16460
  );
16252
- 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(
16253
16462
  SectionHeader,
16254
16463
  {
16255
16464
  style: headerStyle,
@@ -16261,7 +16470,7 @@ var SectionInternal = ({
16261
16470
  right,
16262
16471
  headerSeparator
16263
16472
  }
16264
- ), /* @__PURE__ */ import_react95.default.createElement(IndentContext.Provider, { value: 0 }, children));
16473
+ ), /* @__PURE__ */ import_react96.default.createElement(IndentContext.Provider, { value: 0 }, children));
16265
16474
  };
16266
16475
  var ExpandableSection = ({
16267
16476
  storageKey,
@@ -16274,12 +16483,12 @@ var ExpandableSection = ({
16274
16483
  initialVisibility
16275
16484
  );
16276
16485
  const expanded = visibility === "show";
16277
- return /* @__PURE__ */ import_react95.default.createElement(
16486
+ return /* @__PURE__ */ import_react96.default.createElement(
16278
16487
  SectionInternal,
16279
16488
  {
16280
16489
  ...props,
16281
16490
  right: !props.hideRightWhenCollapsed || expanded ? props.right : null,
16282
- 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(
16283
16492
  IconButton,
16284
16493
  {
16285
16494
  iconName: expanded ? "ChevronDownIcon2" : "ChevronRightIcon2",
@@ -16290,20 +16499,20 @@ var ExpandableSection = ({
16290
16499
  expanded && props.children
16291
16500
  );
16292
16501
  };
16293
- var Section = (0, import_react95.memo)(function InspectorSection({
16502
+ var Section = (0, import_react96.memo)(function InspectorSection({
16294
16503
  storageKey,
16295
16504
  ...props
16296
16505
  }) {
16297
- 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 });
16298
16507
  });
16299
16508
 
16300
16509
  // src/components/SegmentedControl.tsx
16301
16510
  var import_radix_ui12 = require("radix-ui");
16302
- var import_react96 = __toESM(require("react"));
16303
- var SegmentedControlContext = (0, import_react96.createContext)({
16511
+ var import_react97 = __toESM(require("react"));
16512
+ var SegmentedControlContext = (0, import_react97.createContext)({
16304
16513
  colorScheme: "primary"
16305
16514
  });
16306
- var SegmentedControlItem = (0, import_react96.forwardRef)(function SegmentedControlItem2({
16515
+ var SegmentedControlItem = (0, import_react97.forwardRef)(function SegmentedControlItem2({
16307
16516
  value,
16308
16517
  tooltip,
16309
16518
  title,
@@ -16313,8 +16522,8 @@ var SegmentedControlItem = (0, import_react96.forwardRef)(function SegmentedCont
16313
16522
  variant = "default",
16314
16523
  ...props
16315
16524
  }, forwardedRef) {
16316
- const { colorScheme } = (0, import_react96.useContext)(SegmentedControlContext);
16317
- const itemElement = /* @__PURE__ */ import_react96.default.createElement(
16525
+ const { colorScheme } = (0, import_react97.useContext)(SegmentedControlContext);
16526
+ const itemElement = /* @__PURE__ */ import_react97.default.createElement(
16318
16527
  import_radix_ui12.ToggleGroup.Item,
16319
16528
  {
16320
16529
  ref: forwardedRef,
@@ -16345,7 +16554,7 @@ var SegmentedControlItem = (0, import_react96.forwardRef)(function SegmentedCont
16345
16554
  ),
16346
16555
  ...props
16347
16556
  },
16348
- /* @__PURE__ */ import_react96.default.createElement(
16557
+ /* @__PURE__ */ import_react97.default.createElement(
16349
16558
  "span",
16350
16559
  {
16351
16560
  className: cx(
@@ -16357,7 +16566,7 @@ var SegmentedControlItem = (0, import_react96.forwardRef)(function SegmentedCont
16357
16566
  title
16358
16567
  )
16359
16568
  );
16360
- 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;
16361
16570
  });
16362
16571
  var SegmentedControl = memoGeneric(function SegmentedControl2({
16363
16572
  id: idProp,
@@ -16370,16 +16579,16 @@ var SegmentedControl = memoGeneric(function SegmentedControl2({
16370
16579
  className,
16371
16580
  style: style2
16372
16581
  }) {
16373
- const contextValue = (0, import_react96.useMemo)(() => ({ colorScheme }), [colorScheme]);
16582
+ const contextValue = (0, import_react97.useMemo)(() => ({ colorScheme }), [colorScheme]);
16374
16583
  const { fieldId: id } = useLabel({ fieldId: idProp });
16375
- const handleValueChange = (0, import_react96.useCallback)(
16584
+ const handleValueChange = (0, import_react97.useCallback)(
16376
16585
  (value2) => {
16377
16586
  if (!allowEmpty && !value2) return;
16378
16587
  onValueChange?.(value2);
16379
16588
  },
16380
16589
  [allowEmpty, onValueChange]
16381
16590
  );
16382
- 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(
16383
16592
  import_radix_ui12.ToggleGroup.Root,
16384
16593
  {
16385
16594
  id,
@@ -16398,14 +16607,14 @@ var SegmentedControl = memoGeneric(function SegmentedControl2({
16398
16607
  gridTemplateColumns: `repeat(${items.length}, 1fr)`
16399
16608
  }
16400
16609
  },
16401
- 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 }))
16402
16611
  ));
16403
16612
  });
16404
16613
 
16405
16614
  // src/components/SelectionToolbar.tsx
16406
16615
  var PopperPrimitive = __toESM(require("@radix-ui/react-popper"));
16407
- var import_react97 = __toESM(require("react"));
16408
- var import_react_dom3 = require("react-dom");
16616
+ var import_react98 = __toESM(require("react"));
16617
+ var import_react_dom4 = require("react-dom");
16409
16618
  var createVirtualElement = (rect) => ({
16410
16619
  getBoundingClientRect: () => ({
16411
16620
  width: rect.width,
@@ -16419,7 +16628,7 @@ var createVirtualElement = (rect) => ({
16419
16628
  toJSON: () => null
16420
16629
  })
16421
16630
  });
16422
- var SelectionToolbarContainer = (0, import_react97.memo)(
16631
+ var SelectionToolbarContainer = (0, import_react98.memo)(
16423
16632
  function SelectionToolbarContainer2({
16424
16633
  rect,
16425
16634
  children,
@@ -16433,15 +16642,15 @@ var SelectionToolbarContainer = (0, import_react97.memo)(
16433
16642
  transitionDuration = 0.2
16434
16643
  }) {
16435
16644
  const portalScopeId = usePortalScopeId();
16436
- const containerRef = import_react97.default.useRef(null);
16645
+ const containerRef = import_react98.default.useRef(null);
16437
16646
  const size = useSize(containerRef, "width");
16438
- const virtualRef = (0, import_react97.useMemo)(
16647
+ const virtualRef = (0, import_react98.useMemo)(
16439
16648
  () => ({
16440
16649
  current: createVirtualElement(rect)
16441
16650
  }),
16442
16651
  [rect]
16443
16652
  );
16444
- const popperContent = /* @__PURE__ */ import_react97.default.createElement(
16653
+ const popperContent = /* @__PURE__ */ import_react98.default.createElement(
16445
16654
  PopperPrimitive.Content,
16446
16655
  {
16447
16656
  ...portalScopeProps(portalScopeId),
@@ -16459,7 +16668,7 @@ var SelectionToolbarContainer = (0, import_react97.memo)(
16459
16668
  [cssVarNames.colors.buttonBackground]: "transparent"
16460
16669
  }
16461
16670
  },
16462
- /* @__PURE__ */ import_react97.default.createElement(
16671
+ /* @__PURE__ */ import_react98.default.createElement(
16463
16672
  "div",
16464
16673
  {
16465
16674
  ref: containerRef,
@@ -16476,14 +16685,14 @@ var SelectionToolbarContainer = (0, import_react97.memo)(
16476
16685
  children
16477
16686
  )
16478
16687
  );
16479
- 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);
16480
16689
  }
16481
16690
  );
16482
16691
 
16483
16692
  // src/components/SelectMenu.tsx
16484
16693
  var import_noya_icons12 = require("@noya-app/noya-icons");
16485
16694
  var import_radix_ui13 = require("radix-ui");
16486
- var import_react98 = __toESM(require("react"));
16695
+ var import_react99 = __toESM(require("react"));
16487
16696
  var readOnlyStyle = {
16488
16697
  justifyContent: "flex-start",
16489
16698
  textAlign: "left"
@@ -16506,7 +16715,7 @@ var SelectMenuTrigger = memoGeneric(function SelectMenuTrigger2({
16506
16715
  fieldId: props.id
16507
16716
  });
16508
16717
  const labelType = useLabelType();
16509
- 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(
16510
16719
  Button,
16511
16720
  {
16512
16721
  id,
@@ -16518,10 +16727,10 @@ var SelectMenuTrigger = memoGeneric(function SelectMenuTrigger2({
16518
16727
  ),
16519
16728
  disabled
16520
16729
  },
16521
- icon && /* @__PURE__ */ import_react98.default.createElement("span", { className: "n-pr-1.5" }, renderIcon(icon)),
16522
- 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)),
16523
- /* @__PURE__ */ import_react98.default.createElement("span", { className: "n-flex-1 n-flex" }, /* @__PURE__ */ import_react98.default.createElement(import_radix_ui13.Select.Value, { placeholder })),
16524
- /* @__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(
16525
16734
  import_noya_icons12.DropdownChevronIcon,
16526
16735
  {
16527
16736
  className: cx(
@@ -16558,7 +16767,7 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16558
16767
  (item) => isSelectableMenuItem(item) && item.value === value
16559
16768
  );
16560
16769
  const icon = selectedItem?.icon;
16561
- const [internalOpen, setInternalOpen] = (0, import_react98.useState)(open);
16770
+ const [internalOpen, setInternalOpen] = (0, import_react99.useState)(open);
16562
16771
  const { label, fieldId: id } = useLabel({
16563
16772
  label: props.label,
16564
16773
  fieldId: props.id
@@ -16569,8 +16778,8 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16569
16778
  }
16570
16779
  setInternalOpen(open2);
16571
16780
  };
16572
- const readOnlyButton = (0, import_react98.useMemo)(
16573
- () => /* @__PURE__ */ import_react98.default.createElement(
16781
+ const readOnlyButton = (0, import_react99.useMemo)(
16782
+ () => /* @__PURE__ */ import_react99.default.createElement(
16574
16783
  Button,
16575
16784
  {
16576
16785
  id,
@@ -16580,11 +16789,11 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16580
16789
  disabled
16581
16790
  },
16582
16791
  icon && renderIcon(icon),
16583
- /* @__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)
16584
16793
  ),
16585
16794
  [icon, id, style2, className, disabled, value, selectedItem]
16586
16795
  );
16587
- const contentStyle = (0, import_react98.useMemo)(() => {
16796
+ const contentStyle = (0, import_react99.useMemo)(() => {
16588
16797
  return {
16589
16798
  width: "var(--radix-select-trigger-width)",
16590
16799
  minWidth: "max-content",
@@ -16592,7 +16801,7 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16592
16801
  ...contentStyleProp
16593
16802
  };
16594
16803
  }, [contentStyleProp]);
16595
- const content = /* @__PURE__ */ import_react98.default.createElement(
16804
+ const content = /* @__PURE__ */ import_react99.default.createElement(
16596
16805
  import_radix_ui13.Select.Root,
16597
16806
  {
16598
16807
  value,
@@ -16600,7 +16809,7 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16600
16809
  open,
16601
16810
  onOpenChange: handleOpenChange
16602
16811
  },
16603
- /* @__PURE__ */ import_react98.default.createElement(
16812
+ /* @__PURE__ */ import_react99.default.createElement(
16604
16813
  SelectMenuTrigger,
16605
16814
  {
16606
16815
  id,
@@ -16615,7 +16824,7 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16615
16824
  label
16616
16825
  }
16617
16826
  ),
16618
- /* @__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(
16619
16828
  import_radix_ui13.Select.Content,
16620
16829
  {
16621
16830
  ...portalScopeProps(portalScopeId),
@@ -16626,14 +16835,14 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16626
16835
  align: "center",
16627
16836
  style: contentStyle
16628
16837
  },
16629
- /* @__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(
16630
16839
  import_noya_icons12.ChevronUpIcon,
16631
16840
  {
16632
16841
  className: cx("n-transition-transform n-duration-100")
16633
16842
  }
16634
16843
  )),
16635
- /* @__PURE__ */ import_react98.default.createElement(import_radix_ui13.Select.Viewport, null, /* @__PURE__ */ import_react98.default.createElement(MenuViewport, { items, Components: Components3 })),
16636
- /* @__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))
16637
16846
  ))
16638
16847
  );
16639
16848
  return readOnly ? readOnlyButton : content;
@@ -16641,12 +16850,12 @@ var SelectMenu = memoGeneric(function SelectMenu2({
16641
16850
 
16642
16851
  // src/components/Slider.tsx
16643
16852
  var import_radix_ui14 = require("radix-ui");
16644
- var import_react99 = __toESM(require("react"));
16853
+ var import_react100 = __toESM(require("react"));
16645
16854
  var THUMB_WIDTH = 8;
16646
16855
  var thumbStyle = {
16647
16856
  width: THUMB_WIDTH
16648
16857
  };
16649
- var Slider = (0, import_react99.memo)(function Slider2({
16858
+ var Slider = (0, import_react100.memo)(function Slider2({
16650
16859
  style: style2,
16651
16860
  className,
16652
16861
  value,
@@ -16660,21 +16869,21 @@ var Slider = (0, import_react99.memo)(function Slider2({
16660
16869
  readOnly = false,
16661
16870
  ...props
16662
16871
  }) {
16663
- const arrayValue = (0, import_react99.useMemo)(
16872
+ const arrayValue = (0, import_react100.useMemo)(
16664
16873
  () => [Math.min(Math.max(value, min), max)],
16665
16874
  [value, min, max]
16666
16875
  );
16667
16876
  const { fieldId: id } = useLabel({
16668
16877
  fieldId: props.id
16669
16878
  });
16670
- const handleValueChange = (0, import_react99.useCallback)(
16879
+ const handleValueChange = (0, import_react100.useCallback)(
16671
16880
  (arrayValue2) => {
16672
16881
  onValueChange(arrayValue2[0]);
16673
16882
  },
16674
16883
  [onValueChange]
16675
16884
  );
16676
16885
  const ratio = (arrayValue[0] - min) / (max - min);
16677
- return /* @__PURE__ */ import_react99.default.createElement(
16886
+ return /* @__PURE__ */ import_react100.default.createElement(
16678
16887
  import_radix_ui14.Slider.Root,
16679
16888
  {
16680
16889
  min,
@@ -16692,7 +16901,7 @@ var Slider = (0, import_react99.memo)(function Slider2({
16692
16901
  onBlur,
16693
16902
  disabled: readOnly
16694
16903
  },
16695
- /* @__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(
16696
16905
  "div",
16697
16906
  {
16698
16907
  className: "n-absolute n-h-full n-rounded-l n-bg-slider-active-background",
@@ -16701,7 +16910,7 @@ var Slider = (0, import_react99.memo)(function Slider2({
16701
16910
  width: `calc(${ratio * 100}% - ${ratio * 8}px - 2px)`
16702
16911
  }
16703
16912
  }
16704
- ), /* @__PURE__ */ import_react99.default.createElement(
16913
+ ), /* @__PURE__ */ import_react100.default.createElement(
16705
16914
  "div",
16706
16915
  {
16707
16916
  className: "n-absolute n-h-full n-rounded-r n-bg-input-background",
@@ -16711,7 +16920,7 @@ var Slider = (0, import_react99.memo)(function Slider2({
16711
16920
  }
16712
16921
  }
16713
16922
  )),
16714
- /* @__PURE__ */ import_react99.default.createElement(
16923
+ /* @__PURE__ */ import_react100.default.createElement(
16715
16924
  import_radix_ui14.Slider.Thumb,
16716
16925
  {
16717
16926
  style: thumbStyle,
@@ -16729,28 +16938,28 @@ var Slider = (0, import_react99.memo)(function Slider2({
16729
16938
  });
16730
16939
 
16731
16940
  // src/components/sorting/createSharedDrag.tsx
16732
- var React98 = __toESM(require("react"));
16941
+ var React99 = __toESM(require("react"));
16733
16942
  function createSharedDrag() {
16734
- const dragRegistrationContext = React98.createContext(null);
16735
- const activeDragContext = React98.createContext(
16943
+ const dragRegistrationContext = React99.createContext(null);
16944
+ const activeDragContext = React99.createContext(
16736
16945
  null
16737
16946
  );
16738
16947
  const sharedDragProps = {
16739
16948
  dragRegistrationContext,
16740
16949
  activeDragContext
16741
16950
  };
16742
- const Provider = (props) => /* @__PURE__ */ React98.createElement(SharedDragProvider, { sharedDragProps, ...props });
16951
+ const Provider = (props) => /* @__PURE__ */ React99.createElement(SharedDragProvider, { sharedDragProps, ...props });
16743
16952
  return {
16744
16953
  Provider,
16745
- Sortable: (props) => /* @__PURE__ */ React98.createElement(Sortable, { sharedDragProps, ...props }),
16954
+ Sortable: (props) => /* @__PURE__ */ React99.createElement(Sortable, { sharedDragProps, ...props }),
16746
16955
  props: sharedDragProps
16747
16956
  };
16748
16957
  }
16749
16958
 
16750
16959
  // src/components/Stepper.tsx
16751
16960
  var import_noya_utils19 = require("@noya-app/noya-utils");
16752
- var import_react100 = __toESM(require("react"));
16753
- var Stepper = (0, import_react100.memo)(function Stepper2({
16961
+ var import_react101 = __toESM(require("react"));
16962
+ var Stepper = (0, import_react101.memo)(function Stepper2({
16754
16963
  style: style2,
16755
16964
  className,
16756
16965
  value: valueProp,
@@ -16767,17 +16976,17 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16767
16976
  const { fieldId: id } = useLabel({
16768
16977
  fieldId: props.id
16769
16978
  });
16770
- const value = (0, import_react100.useMemo)(() => {
16979
+ const value = (0, import_react101.useMemo)(() => {
16771
16980
  return (0, import_noya_utils19.clamp)(valueProp, min, max);
16772
16981
  }, [valueProp, min, max]);
16773
- const handleValueChange = (0, import_react100.useCallback)(
16982
+ const handleValueChange = (0, import_react101.useCallback)(
16774
16983
  (value2) => {
16775
16984
  const newValue = (0, import_noya_utils19.clamp)(value2, min, max);
16776
16985
  onValueChange(newValue);
16777
16986
  },
16778
16987
  [onValueChange, min, max]
16779
16988
  );
16780
- return /* @__PURE__ */ import_react100.default.createElement(
16989
+ return /* @__PURE__ */ import_react101.default.createElement(
16781
16990
  "div",
16782
16991
  {
16783
16992
  id,
@@ -16789,7 +16998,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16789
16998
  onFocus,
16790
16999
  onBlur
16791
17000
  },
16792
- /* @__PURE__ */ import_react100.default.createElement(
17001
+ /* @__PURE__ */ import_react101.default.createElement(
16793
17002
  InputField2.Root,
16794
17003
  {
16795
17004
  className: "n-flex-1",
@@ -16797,7 +17006,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16797
17006
  startClassName: "-n-ml-[3px]",
16798
17007
  endWidth: 17,
16799
17008
  endClassName: "-n-mr-[3px]",
16800
- start: /* @__PURE__ */ import_react100.default.createElement(
17009
+ start: /* @__PURE__ */ import_react101.default.createElement(
16801
17010
  IconButton,
16802
17011
  {
16803
17012
  iconName: "MinusIcon",
@@ -16811,7 +17020,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16811
17020
  }
16812
17021
  }
16813
17022
  ),
16814
- end: /* @__PURE__ */ import_react100.default.createElement(
17023
+ end: /* @__PURE__ */ import_react101.default.createElement(
16815
17024
  IconButton,
16816
17025
  {
16817
17026
  iconName: "PlusIcon",
@@ -16826,7 +17035,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16826
17035
  }
16827
17036
  )
16828
17037
  },
16829
- /* @__PURE__ */ import_react100.default.createElement(
17038
+ /* @__PURE__ */ import_react101.default.createElement(
16830
17039
  InputField2.NumberInput,
16831
17040
  {
16832
17041
  value,
@@ -16841,7 +17050,7 @@ var Stepper = (0, import_react100.memo)(function Stepper2({
16841
17050
 
16842
17051
  // src/components/Switch.tsx
16843
17052
  var import_radix_ui15 = require("radix-ui");
16844
- var React100 = __toESM(require("react"));
17053
+ var React101 = __toESM(require("react"));
16845
17054
  var Switch = function Switch2({
16846
17055
  id,
16847
17056
  value,
@@ -16853,7 +17062,7 @@ var Switch = function Switch2({
16853
17062
  style: style2,
16854
17063
  className
16855
17064
  }) {
16856
- return /* @__PURE__ */ React100.createElement(
17065
+ return /* @__PURE__ */ React101.createElement(
16857
17066
  import_radix_ui15.Switch.Root,
16858
17067
  {
16859
17068
  id,
@@ -16872,12 +17081,12 @@ var Switch = function Switch2({
16872
17081
  onFocus,
16873
17082
  onBlur
16874
17083
  },
16875
- /* @__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]" })
16876
17085
  );
16877
17086
  };
16878
17087
 
16879
17088
  // src/components/Tabs.tsx
16880
- var React101 = __toESM(require("react"));
17089
+ var React102 = __toESM(require("react"));
16881
17090
  function Tabs({
16882
17091
  value,
16883
17092
  onValueChange,
@@ -16892,7 +17101,7 @@ function Tabs({
16892
17101
  value,
16893
17102
  onChange: onValueChange
16894
17103
  });
16895
- 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(
16896
17105
  SegmentedControl,
16897
17106
  {
16898
17107
  className: "n-flex-1",
@@ -16901,11 +17110,11 @@ function Tabs({
16901
17110
  variant,
16902
17111
  items: selectableItems
16903
17112
  }
16904
- )), /* @__PURE__ */ React101.createElement(Divider, null), renderContent({ value: activeTab }));
17113
+ )), /* @__PURE__ */ React102.createElement(Divider, null), renderContent({ value: activeTab }));
16905
17114
  }
16906
17115
 
16907
17116
  // src/components/UserPicker.tsx
16908
- var import_react101 = __toESM(require("react"));
17117
+ var import_react102 = __toESM(require("react"));
16909
17118
  function UserPicker({
16910
17119
  users,
16911
17120
  value,
@@ -16915,27 +17124,27 @@ function UserPicker({
16915
17124
  placeholder = "Search users...",
16916
17125
  ...rest
16917
17126
  }) {
16918
- const sortedUsers = (0, import_react101.useMemo)(() => {
17127
+ const sortedUsers = (0, import_react102.useMemo)(() => {
16919
17128
  return [...users].sort(
16920
17129
  (a, b) => getUserDisplayName(a).localeCompare(getUserDisplayName(b), void 0, {
16921
17130
  sensitivity: "base"
16922
17131
  })
16923
17132
  );
16924
17133
  }, [users]);
16925
- const usersById = (0, import_react101.useMemo)(() => {
17134
+ const usersById = (0, import_react102.useMemo)(() => {
16926
17135
  return new Map(sortedUsers.map((user) => [user.id, user]));
16927
17136
  }, [sortedUsers]);
16928
- const items = (0, import_react101.useMemo)(() => {
17137
+ const items = (0, import_react102.useMemo)(() => {
16929
17138
  return sortedUsers.map(createUserMenuItem);
16930
17139
  }, [sortedUsers]);
16931
17140
  const isControlled = value !== void 0;
16932
- const [uncontrolledValue, setUncontrolledValue] = (0, import_react101.useState)(defaultValue2);
17141
+ const [uncontrolledValue, setUncontrolledValue] = (0, import_react102.useState)(defaultValue2);
16933
17142
  const selectedUserId = isControlled ? value : uncontrolledValue;
16934
- const selectedItem = (0, import_react101.useMemo)(() => {
17143
+ const selectedItem = (0, import_react102.useMemo)(() => {
16935
17144
  if (!selectedUserId) return void 0;
16936
17145
  return items.find((item) => item.value === selectedUserId);
16937
17146
  }, [items, selectedUserId]);
16938
- const updateSelectedUserId = (0, import_react101.useCallback)(
17147
+ const updateSelectedUserId = (0, import_react102.useCallback)(
16939
17148
  (userId) => {
16940
17149
  if (!isControlled) {
16941
17150
  setUncontrolledValue(userId);
@@ -16944,14 +17153,14 @@ function UserPicker({
16944
17153
  },
16945
17154
  [isControlled, onChangeUserId]
16946
17155
  );
16947
- const handleSelectItem = (0, import_react101.useCallback)(
17156
+ const handleSelectItem = (0, import_react102.useCallback)(
16948
17157
  (item) => {
16949
17158
  updateSelectedUserId(item.value);
16950
17159
  onSelectUser?.(usersById.get(item.value));
16951
17160
  },
16952
17161
  [updateSelectedUserId, onSelectUser, usersById]
16953
17162
  );
16954
- return /* @__PURE__ */ import_react101.default.createElement(
17163
+ return /* @__PURE__ */ import_react102.default.createElement(
16955
17164
  Combobox,
16956
17165
  {
16957
17166
  ...rest,
@@ -16975,7 +17184,7 @@ function createUserMenuItem(user) {
16975
17184
  return {
16976
17185
  value: user.id,
16977
17186
  title,
16978
- icon: /* @__PURE__ */ import_react101.default.createElement("div", { className: "n-relative n-w-[15px] n-h-[15px]" }, /* @__PURE__ */ import_react101.default.createElement(
17187
+ icon: /* @__PURE__ */ import_react102.default.createElement("div", { className: "n-relative n-w-[15px] n-h-[15px]" }, /* @__PURE__ */ import_react102.default.createElement(
16979
17188
  Avatar,
16980
17189
  {
16981
17190
  size: 15 + overflow * 2,
@@ -16994,15 +17203,15 @@ function createUserMenuItem(user) {
16994
17203
  }
16995
17204
 
16996
17205
  // src/components/UserPointer.tsx
16997
- var import_react102 = __toESM(require("react"));
16998
- var UserPointerContainer = (0, import_react102.memo)(function UserPointerContainer2({
17206
+ var import_react103 = __toESM(require("react"));
17207
+ var UserPointerContainer = (0, import_react103.memo)(function UserPointerContainer2({
16999
17208
  point,
17000
17209
  visible,
17001
17210
  children,
17002
17211
  className,
17003
17212
  style: style2
17004
17213
  }) {
17005
- return /* @__PURE__ */ import_react102.default.createElement(
17214
+ return /* @__PURE__ */ import_react103.default.createElement(
17006
17215
  "div",
17007
17216
  {
17008
17217
  style: {
@@ -17019,7 +17228,7 @@ var UserPointerContainer = (0, import_react102.memo)(function UserPointerContain
17019
17228
  children
17020
17229
  );
17021
17230
  });
17022
- var UserNameTag = (0, import_react102.memo)(function UserNameTag2({
17231
+ var UserNameTag = (0, import_react103.memo)(function UserNameTag2({
17023
17232
  backgroundColor,
17024
17233
  className,
17025
17234
  style: style2,
@@ -17028,7 +17237,7 @@ var UserNameTag = (0, import_react102.memo)(function UserNameTag2({
17028
17237
  size = "medium",
17029
17238
  bordered = true
17030
17239
  }) {
17031
- return /* @__PURE__ */ import_react102.default.createElement(
17240
+ return /* @__PURE__ */ import_react103.default.createElement(
17032
17241
  "span",
17033
17242
  {
17034
17243
  className: cx(
@@ -17047,14 +17256,14 @@ var UserNameTag = (0, import_react102.memo)(function UserNameTag2({
17047
17256
  children
17048
17257
  );
17049
17258
  });
17050
- var UserPointerIcon = (0, import_react102.memo)(function PointerIcon({
17259
+ var UserPointerIcon = (0, import_react103.memo)(function PointerIcon({
17051
17260
  size,
17052
17261
  color = "black",
17053
17262
  className,
17054
17263
  style: style2
17055
17264
  }) {
17056
17265
  const points = "0,5 10,0 10,10";
17057
- return /* @__PURE__ */ import_react102.default.createElement(
17266
+ return /* @__PURE__ */ import_react103.default.createElement(
17058
17267
  "svg",
17059
17268
  {
17060
17269
  width: size,
@@ -17069,7 +17278,7 @@ var UserPointerIcon = (0, import_react102.memo)(function PointerIcon({
17069
17278
  ...style2
17070
17279
  }
17071
17280
  },
17072
- /* @__PURE__ */ import_react102.default.createElement(
17281
+ /* @__PURE__ */ import_react103.default.createElement(
17073
17282
  "polygon",
17074
17283
  {
17075
17284
  points,
@@ -17082,7 +17291,7 @@ var UserPointerIcon = (0, import_react102.memo)(function PointerIcon({
17082
17291
  });
17083
17292
  var POINTER_SIZE = 12;
17084
17293
  var POINTER_OVERLAP = 6;
17085
- var UserPointer = (0, import_react102.memo)(function UserPointer2({
17294
+ var UserPointer = (0, import_react103.memo)(function UserPointer2({
17086
17295
  userId,
17087
17296
  name,
17088
17297
  visible = true,
@@ -17095,22 +17304,22 @@ var UserPointer = (0, import_react102.memo)(function UserPointer2({
17095
17304
  labelSize = "medium",
17096
17305
  bordered = true
17097
17306
  }) {
17098
- const userBackgroundColor = (0, import_react102.useMemo)(
17307
+ const userBackgroundColor = (0, import_react103.useMemo)(
17099
17308
  () => backgroundColor ?? colorFromString(userId ?? name ?? ""),
17100
17309
  [backgroundColor, userId, name]
17101
17310
  );
17102
- const pointerOverlapStyle = (0, import_react102.useMemo)(
17311
+ const pointerOverlapStyle = (0, import_react103.useMemo)(
17103
17312
  () => ({
17104
17313
  marginRight: `-${POINTER_OVERLAP}px`,
17105
17314
  marginBottom: `-${POINTER_OVERLAP}px`
17106
17315
  }),
17107
17316
  []
17108
17317
  );
17109
- const nameTagOverlapStyle = (0, import_react102.useMemo)(
17318
+ const nameTagOverlapStyle = (0, import_react103.useMemo)(
17110
17319
  () => ({ marginLeft: `${POINTER_SIZE - POINTER_OVERLAP + 1}px` }),
17111
17320
  []
17112
17321
  );
17113
- return /* @__PURE__ */ import_react102.default.createElement(
17322
+ return /* @__PURE__ */ import_react103.default.createElement(
17114
17323
  UserPointerContainer,
17115
17324
  {
17116
17325
  point,
@@ -17118,14 +17327,14 @@ var UserPointer = (0, import_react102.memo)(function UserPointer2({
17118
17327
  className,
17119
17328
  style: style2
17120
17329
  },
17121
- name && /* @__PURE__ */ import_react102.default.createElement("div", { className: "n-relative" }, showPointerIcon && /* @__PURE__ */ import_react102.default.createElement(
17330
+ name && /* @__PURE__ */ import_react103.default.createElement("div", { className: "n-relative" }, showPointerIcon && /* @__PURE__ */ import_react103.default.createElement(
17122
17331
  UserPointerIcon,
17123
17332
  {
17124
17333
  size: POINTER_SIZE,
17125
17334
  color: userBackgroundColor,
17126
17335
  style: pointerOverlapStyle
17127
17336
  }
17128
- ), /* @__PURE__ */ import_react102.default.createElement(
17337
+ ), /* @__PURE__ */ import_react103.default.createElement(
17129
17338
  UserNameTag,
17130
17339
  {
17131
17340
  backgroundColor: userBackgroundColor,
@@ -17141,10 +17350,10 @@ var UserPointer = (0, import_react102.memo)(function UserPointer2({
17141
17350
 
17142
17351
  // src/components/workspace/WorkspaceLayout.tsx
17143
17352
  var import_noya_keymap7 = require("@noya-app/noya-keymap");
17144
- var import_react109 = __toESM(require("react"));
17353
+ var import_react110 = __toESM(require("react"));
17145
17354
 
17146
17355
  // src/components/workspace/DrawerWorkspaceLayout.tsx
17147
- var import_react106 = __toESM(require("react"));
17356
+ var import_react107 = __toESM(require("react"));
17148
17357
 
17149
17358
  // src/components/workspace/constants.ts
17150
17359
  var EDITOR_PANEL_GROUP_ID = "editor-panel-group";
@@ -17153,17 +17362,17 @@ var RIGHT_SIDEBAR_ID = "editor-3-right-sidebar";
17153
17362
  var CONTENT_AREA_ID = "editor-2-content-area";
17154
17363
 
17155
17364
  // src/components/workspace/VerticalTabMenu.tsx
17156
- var import_react105 = __toESM(require("react"));
17365
+ var import_react106 = __toESM(require("react"));
17157
17366
 
17158
17367
  // src/components/Toolbar.tsx
17159
17368
  var import_noya_keymap6 = require("@noya-app/noya-keymap");
17160
- var import_react104 = __toESM(require("react"));
17369
+ var import_react105 = __toESM(require("react"));
17161
17370
 
17162
17371
  // src/components/ToolbarDrawer.tsx
17163
- var import_react103 = __toESM(require("react"));
17164
- var ToolbarDrawer = (0, import_react103.memo)(
17165
- (0, import_react103.forwardRef)(function ToolbarDrawer2({ children, trigger, sideOffset = 8 }, ref) {
17166
- return /* @__PURE__ */ import_react103.default.createElement("div", { className: "n-relative", ref }, /* @__PURE__ */ import_react103.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(
17167
17376
  "div",
17168
17377
  {
17169
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",
@@ -17179,13 +17388,13 @@ var ToolbarDrawer = (0, import_react103.memo)(
17179
17388
 
17180
17389
  // src/components/Toolbar.tsx
17181
17390
  var SIDE_OFFSET = 6;
17182
- var ToolbarMenuContext = (0, import_react104.createContext)({});
17391
+ var ToolbarMenuContext = (0, import_react105.createContext)({});
17183
17392
  var ToolbarMenuDropdown = memoGeneric(function ToolbarMenuDropdown2({
17184
17393
  item,
17185
17394
  onSelectMenuItem
17186
17395
  }) {
17187
- const [open, setOpen] = import_react104.default.useState(false);
17188
- return /* @__PURE__ */ import_react104.default.createElement(
17396
+ const [open, setOpen] = import_react105.default.useState(false);
17397
+ return /* @__PURE__ */ import_react105.default.createElement(
17189
17398
  DropdownMenu,
17190
17399
  {
17191
17400
  open,
@@ -17197,7 +17406,7 @@ var ToolbarMenuDropdown = memoGeneric(function ToolbarMenuDropdown2({
17197
17406
  }
17198
17407
  }
17199
17408
  },
17200
- /* @__PURE__ */ import_react104.default.createElement(
17409
+ /* @__PURE__ */ import_react105.default.createElement(
17201
17410
  Button,
17202
17411
  {
17203
17412
  disabled: item.disabled,
@@ -17213,7 +17422,7 @@ var ToolbarShortcut = ({
17213
17422
  shortcut,
17214
17423
  label
17215
17424
  }) => {
17216
- return /* @__PURE__ */ import_react104.default.createElement("div", { className: "n-flex n-items-center" }, label, /* @__PURE__ */ import_react104.default.createElement(Spacer.Horizontal, { size: 6 }), /* @__PURE__ */ import_react104.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 }));
17217
17426
  };
17218
17427
  var ToolbarMenuPopover = memoGeneric(function ToolbarMenuPopover2({
17219
17428
  item,
@@ -17227,8 +17436,8 @@ var ToolbarMenuPopover = memoGeneric(function ToolbarMenuPopover2({
17227
17436
  content: itemContent,
17228
17437
  checked
17229
17438
  } = item;
17230
- const [open, setOpen] = import_react104.default.useState(false);
17231
- const content = /* @__PURE__ */ import_react104.default.createElement("span", null, /* @__PURE__ */ import_react104.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(
17232
17441
  Popover,
17233
17442
  {
17234
17443
  open,
@@ -17237,7 +17446,7 @@ var ToolbarMenuPopover = memoGeneric(function ToolbarMenuPopover2({
17237
17446
  showArrow: false,
17238
17447
  sideOffset: SIDE_OFFSET,
17239
17448
  portalContainer,
17240
- trigger: /* @__PURE__ */ import_react104.default.createElement(
17449
+ trigger: /* @__PURE__ */ import_react105.default.createElement(
17241
17450
  Button,
17242
17451
  {
17243
17452
  disabled,
@@ -17250,7 +17459,7 @@ var ToolbarMenuPopover = memoGeneric(function ToolbarMenuPopover2({
17250
17459
  },
17251
17460
  typeof itemContent === "function" ? itemContent({ close: () => setOpen(false) }) : itemContent
17252
17461
  ));
17253
- return tooltip && !open ? /* @__PURE__ */ import_react104.default.createElement(
17462
+ return tooltip && !open ? /* @__PURE__ */ import_react105.default.createElement(
17254
17463
  Tooltip,
17255
17464
  {
17256
17465
  sideOffset: SIDE_OFFSET,
@@ -17270,7 +17479,7 @@ var ToolbarMenuButton = memoGeneric(function ToolbarMenuButton2({
17270
17479
  displayFilter
17271
17480
  }) {
17272
17481
  const isActive = item.checked || activeValue === item.value;
17273
- const content = /* @__PURE__ */ import_react104.default.createElement(
17482
+ const content = /* @__PURE__ */ import_react105.default.createElement(
17274
17483
  Button,
17275
17484
  {
17276
17485
  as,
@@ -17287,7 +17496,7 @@ var ToolbarMenuButton = memoGeneric(function ToolbarMenuButton2({
17287
17496
  displayFilter === "iconOnly" ? void 0 : item.title
17288
17497
  );
17289
17498
  const tooltip = item.tooltip ?? (displayFilter === "iconOnly" && item.title ? item.title : void 0);
17290
- return item.drawer && isActive ? /* @__PURE__ */ import_react104.default.createElement(ToolbarDrawer, { trigger: content }, item.drawer) : tooltip ? /* @__PURE__ */ import_react104.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;
17291
17500
  });
17292
17501
  var ToolbarMenuItem = memoGeneric(function ToolbarMenuItem2({
17293
17502
  item,
@@ -17299,17 +17508,17 @@ var ToolbarMenuItem = memoGeneric(function ToolbarMenuItem2({
17299
17508
  displayFilter,
17300
17509
  dividerOverflow: dividerOverflowProp
17301
17510
  }) {
17302
- const { dividerOverflow: contextDividerOverflow } = (0, import_react104.useContext)(ToolbarMenuContext);
17511
+ const { dividerOverflow: contextDividerOverflow } = (0, import_react105.useContext)(ToolbarMenuContext);
17303
17512
  const dividerOverflow = dividerOverflowProp ?? contextDividerOverflow ?? 4;
17304
17513
  if (item.type === "sectionHeader") return null;
17305
17514
  if (item.type === "separator") {
17306
- return /* @__PURE__ */ import_react104.default.createElement(DividerVertical, { overflow: dividerOverflow });
17515
+ return /* @__PURE__ */ import_react105.default.createElement(DividerVertical, { overflow: dividerOverflow });
17307
17516
  }
17308
17517
  if (item.type === "popover") {
17309
- return /* @__PURE__ */ import_react104.default.createElement(ToolbarMenuPopover, { item, portalContainer });
17518
+ return /* @__PURE__ */ import_react105.default.createElement(ToolbarMenuPopover, { item, portalContainer });
17310
17519
  }
17311
17520
  if (isSelectableMenuItem(item)) {
17312
- return /* @__PURE__ */ import_react104.default.createElement(
17521
+ return /* @__PURE__ */ import_react105.default.createElement(
17313
17522
  ToolbarMenuButton,
17314
17523
  {
17315
17524
  item,
@@ -17321,7 +17530,7 @@ var ToolbarMenuItem = memoGeneric(function ToolbarMenuItem2({
17321
17530
  }
17322
17531
  );
17323
17532
  }
17324
- return /* @__PURE__ */ import_react104.default.createElement(ToolbarMenuDropdown, { item, onSelectMenuItem });
17533
+ return /* @__PURE__ */ import_react105.default.createElement(ToolbarMenuDropdown, { item, onSelectMenuItem });
17325
17534
  });
17326
17535
  var ToolbarMenu = memoGeneric(function ToolbarMenu2({
17327
17536
  items,
@@ -17333,8 +17542,8 @@ var ToolbarMenu = memoGeneric(function ToolbarMenu2({
17333
17542
  displayFilter = "iconAndText",
17334
17543
  dividerOverflow
17335
17544
  }) {
17336
- return /* @__PURE__ */ import_react104.default.createElement(import_react104.default.Fragment, null, items.map((item, i) => {
17337
- return /* @__PURE__ */ import_react104.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(
17338
17547
  ToolbarMenuItem,
17339
17548
  {
17340
17549
  key: i,
@@ -17359,21 +17568,21 @@ function Toolbar({
17359
17568
  shouldBindKeyboardShortcuts = true,
17360
17569
  dividerOverflow
17361
17570
  }) {
17362
- const allMenuItems = import_react104.default.useMemo(
17571
+ const allMenuItems = import_react105.default.useMemo(
17363
17572
  () => [...leftMenuItems, ...rightMenuItems],
17364
17573
  [leftMenuItems, rightMenuItems]
17365
17574
  );
17366
17575
  (0, import_noya_keymap6.useKeyboardShortcuts)(
17367
- import_react104.default.useMemo(
17576
+ import_react105.default.useMemo(
17368
17577
  () => onSelectMenuItem && shouldBindKeyboardShortcuts ? getKeyboardShortcutsForMenuItems(allMenuItems, onSelectMenuItem) : {},
17369
17578
  [allMenuItems, onSelectMenuItem, shouldBindKeyboardShortcuts]
17370
17579
  )
17371
17580
  );
17372
- return /* @__PURE__ */ import_react104.default.createElement(
17581
+ return /* @__PURE__ */ import_react105.default.createElement(
17373
17582
  BaseToolbar,
17374
17583
  {
17375
17584
  logo,
17376
- left: leftMenuItems.length > 0 && /* @__PURE__ */ import_react104.default.createElement("div", { className: "n-flex n-gap-2" }, /* @__PURE__ */ import_react104.default.createElement(
17585
+ left: leftMenuItems.length > 0 && /* @__PURE__ */ import_react105.default.createElement("div", { className: "n-flex n-gap-2" }, /* @__PURE__ */ import_react105.default.createElement(
17377
17586
  ToolbarMenu,
17378
17587
  {
17379
17588
  items: leftMenuItems,
@@ -17381,7 +17590,7 @@ function Toolbar({
17381
17590
  dividerOverflow
17382
17591
  }
17383
17592
  )),
17384
- right: rightMenuItems.length > 0 && /* @__PURE__ */ import_react104.default.createElement("div", { className: "n-flex n-gap-2" }, /* @__PURE__ */ import_react104.default.createElement(
17593
+ right: rightMenuItems.length > 0 && /* @__PURE__ */ import_react105.default.createElement("div", { className: "n-flex n-gap-2" }, /* @__PURE__ */ import_react105.default.createElement(
17385
17594
  ToolbarMenu,
17386
17595
  {
17387
17596
  items: rightMenuItems,
@@ -17402,19 +17611,19 @@ var VerticalTabMenu = memoGeneric(function VerticalTabMenu2({
17402
17611
  onChange,
17403
17612
  tooltipSide
17404
17613
  }) {
17405
- const style2 = (0, import_react105.useMemo)(() => {
17614
+ const style2 = (0, import_react106.useMemo)(() => {
17406
17615
  return {
17407
17616
  [cssVarNames.colors.inputBackground]: "transparent",
17408
17617
  [cssVarNames.colors.buttonBackground]: "transparent"
17409
17618
  };
17410
17619
  }, []);
17411
- return /* @__PURE__ */ import_react105.default.createElement(
17620
+ return /* @__PURE__ */ import_react106.default.createElement(
17412
17621
  "div",
17413
17622
  {
17414
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",
17415
17624
  style: style2
17416
17625
  },
17417
- /* @__PURE__ */ import_react105.default.createElement(
17626
+ /* @__PURE__ */ import_react106.default.createElement(
17418
17627
  ToolbarMenu,
17419
17628
  {
17420
17629
  items,
@@ -17442,12 +17651,12 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17442
17651
  onChangeLeftTab,
17443
17652
  compactDrawerMenu
17444
17653
  }) {
17445
- const portalContainer = (0, import_react106.useRef)(null);
17446
- const [{ leftSidebarCollapsed, rightSidebarCollapsed }, setLayoutState] = (0, import_react106.useState)({
17654
+ const portalContainer = (0, import_react107.useRef)(null);
17655
+ const [{ leftSidebarCollapsed, rightSidebarCollapsed }, setLayoutState] = (0, import_react107.useState)({
17447
17656
  leftSidebarCollapsed: true,
17448
17657
  rightSidebarCollapsed: true
17449
17658
  });
17450
- const allTabItems = (0, import_react106.useMemo)(
17659
+ const allTabItems = (0, import_react107.useMemo)(
17451
17660
  () => [
17452
17661
  ...leftPanel ? leftTabItems ?? [] : [],
17453
17662
  ...rightPanel ? rightTabItems ?? [] : []
@@ -17455,16 +17664,16 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17455
17664
  [leftTabItems, rightTabItems, leftPanel, rightPanel]
17456
17665
  );
17457
17666
  const hasTabs = allTabItems.length > 0;
17458
- const allSelectableTabItems = (0, import_react106.useMemo)(
17667
+ const allSelectableTabItems = (0, import_react107.useMemo)(
17459
17668
  () => allTabItems.filter(isSelectableMenuItem),
17460
17669
  [allTabItems]
17461
17670
  );
17462
17671
  const useCompactInToolbar = !!compactDrawerMenu && allSelectableTabItems.length <= 1;
17463
- const leftSelectableTabItems = (0, import_react106.useMemo)(
17672
+ const leftSelectableTabItems = (0, import_react107.useMemo)(
17464
17673
  () => (leftTabItems ?? []).filter(isSelectableMenuItem),
17465
17674
  [leftTabItems]
17466
17675
  );
17467
- const rightSelectableTabItems = (0, import_react106.useMemo)(
17676
+ const rightSelectableTabItems = (0, import_react107.useMemo)(
17468
17677
  () => (rightTabItems ?? []).filter(isSelectableMenuItem),
17469
17678
  [rightTabItems]
17470
17679
  );
@@ -17501,14 +17710,14 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17501
17710
  activeValue: rightTabValue,
17502
17711
  isSidebarCollapsed: rightSidebarCollapsed
17503
17712
  } : { activeValue: void 0, isSidebarCollapsed: true };
17504
- return /* @__PURE__ */ import_react106.default.createElement(
17713
+ return /* @__PURE__ */ import_react107.default.createElement(
17505
17714
  "div",
17506
17715
  {
17507
17716
  ref: portalContainer,
17508
17717
  id: EDITOR_PANEL_GROUP_ID,
17509
17718
  className: "n-flex n-flex-1 n-relative focus:n-outline-none"
17510
17719
  },
17511
- hasTabs && !useCompactInToolbar && /* @__PURE__ */ import_react106.default.createElement(import_react106.default.Fragment, null, /* @__PURE__ */ import_react106.default.createElement(
17720
+ hasTabs && !useCompactInToolbar && /* @__PURE__ */ import_react107.default.createElement(import_react107.default.Fragment, null, /* @__PURE__ */ import_react107.default.createElement(
17512
17721
  VerticalTabMenu,
17513
17722
  {
17514
17723
  tooltipSide: "right",
@@ -17517,8 +17726,8 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17517
17726
  isSidebarCollapsed,
17518
17727
  onChange: (value) => handleSelectTab(value)
17519
17728
  }
17520
- ), /* @__PURE__ */ import_react106.default.createElement(DividerVertical, { className: "n-h-full" })),
17521
- useCompactInToolbar && /* @__PURE__ */ import_react106.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_react106.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(
17522
17731
  Button,
17523
17732
  {
17524
17733
  variant: "none",
@@ -17541,8 +17750,8 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17541
17750
  }
17542
17751
  }
17543
17752
  )),
17544
- /* @__PURE__ */ import_react106.default.createElement("div", { className: "n-flex-1 n-flex n-relative" }, centerPanel),
17545
- leftPanel && /* @__PURE__ */ import_react106.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(
17546
17755
  Drawer,
17547
17756
  {
17548
17757
  ref: leftSidebarRef,
@@ -17563,7 +17772,7 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17563
17772
  },
17564
17773
  leftPanel
17565
17774
  ),
17566
- rightPanel && /* @__PURE__ */ import_react106.default.createElement(
17775
+ rightPanel && /* @__PURE__ */ import_react107.default.createElement(
17567
17776
  Drawer,
17568
17777
  {
17569
17778
  id: RIGHT_SIDEBAR_ID,
@@ -17589,7 +17798,7 @@ var DrawerWorkspaceLayout = memoGeneric(function DrawerWorkspaceLayout2({
17589
17798
  });
17590
17799
 
17591
17800
  // src/components/workspace/PanelWorkspaceLayout.tsx
17592
- var import_react107 = __toESM(require("react"));
17801
+ var import_react108 = __toESM(require("react"));
17593
17802
  var import_react_resizable_panels = require("react-resizable-panels");
17594
17803
 
17595
17804
  // src/components/workspace/panelStorage.ts
@@ -17755,11 +17964,11 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17755
17964
  onChangeRightTab,
17756
17965
  compactDrawerMenu
17757
17966
  }) {
17758
- const panelGroupRef = (0, import_react107.useRef)(null);
17967
+ const panelGroupRef = (0, import_react108.useRef)(null);
17759
17968
  const hasLeftPanel = !!leftPanel;
17760
17969
  const hasRightPanel = !!rightPanel;
17761
17970
  const hasCenterPanel = !!centerPanel;
17762
- const autoSaveId = (0, import_react107.useMemo)(() => {
17971
+ const autoSaveId = (0, import_react108.useMemo)(() => {
17763
17972
  return autoSavePrefix ? `${autoSavePrefix}--v2--${EDITOR_PANEL_GROUP_ID}` : Math.random().toString(36).substring(2, 15);
17764
17973
  }, [autoSavePrefix]);
17765
17974
  const layoutIds = getLayoutIds({
@@ -17786,7 +17995,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17786
17995
  });
17787
17996
  const [data, setData] = usePersistentStateObject(clientStorage, storageKey, {});
17788
17997
  const layoutGroup = data?.[propertyKey];
17789
- const { leftSidebarCollapsed, rightSidebarCollapsed } = (0, import_react107.useMemo)(() => {
17998
+ const { leftSidebarCollapsed, rightSidebarCollapsed } = (0, import_react108.useMemo)(() => {
17790
17999
  return getLayoutCollapsedState({
17791
18000
  layoutGroup,
17792
18001
  propertyKey,
@@ -17795,7 +18004,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17795
18004
  hasRightPanel
17796
18005
  });
17797
18006
  }, [layoutGroup, propertyKey, layoutIds, hasLeftPanel, hasRightPanel]);
17798
- const handleLeftTabChange = (0, import_react107.useCallback)(
18007
+ const handleLeftTabChange = (0, import_react108.useCallback)(
17799
18008
  (value) => {
17800
18009
  if (value === leftTabValue) {
17801
18010
  if (leftSidebarRef.current?.isExpanded()) {
@@ -17812,7 +18021,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17812
18021
  },
17813
18022
  [leftSidebarRef, leftTabValue, onChangeLeftTab]
17814
18023
  );
17815
- const handleRightTabChange = (0, import_react107.useCallback)(
18024
+ const handleRightTabChange = (0, import_react108.useCallback)(
17816
18025
  (value) => {
17817
18026
  if (value === rightTabValue) {
17818
18027
  if (rightSidebarRef.current?.isExpanded()) {
@@ -17829,7 +18038,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17829
18038
  },
17830
18039
  [onChangeRightTab, rightSidebarRef, rightTabValue]
17831
18040
  );
17832
- const handleLayoutChange = (0, import_react107.useCallback)(
18041
+ const handleLayoutChange = (0, import_react108.useCallback)(
17833
18042
  (layout) => {
17834
18043
  setData((prev) => {
17835
18044
  const newData = {
@@ -17847,7 +18056,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17847
18056
  const showLeftTabs = !!leftSidebarOptions.showTabs && !!leftTabItems && // When compact drawer UI is enabled, only show the rail when the
17848
18057
  // sidebar is collapsed (for large screens/panel layout).
17849
18058
  (!compactDrawerMenu || leftSidebarCollapsed);
17850
- return /* @__PURE__ */ import_react107.default.createElement(
18059
+ return /* @__PURE__ */ import_react108.default.createElement(
17851
18060
  import_react_resizable_panels.PanelGroup,
17852
18061
  {
17853
18062
  ref: panelGroupRef,
@@ -17858,7 +18067,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17858
18067
  autoSaveId,
17859
18068
  onLayout: handleLayoutChange
17860
18069
  },
17861
- leftPanel && /* @__PURE__ */ import_react107.default.createElement(import_react107.default.Fragment, null, showLeftTabs && /* @__PURE__ */ import_react107.default.createElement(
18070
+ leftPanel && /* @__PURE__ */ import_react108.default.createElement(import_react108.default.Fragment, null, showLeftTabs && /* @__PURE__ */ import_react108.default.createElement(
17862
18071
  VerticalTabMenu,
17863
18072
  {
17864
18073
  tooltipSide: "right",
@@ -17867,7 +18076,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17867
18076
  isSidebarCollapsed: leftSidebarCollapsed,
17868
18077
  onChange: handleLeftTabChange
17869
18078
  }
17870
- ), showLeftTabs && !leftSidebarCollapsed && /* @__PURE__ */ import_react107.default.createElement(DividerVertical, { className: "n-h-full" }), /* @__PURE__ */ import_react107.default.createElement(
18079
+ ), showLeftTabs && !leftSidebarCollapsed && /* @__PURE__ */ import_react108.default.createElement(DividerVertical, { className: "n-h-full" }), /* @__PURE__ */ import_react108.default.createElement(
17871
18080
  import_react_resizable_panels.Panel,
17872
18081
  {
17873
18082
  id: LEFT_SIDEBAR_ID,
@@ -17880,8 +18089,8 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17880
18089
  collapsible: true
17881
18090
  },
17882
18091
  leftSidebarCollapsed ? null : leftPanel
17883
- ), /* @__PURE__ */ import_react107.default.createElement(import_react_resizable_panels.PanelResizeHandle, { className: "n-cursor-col-resize n-w-px n-h-full n-bg-divider" })),
17884
- /* @__PURE__ */ import_react107.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(
17885
18094
  import_react_resizable_panels.Panel,
17886
18095
  {
17887
18096
  id: CONTENT_AREA_ID,
@@ -17892,7 +18101,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17892
18101
  },
17893
18102
  centerPanel
17894
18103
  ),
17895
- rightPanel && /* @__PURE__ */ import_react107.default.createElement(import_react107.default.Fragment, null, /* @__PURE__ */ import_react107.default.createElement(import_react_resizable_panels.PanelResizeHandle, { className: "n-cursor-col-resize n-w-px n-h-full n-bg-divider" }), /* @__PURE__ */ import_react107.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(
17896
18105
  import_react_resizable_panels.Panel,
17897
18106
  {
17898
18107
  id: RIGHT_SIDEBAR_ID,
@@ -17905,7 +18114,7 @@ var PanelWorkspaceLayout = memoGeneric(function PanelWorkspaceLayout2({
17905
18114
  collapsible: true
17906
18115
  },
17907
18116
  rightSidebarCollapsed ? null : rightPanel
17908
- ), rightSidebarOptions.showTabs && rightTabItems && !rightSidebarCollapsed && /* @__PURE__ */ import_react107.default.createElement(DividerVertical, { className: "n-h-full" }), rightSidebarOptions.showTabs && rightTabItems && /* @__PURE__ */ import_react107.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(
17909
18118
  VerticalTabMenu,
17910
18119
  {
17911
18120
  tooltipSide: "left",
@@ -17927,11 +18136,11 @@ function renderPanelChildren(fn, props) {
17927
18136
  }
17928
18137
 
17929
18138
  // src/components/workspace/WorkspaceSideContext.tsx
17930
- var import_react108 = require("react");
17931
- var WorkspaceSideContext = (0, import_react108.createContext)({});
18139
+ var import_react109 = require("react");
18140
+ var WorkspaceSideContext = (0, import_react109.createContext)({});
17932
18141
  var WorkspaceSideProvider = WorkspaceSideContext.Provider;
17933
18142
  function useWorkspaceSide() {
17934
- return (0, import_react108.useContext)(WorkspaceSideContext);
18143
+ return (0, import_react109.useContext)(WorkspaceSideContext);
17935
18144
  }
17936
18145
 
17937
18146
  // src/components/workspace/WorkspaceLayout.tsx
@@ -17994,7 +18203,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
17994
18203
  theme,
17995
18204
  compactDrawerMenu
17996
18205
  }, forwardedRef) {
17997
- const containerRef = import_react109.default.useRef(null);
18206
+ const containerRef = import_react110.default.useRef(null);
17998
18207
  const containerSize = useSize(containerRef);
17999
18208
  const windowSize = useWindowSize();
18000
18209
  const parentSize = detectSize === "window" ? windowSize : containerSize && containerSize.width > 0 ? containerSize : windowSize;
@@ -18025,8 +18234,8 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18025
18234
  rightSidebarMinPercentage,
18026
18235
  rightSidebarMaxPercentage
18027
18236
  );
18028
- const leftSidebarRef = (0, import_react109.useRef)(null);
18029
- const rightSidebarRef = (0, import_react109.useRef)(null);
18237
+ const leftSidebarRef = (0, import_react110.useRef)(null);
18238
+ const rightSidebarRef = (0, import_react110.useRef)(null);
18030
18239
  const [leftTabValue, setLeftTabValue] = useControlledOrUncontrolled({
18031
18240
  value: leftTabValueProp,
18032
18241
  onChange: onChangeLeftTab,
@@ -18037,7 +18246,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18037
18246
  onChange: onChangeRightTab,
18038
18247
  defaultValue: getFirstTabValue(rightTabItems, "")
18039
18248
  });
18040
- (0, import_react109.useImperativeHandle)(forwardedRef, () => ({
18249
+ (0, import_react110.useImperativeHandle)(forwardedRef, () => ({
18041
18250
  setLeftExpanded: (expanded) => {
18042
18251
  if (expanded) {
18043
18252
  leftSidebarRef.current?.expand();
@@ -18095,56 +18304,56 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18095
18304
  });
18096
18305
  const centerPanelPercentage = 100 - (left ? leftSidebarPercentage : 0) - (right ? rightSidebarPercentage : 0);
18097
18306
  const isDrawerActive = sideType === "drawer" || sideType === "auto" && parentSize.width <= sideTypeBreakpoint;
18098
- const closeLeftSidebar = (0, import_react109.useCallback)(() => {
18307
+ const closeLeftSidebar = (0, import_react110.useCallback)(() => {
18099
18308
  if (isDrawerActive) {
18100
18309
  leftSidebarRef.current?.collapse();
18101
18310
  }
18102
18311
  }, [isDrawerActive]);
18103
- const closeRightSidebar = (0, import_react109.useCallback)(() => {
18312
+ const closeRightSidebar = (0, import_react110.useCallback)(() => {
18104
18313
  if (isDrawerActive) {
18105
18314
  rightSidebarRef.current?.collapse();
18106
18315
  }
18107
18316
  }, [isDrawerActive]);
18108
- const leftChildrenProps = (0, import_react109.useMemo)(() => {
18317
+ const leftChildrenProps = (0, import_react110.useMemo)(() => {
18109
18318
  return {
18110
18319
  activeTabValue: leftTabValue,
18111
18320
  closeSidebar: closeLeftSidebar
18112
18321
  };
18113
18322
  }, [leftTabValue, closeLeftSidebar]);
18114
- const rightChildrenProps = (0, import_react109.useMemo)(() => {
18323
+ const rightChildrenProps = (0, import_react110.useMemo)(() => {
18115
18324
  return {
18116
18325
  activeTabValue: rightTabValue,
18117
18326
  closeSidebar: closeRightSidebar
18118
18327
  };
18119
18328
  }, [rightTabValue, closeRightSidebar]);
18120
- const leftSidebarProviderValue = (0, import_react109.useMemo)(() => {
18329
+ const leftSidebarProviderValue = (0, import_react110.useMemo)(() => {
18121
18330
  return {
18122
18331
  closeSidebar: closeLeftSidebar
18123
18332
  };
18124
18333
  }, [closeLeftSidebar]);
18125
- const rightSidebarProviderValue = (0, import_react109.useMemo)(() => {
18334
+ const rightSidebarProviderValue = (0, import_react110.useMemo)(() => {
18126
18335
  return {
18127
18336
  closeSidebar: closeRightSidebar
18128
18337
  };
18129
18338
  }, [closeRightSidebar]);
18130
- const leftPanel = left && leftVisible !== false ? /* @__PURE__ */ import_react109.default.createElement(
18339
+ const leftPanel = left && leftVisible !== false ? /* @__PURE__ */ import_react110.default.createElement(
18131
18340
  PanelInner,
18132
18341
  {
18133
18342
  style: leftStyle,
18134
18343
  className: cx("n-bg-sidebar-background n-flex-col", leftClassName)
18135
18344
  },
18136
- /* @__PURE__ */ import_react109.default.createElement(WorkspaceSideProvider, { value: leftSidebarProviderValue }, leftTabValue ? renderPanelChildren(left, leftChildrenProps) : null)
18345
+ /* @__PURE__ */ import_react110.default.createElement(WorkspaceSideProvider, { value: leftSidebarProviderValue }, leftTabValue ? renderPanelChildren(left, leftChildrenProps) : null)
18137
18346
  ) : null;
18138
- const rightPanel = right && rightVisible !== false ? /* @__PURE__ */ import_react109.default.createElement(
18347
+ const rightPanel = right && rightVisible !== false ? /* @__PURE__ */ import_react110.default.createElement(
18139
18348
  PanelInner,
18140
18349
  {
18141
18350
  style: rightStyle,
18142
18351
  className: cx("n-bg-sidebar-background n-flex-col", rightClassName)
18143
18352
  },
18144
- /* @__PURE__ */ import_react109.default.createElement(WorkspaceSideProvider, { value: rightSidebarProviderValue }, rightTabValue ? renderPanelChildren(right, rightChildrenProps) : null)
18353
+ /* @__PURE__ */ import_react110.default.createElement(WorkspaceSideProvider, { value: rightSidebarProviderValue }, rightTabValue ? renderPanelChildren(right, rightChildrenProps) : null)
18145
18354
  ) : null;
18146
- const centerPanel = /* @__PURE__ */ import_react109.default.createElement(PanelInner, { className: "n-bg-canvas-background" }, children);
18147
- const leftSidebarOptions = (0, import_react109.useMemo)(
18355
+ const centerPanel = /* @__PURE__ */ import_react110.default.createElement(PanelInner, { className: "n-bg-canvas-background" }, children);
18356
+ const leftSidebarOptions = (0, import_react110.useMemo)(
18148
18357
  () => ({
18149
18358
  minSize: leftSidebarMinPercentage,
18150
18359
  maxSize: leftSidebarMaxPercentage,
@@ -18162,7 +18371,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18162
18371
  leftShowTabs
18163
18372
  ]
18164
18373
  );
18165
- const rightSidebarOptions = (0, import_react109.useMemo)(
18374
+ const rightSidebarOptions = (0, import_react110.useMemo)(
18166
18375
  () => ({
18167
18376
  minSize: rightSidebarMinPercentage,
18168
18377
  maxSize: rightSidebarMaxPercentage,
@@ -18182,7 +18391,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18182
18391
  );
18183
18392
  const LayoutComponent = sideType === "panel" ? PanelWorkspaceLayout : sideType === "drawer" ? DrawerWorkspaceLayout : parentSize.width > sideTypeBreakpoint ? PanelWorkspaceLayout : DrawerWorkspaceLayout;
18184
18393
  const readyToRender = detectSize === "window" || containerSize && containerSize.width > 0;
18185
- return /* @__PURE__ */ import_react109.default.createElement(
18394
+ return /* @__PURE__ */ import_react110.default.createElement(
18186
18395
  "div",
18187
18396
  {
18188
18397
  ref: containerRef,
@@ -18195,7 +18404,7 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18195
18404
  "data-theme": theme
18196
18405
  },
18197
18406
  toolbar,
18198
- /* @__PURE__ */ import_react109.default.createElement("div", { className: "n-flex n-flex-row n-flex-1 n-relative" }, readyToRender && /* @__PURE__ */ import_react109.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(
18199
18408
  LayoutComponent,
18200
18409
  {
18201
18410
  leftPanel,
@@ -18218,12 +18427,12 @@ var WorkspaceLayout = forwardRefGeneric(function WorkspaceLayout2({
18218
18427
  ))
18219
18428
  );
18220
18429
  });
18221
- var PanelInner = (0, import_react109.memo)(function PanelInner2({
18430
+ var PanelInner = (0, import_react110.memo)(function PanelInner2({
18222
18431
  children,
18223
18432
  style: style2,
18224
18433
  className
18225
18434
  }) {
18226
- return /* @__PURE__ */ import_react109.default.createElement(
18435
+ return /* @__PURE__ */ import_react110.default.createElement(
18227
18436
  "div",
18228
18437
  {
18229
18438
  style: style2,
@@ -18238,22 +18447,22 @@ function getFirstTabValue(items, defaultValue2) {
18238
18447
  }
18239
18448
 
18240
18449
  // src/contexts/ImageDataContext.tsx
18241
- var React110 = __toESM(require("react"));
18242
- var ImageDataContext = React110.createContext(
18450
+ var React111 = __toESM(require("react"));
18451
+ var ImageDataContext = React111.createContext(
18243
18452
  void 0
18244
18453
  );
18245
- var ImageDataProvider = React110.memo(function ImageDataProvider2({
18454
+ var ImageDataProvider = React111.memo(function ImageDataProvider2({
18246
18455
  children,
18247
18456
  getImageData
18248
18457
  }) {
18249
- const contextValue = React110.useMemo(
18458
+ const contextValue = React111.useMemo(
18250
18459
  () => ({ getImageData: getImageData ?? (() => void 0) }),
18251
18460
  [getImageData]
18252
18461
  );
18253
- return /* @__PURE__ */ React110.createElement(ImageDataContext.Provider, { value: contextValue }, children);
18462
+ return /* @__PURE__ */ React111.createElement(ImageDataContext.Provider, { value: contextValue }, children);
18254
18463
  });
18255
18464
  function useImageData(ref) {
18256
- const value = React110.useContext(ImageDataContext);
18465
+ const value = React111.useContext(ImageDataContext);
18257
18466
  if (!value) {
18258
18467
  throw new Error("Missing ImageDataProvider");
18259
18468
  }
@@ -18270,9 +18479,9 @@ function usePlatformModKey() {
18270
18479
  }
18271
18480
 
18272
18481
  // src/hooks/useTheme.ts
18273
- var import_react110 = require("react");
18482
+ var import_react111 = require("react");
18274
18483
  function useTheme() {
18275
- const [theme, setTheme] = (0, import_react110.useState)("light");
18484
+ const [theme, setTheme] = (0, import_react111.useState)("light");
18276
18485
  const checkTheme = () => {
18277
18486
  const currentTheme = document.body.getAttribute("data-theme");
18278
18487
  switch (currentTheme) {
@@ -18284,7 +18493,7 @@ function useTheme() {
18284
18493
  break;
18285
18494
  }
18286
18495
  };
18287
- (0, import_react110.useEffect)(() => {
18496
+ (0, import_react111.useEffect)(() => {
18288
18497
  checkTheme();
18289
18498
  const observer = new MutationObserver((mutations) => {
18290
18499
  mutations.forEach((mutation) => {
@@ -18407,11 +18616,11 @@ var SUPPORTED_CANVAS_UPLOAD_TYPES = [
18407
18616
 
18408
18617
  // src/components/DimensionInput.tsx
18409
18618
  var import_noya_utils21 = require("@noya-app/noya-utils");
18410
- var React111 = __toESM(require("react"));
18619
+ var React112 = __toESM(require("react"));
18411
18620
  function getNewValue(value, mode, delta) {
18412
18621
  return delta === void 0 ? value : mode === "replace" ? delta : value + delta;
18413
18622
  }
18414
- var DimensionInput = React111.memo(function DimensionInput2({
18623
+ var DimensionInput = React112.memo(function DimensionInput2({
18415
18624
  id,
18416
18625
  value,
18417
18626
  onSetValue,
@@ -18421,15 +18630,15 @@ var DimensionInput = React111.memo(function DimensionInput2({
18421
18630
  disabled,
18422
18631
  trigger = "submit"
18423
18632
  }) {
18424
- const handleNudgeValue = React111.useCallback(
18633
+ const handleNudgeValue = React112.useCallback(
18425
18634
  (value2) => onSetValue(value2, "adjust"),
18426
18635
  [onSetValue]
18427
18636
  );
18428
- const handleSetValue = React111.useCallback(
18637
+ const handleSetValue = React112.useCallback(
18429
18638
  (value2) => onSetValue(value2, "replace"),
18430
18639
  [onSetValue]
18431
18640
  );
18432
- return /* @__PURE__ */ React111.createElement(LabeledField, { label, labelType: "inset" }, /* @__PURE__ */ React111.createElement(InputField2.Root, { id, width: size }, /* @__PURE__ */ React111.createElement(
18641
+ return /* @__PURE__ */ React112.createElement(LabeledField, { label, labelType: "inset" }, /* @__PURE__ */ React112.createElement(InputField2.Root, { id, width: size }, /* @__PURE__ */ React112.createElement(
18433
18642
  InputField2.NumberInput,
18434
18643
  {
18435
18644
  value: value === void 0 ? value : (0, import_noya_utils21.round)(value, 2),
@@ -18456,8 +18665,8 @@ __export(InspectorPrimitives_exports, {
18456
18665
  Title: () => Title,
18457
18666
  VerticalSeparator: () => VerticalSeparator
18458
18667
  });
18459
- var import_react111 = __toESM(require("react"));
18460
- var Section2 = (0, import_react111.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react111.default.createElement(
18668
+ var import_react112 = __toESM(require("react"));
18669
+ var Section2 = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18461
18670
  "div",
18462
18671
  {
18463
18672
  ref,
@@ -18465,8 +18674,8 @@ var Section2 = (0, import_react111.forwardRef)(({ className, ...props }, ref) =>
18465
18674
  ...props
18466
18675
  }
18467
18676
  ));
18468
- var SectionHeader2 = (0, import_react111.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react111.default.createElement("div", { ref, className: cx(`n-flex n-items-center`, className), ...props }));
18469
- var Title = (0, import_react111.forwardRef)(({ className, $textStyle, ...props }, ref) => /* @__PURE__ */ import_react111.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(
18470
18679
  "div",
18471
18680
  {
18472
18681
  ref,
@@ -18477,7 +18686,7 @@ var Title = (0, import_react111.forwardRef)(({ className, $textStyle, ...props }
18477
18686
  ...props
18478
18687
  }
18479
18688
  ));
18480
- var Row = (0, import_react111.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react111.default.createElement(
18689
+ var Row = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18481
18690
  "div",
18482
18691
  {
18483
18692
  ref,
@@ -18485,7 +18694,7 @@ var Row = (0, import_react111.forwardRef)(({ className, ...props }, ref) => /* @
18485
18694
  ...props
18486
18695
  }
18487
18696
  ));
18488
- var Column = (0, import_react111.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react111.default.createElement(
18697
+ var Column = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18489
18698
  "div",
18490
18699
  {
18491
18700
  ref,
@@ -18493,7 +18702,7 @@ var Column = (0, import_react111.forwardRef)(({ className, ...props }, ref) => /
18493
18702
  ...props
18494
18703
  }
18495
18704
  ));
18496
- var Checkbox3 = (0, import_react111.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react111.default.createElement(
18705
+ var Checkbox3 = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18497
18706
  "input",
18498
18707
  {
18499
18708
  ref,
@@ -18502,7 +18711,7 @@ var Checkbox3 = (0, import_react111.forwardRef)(({ className, ...props }, ref) =
18502
18711
  ...props
18503
18712
  }
18504
18713
  ));
18505
- var Text3 = (0, import_react111.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react111.default.createElement(
18714
+ var Text3 = (0, import_react112.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ import_react112.default.createElement(
18506
18715
  "span",
18507
18716
  {
18508
18717
  ref,
@@ -18510,14 +18719,14 @@ var Text3 = (0, import_react111.forwardRef)(({ className, ...props }, ref) => /*
18510
18719
  ...props
18511
18720
  }
18512
18721
  ));
18513
- var VerticalSeparator = () => /* @__PURE__ */ import_react111.default.createElement(Spacer.Vertical, { size: "inspector-v-separator" });
18514
- var HorizontalSeparator = () => /* @__PURE__ */ import_react111.default.createElement(Spacer.Horizontal, { size: "inspector-h-separator" });
18515
- var RowLabel = (0, import_react111.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({
18516
18725
  className,
18517
18726
  $textStyle,
18518
18727
  ...props
18519
18728
  }, ref) {
18520
- return /* @__PURE__ */ import_react111.default.createElement(
18729
+ return /* @__PURE__ */ import_react112.default.createElement(
18521
18730
  "label",
18522
18731
  {
18523
18732
  ref,
@@ -18529,7 +18738,7 @@ var RowLabel = (0, import_react111.forwardRef)(function RowLabel2({
18529
18738
  }
18530
18739
  );
18531
18740
  });
18532
- var LabeledRow = (0, import_react111.memo)(function LabeledRow2({
18741
+ var LabeledRow = (0, import_react112.memo)(function LabeledRow2({
18533
18742
  id,
18534
18743
  children,
18535
18744
  label,
@@ -18537,7 +18746,7 @@ var LabeledRow = (0, import_react111.memo)(function LabeledRow2({
18537
18746
  right,
18538
18747
  className
18539
18748
  }) {
18540
- return /* @__PURE__ */ import_react111.default.createElement(Row, { id, className }, /* @__PURE__ */ import_react111.default.createElement(Column, null, /* @__PURE__ */ import_react111.default.createElement(RowLabel, { $textStyle: labelTextStyle }, label, right && /* @__PURE__ */ import_react111.default.createElement(Spacer.Horizontal, null), right), /* @__PURE__ */ import_react111.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)));
18541
18750
  });
18542
18751
  // Annotate the CommonJS export names for ESM import in node:
18543
18752
  0 && (module.exports = {
@@ -18679,6 +18888,7 @@ var LabeledRow = (0, import_react111.memo)(function LabeledRow2({
18679
18888
  UserAvatar,
18680
18889
  UserPicker,
18681
18890
  UserPointer,
18891
+ Virtualized,
18682
18892
  WorkspaceLayout,
18683
18893
  WorkspaceSideProvider,
18684
18894
  acceptsDrop,