@myoc/excalidraw 0.19.545 → 0.19.547

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 (35) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/dist/dev/{chunk-CK7JCUHP.js → chunk-6X722ZMM.js} +2 -2
  3. package/dist/dev/{chunk-GWV63UBO.js → chunk-OWS32STE.js} +3 -3
  4. package/dist/dev/{chunk-35XUJXYN.js → chunk-VBVJJWUO.js} +5 -1
  5. package/dist/dev/chunk-VBVJJWUO.js.map +7 -0
  6. package/dist/dev/data/{image-LHD6YZAK.js → image-SHO5VNS6.js} +3 -3
  7. package/dist/dev/index.css +0 -3
  8. package/dist/dev/index.css.map +2 -2
  9. package/dist/dev/index.js +228 -67
  10. package/dist/dev/index.js.map +4 -4
  11. package/dist/dev/locales/{en-CBVTFJ6O.js → en-V2WTRX5T.js} +2 -2
  12. package/dist/dev/subset-shared.chunk.js +1 -1
  13. package/dist/dev/subset-worker.chunk.js +1 -1
  14. package/dist/prod/{chunk-EPJN7Y7U.js → chunk-FZE33ODQ.js} +2 -2
  15. package/dist/prod/{chunk-VXOLR3OR.js → chunk-MZBVWY5X.js} +4 -4
  16. package/dist/prod/{chunk-BNH2QDIK.js → chunk-U23VT5B7.js} +1 -1
  17. package/dist/prod/data/image-ELTE3WZG.js +1 -0
  18. package/dist/prod/index.css +1 -1
  19. package/dist/prod/index.js +13 -13
  20. package/dist/prod/locales/{en-7BECMN3G.js → en-ALU5NMSJ.js} +1 -1
  21. package/dist/prod/subset-shared.chunk.js +1 -1
  22. package/dist/prod/subset-worker.chunk.js +1 -1
  23. package/dist/types/excalidraw/actions/manager.d.ts +3 -1
  24. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -0
  25. package/dist/types/excalidraw/actions/types.d.ts +1 -1
  26. package/dist/types/excalidraw/components/App.d.ts +7 -3
  27. package/dist/types/excalidraw/index.d.ts +1 -1
  28. package/dist/types/excalidraw/types.d.ts +11 -0
  29. package/package.json +4 -4
  30. package/dist/dev/chunk-35XUJXYN.js.map +0 -7
  31. package/dist/prod/data/image-Y62LQRXV.js +0 -1
  32. /package/dist/dev/{chunk-CK7JCUHP.js.map → chunk-6X722ZMM.js.map} +0 -0
  33. /package/dist/dev/{chunk-GWV63UBO.js.map → chunk-OWS32STE.js.map} +0 -0
  34. /package/dist/dev/data/{image-LHD6YZAK.js.map → image-SHO5VNS6.js.map} +0 -0
  35. /package/dist/dev/locales/{en-CBVTFJ6O.js.map → en-V2WTRX5T.js.map} +0 -0
package/dist/dev/index.js CHANGED
@@ -65,13 +65,13 @@ import {
65
65
  serializeAsJSON,
66
66
  strokeRectWithRotation_simple,
67
67
  zoomToFitBounds
68
- } from "./chunk-GWV63UBO.js";
68
+ } from "./chunk-OWS32STE.js";
69
69
  import {
70
70
  define_import_meta_env_default
71
- } from "./chunk-CK7JCUHP.js";
71
+ } from "./chunk-6X722ZMM.js";
72
72
  import {
73
73
  en_default
74
- } from "./chunk-35XUJXYN.js";
74
+ } from "./chunk-VBVJJWUO.js";
75
75
  import {
76
76
  percentages_default
77
77
  } from "./chunk-72CYJXY3.js";
