@tscircuit/3d-viewer 0.0.578 → 0.0.579

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +248 -338
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -31245,9 +31245,9 @@ function getObjectBoundsRelativeToParent(object) {
31245
31245
  node.geometry.computeBoundingBox();
31246
31246
  }
31247
31247
  if (node.geometry.boundingBox) {
31248
+ const localMatrix = parentInverseMatrix.clone().multiply(node.matrixWorld);
31248
31249
  const transformedBounds = node.geometry.boundingBox.clone();
31249
- transformedBounds.applyMatrix4(node.matrixWorld);
31250
- transformedBounds.applyMatrix4(parentInverseMatrix);
31250
+ transformedBounds.applyMatrix4(localMatrix);
31251
31251
  if (!hasBounds) {
31252
31252
  bounds.copy(transformedBounds);
31253
31253
  hasBounds = true;
@@ -32710,7 +32710,7 @@ import * as THREE21 from "three";
32710
32710
  // package.json
32711
32711
  var package_default = {
32712
32712
  name: "@tscircuit/3d-viewer",
32713
- version: "0.0.577",
32713
+ version: "0.0.578",
32714
32714
  main: "./dist/index.js",
32715
32715
  module: "./dist/index.js",
32716
32716
  type: "module",
@@ -40377,67 +40377,12 @@ import * as ReactDOM2 from "react-dom";
40377
40377
 
40378
40378
  // node_modules/@radix-ui/react-slot/dist/index.mjs
40379
40379
  import * as React18 from "react";
40380
- import { jsx as jsx22 } from "react/jsx-runtime";
40381
40380
  var __defProp8 = Object.defineProperty;
40382
40381
  var __name6 = (target, value) => __defProp8(target, "name", { value, configurable: true });
40383
- var mergeProps = /* @__PURE__ */ __name6(((slotProps, childProps) => {
40384
- const overrideProps = { ...childProps };
40385
- for (const propName in childProps) {
40386
- const slotPropValue = slotProps[propName];
40387
- const childPropValue = childProps[propName];
40388
- const isHandler = /^on[A-Z]/.test(propName);
40389
- if (isHandler) {
40390
- if (slotPropValue && childPropValue) {
40391
- const slotIsFunction = typeof slotPropValue === "function";
40392
- const childIsFunction = typeof childPropValue === "function";
40393
- if (IS_DEVELOPMENT) {
40394
- if (!slotIsFunction || !childIsFunction) {
40395
- console.warn(
40396
- `Slot: Expected a function for ${propName}, but received ${[typeof slotPropValue, typeof childPropValue].filter((v) => v !== "function").join(" and ")}.`
40397
- );
40398
- }
40399
- }
40400
- overrideProps[propName] = (...args) => {
40401
- const result = childIsFunction ? childPropValue(...args) : void 0;
40402
- if (slotIsFunction) {
40403
- slotPropValue(...args);
40404
- }
40405
- return result;
40406
- };
40407
- } else if (slotPropValue) {
40408
- overrideProps[propName] = slotPropValue;
40409
- }
40410
- } else if (propName === "style") {
40411
- overrideProps[propName] = {
40412
- ...typeof slotPropValue === "object" ? slotPropValue : null,
40413
- ...typeof childPropValue === "object" ? childPropValue : null
40414
- };
40415
- } else if (propName === "className") {
40416
- overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
40417
- } else if (propName === "aria-describedby") {
40418
- overrideProps[propName] = concatAriaDescribedby(childPropValue, slotPropValue);
40419
- }
40420
- }
40421
- return { ...slotProps, ...overrideProps };
40422
- }), "mergeProps");
40423
- function concatAriaDescribedby(...values) {
40424
- const ids = /* @__PURE__ */ new Set();
40425
- for (const value of values) {
40426
- if (typeof value !== "string") continue;
40427
- for (const id of String(value).trim().split(/\s+/)) {
40428
- if (id) ids.add(id);
40429
- }
40430
- }
40431
- return ids.size > 0 ? Array.from(ids).join(" ") : void 0;
40432
- }
40433
- __name6(concatAriaDescribedby, "concatAriaDescribedby");
40434
- var SlotContext = React18.createContext(mergeProps);
40435
- SlotContext.displayName = "SlotContext";
40436
40382
  // @__NO_SIDE_EFFECTS__
40437
40383
  function createSlot(ownerName) {
40438
40384
  const Slot2 = React18.forwardRef((props, forwardedRef) => {
40439
- const context = React18.useContext(SlotContext);
40440
- let { children, mergeProps: mergePropsProp = context, ...slotProps } = props;
40385
+ let { children, ...slotProps } = props;
40441
40386
  let slottableElement = null;
40442
40387
  let hasSlottable = false;
40443
40388
  const newChildren = [];
@@ -40479,10 +40424,7 @@ function createSlot(ownerName) {
40479
40424
  }
40480
40425
  return children;
40481
40426
  }
40482
- const mergedProps = mergePropsProp(
40483
- slotProps,
40484
- slottableElement.props ?? {}
40485
- );
40427
+ const mergedProps = mergeProps(slotProps, slottableElement.props ?? {});
40486
40428
  if (slottableElement.type !== React18.Fragment) {
40487
40429
  mergedProps.ref = forwardedRef ? composedRef : slottableElementRef;
40488
40430
  }
@@ -40509,6 +40451,31 @@ var getSlottableElementFromSlottable = /* @__PURE__ */ __name6((slottable, child
40509
40451
  }
40510
40452
  return React18.isValidElement(child) ? child : null;
40511
40453
  }, "getSlottableElementFromSlottable");
40454
+ function mergeProps(slotProps, childProps) {
40455
+ const overrideProps = { ...childProps };
40456
+ for (const propName in childProps) {
40457
+ const slotPropValue = slotProps[propName];
40458
+ const childPropValue = childProps[propName];
40459
+ const isHandler = /^on[A-Z]/.test(propName);
40460
+ if (isHandler) {
40461
+ if (slotPropValue && childPropValue) {
40462
+ overrideProps[propName] = (...args) => {
40463
+ const result = childPropValue(...args);
40464
+ slotPropValue(...args);
40465
+ return result;
40466
+ };
40467
+ } else if (slotPropValue) {
40468
+ overrideProps[propName] = slotPropValue;
40469
+ }
40470
+ } else if (propName === "style") {
40471
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue };
40472
+ } else if (propName === "className") {
40473
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
40474
+ }
40475
+ }
40476
+ return { ...slotProps, ...overrideProps };
40477
+ }
40478
+ __name6(mergeProps, "mergeProps");
40512
40479
  function getElementRef(element) {
40513
40480
  let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
40514
40481
  let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
@@ -40545,7 +40512,7 @@ var createSlottableError = /* @__PURE__ */ __name6((ownerName) => {
40545
40512
  var use = React18[" use ".trim().toString()];
40546
40513
 
40547
40514
  // node_modules/@radix-ui/react-primitive/dist/index.mjs
40548
- import { jsx as jsx23 } from "react/jsx-runtime";
40515
+ import { jsx as jsx22 } from "react/jsx-runtime";
40549
40516
  var __defProp9 = Object.defineProperty;
40550
40517
  var __name7 = (target, value) => __defProp9(target, "name", { value, configurable: true });
40551
40518
  var NODES = [
@@ -40575,7 +40542,7 @@ var Primitive = NODES.reduce((primitive, node) => {
40575
40542
  if (typeof window !== "undefined") {
40576
40543
  window[/* @__PURE__ */ Symbol.for("radix-ui")] = true;
40577
40544
  }
40578
- return /* @__PURE__ */ jsx23(Comp, { ...primitiveProps, ref: forwardedRef });
40545
+ return /* @__PURE__ */ jsx22(Comp, { ...primitiveProps, ref: forwardedRef });
40579
40546
  });
40580
40547
  Node2.displayName = `Primitive.${node}`;
40581
40548
  return { ...primitive, [node]: Node2 };
@@ -40590,9 +40557,9 @@ import * as React43 from "react";
40590
40557
 
40591
40558
  // node_modules/@radix-ui/react-collection/dist/index.mjs
40592
40559
  import * as React20 from "react";
40593
- import { jsx as jsx24 } from "react/jsx-runtime";
40560
+ import { jsx as jsx23 } from "react/jsx-runtime";
40594
40561
  import * as React23 from "react";
40595
- import { jsx as jsx25 } from "react/jsx-runtime";
40562
+ import { jsx as jsx24 } from "react/jsx-runtime";
40596
40563
  var __defProp10 = Object.defineProperty;
40597
40564
  var __name8 = (target, value) => __defProp10(target, "name", { value, configurable: true });
40598
40565
  // @__NO_SIDE_EFFECTS__
@@ -40607,7 +40574,7 @@ function createCollection(name) {
40607
40574
  const { scope, children } = props;
40608
40575
  const ref = React20.useRef(null);
40609
40576
  const itemMap = React20.useRef(/* @__PURE__ */ new Map()).current;
40610
- return /* @__PURE__ */ jsx24(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
40577
+ return /* @__PURE__ */ jsx23(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
40611
40578
  }, "CollectionProvider");
40612
40579
  CollectionProvider.displayName = PROVIDER_NAME;
40613
40580
  const COLLECTION_SLOT_NAME = name + "CollectionSlot";
@@ -40617,7 +40584,7 @@ function createCollection(name) {
40617
40584
  const { scope, children } = props;
40618
40585
  const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
40619
40586
  const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);
40620
- return /* @__PURE__ */ jsx24(CollectionSlotImpl, { ref: composedRefs, children });
40587
+ return /* @__PURE__ */ jsx23(CollectionSlotImpl, { ref: composedRefs, children });
40621
40588
  }
40622
40589
  );
40623
40590
  CollectionSlot.displayName = COLLECTION_SLOT_NAME;
@@ -40634,7 +40601,7 @@ function createCollection(name) {
40634
40601
  context.itemMap.set(ref, { ref, ...itemData });
40635
40602
  return () => void context.itemMap.delete(ref);
40636
40603
  });
40637
- return /* @__PURE__ */ jsx24(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: "" }, ref: composedRefs, children });
40604
+ return /* @__PURE__ */ jsx23(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: "" }, ref: composedRefs, children });
40638
40605
  }
40639
40606
  );
40640
40607
  CollectionItemSlot.displayName = ITEM_SLOT_NAME;
@@ -40984,12 +40951,12 @@ function createCollection2(name) {
40984
40951
  }
40985
40952
  );
40986
40953
  const CollectionProvider = /* @__PURE__ */ __name8(({ state, ...props }) => {
40987
- return state ? /* @__PURE__ */ jsx25(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx25(CollectionInit, { ...props });
40954
+ return state ? /* @__PURE__ */ jsx24(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx24(CollectionInit, { ...props });
40988
40955
  }, "CollectionProvider");
40989
40956
  CollectionProvider.displayName = PROVIDER_NAME;
40990
40957
  const CollectionInit = /* @__PURE__ */ __name8((props) => {
40991
40958
  const state = useInitCollection();
40992
- return /* @__PURE__ */ jsx25(CollectionProviderImpl, { ...props, state });
40959
+ return /* @__PURE__ */ jsx24(CollectionProviderImpl, { ...props, state });
40993
40960
  }, "CollectionInit");
40994
40961
  CollectionInit.displayName = PROVIDER_NAME + "Init";
40995
40962
  const CollectionProviderImpl = /* @__PURE__ */ __name8((props) => {
@@ -41012,7 +40979,7 @@ function createCollection2(name) {
41012
40979
  observer.disconnect();
41013
40980
  };
41014
40981
  }, [collectionElement]);
41015
- return /* @__PURE__ */ jsx25(
40982
+ return /* @__PURE__ */ jsx24(
41016
40983
  CollectionContextProvider,
41017
40984
  {
41018
40985
  scope,
@@ -41033,7 +41000,7 @@ function createCollection2(name) {
41033
41000
  const { scope, children } = props;
41034
41001
  const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
41035
41002
  const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);
41036
- return /* @__PURE__ */ jsx25(CollectionSlotImpl, { ref: composedRefs, children });
41003
+ return /* @__PURE__ */ jsx24(CollectionSlotImpl, { ref: composedRefs, children });
41037
41004
  }
41038
41005
  );
41039
41006
  CollectionSlot.displayName = COLLECTION_SLOT_NAME;
@@ -41075,7 +41042,7 @@ function createCollection2(name) {
41075
41042
  });
41076
41043
  };
41077
41044
  }, [element, memoizedItemData, setItemMap]);