@@ -183,6 +183,7 @@ import {
183
183
  normalizeEOL as normalizeEOL2,
184
184
  getDateTime,
185
185
  isShallowEqual as isShallowEqual9,
186
+ capitalizeString as capitalizeString4,
186
187
  arrayToMap as arrayToMap34,
187
188
  applyDarkModeFilter as applyDarkModeFilter10,
188
189
  AppEventBus,
@@ -399,7 +400,7 @@ var globImport_locales_json = __glob({
399
400
  "./locales/de-CH.json": () => import("./locales/de-CH-KLWBYLGC.js"),
400
401
  "./locales/de-DE.json": () => import("./locales/de-DE-UB755M7G.js"),
401
402
  "./locales/el-GR.json": () => import("./locales/el-GR-J2BFDAEA.js"),
402
- "./locales/en.json": () => import("./locales/en-CBVTFJ6O.js"),
403
+ "./locales/en.json": () => import("./locales/en-V2WTRX5T.js"),
403
404
  "./locales/es-ES.json": () => import("./locales/es-ES-GL35U3D6.js"),
404
405
  "./locales/eu-ES.json": () => import("./locales/eu-ES-5LL7P4G7.js"),
405
406
  "./locales/fa-IR.json": () => import("./locales/fa-IR-2D6AXPSB.js"),
@@ -9539,6 +9540,13 @@ var TOOLS = defineTools({
9539
9540
  fillable: false
9540
9541
  }
9541
9542
  });
9543
+ var MYOC_SIMPLIFIED_MAIN_TOOL_TYPES = [
9544
+ "selection",
9545
+ "freedraw",
9546
+ "text",
9547
+ "image",
9548
+ "eraser"
9549
+ ];
9542
9550
  var MYOC_SIMPLIFIED_EXTRA_TOOL_TYPES = [
9543
9551
  "autoshape",
9544
9552
  "rectangle",
@@ -11044,7 +11052,7 @@ var exportCanvas = async (type, elements, appState, files, {
11044
11052
  let blob = canvasToBlob(tempCanvas);
11045
11053
  if (appState.exportEmbedScene) {
11046
11054
  blob = blob.then(
11047
- (blob2) => import("./data/image-LHD6YZAK.js").then(
11055
+ (blob2) => import("./data/image-SHO5VNS6.js").then(
11048
11056
  ({ encodePngMetadata: encodePngMetadata2 }) => encodePngMetadata2({
11049
11057
  blob: blob2,
11050
11058
  metadata: serializeAsJSON(elements, appState, files, "local")
@@ -12963,8 +12971,9 @@ var actionCopy = register({
12963
12971
  captureUpdate: CaptureUpdateAction20.EVENTUALLY
12964
12972
  };
12965
12973
  },
12966
- // don't supply a shortcut since we handle this conditionally via onCopy event
12967
- keyTest: void 0
12974
+ // MyOC: Handle keyboard copy at keydown so async ClipboardItem writes use
12975
+ // the keyboard gesture instead of relying on the native copy-event fallback.
12976
+ keyTest: (event) => event[KEYS25.CTRL_OR_CMD] && event.key === KEYS25.C
12968
12977
  });
12969
12978
  var actionPaste = register({
12970
12979
  name: "paste",
@@ -17139,6 +17148,15 @@ var ActionManager = class {
17139
17148
  __publicField(this, "getElementsIncludingDeleted");
17140
17149
  __publicField(this, "app");
17141
17150
  __publicField(this, "isActionBlockedByViewportTransition", (action) => action.navigation === true && this.app.viewport.isLockedTransitionPending);
17151
+ __publicField(this, "isActionEnabledByCanvasOptions", (action) => {
17152
+ const canvasActions = this.app.props.UIOptions.canvasActions;
17153
+ if (action.name === "saveFileToDisk") {
17154
+ return Boolean(
17155
+ canvasActions.export && typeof canvasActions.export === "object" && canvasActions.export.saveFileToDisk
17156
+ );
17157
+ }
17158
+ return action.name in canvasActions ? Boolean(canvasActions[action.name]) : true;
17159
+ });
17142
17160
  /**
17143
17161
  * @param data additional data sent to the PanelComponent
17144
17162
  */
@@ -17189,6 +17207,10 @@ var ActionManager = class {
17189
17207
  const appState = this.getAppState();
17190
17208
  return !action.predicate || action.predicate(elements, appState, this.app.props, this.app);
17191
17209
  });
17210
+ __publicField(this, "isActionAvailableForUI", (action) => {
17211
+ const appState = this.getAppState();
17212
+ return this.isActionEnabledByCanvasOptions(action) && this.isActionEnabled(action) && (!appState.viewModeEnabled || action.viewMode === true) && (this.app.isInteractionEnabled() || this.app.isNavigationEnabled() && action.navigation === true) && !this.isActionBlockedByViewportTransition(action);
17213
+ });
17192
17214
  this.updater = (actionResult) => {
17193
17215
  if (isPromiseLike3(actionResult)) {
17194
17216
  actionResult.then((actionResult2) => {
@@ -21300,6 +21322,71 @@ var renderSpreadsheet = (chartType, spreadsheet, x, y, colorSeed) => {
21300
21322
  return renderBarChart(spreadsheet, x, y, colorSeed);
21301
21323
  };
21302
21324
 
21325
+ // actions/shortcuts.ts
21326
+ import { isDarwin as isDarwin3 } from "@excalidraw/common";
21327
+ var shortcutMap = {
21328
+ toggleTheme: [getShortcutKey("Shift+Alt+D")],
21329
+ saveScene: [getShortcutKey("CtrlOrCmd+S")],
21330
+ loadScene: [getShortcutKey("CtrlOrCmd+O")],
21331
+ imageExport: [getShortcutKey("CtrlOrCmd+Shift+E")],
21332
+ cut: [getShortcutKey("CtrlOrCmd+X")],
21333
+ copy: [getShortcutKey("CtrlOrCmd+C")],
21334
+ paste: [getShortcutKey("CtrlOrCmd+V")],
21335
+ copyStyles: [getShortcutKey("CtrlOrCmd+Alt+C")],
21336
+ pasteStyles: [getShortcutKey("CtrlOrCmd+Alt+V")],
21337
+ selectAll: [getShortcutKey("CtrlOrCmd+A")],
21338
+ deleteSelectedElements: [getShortcutKey("Delete")],
21339
+ duplicateSelection: [
21340
+ getShortcutKey("CtrlOrCmd+D"),
21341
+ getShortcutKey(`Alt+${t("helpDialog.drag")}`)
21342
+ ],
21343
+ sendBackward: [getShortcutKey("CtrlOrCmd+[")],
21344
+ bringForward: [getShortcutKey("CtrlOrCmd+]")],
21345
+ sendToBack: [
21346
+ isDarwin3 ? getShortcutKey("CtrlOrCmd+Alt+[") : getShortcutKey("CtrlOrCmd+Shift+[")
21347
+ ],
21348
+ bringToFront: [
21349
+ isDarwin3 ? getShortcutKey("CtrlOrCmd+Alt+]") : getShortcutKey("CtrlOrCmd+Shift+]")
21350
+ ],
21351
+ copyAsPng: [getShortcutKey("Shift+Alt+C")],
21352
+ group: [getShortcutKey("CtrlOrCmd+G")],
21353
+ ungroup: [getShortcutKey("CtrlOrCmd+Shift+G")],
21354
+ gridMode: [getShortcutKey("CtrlOrCmd+'")],
21355
+ objectsSnapMode: [getShortcutKey("Alt+S")],
21356
+ stats: [getShortcutKey("Alt+/")],
21357
+ flipHorizontal: [getShortcutKey("Shift+H")],
21358
+ flipVertical: [getShortcutKey("Shift+V")],
21359
+ flipViewpointHorizontal: [getShortcutKey("Shift+R")],
21360
+ flipViewpointVertical: [getShortcutKey("Alt+Shift+R")],
21361
+ viewMode: [getShortcutKey("Alt+R")],
21362
+ hyperlink: [getShortcutKey("CtrlOrCmd+K")],
21363
+ toggleElementLock: [getShortcutKey("CtrlOrCmd+Shift+L")],
21364
+ resetZoom: [getShortcutKey("CtrlOrCmd+0")],
21365
+ zoomOut: [getShortcutKey("CtrlOrCmd+-")],
21366
+ zoomIn: [getShortcutKey("CtrlOrCmd++")],
21367
+ zoomToFitSelection: [],
21368
+ zoomToFit: [],
21369
+ zoomToFitSelectionInViewport: [],
21370
+ smartZoom: [getShortcutKey("F")],
21371
+ saveFileToDisk: [getShortcutKey("CtrlOrCmd+S")],
21372
+ saveToActiveFile: [getShortcutKey("CtrlOrCmd+S")],
21373
+ toggleShortcuts: [getShortcutKey("?")],
21374
+ searchMenu: [getShortcutKey("CtrlOrCmd+F")],
21375
+ wrapSelectionInFrame: [],
21376
+ arrangeElements: [getShortcutKey("Shift+A")],
21377
+ toolLock: [getShortcutKey("Q")]
21378
+ };
21379
+ var getShortcutFromShortcutName = (name, idx = 0) => {
21380
+ const shortcuts = shortcutMap[name];
21381
+ return shortcuts && shortcuts.length > 0 ? shortcuts[idx] || shortcuts[0] : "";
21382
+ };
21383
+ var getActionShortcut = (name) => {
21384
+ if (!Object.prototype.hasOwnProperty.call(shortcutMap, name)) {
21385
+ return void 0;
21386
+ }
21387
+ return getShortcutFromShortcutName(name) || void 0;
21388
+ };
21389
+
21303
21390
  // renderer/interactiveScene.ts
21304
21391
  import {
21305
21392
  clamp as clamp7,
@@ -25440,65 +25527,6 @@ var BraveMeasureTextError_default = BraveMeasureTextError;
25440
25527
  import clsx27 from "clsx";
25441
25528
  import React20 from "react";
25442
25529
 
25443
- // actions/shortcuts.ts
25444
- import { isDarwin as isDarwin3 } from "@excalidraw/common";
25445
- var shortcutMap = {
25446
- toggleTheme: [getShortcutKey("Shift+Alt+D")],
25447
- saveScene: [getShortcutKey("CtrlOrCmd+S")],
25448
- loadScene: [getShortcutKey("CtrlOrCmd+O")],
25449
- imageExport: [getShortcutKey("CtrlOrCmd+Shift+E")],
25450
- cut: [getShortcutKey("CtrlOrCmd+X")],
25451
- copy: [getShortcutKey("CtrlOrCmd+C")],
25452
- paste: [getShortcutKey("CtrlOrCmd+V")],
25453
- copyStyles: [getShortcutKey("CtrlOrCmd+Alt+C")],
25454
- pasteStyles: [getShortcutKey("CtrlOrCmd+Alt+V")],
25455
- selectAll: [getShortcutKey("CtrlOrCmd+A")],
25456
- deleteSelectedElements: [getShortcutKey("Delete")],
25457
- duplicateSelection: [
25458
- getShortcutKey("CtrlOrCmd+D"),
25459
- getShortcutKey(`Alt+${t("helpDialog.drag")}`)
25460
- ],
25461
- sendBackward: [getShortcutKey("CtrlOrCmd+[")],
25462
- bringForward: [getShortcutKey("CtrlOrCmd+]")],
25463
- sendToBack: [
25464
- isDarwin3 ? getShortcutKey("CtrlOrCmd+Alt+[") : getShortcutKey("CtrlOrCmd+Shift+[")
25465
- ],
25466
- bringToFront: [
25467
- isDarwin3 ? getShortcutKey("CtrlOrCmd+Alt+]") : getShortcutKey("CtrlOrCmd+Shift+]")
25468
- ],
25469
- copyAsPng: [getShortcutKey("Shift+Alt+C")],
25470
- group: [getShortcutKey("CtrlOrCmd+G")],
25471
- ungroup: [getShortcutKey("CtrlOrCmd+Shift+G")],
25472
- gridMode: [getShortcutKey("CtrlOrCmd+'")],
25473
- objectsSnapMode: [getShortcutKey("Alt+S")],
25474
- stats: [getShortcutKey("Alt+/")],
25475
- flipHorizontal: [getShortcutKey("Shift+H")],
25476
- flipVertical: [getShortcutKey("Shift+V")],
25477
- flipViewpointHorizontal: [getShortcutKey("Shift+R")],
25478
- flipViewpointVertical: [getShortcutKey("Alt+Shift+R")],
25479
- viewMode: [getShortcutKey("Alt+R")],
25480
- hyperlink: [getShortcutKey("CtrlOrCmd+K")],
25481
- toggleElementLock: [getShortcutKey("CtrlOrCmd+Shift+L")],
25482
- resetZoom: [getShortcutKey("CtrlOrCmd+0")],
25483
- zoomOut: [getShortcutKey("CtrlOrCmd+-")],
25484
- zoomIn: [getShortcutKey("CtrlOrCmd++")],
25485
- zoomToFitSelection: [],
25486
- zoomToFit: [],
25487
- zoomToFitSelectionInViewport: [],
25488
- smartZoom: [getShortcutKey("F")],
25489
- saveFileToDisk: [getShortcutKey("CtrlOrCmd+S")],
25490
- saveToActiveFile: [getShortcutKey("CtrlOrCmd+S")],
25491
- toggleShortcuts: [getShortcutKey("?")],
25492
- searchMenu: [getShortcutKey("CtrlOrCmd+F")],
25493
- wrapSelectionInFrame: [],
25494
- arrangeElements: [getShortcutKey("Shift+A")],
25495
- toolLock: [getShortcutKey("Q")]
25496
- };
25497
- var getShortcutFromShortcutName = (name, idx = 0) => {
25498
- const shortcuts = shortcutMap[name];
25499
- return shortcuts && shortcuts.length > 0 ? shortcuts[idx] || shortcuts[0] : "";
25500
- };
25501
-
25502
25530
  // components/Popover.tsx
25503
25531
  import { useLayoutEffect as useLayoutEffect4, useRef as useRef16, useEffect as useEffect23 } from "react";
25504
25532
  import { unstable_batchedUpdates as unstable_batchedUpdates2 } from "react-dom";
@@ -28824,6 +28852,40 @@ var PreferencesToggleViewModeItem = () => {
28824
28852
  }
28825
28853
  );
28826
28854
  };
28855
+ var PreferencesMyOCDesktopUIModeItem = () => {
28856
+ const { t: t2 } = useI18n();
28857
+ const app = useApp();
28858
+ const editorInterface = useEditorInterface();
28859
+ if (editorInterface.formFactor !== "desktop") {
28860
+ return null;
28861
+ }
28862
+ const description = t2("labels.preferences_myocDesktopUIDescription");
28863
+ return /* @__PURE__ */ jsx92(
28864
+ DropdownMenuItemContentRadio_default,
28865
+ {
28866
+ name: "myocDesktopUIMode",
28867
+ value: editorInterface.desktopUIMode,
28868
+ onChange: (mode) => app.setDesktopUIMode(mode),
28869
+ choices: [
28870
+ {
28871
+ value: "full",
28872
+ label: t2("labels.preferences_myocDesktopUIFull"),
28873
+ ariaLabel: `${t2(
28874
+ "labels.preferences_myocDesktopUIFull"
28875
+ )}. ${description}`
28876
+ },
28877
+ {
28878
+ value: "compact",
28879
+ label: t2("labels.preferences_myocDesktopUICompact"),
28880
+ ariaLabel: `${t2(
28881
+ "labels.preferences_myocDesktopUICompact"
28882
+ )}. ${description}`
28883
+ }
28884
+ ],
28885
+ children: /* @__PURE__ */ jsx92("span", { title: description, children: t2("labels.preferences_myocDesktopUISize") })
28886
+ }
28887
+ );
28888
+ };
28827
28889
  var PreferencesToggleElementPropertiesItem = () => {
28828
28890
  const { t: t2 } = useI18n();
28829
28891
  const actionManager = useExcalidrawActionManager();
@@ -28850,6 +28912,7 @@ var Preferences = ({
28850
28912
  /* @__PURE__ */ jsx92(DropdownMenuSub_default.Trigger, { icon: settingsIcon, children: t2("labels.preferences") }),
28851
28913
  /* @__PURE__ */ jsxs49(DropdownMenuSub_default.Content, { className: "excalidraw-main-menu-preferences-submenu", children: [
28852
28914
  children || /* @__PURE__ */ jsxs49(Fragment15, { children: [
28915
+ /* @__PURE__ */ jsx92(PreferencesMyOCDesktopUIModeItem, {}),
28853
28916
  /* @__PURE__ */ jsx92(PreferencesBoxSelectionModeItem, {}),
28854
28917
  /* @__PURE__ */ jsx92(PreferencesToggleToolLockItem, {}),
28855
28918
  /* @__PURE__ */ jsx92(PreferencesToggleSnapModeItem, {}),
@@ -36634,6 +36697,99 @@ var App = class _App extends React41.Component {
36634
36697
  __publicField(this, "missingPointerEventCleanupEmitter", new Emitter3());
36635
36698
  __publicField(this, "onRemoveEventListenersEmitter", new Emitter3());
36636
36699
  __publicField(this, "api");
36700
+ __publicField(this, "getCommandToolTypes", () => this.state.myocSimplifiedMode ? [
36701
+ ...MYOC_SIMPLIFIED_MAIN_TOOL_TYPES,
36702
+ ...MYOC_SIMPLIFIED_EXTRA_TOOL_TYPES
36703
+ ] : Object.keys(TOOLS));
36704
+ __publicField(this, "resolveCommandToolType", (type) => {
36705
+ if (!Object.prototype.hasOwnProperty.call(TOOLS, type)) {
36706
+ return null;
36707
+ }
36708
+ const catalogType = type;
36709
+ if (!this.getCommandToolTypes().includes(catalogType)) {
36710
+ return null;
36711
+ }
36712
+ const toolType = catalogType === "selection" ? this.state.preferredSelectionTool.type : catalogType;
36713
+ if (!this.isToolSupported(toolType) || this.props.activeTool != null && this.props.activeTool.type !== toolType) {
36714
+ return null;
36715
+ }
36716
+ return toolType;
36717
+ });
36718
+ __publicField(this, "getCommandActionEntry", (action, elements) => {
36719
+ if (!action.keyTest || !this.actionManager.isActionAvailableForUI(action)) {
36720
+ return null;
36721
+ }
36722
+ const resolvedLabel = typeof action.label === "function" ? action.label(elements, this.state, this) : action.label;
36723
+ if (!resolvedLabel.trim()) {
36724
+ return null;
36725
+ }
36726
+ const resolvedIcon = typeof action.icon === "function" ? action.icon(this.state, elements) : action.icon;
36727
+ const shortcut = getActionShortcut(action.name);
36728
+ return {
36729
+ id: `action:${action.name}`,
36730
+ kind: "action",
36731
+ label: t(resolvedLabel, null, resolvedLabel),
36732
+ ...resolvedIcon ? { icon: resolvedIcon } : {},
36733
+ ...action.keywords ? { keywords: action.keywords } : {},
36734
+ ...shortcut ? { shortcut } : {}
36735
+ };
36736
+ });
36737
+ __publicField(this, "getCommandCatalog", () => {
36738
+ const elements = this.actionManager.getElementsIncludingDeleted();
36739
+ const actions2 = Object.values(this.actionManager.actions).flatMap(
36740
+ (action) => {
36741
+ const entry = this.getCommandActionEntry(action, elements);
36742
+ return entry ? [entry] : [];
36743
+ }
36744
+ );
36745
+ const tools = this.getCommandToolTypes().flatMap((type) => {
36746
+ const resolvedType = this.resolveCommandToolType(type);
36747
+ if (!resolvedType) {
36748
+ return [];
36749
+ }
36750
+ const shortcut = getToolShortcut(type);
36751
+ return [
36752
+ {
36753
+ id: `tool:${type}`,
36754
+ kind: "tool",
36755
+ label: capitalizeString4(t(`toolBar.${resolvedType}`)),
36756
+ icon: TOOLS[resolvedType].icon,
36757
+ ...shortcut ? { shortcut } : {}
36758
+ }
36759
+ ];
36760
+ });
36761
+ return [...actions2, ...tools];
36762
+ });
36763
+ __publicField(this, "executeCommand", (id) => {
36764
+ if (id.startsWith("action:")) {
36765
+ const actionName = id.slice("action:".length);
36766
+ if (!Object.prototype.hasOwnProperty.call(
36767
+ this.actionManager.actions,
36768
+ actionName
36769
+ )) {
36770
+ return false;
36771
+ }
36772
+ const action = this.actionManager.actions[actionName];
36773
+ if (!action || `action:${action.name}` !== id || !this.getCommandActionEntry(
36774
+ action,
36775
+ this.actionManager.getElementsIncludingDeleted()
36776
+ )) {
36777
+ return false;
36778
+ }
36779
+ this.actionManager.executeAction(action, "ui");
36780
+ return true;
36781
+ }
36782
+ if (!id.startsWith("tool:")) {
36783
+ return false;
36784
+ }
36785
+ const type = id.slice("tool:".length);
36786
+ const resolvedType = this.resolveCommandToolType(type);
36787
+ if (!resolvedType) {
36788
+ return false;
36789
+ }
36790
+ this.setActiveTool({ type: resolvedType });
36791
+ return true;
36792
+ });
36637
36793
  /**
36638
36794
  * Whether the tool can be activated & driven by user input. False when
36639
36795
  * disabled via `UIOptions.tools`, or when the editor is non-interactive
@@ -37471,13 +37627,16 @@ var App = class _App extends React41.Component {
37471
37627
  }));
37472
37628
  }
37473
37629
  });
37474
- /** TO BE USED LATER */
37475
37630
  __publicField(this, "setDesktopUIMode", (mode) => {
37476
37631
  const nextMode = setDesktopUIMode(mode);
37632
+ if (!nextMode || nextMode === this.editorInterface.desktopUIMode) {
37633
+ return;
37634
+ }
37477
37635
  this.editorInterface = updateObject2(this.editorInterface, {
37478
37636
  desktopUIMode: nextMode
37479
37637
  });
37480
37638
  this.reconcileStylesPanelMode(this.editorInterface);
37639
+ this.forceUpdate();
37481
37640
  });
37482
37641
  __publicField(this, "onResize", withBatchedUpdates(() => {
37483
37642
  this.scene.getElementsIncludingDeleted().forEach((element) => ShapeCache7.delete(element));
@@ -42794,6 +42953,8 @@ var App = class _App extends React41.Component {
42794
42953
  registerAction: (action) => {
42795
42954
  this.actionManager.registerAction(action);
42796
42955
  },
42956
+ getCommandCatalog: this.getCommandCatalog,
42957
+ executeCommand: this.executeCommand,
42797
42958
  refresh: this.refresh,
42798
42959
  setToast: this.setToast,
42799
42960
  id: this.id,