41078
- return /* @__PURE__ */ jsx25(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: "" }, ref: composedRefs, children });
41045
+ return /* @__PURE__ */ jsx24(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: "" }, ref: composedRefs, children });
41079
41046
  }
41080
41047
  );
41081
41048
  CollectionItemSlot.displayName = ITEM_SLOT_NAME;
@@ -41136,7 +41103,7 @@ __name8(getChildListObserver, "getChildListObserver");
41136
41103
 
41137
41104
  // node_modules/@radix-ui/react-direction/dist/index.mjs
41138
41105
  import * as React21 from "react";
41139
- import { jsx as jsx26 } from "react/jsx-runtime";
41106
+ import { jsx as jsx25 } from "react/jsx-runtime";
41140
41107
  var __defProp11 = Object.defineProperty;
41141
41108
  var __name9 = (target, value) => __defProp11(target, "name", { value, configurable: true });
41142
41109
  var DirectionContext = React21.createContext(void 0);
@@ -41163,7 +41130,7 @@ function useCallbackRef(callback) {
41163
41130
  __name10(useCallbackRef, "useCallbackRef");
41164
41131
 
41165
41132
  // node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs
41166
- import { jsx as jsx27 } from "react/jsx-runtime";
41133
+ import { jsx as jsx26 } from "react/jsx-runtime";
41167
41134
  var __defProp13 = Object.defineProperty;
41168
41135
  var __name11 = (target, value) => __defProp13(target, "name", { value, configurable: true });
41169
41136
  var CONTEXT_UPDATE = "dismissableLayer.update";
@@ -41295,7 +41262,7 @@ var DismissableLayer = /* @__PURE__ */ React25.forwardRef(
41295
41262
  document.addEventListener(CONTEXT_UPDATE, handleUpdate);
41296
41263
  return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
41297
41264
  }, []);
41298
- return /* @__PURE__ */ jsx27(
41265
+ return /* @__PURE__ */ jsx26(
41299
41266
  Primitive.div,
41300
41267
  {
41301
41268
  ...layerProps,
@@ -41544,7 +41511,7 @@ __name12(createFocusGuard, "createFocusGuard");
41544
41511
 
41545
41512
  // node_modules/@radix-ui/react-focus-scope/dist/index.mjs
41546
41513
  import * as React27 from "react";
41547
- import { jsx as jsx28 } from "react/jsx-runtime";
41514
+ import { jsx as jsx27 } from "react/jsx-runtime";
41548
41515
  var __defProp15 = Object.defineProperty;
41549
41516
  var __name13 = (target, value) => __defProp15(target, "name", { value, configurable: true });
41550
41517
  var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
@@ -41555,7 +41522,6 @@ var FocusScope = /* @__PURE__ */ React27.forwardRef(
41555
41522
  const {
41556
41523
  loop = false,
41557
41524
  trapped = false,
41558
- branches,
41559
41525
  onMountAutoFocus: onMountAutoFocusProp,
41560
41526
  onUnmountAutoFocus: onUnmountAutoFocusProp,
41561
41527
  ...scopeProps
@@ -41565,18 +41531,6 @@ var FocusScope = /* @__PURE__ */ React27.forwardRef(
41565
41531
  const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);
41566
41532
  const lastFocusedElementRef = React27.useRef(null);
41567
41533
  const composedRefs = useComposedRefs(forwardedRef, setContainer);
41568
- const branchesRef = React27.useRef(branches);
41569
- React27.useEffect(() => {
41570
- branchesRef.current = branches;
41571
- });
41572
- const isTargetInScope = React27.useCallback(
41573
- (target) => {
41574
- if (!target) return false;
41575
- if (container?.contains(target)) return true;
41576
- return Boolean(branchesRef.current?.some((branch) => branch.contains(target)));
41577
- },
41578
- [container]
41579
- );
41580
41534
  const focusScope = React27.useRef({
41581
41535
  paused: false,
41582
41536
  pause() {
@@ -41591,7 +41545,7 @@ var FocusScope = /* @__PURE__ */ React27.forwardRef(
41591
41545
  let handleFocusIn2 = function(event) {
41592
41546
  if (focusScope.paused || !container) return;
41593
41547
  const target = event.target;
41594
- if (isTargetInScope(target)) {
41548
+ if (container.contains(target)) {
41595
41549
  lastFocusedElementRef.current = target;
41596
41550
  } else {
41597
41551
  focus(lastFocusedElementRef.current, { select: true });
@@ -41600,7 +41554,7 @@ var FocusScope = /* @__PURE__ */ React27.forwardRef(
41600
41554
  if (focusScope.paused || !container) return;
41601
41555
  const relatedTarget = event.relatedTarget;
41602
41556
  if (relatedTarget === null) return;
41603
- if (!isTargetInScope(relatedTarget)) {
41557
+ if (!container.contains(relatedTarget)) {
41604
41558
  focus(lastFocusedElementRef.current, { select: true });
41605
41559
  }
41606
41560
  }, handleMutations2 = function(mutations) {
@@ -41624,7 +41578,7 @@ var FocusScope = /* @__PURE__ */ React27.forwardRef(
41624
41578
  mutationObserver.disconnect();
41625
41579
  };
41626
41580
  }
41627
- }, [trapped, container, focusScope.paused, isTargetInScope]);
41581
+ }, [trapped, container, focusScope.paused]);
41628
41582
  React27.useEffect(() => {
41629
41583
  if (container) {
41630
41584
  focusScopesStack.add(focusScope);
@@ -41681,32 +41635,9 @@ var FocusScope = /* @__PURE__ */ React27.forwardRef(
41681
41635
  },
41682
41636
  [loop, trapped, focusScope.paused]
41683
41637
  );
41684
- return /* @__PURE__ */ jsx28(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
41638
+ return /* @__PURE__ */ jsx27(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
41685
41639
  }, "FocusScope")
41686
41640
  );
41687
- var FocusScopeBranchContext = React27.createContext(null);
41688
- var FocusScopeBranchProvider = FocusScopeBranchContext.Provider;
41689
- function useFocusScopeBranchRegistry() {
41690
- const [nodes, setNodes] = React27.useState([]);
41691
- const registry = React27.useMemo(
41692
- () => ({
41693
- add: /* @__PURE__ */ __name13((node) => setNodes((prev) => prev.includes(node) ? prev : [...prev, node]), "add"),
41694
- remove: /* @__PURE__ */ __name13((node) => setNodes((prev) => prev.filter((current) => current !== node)), "remove")
41695
- }),
41696
- []
41697
- );
41698
- return { nodes, registry };
41699
- }
41700
- __name13(useFocusScopeBranchRegistry, "useFocusScopeBranchRegistry");
41701
- function useFocusScopeBranch(node) {
41702
- const registry = React27.useContext(FocusScopeBranchContext);
41703
- React27.useEffect(() => {
41704
- if (!node || !registry) return;
41705
- registry.add(node);
41706
- return () => registry.remove(node);
41707
- }, [node, registry]);
41708
- }
41709
- __name13(useFocusScopeBranch, "useFocusScopeBranch");
41710
41641
  function focusFirst(candidates, { select = false } = {}) {
41711
41642
  const previouslyFocusedElement = document.activeElement;
41712
41643
  for (const candidate of candidates) {
@@ -43763,17 +43694,9 @@ function useSize(element) {
43763
43694
  __name15(useSize, "useSize");
43764
43695
 
43765
43696
  // node_modules/@radix-ui/react-popper/dist/index.mjs
43766
- import { jsx as jsx29 } from "react/jsx-runtime";
43697
+ import { jsx as jsx28 } from "react/jsx-runtime";
43767
43698
  var __defProp18 = Object.defineProperty;
43768
43699
  var __name16 = (target, value) => __defProp18(target, "name", { value, configurable: true });
43769
- var Sticky = {
43770
- Partial: "partial",
43771
- Always: "always"
43772
- };
43773
- var UpdatePositionStrategy = {
43774
- Optimized: "optimized",
43775
- Always: "always"
43776
- };
43777
43700
  var POPPER_NAME = "Popper";
43778
43701
  var [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);
43779
43702
  var [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);
@@ -43781,7 +43704,7 @@ var Popper = /* @__PURE__ */ __name16((props) => {
43781
43704
  const { __scopePopper, children } = props;
43782
43705
  const [anchor, setAnchor] = React31.useState(null);
43783
43706
  const [placementState, setPlacementState] = React31.useState(void 0);
43784
- return /* @__PURE__ */ jsx29(
43707
+ return /* @__PURE__ */ jsx28(
43785
43708
  PopperProvider,
43786
43709
  {
43787
43710
  scope: __scopePopper,
@@ -43824,7 +43747,7 @@ var PopperAnchor = /* @__PURE__ */ React31.forwardRef(
43824
43747
  const sideAndAlign = context.placementState && getSideAndAlignFromPlacement(context.placementState);
43825
43748
  const placedSide = sideAndAlign?.[0];
43826
43749
  const placedAlign = sideAndAlign?.[1];
43827
- return virtualRef ? null : /* @__PURE__ */ jsx29(
43750
+ return virtualRef ? null : /* @__PURE__ */ jsx28(
43828
43751
  Primitive.div,
43829
43752
  {
43830
43753
  "data-radix-popper-side": placedSide,
@@ -43849,9 +43772,9 @@ var PopperContent = /* @__PURE__ */ React31.forwardRef(
43849
43772
  avoidCollisions = true,
43850
43773
  collisionBoundary = [],
43851
43774
  collisionPadding: collisionPaddingProp = 0,
43852
- sticky = Sticky.Partial,
43775
+ sticky = "partial",
43853
43776
  hideWhenDetached = false,
43854
- updatePositionStrategy = UpdatePositionStrategy.Optimized,
43777
+ updatePositionStrategy = "optimized",
43855
43778
  onPlaced,
43856
43779
  ...contentProps
43857
43780
  } = props;
@@ -43878,7 +43801,7 @@ var PopperContent = /* @__PURE__ */ React31.forwardRef(
43878
43801
  placement: desiredPlacement,
43879
43802
  whileElementsMounted: /* @__PURE__ */ __name16((...args) => {
43880
43803
  const cleanup = autoUpdate(...args, {
43881
- animationFrame: updatePositionStrategy === UpdatePositionStrategy.Always
43804
+ animationFrame: updatePositionStrategy === "always"
43882
43805
  });
43883
43806
  return cleanup;
43884
43807
  }, "whileElementsMounted"),
@@ -43890,7 +43813,7 @@ var PopperContent = /* @__PURE__ */ React31.forwardRef(
43890
43813
  avoidCollisions && shift3({
43891
43814
  mainAxis: true,
43892
43815
  crossAxis: false,
43893
- limiter: sticky === Sticky.Partial ? limitShift3() : void 0,
43816
+ limiter: sticky === "partial" ? limitShift3() : void 0,
43894
43817
  ...detectOverflowOptions
43895
43818
  }),
43896
43819
  avoidCollisions && flip3({ ...detectOverflowOptions }),
@@ -43942,7 +43865,7 @@ var PopperContent = /* @__PURE__ */ React31.forwardRef(
43942
43865
  useLayoutEffect2(() => {
43943
43866
  if (content) setContentZIndex(window.getComputedStyle(content).zIndex);
43944
43867
  }, [content]);
43945
- return /* @__PURE__ */ jsx29(
43868
+ return /* @__PURE__ */ jsx28(
43946
43869
  "div",
43947
43870
  {
43948
43871
  ref: refs.setFloating,
@@ -43966,7 +43889,7 @@ var PopperContent = /* @__PURE__ */ React31.forwardRef(
43966
43889
  }
43967
43890
  },
43968
43891
  dir: props.dir,
43969
- children: /* @__PURE__ */ jsx29(
43892
+ children: /* @__PURE__ */ jsx28(
43970
43893
  PopperContentProvider,
43971
43894
  {
43972
43895
  scope: __scopePopper,
@@ -43976,7 +43899,7 @@ var PopperContent = /* @__PURE__ */ React31.forwardRef(
43976
43899
  arrowX,
43977
43900
  arrowY,
43978
43901
  shouldHideArrow: cannotCenterArrow,
43979
- children: /* @__PURE__ */ jsx29(
43902
+ children: /* @__PURE__ */ jsx28(
43980
43903
  Primitive.div,
43981
43904
  {
43982
43905
  "data-side": placedSide,
@@ -44038,11 +43961,14 @@ function getSideAndAlignFromPlacement(placement) {
44038
43961
  return [side, align];
44039
43962
  }
44040
43963
  __name16(getSideAndAlignFromPlacement, "getSideAndAlignFromPlacement");
43964
+ var Root2 = Popper;
43965
+ var Anchor = PopperAnchor;
43966
+ var Content = PopperContent;
44041
43967
 
44042
43968
  // node_modules/@radix-ui/react-portal/dist/index.mjs
44043
43969
  import * as React32 from "react";
44044
43970
  import * as ReactDOM4 from "react-dom";
44045
- import { jsx as jsx30 } from "react/jsx-runtime";
43971
+ import { jsx as jsx29 } from "react/jsx-runtime";
44046
43972
  var __defProp19 = Object.defineProperty;
44047
43973
  var __name17 = (target, value) => __defProp19(target, "name", { value, configurable: true });
44048
43974
  var Portal = /* @__PURE__ */ React32.forwardRef(
@@ -44051,7 +43977,7 @@ var Portal = /* @__PURE__ */ React32.forwardRef(
44051
43977
  const [mounted, setMounted] = React32.useState(false);
44052
43978
  useLayoutEffect2(() => setMounted(true), []);
44053
43979
  const container = containerProp || mounted && globalThis?.document?.body;
44054
- return container ? ReactDOM4.createPortal(/* @__PURE__ */ jsx30(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
43980
+ return container ? ReactDOM4.createPortal(/* @__PURE__ */ jsx29(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
44055
43981
  }, "Portal")
44056
43982
  );
44057
43983
 
@@ -44271,7 +44197,7 @@ __name19(useIsHydratedModern, "useIsHydratedModern");
44271
44197
  var useIsHydrated2 = typeof useReactSyncExternalStore === "function" ? useIsHydratedModern : useIsHydrated;
44272
44198
 
44273
44199
  // node_modules/@radix-ui/react-roving-focus/dist/index.mjs
44274
- import { jsx as jsx31 } from "react/jsx-runtime";
44200
+ import { jsx as jsx30 } from "react/jsx-runtime";
44275
44201
  var __defProp22 = Object.defineProperty;
44276
44202
  var __name20 = (target, value) => __defProp22(target, "name", { value, configurable: true });
44277
44203
  var ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus";
@@ -44282,19 +44208,11 @@ var [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContext
44282
44208
  GROUP_NAME,
44283
44209
  [createCollectionScope]
44284
44210
  );
44285
- var Orientation = {
44286
- Vertical: "vertical",
44287
- Horizontal: "horizontal"
44288
- };
44289
- var Direction = {
44290
- LTR: "ltr",
44291
- RTL: "rtl"
44292
- };
44293
44211
  var [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);
44294
44212
  var RovingFocusGroup = /* @__PURE__ */ React35.forwardRef(
44295
44213
  // blank line to reduce diff noise
44296
44214
  /* @__PURE__ */ __name20(function RovingFocusGroup2(props, forwardedRef) {
44297
- return /* @__PURE__ */ jsx31(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx31(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx31(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });
44215
+ return /* @__PURE__ */ jsx30(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx30(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx30(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });
44298
44216
  }, "RovingFocusGroup")
44299
44217
  );
44300
44218
  var RovingFocusGroupImpl = /* @__PURE__ */ React35.forwardRef(/* @__PURE__ */ __name20(function RovingFocusGroupImpl2(props, forwardedRef) {
@@ -44331,7 +44249,7 @@ var RovingFocusGroupImpl = /* @__PURE__ */ React35.forwardRef(/* @__PURE__ */ __
44331
44249
  return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);
44332
44250
  }
44333
44251
  }, [handleEntryFocus]);
44334
- return /* @__PURE__ */ jsx31(
44252
+ return /* @__PURE__ */ jsx30(
44335
44253
  RovingFocusProvider,
44336
44254
  {
44337
44255
  scope: __scopeRovingFocusGroup,
@@ -44352,7 +44270,7 @@ var RovingFocusGroupImpl = /* @__PURE__ */ React35.forwardRef(/* @__PURE__ */ __
44352
44270
  () => setFocusableItemsCount((prevCount) => prevCount - 1),
44353
44271
  []
44354
44272
  ),
44355
- children: /* @__PURE__ */ jsx31(
44273
+ children: /* @__PURE__ */ jsx30(
44356
44274
  Primitive.div,
44357
44275
  {
44358
44276
  tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
@@ -44420,14 +44338,14 @@ var RovingFocusGroupItem = /* @__PURE__ */ React35.forwardRef(
44420
44338
  onFocusableItemAdd();
44421
44339
  return () => onFocusableItemRemove();
44422
44340
  }, [isHydrated, focusable, onFocusableItemAdd, onFocusableItemRemove]);
44423
- return /* @__PURE__ */ jsx31(
44341
+ return /* @__PURE__ */ jsx30(
44424
44342
  Collection.ItemSlot,
44425
44343
  {
44426
44344
  scope: __scopeRovingFocusGroup,
44427
44345
  id,
44428
44346
  focusable,
44429
44347
  active,
44430
- children: /* @__PURE__ */ jsx31(
44348
+ children: /* @__PURE__ */ jsx30(
44431
44349
  Primitive.span,
44432
44350
  {
44433
44351
  tabIndex: isCurrentTabStop ? 0 : -1,
@@ -44478,18 +44396,14 @@ var MAP_KEY_TO_FOCUS_INTENT = {
44478
44396
  End: "last"
44479
44397
  };
44480
44398
  function getDirectionAwareKey(key, dir) {
44481
- if (dir !== Direction.RTL) return key;
44399
+ if (dir !== "rtl") return key;
44482
44400
  return key === "ArrowLeft" ? "ArrowRight" : key === "ArrowRight" ? "ArrowLeft" : key;
44483
44401
  }
44484
44402
  __name20(getDirectionAwareKey, "getDirectionAwareKey");
44485
44403
  function getFocusIntent(event, orientation2, dir) {
44486
44404
  const key = getDirectionAwareKey(event.key, dir);
44487
- if (orientation2 === Orientation.Vertical && ["ArrowLeft", "ArrowRight"].includes(key)) {
44488
- return void 0;
44489
- }
44490
- if (orientation2 === Orientation.Horizontal && ["ArrowUp", "ArrowDown"].includes(key)) {
44491
- return void 0;
44492
- }
44405
+ if (orientation2 === "vertical" && ["ArrowLeft", "ArrowRight"].includes(key)) return void 0;
44406
+ if (orientation2 === "horizontal" && ["ArrowUp", "ArrowDown"].includes(key)) return void 0;
44493
44407
  return MAP_KEY_TO_FOCUS_INTENT[key];
44494
44408
  }
44495
44409
  __name20(getFocusIntent, "getFocusIntent");
@@ -44506,6 +44420,8 @@ function wrapArray(array, startIndex) {
44506
44420
  return array.map((_, index2) => array[(startIndex + index2) % array.length]);
44507
44421
  }
44508
44422
  __name20(wrapArray, "wrapArray");
44423
+ var Root = RovingFocusGroup;
44424
+ var Item = RovingFocusGroupItem;
44509
44425
 
44510
44426
  // node_modules/aria-hidden/dist/es2015/index.js
44511
44427
  var getDefaultParent = function(originalTarget) {
@@ -45349,13 +45265,9 @@ ReactRemoveScroll.classNames = RemoveScroll.classNames;
45349
45265
  var Combination_default = ReactRemoveScroll;
45350
45266
 
45351
45267
  // node_modules/@radix-ui/react-menu/dist/index.mjs
45352
- import { jsx as jsx32 } from "react/jsx-runtime";
45268
+ import { jsx as jsx31 } from "react/jsx-runtime";
45353
45269
  var __defProp23 = Object.defineProperty;
45354
45270
  var __name21 = (target, value) => __defProp23(target, "name", { value, configurable: true });
45355
- var Direction2 = {
45356
- LTR: "ltr",
45357
- RTL: "rtl"
45358
- };
45359
45271
  var SELECTION_KEYS = ["Enter", " "];
45360
45272
  var FIRST_KEYS = ["ArrowDown", "PageUp", "Home"];
45361
45273
  var LAST_KEYS = ["ArrowUp", "PageDown", "End"];
@@ -45408,7 +45320,7 @@ var Menu = /* @__PURE__ */ __name21((props) => {
45408
45320
  window.addEventListener("blur", handleBlur);
45409
45321
  return () => window.removeEventListener("blur", handleBlur);
45410
45322
  }, [open, handleOpenChange]);
45411
- return /* @__PURE__ */ jsx32(Popper, { ...popperScope, children: /* @__PURE__ */ jsx32(
45323
+ return /* @__PURE__ */ jsx31(Root2, { ...popperScope, children: /* @__PURE__ */ jsx31(
45412
45324
  MenuProvider,
45413
45325
  {
45414
45326
  scope: __scopeMenu,
@@ -45416,7 +45328,7 @@ var Menu = /* @__PURE__ */ __name21((props) => {
45416
45328
  onOpenChange: handleOpenChange,
45417
45329
  content,
45418
45330
  onContentChange: setContent,
45419
- children: /* @__PURE__ */ jsx32(
45331
+ children: /* @__PURE__ */ jsx31(
45420
45332
  MenuRootProvider,
45421
45333
  {
45422
45334
  scope: __scopeMenu,
@@ -45434,7 +45346,7 @@ var MenuAnchor = /* @__PURE__ */ React43.forwardRef(
45434
45346
  /* @__PURE__ */ __name21(function MenuAnchor2(props, forwardedRef) {
45435
45347
  const { __scopeMenu, ...anchorProps } = props;
45436
45348
  const popperScope = usePopperScope(__scopeMenu);
45437
- return /* @__PURE__ */ jsx32(PopperAnchor, { ...popperScope, ...anchorProps, ref: forwardedRef });
45349
+ return /* @__PURE__ */ jsx31(Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });
45438
45350
  }, "MenuAnchor")
45439
45351
  );
45440
45352
  var PORTAL_NAME = "MenuPortal";
@@ -45444,7 +45356,7 @@ var [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {
45444
45356
  var MenuPortal = /* @__PURE__ */ __name21((props) => {
45445
45357
  const { __scopeMenu, forceMount, children, container } = props;
45446
45358
  const context = useMenuContext(PORTAL_NAME, __scopeMenu);
45447
- return /* @__PURE__ */ jsx32(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx32(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx32(Portal, { asChild: true, container, children }) }) });
45359
+ return /* @__PURE__ */ jsx31(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx31(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx31(Portal, { asChild: true, container, children }) }) });
45448
45360
  }, "MenuPortal");
45449
45361
  var CONTENT_NAME2 = "MenuContent";
45450
45362
  var [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME2);
@@ -45454,7 +45366,7 @@ var MenuContent = /* @__PURE__ */ React43.forwardRef(
45454
45366
  const { forceMount = portalContext.forceMount, ...contentProps } = props;
45455
45367
  const context = useMenuContext(CONTENT_NAME2, props.__scopeMenu);
45456
45368
  const rootContext = useMenuRootContext(CONTENT_NAME2, props.__scopeMenu);
45457
- return /* @__PURE__ */ jsx32(Collection2.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx32(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx32(Collection2.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx32(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx32(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });
45369
+ return /* @__PURE__ */ jsx31(Collection2.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx31(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx31(Collection2.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx31(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx31(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });
45458
45370
  }, "MenuContent")
45459
45371
  );
45460
45372
  var MenuRootContentModal = /* @__PURE__ */ React43.forwardRef(
@@ -45467,7 +45379,7 @@ var MenuRootContentModal = /* @__PURE__ */ React43.forwardRef(
45467
45379
  const content = ref.current;
45468
45380
  if (content) return hideOthers(content);
45469
45381
  }, []);
45470
- return /* @__PURE__ */ jsx32(
45382
+ return /* @__PURE__ */ jsx31(
45471
45383
  MenuContentImpl,
45472
45384
  {
45473
45385
  ...props,
@@ -45487,7 +45399,7 @@ var MenuRootContentModal = /* @__PURE__ */ React43.forwardRef(
45487
45399
  );
45488
45400
  var MenuRootContentNonModal = /* @__PURE__ */ React43.forwardRef(/* @__PURE__ */ __name21(function MenuRootContentNonModal2(props, forwardedRef) {
45489
45401
  const context = useMenuContext(CONTENT_NAME2, props.__scopeMenu);
45490
- return /* @__PURE__ */ jsx32(
45402
+ return /* @__PURE__ */ jsx31(
45491
45403
  MenuContentImpl,
45492
45404
  {
45493
45405
  ...props,
@@ -45517,7 +45429,6 @@ var MenuContentImpl = /* @__PURE__ */ React43.forwardRef(
45517
45429
  onInteractOutside,
45518
45430
  onDismiss,
45519
45431
  disableOutsideScroll,
45520
- children,
45521
45432
  ...contentProps
45522
45433
  } = props;
45523
45434
  const context = useMenuContext(CONTENT_NAME2, __scopeMenu);
@@ -45527,32 +45438,15 @@ var MenuContentImpl = /* @__PURE__ */ React43.forwardRef(
45527
45438
  const getItems = useCollection2(__scopeMenu);
45528
45439
  const [currentItemId, setCurrentItemId] = React43.useState(null);
45529
45440
  const contentRef = React43.useRef(null);
45530
- const [branchNode, setBranchNode] = React43.useState(null);
45531
- useFocusScopeBranch(branchNode);
45532
- const { nodes: branchNodes, registry: branchRegistry } = useFocusScopeBranchRegistry();
45533
- const isModal = Boolean(trapFocus || disableOutsideScroll);
45534
- const composedRefs = useComposedRefs(
45535
- forwardedRef,
45536
- contentRef,
45537
- context.onContentChange,
45538
- setBranchNode
45539
- );
45441
+ const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);
45540
45442
  const timerRef = React43.useRef(0);
45541
45443
  const searchRef = React43.useRef("");
45542
45444
  const pointerGraceTimerRef = React43.useRef(0);
45543
45445
  const pointerGraceIntentRef = React43.useRef(null);
45544
45446
  const pointerDirRef = React43.useRef("right");
45545
45447
  const lastPointerXRef = React43.useRef(0);
45546
- const shards = React43.useMemo(
45547
- () => disableOutsideScroll ? [contentRef, ...branchNodes.map((node) => ({ current: node }))] : [],
45548
- [contentRef, branchNodes, disableOutsideScroll]
45549
- );
45550
45448
  const ScrollLockWrapper = disableOutsideScroll ? Combination_default : React43.Fragment;
45551
- const scrollLockWrapperProps = disableOutsideScroll ? {
45552
- as: Slot,
45553
- allowPinchZoom: true,
45554
- shards
45555
- } : void 0;
45449
+ const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;
45556
45450
  const handleTypeaheadSearch = /* @__PURE__ */ __name21((key) => {
45557
45451
  const search = searchRef.current + key;
45558
45452
  const items = getItems().filter((item) => !item.disabled);
@@ -45578,7 +45472,7 @@ var MenuContentImpl = /* @__PURE__ */ React43.forwardRef(
45578
45472
  const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;
45579
45473
  return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);
45580
45474
  }, []);
45581
- return /* @__PURE__ */ jsx32(
45475
+ return /* @__PURE__ */ jsx31(
45582
45476
  MenuContentProvider,
45583
45477
  {
45584
45478
  scope: __scopeMenu,
@@ -45607,18 +45501,17 @@ var MenuContentImpl = /* @__PURE__ */ React43.forwardRef(
45607
45501
  onPointerGraceIntentChange: React43.useCallback((intent) => {
45608
45502
  pointerGraceIntentRef.current = intent;
45609
45503
  }, []),
45610
- children: /* @__PURE__ */ jsx32(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx32(
45504
+ children: /* @__PURE__ */ jsx31(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx31(
45611
45505
  FocusScope,
45612
45506
  {
45613
45507
  asChild: true,
45614
45508
  trapped: trapFocus,
45615
- branches: branchNodes,
45616
45509
  onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {
45617
45510
  event.preventDefault();
45618
45511
  contentRef.current?.focus({ preventScroll: true });
45619
45512
  }),
45620
45513
  onUnmountAutoFocus: onCloseAutoFocus,
45621
- children: /* @__PURE__ */ jsx32(
45514
+ children: /* @__PURE__ */ jsx31(
45622
45515
  DismissableLayer,
45623
45516
  {
45624
45517
  asChild: true,
@@ -45628,8 +45521,8 @@ var MenuContentImpl = /* @__PURE__ */ React43.forwardRef(
45628
45521
  onFocusOutside,
45629
45522
  onInteractOutside,
45630
45523
  onDismiss,
45631
- children: /* @__PURE__ */ jsx32(
45632
- RovingFocusGroup,
45524
+ children: /* @__PURE__ */ jsx31(
45525
+ Root,
45633
45526
  {
45634
45527
  asChild: true,
45635
45528
  ...rovingFocusGroupScope,
@@ -45642,8 +45535,8 @@ var MenuContentImpl = /* @__PURE__ */ React43.forwardRef(
45642
45535
  if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();
45643
45536
  }),
45644
45537
  preventScrollOnEntryFocus: true,
45645
- children: /* @__PURE__ */ jsx32(
45646
- PopperContent,
45538
+ children: /* @__PURE__ */ jsx31(
45539
+ Content,
45647
45540
  {
45648
45541
  role: "menu",
45649
45542
  "aria-orientation": "vertical",
@@ -45689,8 +45582,7 @@ var MenuContentImpl = /* @__PURE__ */ React43.forwardRef(
45689
45582
  lastPointerXRef.current = event.clientX;
45690
45583
  }
45691
45584
  })
45692
- ),
45693
- children: isModal ? /* @__PURE__ */ jsx32(FocusScopeBranchProvider, { value: branchRegistry, children }) : children
45585
+ )
45694
45586
  }
45695
45587
  )
45696
45588
  }
@@ -45727,7 +45619,7 @@ var MenuItem = /* @__PURE__ */ React43.forwardRef(
45727
45619
  }
45728
45620
  }
45729
45621
  }, "handleSelect");
45730
- return /* @__PURE__ */ jsx32(
45622
+ return /* @__PURE__ */ jsx31(
45731
45623
  MenuItemImpl,
45732
45624
  {
45733
45625
  ...itemProps,
@@ -45773,13 +45665,13 @@ var MenuItemImpl = /* @__PURE__ */ React43.forwardRef(
45773
45665
  setTextContent((menuItem.textContent ?? "").trim());
45774
45666
  }
45775
45667
  }, [itemProps.children]);
45776
- return /* @__PURE__ */ jsx32(
45668
+ return /* @__PURE__ */ jsx31(
45777
45669
  Collection2.ItemSlot,
45778
45670
  {
45779
45671
  scope: __scopeMenu,
45780
45672
  disabled,
45781
45673
  textValue: textValue ?? textContent,
45782
- children: /* @__PURE__ */ jsx32(RovingFocusGroupItem, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx32(
45674
+ children: /* @__PURE__ */ jsx31(Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx31(
45783
45675
  Primitive.div,
45784
45676
  {
45785
45677
  role: "menuitem",
@@ -45828,7 +45720,7 @@ var [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(
45828
45720
  var MenuSeparator = /* @__PURE__ */ React43.forwardRef(
45829
45721
  /* @__PURE__ */ __name21(function MenuSeparator2(props, forwardedRef) {
45830
45722
  const { __scopeMenu, ...separatorProps } = props;
45831
- return /* @__PURE__ */ jsx32(
45723
+ return /* @__PURE__ */ jsx31(
45832
45724
  Primitive.div,
45833
45725
  {
45834
45726
  role: "separator",
@@ -45852,7 +45744,7 @@ var MenuSub = /* @__PURE__ */ __name21((props) => {
45852
45744
  if (parentMenuContext.open === false) handleOpenChange(false);
45853
45745
  return () => handleOpenChange(false);
45854
45746
  }, [parentMenuContext.open, handleOpenChange]);
45855
- return /* @__PURE__ */ jsx32(Popper, { ...popperScope, children: /* @__PURE__ */ jsx32(
45747
+ return /* @__PURE__ */ jsx31(Root2, { ...popperScope, children: /* @__PURE__ */ jsx31(
45856
45748
  MenuProvider,
45857
45749
  {
45858
45750
  scope: __scopeMenu,
@@ -45860,7 +45752,7 @@ var MenuSub = /* @__PURE__ */ __name21((props) => {
45860
45752
  onOpenChange: handleOpenChange,
45861
45753
  content,
45862
45754
  onContentChange: setContent,
45863
- children: /* @__PURE__ */ jsx32(
45755
+ children: /* @__PURE__ */ jsx31(
45864
45756
  MenuSubProvider,
45865
45757
  {
45866
45758
  scope: __scopeMenu,
@@ -45897,7 +45789,7 @@ var MenuSubTrigger = /* @__PURE__ */ React43.forwardRef(
45897
45789
  };
45898
45790
  }, [pointerGraceTimerRef, onPointerGraceIntentChange]);
45899
45791
  const composedRefs = useComposedRefs(forwardedRef, subContext.onTriggerChange);
45900
- return /* @__PURE__ */ jsx32(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx32(
45792
+ return /* @__PURE__ */ jsx31(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx31(
45901
45793
  MenuItemImpl,
45902
45794
  {
45903
45795
  id: subContext.triggerId,
@@ -45990,7 +45882,7 @@ var MenuSubContent = /* @__PURE__ */ React43.forwardRef(
45990
45882
  const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);
45991
45883
  const ref = React43.useRef(null);
45992
45884
  const composedRefs = useComposedRefs(forwardedRef, ref);
45993
- return /* @__PURE__ */ jsx32(Collection2.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx32(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx32(Collection2.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx32(
45885
+ return /* @__PURE__ */ jsx31(Collection2.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx31(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx31(Collection2.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx31(
45994
45886
  MenuContentImpl,
45995
45887
  {
45996
45888
  id: subContext.contentId,
@@ -45998,7 +45890,7 @@ var MenuSubContent = /* @__PURE__ */ React43.forwardRef(
45998
45890
  ...subContentProps,
45999
45891
  ref: composedRefs,
46000
45892
  align,
46001
- side: rootContext.dir === Direction2.RTL ? "left" : "right",
45893
+ side: rootContext.dir === "rtl" ? "left" : "right",
46002
45894
  disableOutsidePointerEvents: false,
46003
45895
  disableOutsideScroll: false,
46004
45896
  trapFocus: false,
@@ -46091,9 +45983,18 @@ function whenMouse(handler) {
46091
45983
  return (event) => event.pointerType === "mouse" ? handler(event) : void 0;
46092
45984
  }
46093
45985
  __name21(whenMouse, "whenMouse");
45986
+ var Root3 = Menu;
45987
+ var Anchor2 = MenuAnchor;
45988
+ var Portal3 = MenuPortal;
45989
+ var Content2 = MenuContent;
45990
+ var Item2 = MenuItem;
45991
+ var Separator = MenuSeparator;
45992
+ var Sub = MenuSub;
45993
+ var SubTrigger = MenuSubTrigger;
45994
+ var SubContent = MenuSubContent;
46094
45995
 
46095
45996
  // node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs
46096
- import { jsx as jsx33 } from "react/jsx-runtime";
45997
+ import { jsx as jsx32 } from "react/jsx-runtime";
46097
45998
  var __defProp24 = Object.defineProperty;
46098
45999
  var __name22 = (target, value) => __defProp24(target, "name", { value, configurable: true });
46099
46000
  var DROPDOWN_MENU_NAME = "DropdownMenu";
@@ -46121,7 +46022,7 @@ var DropdownMenu = /* @__PURE__ */ __name22((props) => {
46121
46022
  onChange: onOpenChange,
46122
46023
  caller: DROPDOWN_MENU_NAME
46123
46024
  });
46124
- return /* @__PURE__ */ jsx33(
46025
+ return /* @__PURE__ */ jsx32(
46125
46026
  DropdownMenuProvider,
46126
46027
  {
46127
46028
  scope: __scopeDropdownMenu,
@@ -46132,7 +46033,7 @@ var DropdownMenu = /* @__PURE__ */ __name22((props) => {
46132
46033
  onOpenChange: setOpen,
46133
46034
  onOpenToggle: React44.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
46134
46035
  modal,
46135
- children: /* @__PURE__ */ jsx33(Menu, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })
46036
+ children: /* @__PURE__ */ jsx32(Root3, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })
46136
46037
  }
46137
46038
  );
46138
46039
  }, "DropdownMenu");
@@ -46144,7 +46045,7 @@ var DropdownMenuTrigger = /* @__PURE__ */ React44.forwardRef(
46144
46045
  const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);
46145
46046
  const menuScope = useMenuScope(__scopeDropdownMenu);
46146
46047
  const composedRefs = useComposedRefs(forwardedRef, context.triggerRef);
46147
- return /* @__PURE__ */ jsx33(MenuAnchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx33(
46048
+ return /* @__PURE__ */ jsx32(Anchor2, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx32(
46148
46049
  Primitive.button,
46149
46050
  {
46150
46051
  type: "button",
@@ -46176,7 +46077,7 @@ var DropdownMenuTrigger = /* @__PURE__ */ React44.forwardRef(
46176
46077
  var DropdownMenuPortal = /* @__PURE__ */ __name22((props) => {
46177
46078
  const { __scopeDropdownMenu, ...portalProps } = props;
46178
46079
  const menuScope = useMenuScope(__scopeDropdownMenu);
46179
- return /* @__PURE__ */ jsx33(MenuPortal, { ...menuScope, ...portalProps });
46080
+ return /* @__PURE__ */ jsx32(Portal3, { ...menuScope, ...portalProps });
46180
46081
  }, "DropdownMenuPortal");
46181
46082
  var CONTENT_NAME3 = "DropdownMenuContent";
46182
46083
  var DropdownMenuContent = /* @__PURE__ */ React44.forwardRef(
@@ -46186,8 +46087,8 @@ var DropdownMenuContent = /* @__PURE__ */ React44.forwardRef(
46186
46087
  const context = useDropdownMenuContext(CONTENT_NAME3, __scopeDropdownMenu);
46187
46088
  const menuScope = useMenuScope(__scopeDropdownMenu);
46188
46089
  const hasInteractedOutsideRef = React44.useRef(false);
46189
- return /* @__PURE__ */ jsx33(
46190
- MenuContent,
46090
+ return /* @__PURE__ */ jsx32(
46091
+ Content2,
46191
46092
  {
46192
46093
  id: context.contentId,
46193
46094
  "aria-labelledby": context.triggerId,
@@ -46225,13 +46126,13 @@ var DropdownMenuItem = /* @__PURE__ */ React44.forwardRef(
46225
46126
  /* @__PURE__ */ __name22(function DropdownMenuItem2(props, forwardedRef) {
46226
46127
  const { __scopeDropdownMenu, ...itemProps } = props;
46227
46128
  const menuScope = useMenuScope(__scopeDropdownMenu);
46228
- return /* @__PURE__ */ jsx33(MenuItem, { ...menuScope, ...itemProps, ref: forwardedRef });
46129
+ return /* @__PURE__ */ jsx32(Item2, { ...menuScope, ...itemProps, ref: forwardedRef });
46229
46130
  }, "DropdownMenuItem")
46230
46131
  );
46231
46132
  var DropdownMenuSeparator = /* @__PURE__ */ React44.forwardRef(/* @__PURE__ */ __name22(function DropdownMenuSeparator2(props, forwardedRef) {
46232
46133
  const { __scopeDropdownMenu, ...separatorProps } = props;
46233
46134
  const menuScope = useMenuScope(__scopeDropdownMenu);
46234
- return /* @__PURE__ */ jsx33(MenuSeparator, { ...menuScope, ...separatorProps, ref: forwardedRef });
46135
+ return /* @__PURE__ */ jsx32(Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });
46235
46136
  }, "DropdownMenuSeparator"));
46236
46137
  var DropdownMenuSub = /* @__PURE__ */ __name22((props) => {
46237
46138
  const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
@@ -46242,18 +46143,18 @@ var DropdownMenuSub = /* @__PURE__ */ __name22((props) => {
46242
46143
  onChange: onOpenChange,
46243
46144
  caller: "DropdownMenuSub"
46244
46145
  });
46245
- return /* @__PURE__ */ jsx33(MenuSub, { ...menuScope, open, onOpenChange: setOpen, children });
46146
+ return /* @__PURE__ */ jsx32(Sub, { ...menuScope, open, onOpenChange: setOpen, children });
46246
46147
  }, "DropdownMenuSub");
46247
46148
  var DropdownMenuSubTrigger = /* @__PURE__ */ React44.forwardRef(/* @__PURE__ */ __name22(function DropdownMenuSubTrigger2(props, forwardedRef) {
46248
46149
  const { __scopeDropdownMenu, ...subTriggerProps } = props;
46249
46150
  const menuScope = useMenuScope(__scopeDropdownMenu);
46250
- return /* @__PURE__ */ jsx33(MenuSubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });
46151
+ return /* @__PURE__ */ jsx32(SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });
46251
46152
  }, "DropdownMenuSubTrigger"));
46252
46153
  var DropdownMenuSubContent = /* @__PURE__ */ React44.forwardRef(/* @__PURE__ */ __name22(function DropdownMenuSubContent2(props, forwardedRef) {
46253
46154
  const { __scopeDropdownMenu, ...subContentProps } = props;
46254
46155
  const menuScope = useMenuScope(__scopeDropdownMenu);
46255
- return /* @__PURE__ */ jsx33(
46256
- MenuSubContent,
46156
+ return /* @__PURE__ */ jsx32(
46157
+ SubContent,
46257
46158
  {
46258
46159
  ...menuScope,
46259
46160
  ...subContentProps,
@@ -46272,13 +46173,22 @@ var DropdownMenuSubContent = /* @__PURE__ */ React44.forwardRef(/* @__PURE__ */
46272
46173
  }
46273
46174
  );
46274
46175
  }, "DropdownMenuSubContent"));
46176
+ var Root22 = DropdownMenu;
46177
+ var Trigger = DropdownMenuTrigger;
46178
+ var Portal22 = DropdownMenuPortal;
46179
+ var Content22 = DropdownMenuContent;
46180
+ var Item22 = DropdownMenuItem;
46181
+ var Separator2 = DropdownMenuSeparator;
46182
+ var Sub2 = DropdownMenuSub;
46183
+ var SubTrigger2 = DropdownMenuSubTrigger;
46184
+ var SubContent2 = DropdownMenuSubContent;
46275
46185
 
46276
46186
  // src/components/AppearanceMenu.tsx
46277
46187
  import { useState as useState36 } from "react";
46278
46188
 
46279
46189
  // src/components/Icons.tsx
46280
- import { jsx as jsx34 } from "react/jsx-runtime";
46281
- var CheckIcon = () => /* @__PURE__ */ jsx34(
46190
+ import { jsx as jsx33 } from "react/jsx-runtime";
46191
+ var CheckIcon = () => /* @__PURE__ */ jsx33(
46282
46192
  "svg",
46283
46193
  {
46284
46194
  xmlns: "http://www.w3.org/2000/svg",
@@ -46290,10 +46200,10 @@ var CheckIcon = () => /* @__PURE__ */ jsx34(
46290
46200
  strokeWidth: "2",
46291
46201
  strokeLinecap: "round",
46292
46202
  strokeLinejoin: "round",
46293
- children: /* @__PURE__ */ jsx34("path", { d: "M20 6 9 17l-5-5" })
46203
+ children: /* @__PURE__ */ jsx33("path", { d: "M20 6 9 17l-5-5" })
46294
46204
  }
46295
46205
  );
46296
- var ChevronRightIcon = ({ isOpen }) => /* @__PURE__ */ jsx34(
46206
+ var ChevronRightIcon = ({ isOpen }) => /* @__PURE__ */ jsx33(
46297
46207
  "svg",
46298
46208
  {
46299
46209
  xmlns: "http://www.w3.org/2000/svg",
@@ -46310,10 +46220,10 @@ var ChevronRightIcon = ({ isOpen }) => /* @__PURE__ */ jsx34(
46310
46220
  transform: isOpen ? "rotate(90deg)" : "rotate(0deg)",
46311
46221
  opacity: 0.6
46312
46222
  },
46313
- children: /* @__PURE__ */ jsx34("path", { d: "m9 18 6-6-6-6" })
46223
+ children: /* @__PURE__ */ jsx33("path", { d: "m9 18 6-6-6-6" })
46314
46224
  }
46315
46225
  );
46316
- var DotIcon = () => /* @__PURE__ */ jsx34(
46226
+ var DotIcon = () => /* @__PURE__ */ jsx33(
46317
46227
  "svg",
46318
46228
  {
46319
46229
  xmlns: "http://www.w3.org/2000/svg",
@@ -46326,12 +46236,12 @@ var DotIcon = () => /* @__PURE__ */ jsx34(
46326
46236
  strokeLinecap: "round",
46327
46237
  strokeLinejoin: "round",
46328
46238
  className: "lucide lucide-dot-icon lucide-dot",
46329
- children: /* @__PURE__ */ jsx34("circle", { cx: "12.1", cy: "12.1", r: "4.5", fill: "white" })
46239
+ children: /* @__PURE__ */ jsx33("circle", { cx: "12.1", cy: "12.1", r: "4.5", fill: "white" })
46330
46240
  }
46331
46241
  );
46332
46242
 
46333
46243
  // src/components/AppearanceMenu.tsx
46334
- import { Fragment as Fragment11, jsx as jsx35, jsxs as jsxs8 } from "react/jsx-runtime";
46244
+ import { Fragment as Fragment11, jsx as jsx34, jsxs as jsxs8 } from "react/jsx-runtime";
46335
46245
  var itemStyles = {
46336
46246
  padding: "6px 8px",
46337
46247
  borderRadius: 6,
@@ -46384,10 +46294,10 @@ var AppearanceMenu = () => {
46384
46294
  const [appearanceSubOpen, setAppearanceSubOpen] = useState36(false);
46385
46295
  const [hoveredItem, setHoveredItem] = useState36(null);
46386
46296
  return /* @__PURE__ */ jsxs8(Fragment11, { children: [
46387
- /* @__PURE__ */ jsx35(DropdownMenuSeparator, { style: separatorStyles }),
46388
- /* @__PURE__ */ jsxs8(DropdownMenuSub, { onOpenChange: setAppearanceSubOpen, children: [
46297
+ /* @__PURE__ */ jsx34(Separator2, { style: separatorStyles }),
46298
+ /* @__PURE__ */ jsxs8(Sub2, { onOpenChange: setAppearanceSubOpen, children: [
46389
46299
  /* @__PURE__ */ jsxs8(
46390
- DropdownMenuSubTrigger,
46300
+ SubTrigger2,
46391
46301
  {
46392
46302
  style: {
46393
46303
  ...itemStyles,
@@ -46398,8 +46308,8 @@ var AppearanceMenu = () => {
46398
46308
  onMouseLeave: () => setHoveredItem(null),
46399
46309
  onTouchStart: () => setHoveredItem("appearance"),
46400
46310
  children: [
46401
- /* @__PURE__ */ jsx35("span", { style: { flex: 1, display: "flex", alignItems: "center" }, children: "Appearance" }),
46402
- /* @__PURE__ */ jsx35(
46311
+ /* @__PURE__ */ jsx34("span", { style: { flex: 1, display: "flex", alignItems: "center" }, children: "Appearance" }),
46312
+ /* @__PURE__ */ jsx34(
46403
46313
  "div",
46404
46314
  {
46405
46315
  style: {
@@ -46408,21 +46318,21 @@ var AppearanceMenu = () => {
46408
46318
  alignItems: "flex-end",
46409
46319
  marginBottom: "-5px"
46410
46320
  },
46411
- children: /* @__PURE__ */ jsx35(ChevronRightIcon, { isOpen: appearanceSubOpen })
46321
+ children: /* @__PURE__ */ jsx34(ChevronRightIcon, { isOpen: appearanceSubOpen })
46412
46322
  }
46413
46323
  )
46414
46324
  ]
46415
46325
  }
46416
46326
  ),
46417
- /* @__PURE__ */ jsx35(DropdownMenuPortal, { children: /* @__PURE__ */ jsxs8(
46418
- DropdownMenuSubContent,
46327
+ /* @__PURE__ */ jsx34(Portal22, { children: /* @__PURE__ */ jsxs8(
46328
+ SubContent2,
46419
46329
  {
46420
46330
  style: { ...contentStyles, marginLeft: -2 },
46421
46331
  collisionPadding: 10,
46422
46332
  avoidCollisions: true,
46423
46333
  children: [
46424
46334
  /* @__PURE__ */ jsxs8(
46425
- DropdownMenuItem,
46335
+ Item22,
46426
46336
  {
46427
46337
  style: {
46428
46338
  ...itemStyles,
@@ -46437,14 +46347,14 @@ var AppearanceMenu = () => {
46437
46347
  onMouseLeave: () => setHoveredItem(null),
46438
46348
  onTouchStart: () => setHoveredItem("lighting"),
46439
46349
  children: [
46440
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: lightingEnabled && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46441
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Lighting" })
46350
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: lightingEnabled && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46351
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Lighting" })
46442
46352
  ]
46443
46353
  }
46444
46354
  ),
46445
- /* @__PURE__ */ jsx35(DropdownMenuSeparator, { style: separatorStyles }),
46355
+ /* @__PURE__ */ jsx34(Separator2, { style: separatorStyles }),
46446
46356
  /* @__PURE__ */ jsxs8(
46447
- DropdownMenuItem,
46357
+ Item22,
46448
46358
  {
46449
46359
  style: {
46450
46360
  ...itemStyles,
@@ -46459,13 +46369,13 @@ var AppearanceMenu = () => {
46459
46369
  onMouseLeave: () => setHoveredItem(null),
46460
46370
  onTouchStart: () => setHoveredItem("boardBody"),
46461
46371
  children: [
46462
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.boardBody && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46463
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Board Body" })
46372
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.boardBody && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46373
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Board Body" })
46464
46374
  ]
46465
46375
  }
46466
46376
  ),
46467
46377
  /* @__PURE__ */ jsxs8(
46468
- DropdownMenuItem,
46378
+ Item22,
46469
46379
  {
46470
46380
  style: {
46471
46381
  ...itemStyles,
@@ -46480,13 +46390,13 @@ var AppearanceMenu = () => {
46480
46390
  onMouseLeave: () => setHoveredItem(null),
46481
46391
  onTouchStart: () => setHoveredItem("topCopper"),
46482
46392
  children: [
46483
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.topCopper && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46484
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Top Copper" })
46393
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.topCopper && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46394
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Top Copper" })
46485
46395
  ]
46486
46396
  }
46487
46397
  ),
46488
46398
  /* @__PURE__ */ jsxs8(
46489
- DropdownMenuItem,
46399
+ Item22,
46490
46400
  {
46491
46401
  style: {
46492
46402
  ...itemStyles,
@@ -46501,13 +46411,13 @@ var AppearanceMenu = () => {
46501
46411
  onMouseLeave: () => setHoveredItem(null),
46502
46412
  onTouchStart: () => setHoveredItem("bottomCopper"),
46503
46413
  children: [
46504
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.bottomCopper && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46505
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Bottom Copper" })
46414
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.bottomCopper && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46415
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Bottom Copper" })
46506
46416
  ]
46507
46417
  }
46508
46418
  ),
46509
46419
  /* @__PURE__ */ jsxs8(
46510
- DropdownMenuItem,
46420
+ Item22,
46511
46421
  {
46512
46422
  style: {
46513
46423
  ...itemStyles,
@@ -46522,13 +46432,13 @@ var AppearanceMenu = () => {
46522
46432
  onMouseLeave: () => setHoveredItem(null),
46523
46433
  onTouchStart: () => setHoveredItem("keepout"),
46524
46434
  children: [
46525
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.keepout && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46526
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Keepout" })
46435
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.keepout && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46436
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Keepout" })
46527
46437
  ]
46528
46438
  }
46529
46439
  ),
46530
46440
  /* @__PURE__ */ jsxs8(
46531
- DropdownMenuItem,
46441
+ Item22,
46532
46442
  {
46533
46443
  style: {
46534
46444
  ...itemStyles,
@@ -46543,13 +46453,13 @@ var AppearanceMenu = () => {
46543
46453
  onMouseLeave: () => setHoveredItem(null),
46544
46454
  onTouchStart: () => setHoveredItem("topSilkscreen"),
46545
46455
  children: [
46546
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.topSilkscreen && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46547
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Top Silkscreen" })
46456
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.topSilkscreen && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46457
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Top Silkscreen" })
46548
46458
  ]
46549
46459
  }
46550
46460
  ),
46551
46461
  /* @__PURE__ */ jsxs8(
46552
- DropdownMenuItem,
46462
+ Item22,
46553
46463
  {
46554
46464
  style: {
46555
46465
  ...itemStyles,
@@ -46567,13 +46477,13 @@ var AppearanceMenu = () => {
46567
46477
  onMouseLeave: () => setHoveredItem(null),
46568
46478
  onTouchStart: () => setHoveredItem("bottomSilkscreen"),
46569
46479
  children: [
46570
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.bottomSilkscreen && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46571
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Bottom Silkscreen" })
46480
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.bottomSilkscreen && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46481
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Bottom Silkscreen" })
46572
46482
  ]
46573
46483
  }
46574
46484
  ),
46575
46485
  /* @__PURE__ */ jsxs8(
46576
- DropdownMenuItem,
46486
+ Item22,
46577
46487
  {
46578
46488
  style: {
46579
46489
  ...itemStyles,
@@ -46588,13 +46498,13 @@ var AppearanceMenu = () => {
46588
46498
  onMouseLeave: () => setHoveredItem(null),
46589
46499
  onTouchStart: () => setHoveredItem("topMask"),
46590
46500
  children: [
46591
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.topMask && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46592
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Top Soldermask" })
46501
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.topMask && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46502
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Top Soldermask" })
46593
46503
  ]
46594
46504
  }
46595
46505
  ),
46596
46506
  /* @__PURE__ */ jsxs8(
46597
- DropdownMenuItem,
46507
+ Item22,
46598
46508
  {
46599
46509
  style: {
46600
46510
  ...itemStyles,
@@ -46609,13 +46519,13 @@ var AppearanceMenu = () => {
46609
46519
  onMouseLeave: () => setHoveredItem(null),
46610
46520
  onTouchStart: () => setHoveredItem("bottomMask"),
46611
46521
  children: [
46612
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.bottomMask && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46613
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Bottom Soldermask" })
46522
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.bottomMask && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46523
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Bottom Soldermask" })
46614
46524
  ]
46615
46525
  }
46616
46526
  ),
46617
46527
  /* @__PURE__ */ jsxs8(
46618
- DropdownMenuItem,
46528
+ Item22,
46619
46529
  {
46620
46530
  style: {
46621
46531
  ...itemStyles,
@@ -46630,13 +46540,13 @@ var AppearanceMenu = () => {
46630
46540
  onMouseLeave: () => setHoveredItem(null),
46631
46541
  onTouchStart: () => setHoveredItem("pcbNotes"),
46632
46542
  children: [
46633
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.pcbNotes && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46634
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "PCB Notes" })
46543
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.pcbNotes && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46544
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "PCB Notes" })
46635
46545
  ]
46636
46546
  }
46637
46547
  ),
46638
46548
  /* @__PURE__ */ jsxs8(
46639
- DropdownMenuItem,
46549
+ Item22,
46640
46550
  {
46641
46551
  style: {
46642
46552
  ...itemStyles,
@@ -46651,13 +46561,13 @@ var AppearanceMenu = () => {
46651
46561
  onMouseLeave: () => setHoveredItem(null),
46652
46562
  onTouchStart: () => setHoveredItem("smtModels"),
46653
46563
  children: [
46654
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.smtModels && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46655
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Surface Mount Components" })
46564
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.smtModels && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46565
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Surface Mount Components" })
46656
46566
  ]
46657
46567
  }
46658
46568
  ),
46659
46569
  /* @__PURE__ */ jsxs8(
46660
- DropdownMenuItem,
46570
+ Item22,
46661
46571
  {
46662
46572
  style: {
46663
46573
  ...itemStyles,
@@ -46675,8 +46585,8 @@ var AppearanceMenu = () => {
46675
46585
  onMouseLeave: () => setHoveredItem(null),
46676
46586
  onTouchStart: () => setHoveredItem("throughHoleModels"),
46677
46587
  children: [
46678
- /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.throughHoleModels && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46679
- /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Through-Hole Components" })
46588
+ /* @__PURE__ */ jsx34("span", { style: iconContainerStyles, children: visibility.throughHoleModels && /* @__PURE__ */ jsx34(CheckIcon, {}) }),
46589
+ /* @__PURE__ */ jsx34("span", { style: { display: "flex", alignItems: "center" }, children: "Through-Hole Components" })
46680
46590
  ]
46681
46591
  }
46682
46592
  )
@@ -46688,7 +46598,7 @@ var AppearanceMenu = () => {
46688
46598
  };
46689
46599
 
46690
46600
  // src/components/ContextMenu.tsx
46691
- import { jsx as jsx36, jsxs as jsxs9 } from "react/jsx-runtime";
46601
+ import { jsx as jsx35, jsxs as jsxs9 } from "react/jsx-runtime";
46692
46602
  var cameraOptions = [
46693
46603
  "Custom",
46694
46604
  "Top Center Angled",
@@ -46772,7 +46682,7 @@ var ContextMenu = ({
46772
46682
  const { cameraType, setCameraType } = useCameraController();
46773
46683
  const [cameraSubOpen, setCameraSubOpen] = useState37(false);
46774
46684
  const [hoveredItem, setHoveredItem] = useState37(null);
46775
- return /* @__PURE__ */ jsx36(
46685
+ return /* @__PURE__ */ jsx35(
46776
46686
  "div",
46777
46687
  {
46778
46688
  ref: menuRef,
@@ -46783,10 +46693,10 @@ var ContextMenu = ({
46783
46693
  width: 0,
46784
46694
  height: 0
46785
46695
  },
46786
- children: /* @__PURE__ */ jsxs9(DropdownMenu, { open: true, modal: false, children: [
46787
- /* @__PURE__ */ jsx36(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx36("div", { style: { position: "absolute", width: 1, height: 1 } }) }),
46788
- /* @__PURE__ */ jsx36(DropdownMenuPortal, { children: /* @__PURE__ */ jsxs9(
46789
- DropdownMenuContent,
46696
+ children: /* @__PURE__ */ jsxs9(Root22, { open: true, modal: false, children: [
46697
+ /* @__PURE__ */ jsx35(Trigger, { asChild: true, children: /* @__PURE__ */ jsx35("div", { style: { position: "absolute", width: 1, height: 1 } }) }),
46698
+ /* @__PURE__ */ jsx35(Portal22, { children: /* @__PURE__ */ jsxs9(
46699
+ Content22,
46790
46700
  {
46791
46701
  style: contentStyles2,
46792
46702
  collisionPadding: 10,
@@ -46794,9 +46704,9 @@ var ContextMenu = ({
46794
46704
  sideOffset: 0,
46795
46705
  align: "start",
46796
46706
  children: [
46797
- /* @__PURE__ */ jsxs9(DropdownMenuSub, { onOpenChange: setCameraSubOpen, children: [
46707
+ /* @__PURE__ */ jsxs9(Sub2, { onOpenChange: setCameraSubOpen, children: [
46798
46708
  /* @__PURE__ */ jsxs9(
46799
- DropdownMenuSubTrigger,
46709
+ SubTrigger2,
46800
46710
  {
46801
46711
  style: {
46802
46712
  ...itemStyles2,
@@ -46807,7 +46717,7 @@ var ContextMenu = ({
46807
46717
  onMouseLeave: () => setHoveredItem(null),
46808
46718
  onTouchStart: () => setHoveredItem("camera"),
46809
46719
  children: [
46810
- /* @__PURE__ */ jsx36(
46720
+ /* @__PURE__ */ jsx35(
46811
46721
  "span",
46812
46722
  {
46813
46723
  style: { flex: 1, display: "flex", alignItems: "center" },
@@ -46824,22 +46734,22 @@ var ContextMenu = ({
46824
46734
  marginLeft: "auto"
46825
46735
  },
46826
46736
  children: [
46827
- /* @__PURE__ */ jsx36("span", { style: { opacity: 0.55, fontSize: 13 }, children: cameraPreset }),
46828
- /* @__PURE__ */ jsx36(ChevronRightIcon, { isOpen: cameraSubOpen })
46737
+ /* @__PURE__ */ jsx35("span", { style: { opacity: 0.55, fontSize: 13 }, children: cameraPreset }),
46738
+ /* @__PURE__ */ jsx35(ChevronRightIcon, { isOpen: cameraSubOpen })
46829
46739
  ]
46830
46740
  }
46831
46741
  )
46832
46742
  ]
46833
46743
  }
46834
46744
  ),
46835
- /* @__PURE__ */ jsx36(DropdownMenuPortal, { children: /* @__PURE__ */ jsx36(
46836
- DropdownMenuSubContent,
46745
+ /* @__PURE__ */ jsx35(Portal22, { children: /* @__PURE__ */ jsx35(
46746
+ SubContent2,
46837
46747
  {
46838
46748
  style: { ...contentStyles2, marginLeft: -2 },
46839
46749
  collisionPadding: 10,
46840
46750
  avoidCollisions: true,
46841
46751
  children: cameraOptions.map((option) => /* @__PURE__ */ jsxs9(
46842
- DropdownMenuItem,
46752
+ Item22,
46843
46753
  {
46844
46754
  style: {
46845
46755
  ...itemStyles2,
@@ -46854,8 +46764,8 @@ var ContextMenu = ({
46854
46764
  onMouseLeave: () => setHoveredItem(null),
46855
46765
  onTouchStart: () => setHoveredItem(option),
46856
46766
  children: [
46857
- /* @__PURE__ */ jsx36("span", { style: iconContainerStyles2, children: cameraPreset === option && /* @__PURE__ */ jsx36(DotIcon, {}) }),
46858
- /* @__PURE__ */ jsx36("span", { style: { display: "flex", alignItems: "center" }, children: option })
46767
+ /* @__PURE__ */ jsx35("span", { style: iconContainerStyles2, children: cameraPreset === option && /* @__PURE__ */ jsx35(DotIcon, {}) }),
46768
+ /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: option })
46859
46769
  ]
46860
46770
  },
46861
46771
  option
@@ -46864,7 +46774,7 @@ var ContextMenu = ({
46864
46774
  ) })
46865
46775
  ] }),
46866
46776
  /* @__PURE__ */ jsxs9(
46867
- DropdownMenuItem,
46777
+ Item22,
46868
46778
  {
46869
46779
  style: {
46870
46780
  ...itemStyles2,
@@ -46879,13 +46789,13 @@ var ContextMenu = ({
46879
46789
  onMouseLeave: () => setHoveredItem(null),
46880
46790
  onTouchStart: () => setHoveredItem("autorotate"),
46881
46791
  children: [
46882
- /* @__PURE__ */ jsx36("span", { style: iconContainerStyles2, children: autoRotate && /* @__PURE__ */ jsx36(CheckIcon, {}) }),
46883
- /* @__PURE__ */ jsx36("span", { style: { display: "flex", alignItems: "center" }, children: "Auto rotate" })
46792
+ /* @__PURE__ */ jsx35("span", { style: iconContainerStyles2, children: autoRotate && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46793
+ /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Auto rotate" })
46884
46794
  ]
46885
46795
  }
46886
46796
  ),
46887
46797
  /* @__PURE__ */ jsxs9(
46888
- DropdownMenuItem,
46798
+ Item22,
46889
46799
  {
46890
46800
  style: {
46891
46801
  ...itemStyles2,
@@ -46902,15 +46812,15 @@ var ContextMenu = ({
46902
46812
  onMouseLeave: () => setHoveredItem(null),
46903
46813
  onTouchStart: () => setHoveredItem("cameratype"),
46904
46814
  children: [
46905
- /* @__PURE__ */ jsx36("span", { style: iconContainerStyles2, children: cameraType === "orthographic" && /* @__PURE__ */ jsx36(CheckIcon, {}) }),
46906
- /* @__PURE__ */ jsx36("span", { style: { display: "flex", alignItems: "center" }, children: "Orthographic Camera" })
46815
+ /* @__PURE__ */ jsx35("span", { style: iconContainerStyles2, children: cameraType === "orthographic" && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
46816
+ /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Orthographic Camera" })
46907
46817
  ]
46908
46818
  }
46909
46819
  ),
46910
- /* @__PURE__ */ jsx36(AppearanceMenu, {}),
46911
- /* @__PURE__ */ jsx36(DropdownMenuSeparator, { style: separatorStyles2 }),
46912
- /* @__PURE__ */ jsx36(
46913
- DropdownMenuItem,
46820
+ /* @__PURE__ */ jsx35(AppearanceMenu, {}),
46821
+ /* @__PURE__ */ jsx35(Separator2, { style: separatorStyles2 }),
46822
+ /* @__PURE__ */ jsx35(
46823
+ Item22,
46914
46824
  {
46915
46825
  style: {
46916
46826
  ...itemStyles2,
@@ -46921,12 +46831,12 @@ var ContextMenu = ({
46921
46831
  onMouseEnter: () => setHoveredItem("download"),
46922
46832
  onMouseLeave: () => setHoveredItem(null),
46923
46833
  onTouchStart: () => setHoveredItem("download"),
46924
- children: /* @__PURE__ */ jsx36("span", { style: { display: "flex", alignItems: "center" }, children: "Download GLTF" })
46834
+ children: /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "Download GLTF" })
46925
46835
  }
46926
46836
  ),
46927
- /* @__PURE__ */ jsx36(DropdownMenuSeparator, { style: separatorStyles2 }),
46837
+ /* @__PURE__ */ jsx35(Separator2, { style: separatorStyles2 }),
46928
46838
  /* @__PURE__ */ jsxs9(
46929
- DropdownMenuItem,
46839
+ Item22,
46930
46840
  {
46931
46841
  style: {
46932
46842
  ...itemStyles2,
@@ -46947,7 +46857,7 @@ var ContextMenu = ({
46947
46857
  engine === "jscad" ? "Manifold" : "JSCAD",
46948
46858
  " Engine"
46949
46859
  ] }),
46950
- /* @__PURE__ */ jsx36(
46860
+ /* @__PURE__ */ jsx35(
46951
46861
  "div",
46952
46862
  {
46953
46863
  style: {
@@ -46961,9 +46871,9 @@ var ContextMenu = ({
46961
46871
  ]
46962
46872
  }
46963
46873
  ),
46964
- /* @__PURE__ */ jsx36(DropdownMenuSeparator, { style: separatorStyles2 }),
46874
+ /* @__PURE__ */ jsx35(Separator2, { style: separatorStyles2 }),
46965
46875
  /* @__PURE__ */ jsxs9(
46966
- DropdownMenuItem,
46876
+ Item22,
46967
46877
  {
46968
46878
  style: {
46969
46879
  ...itemStyles2,
@@ -46975,8 +46885,8 @@ var ContextMenu = ({
46975
46885
  onMouseLeave: () => setHoveredItem(null),
46976
46886
  onTouchStart: () => setHoveredItem("shortcuts"),
46977
46887
  children: [
46978
- /* @__PURE__ */ jsx36("span", { style: { flex: 1, display: "flex", alignItems: "center" }, children: "Keyboard Shortcuts" }),
46979
- /* @__PURE__ */ jsx36(
46888
+ /* @__PURE__ */ jsx35("span", { style: { flex: 1, display: "flex", alignItems: "center" }, children: "Keyboard Shortcuts" }),
46889
+ /* @__PURE__ */ jsx35(
46980
46890
  "div",
46981
46891
  {
46982
46892
  style: {
@@ -46990,8 +46900,8 @@ var ContextMenu = ({
46990
46900
  ]
46991
46901
  }
46992
46902
  ),
46993
- /* @__PURE__ */ jsx36(DropdownMenuSeparator, { style: separatorStyles2 }),
46994
- /* @__PURE__ */ jsx36(
46903
+ /* @__PURE__ */ jsx35(Separator2, { style: separatorStyles2 }),
46904
+ /* @__PURE__ */ jsx35(
46995
46905
  "div",
46996
46906
  {
46997
46907
  style: {
@@ -47029,8 +46939,8 @@ var ContextMenu = ({
47029
46939
  };
47030
46940
 
47031
46941
  // src/components/KeyboardShortcutsDialog.tsx
47032
- import { useEffect as useEffect47, useMemo as useMemo33, useRef as useRef28, useState as useState38 } from "react";
47033
- import { jsx as jsx37, jsxs as jsxs10 } from "react/jsx-runtime";
46942
+ import { useEffect as useEffect47, useMemo as useMemo31, useRef as useRef28, useState as useState38 } from "react";
46943
+ import { jsx as jsx36, jsxs as jsxs10 } from "react/jsx-runtime";
47034
46944
  var KeyboardShortcutsDialog = ({
47035
46945
  open,
47036
46946
  onClose
@@ -47056,7 +46966,7 @@ var KeyboardShortcutsDialog = ({
47056
46966
  }, 0);
47057
46967
  }
47058
46968
  }, [open]);
47059
- const filteredHotkeys = useMemo33(() => {
46969
+ const filteredHotkeys = useMemo31(() => {
47060
46970
  const normalizedQuery = query.trim().toLowerCase();
47061
46971
  if (!normalizedQuery) {
47062
46972
  return hotkeys;
@@ -47069,7 +46979,7 @@ var KeyboardShortcutsDialog = ({
47069
46979
  if (!open) {
47070
46980
  return null;
47071
46981
  }
47072
- return /* @__PURE__ */ jsx37(
46982
+ return /* @__PURE__ */ jsx36(
47073
46983
  "div",
47074
46984
  {
47075
46985
  role: "dialog",
@@ -47109,7 +47019,7 @@ var KeyboardShortcutsDialog = ({
47109
47019
  },
47110
47020
  children: [
47111
47021
  /* @__PURE__ */ jsxs10("div", { style: { display: "flex", justifyContent: "space-between" }, children: [
47112
- /* @__PURE__ */ jsx37(
47022
+ /* @__PURE__ */ jsx36(
47113
47023
  "h2",
47114
47024
  {
47115
47025
  style: {
@@ -47121,7 +47031,7 @@ var KeyboardShortcutsDialog = ({
47121
47031
  children: "Keyboard Shortcuts"
47122
47032
  }
47123
47033
  ),
47124
- /* @__PURE__ */ jsx37(
47034
+ /* @__PURE__ */ jsx36(
47125
47035
  "button",
47126
47036
  {
47127
47037
  type: "button",
@@ -47137,7 +47047,7 @@ var KeyboardShortcutsDialog = ({
47137
47047
  }
47138
47048
  )
47139
47049
  ] }),
47140
- /* @__PURE__ */ jsx37(
47050
+ /* @__PURE__ */ jsx36(
47141
47051
  "input",
47142
47052
  {
47143
47053
  ref: inputRef,
@@ -47160,7 +47070,7 @@ var KeyboardShortcutsDialog = ({
47160
47070
  ]
47161
47071
  }
47162
47072
  ),
47163
- /* @__PURE__ */ jsx37("div", { style: { overflowY: "auto" }, children: /* @__PURE__ */ jsxs10(
47073
+ /* @__PURE__ */ jsx36("div", { style: { overflowY: "auto" }, children: /* @__PURE__ */ jsxs10(
47164
47074
  "table",
47165
47075
  {
47166
47076
  style: {
@@ -47169,11 +47079,11 @@ var KeyboardShortcutsDialog = ({
47169
47079
  fontSize: "0.95rem"
47170
47080
  },
47171
47081
  children: [
47172
- /* @__PURE__ */ jsx37("thead", { children: /* @__PURE__ */ jsxs10("tr", { style: { textAlign: "left", color: "#a1a1b5" }, children: [
47173
- /* @__PURE__ */ jsx37("th", { style: { padding: "12px 24px", width: "25%" }, children: "Key" }),
47174
- /* @__PURE__ */ jsx37("th", { style: { padding: "12px 24px" }, children: "Description" })
47082
+ /* @__PURE__ */ jsx36("thead", { children: /* @__PURE__ */ jsxs10("tr", { style: { textAlign: "left", color: "#a1a1b5" }, children: [
47083
+ /* @__PURE__ */ jsx36("th", { style: { padding: "12px 24px", width: "25%" }, children: "Key" }),
47084
+ /* @__PURE__ */ jsx36("th", { style: { padding: "12px 24px" }, children: "Description" })
47175
47085
  ] }) }),
47176
- /* @__PURE__ */ jsx37("tbody", { children: filteredHotkeys.length === 0 ? /* @__PURE__ */ jsx37("tr", { children: /* @__PURE__ */ jsx37(
47086
+ /* @__PURE__ */ jsx36("tbody", { children: filteredHotkeys.length === 0 ? /* @__PURE__ */ jsx36("tr", { children: /* @__PURE__ */ jsx36(
47177
47087
  "td",
47178
47088
  {
47179
47089
  colSpan: 2,
@@ -47185,7 +47095,7 @@ var KeyboardShortcutsDialog = ({
47185
47095
  {
47186
47096
  style: { borderTop: "1px solid rgba(255, 255, 255, 0.05)" },
47187
47097
  children: [
47188
- /* @__PURE__ */ jsx37("td", { style: { padding: "12px 24px" }, children: /* @__PURE__ */ jsx37(
47098
+ /* @__PURE__ */ jsx36("td", { style: { padding: "12px 24px" }, children: /* @__PURE__ */ jsx36(
47189
47099
  "span",
47190
47100
  {
47191
47101
  style: {
@@ -47203,7 +47113,7 @@ var KeyboardShortcutsDialog = ({
47203
47113
  children: hotkey.shortcut
47204
47114
  }
47205
47115
  ) }),
47206
- /* @__PURE__ */ jsx37("td", { style: { padding: "12px 24px" }, children: hotkey.description })
47116
+ /* @__PURE__ */ jsx36("td", { style: { padding: "12px 24px" }, children: hotkey.description })
47207
47117
  ]
47208
47118
  },
47209
47119
  hotkey.id
@@ -47219,7 +47129,7 @@ var KeyboardShortcutsDialog = ({
47219
47129
  };
47220
47130
 
47221
47131
  // src/CadViewer.tsx
47222
- import { jsx as jsx38, jsxs as jsxs11 } from "react/jsx-runtime";
47132
+ import { jsx as jsx37, jsxs as jsxs11 } from "react/jsx-runtime";
47223
47133
  var DEFAULT_TARGET = new THREE46.Vector3(0, 0, 0);
47224
47134
  var INITIAL_CAMERA_POSITION = [5, -5, 5];
47225
47135
  var readStoredCameraType = () => {
@@ -47390,7 +47300,7 @@ var CadViewerInner = (props) => {
47390
47300
  },
47391
47301
  ...contextMenuEventHandlers,
47392
47302
  children: [
47393
- engine === "jscad" ? /* @__PURE__ */ jsx38(
47303
+ engine === "jscad" ? /* @__PURE__ */ jsx37(
47394
47304
  CadViewerJscad,
47395
47305
  {
47396
47306
  ...props,
@@ -47399,7 +47309,7 @@ var CadViewerInner = (props) => {
47399
47309
  onUserInteraction: handleUserInteraction,
47400
47310
  onCameraControllerReady: handleCameraControllerReady
47401
47311
  }
47402
- ) : /* @__PURE__ */ jsx38(
47312
+ ) : /* @__PURE__ */ jsx37(
47403
47313
  CadViewerManifold_default,
47404
47314
  {
47405
47315
  ...props,
@@ -47426,11 +47336,11 @@ var CadViewerInner = (props) => {
47426
47336
  },
47427
47337
  children: [
47428
47338
  "Engine: ",
47429
- /* @__PURE__ */ jsx38("b", { children: engine === "jscad" ? "JSCAD" : "Manifold" })
47339
+ /* @__PURE__ */ jsx37("b", { children: engine === "jscad" ? "JSCAD" : "Manifold" })
47430
47340
  ]
47431
47341
  }
47432
47342
  ),
47433
- menuVisible && /* @__PURE__ */ jsx38(
47343
+ menuVisible && /* @__PURE__ */ jsx37(
47434
47344
  ContextMenu,
47435
47345
  {
47436
47346
  menuRef,
@@ -47457,7 +47367,7 @@ var CadViewerInner = (props) => {
47457
47367
  }
47458
47368
  }
47459
47369
  ),
47460
- /* @__PURE__ */ jsx38(
47370
+ /* @__PURE__ */ jsx37(
47461
47371
  KeyboardShortcutsDialog,
47462
47372
  {
47463
47373
  open: isKeyboardShortcutsDialogOpen,
@@ -47470,13 +47380,13 @@ var CadViewerInner = (props) => {
47470
47380
  );
47471
47381
  };
47472
47382
  var CadViewer = (props) => {
47473
- return /* @__PURE__ */ jsx38(
47383
+ return /* @__PURE__ */ jsx37(
47474
47384
  CameraControllerProvider,
47475
47385
  {
47476
47386
  defaultTarget: DEFAULT_TARGET,
47477
47387
  initialCameraPosition: INITIAL_CAMERA_POSITION,
47478
47388
  initialCameraType: readStoredCameraType(),
47479
- children: /* @__PURE__ */ jsx38(LayerVisibilityProvider, { children: /* @__PURE__ */ jsx38(RenderingModeProvider, { children: /* @__PURE__ */ jsx38(ToastProvider, { children: /* @__PURE__ */ jsx38(CadViewerInner, { ...props }) }) }) })
47389
+ children: /* @__PURE__ */ jsx37(LayerVisibilityProvider, { children: /* @__PURE__ */ jsx37(RenderingModeProvider, { children: /* @__PURE__ */ jsx37(ToastProvider, { children: /* @__PURE__ */ jsx37(CadViewerInner, { ...props }) }) }) })
47480
47390
  }
47481
47391
  );
47482
47392
  };
@@ -47771,10 +47681,10 @@ async function convertCircuitJsonTo3dSvg(circuitJson, options = {}) {
47771
47681
 
47772
47682
  // src/hooks/exporter/gltf.ts
47773
47683
  import { GLTFExporter as GLTFExporter3 } from "three-stdlib";
47774
- import { useEffect as useEffect49, useState as useState40, useMemo as useMemo34, useCallback as useCallback26 } from "react";
47684
+ import { useEffect as useEffect49, useState as useState40, useMemo as useMemo32, useCallback as useCallback26 } from "react";
47775
47685
  function useSaveGltfAs(options = {}) {
47776
47686
  const parse2 = useParser(options);
47777
- const link = useMemo34(() => document.createElement("a"), []);
47687
+ const link = useMemo32(() => document.createElement("a"), []);
47778
47688
  const saveAs = async (filename) => {
47779
47689
  const name = filename ?? options.filename ?? "";
47780
47690
  if (options.binary == null) options.binary = name.endsWith(".glb");
@@ -47809,7 +47719,7 @@ function useExportGltfUrl(options = {}) {
47809
47719
  return [ref, url, error];
47810
47720
  }
47811
47721
  function useParser(options = {}) {
47812
- const exporter = useMemo34(() => new GLTFExporter3(), []);
47722
+ const exporter = useMemo32(() => new GLTFExporter3(), []);
47813
47723
  return (instance) => {
47814
47724
  const { promise, resolve, reject } = Promise.withResolvers();
47815
47725
  exporter.parse(