microboard-ui-temp 0.1.74 → 0.1.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -330907,15 +330907,15 @@ function useAppContext() {
330907
330907
 
330908
330908
  // src/App/useAccount.ts
330909
330909
  function useAccount2() {
330910
- const { app: app2 } = useAppContext();
330910
+ const { app } = useAppContext();
330911
330911
  const forceUpdate = useForceUpdate2();
330912
330912
  import_react110.useLayoutEffect(() => {
330913
- app2.account.subject.subscribe(forceUpdate);
330913
+ app.account.subject.subscribe(forceUpdate);
330914
330914
  return () => {
330915
- app2.account.subject.unsubscribe(forceUpdate);
330915
+ app.account.subject.unsubscribe(forceUpdate);
330916
330916
  };
330917
330917
  }, []);
330918
- return app2.account;
330918
+ return app.account;
330919
330919
  }
330920
330920
 
330921
330921
  // src/features/WalletLoginButton/WalletLoginButton.tsx
@@ -335301,7 +335301,9 @@ Upgrade to Plus to increase the limit and keep working`,
335301
335301
  connectionLostHeader: "You are offline. Reconnecting...",
335302
335302
  connectionReestablished: "Connection restored.",
335303
335303
  restoringConnectionHeader: "Restoring connection.",
335304
- restoringConnectionBody: "Do not refresh the page or close the tab to avoid losing your progress"
335304
+ restoringConnectionBody: "Do not refresh the page or close the tab to avoid losing your progress",
335305
+ offlineHeader: "Board opened in offline mode.",
335306
+ offlineBody: "Changes will not be saved."
335305
335307
  },
335306
335308
  landing: {
335307
335309
  menu: {
@@ -336537,7 +336539,9 @@ var ru_default = {
336537
336539
  connectionLostHeader: "Доска в оффлайн-режиме. Восстанавливаем соединение...",
336538
336540
  connectionReestablished: "Соединение восстановлено.",
336539
336541
  restoringConnectionHeader: "Восстанавливаем соединение",
336540
- restoringConnectionBody: "Не обновляйте страницу и не закрывайте вкладку, чтобы не потерять прогресс"
336542
+ restoringConnectionBody: "Не обновляйте страницу и не закрывайте вкладку, чтобы не потерять прогресс",
336543
+ offlineHeader: "Доска открыта в оффлайн режиме.",
336544
+ offlineBody: "Изменения не будут сохранены."
336541
336545
  },
336542
336546
  landing: {
336543
336547
  menu: {
@@ -339632,7 +339636,7 @@ var MIRO_IMG_AUTH_CLIPBOARD = Symbol("imgAuthClipboardNotification");
339632
339636
  var ImgAuthClipboardModal = () => {
339633
339637
  const { t: t10 } = useTranslation();
339634
339638
  const { closeModal: closeModal2 } = useUiModalContext();
339635
- const { app: app2 } = useAppContext();
339639
+ const { app } = useAppContext();
339636
339640
  const onAuthClick = () => {
339637
339641
  closeModal2();
339638
339642
  const clientId = import.meta.env.MIRO_CLIENT_ID;
@@ -339642,7 +339646,7 @@ var ImgAuthClipboardModal = () => {
339642
339646
  };
339643
339647
  const onContinueClick = () => {
339644
339648
  closeModal2();
339645
- useCopyBoardItems(app2.getBoard(), app2.account.accessToken, undefined, true);
339649
+ useCopyBoardItems(app.getBoard(), app.account.accessToken, undefined, true);
339646
339650
  };
339647
339651
  return /* @__PURE__ */ import_react141.default.createElement(UiModal, {
339648
339652
  modalId: MIRO_IMG_AUTH_CLIPBOARD,
@@ -345098,14 +345102,14 @@ var AIContextProvider = ({
345098
345102
  children
345099
345103
  }) => {
345100
345104
  const { t: t10 } = useTranslation();
345101
- const { app: app2 } = useAppContext();
345105
+ const { app } = useAppContext();
345102
345106
  const [model, setModel] = import_react176.useState("gpt-4o-mini");
345103
345107
  const [responseNodeId, setResponseNodeId] = import_react176.useState();
345104
345108
  const [quotedText, setQuotedText] = import_react176.useState();
345105
345109
  const account = useAccount2();
345106
345110
  const { openModal: openModal2 } = useUiModalContext();
345107
345111
  const stopStream = async (boardId, itemId, account2) => {
345108
- const connection = app2.getConnection();
345112
+ const connection = app.getConnection();
345109
345113
  const stopMessage = {
345110
345114
  type: "AiChat",
345111
345115
  boardId,
@@ -345118,7 +345122,7 @@ var AIContextProvider = ({
345118
345122
  await account2.fetchBillingInfo();
345119
345123
  };
345120
345124
  function createNodesWithConnectors(idea, itemToContinueThread, contextItems = [], isIdeaFromInput = true) {
345121
- const board = app2.getBoard();
345125
+ const board = app.getBoard();
345122
345126
  const reverseIndexMap = { 0: 1, 1: 0, 2: 3, 3: 2 };
345123
345127
  let requestAdded;
345124
345128
  if (itemToContinueThread && itemToContinueThread.itemType === "AINode" && itemToContinueThread.getIsUserRequest() && !isIdeaFromInput) {
@@ -345169,7 +345173,7 @@ var AIContextProvider = ({
345169
345173
  return { responseAdded, requestAdded };
345170
345174
  }
345171
345175
  const tryToSendGenerationRequest = async (fallback3, startGenerationCb) => {
345172
- const board = app2.getBoard();
345176
+ const board = app.getBoard();
345173
345177
  if (!account.isLoggedIn) {
345174
345178
  return openModal2(AI_UNAVAILABLE_MODAL_ID);
345175
345179
  }
@@ -345206,8 +345210,8 @@ var AIContextProvider = ({
345206
345210
  }
345207
345211
  };
345208
345212
  const startGeneration = async () => {
345209
- const connection = app2.getConnection();
345210
- const board = app2.getBoard();
345213
+ const connection = app.getConnection();
345214
+ const board = app.getBoard();
345211
345215
  const ideaFromSelection = getIdeaFromSelection(board.selection.items.list());
345212
345216
  if (!connection) {
345213
345217
  console.error("Ws no open");
@@ -345297,26 +345301,14 @@ var import_react178 = __toESM(require_react(), 1);
345297
345301
  // src/App/useBoardSubscription.ts
345298
345302
  var import_react177 = __toESM(require_react(), 1);
345299
345303
  function useAppSubscription(subscription) {
345300
- const { app: app2 } = useAppContext();
345304
+ const { app } = useAppContext();
345301
345305
  import_react177.useLayoutEffect(() => {
345302
- app2.subscriptions.add(subscription);
345306
+ app.subscriptions.add(subscription);
345303
345307
  return () => {
345304
- app2.subscriptions.remove(subscription);
345308
+ app.subscriptions.remove(subscription);
345305
345309
  };
345306
345310
  }, []);
345307
345311
  }
345308
- function useTools() {
345309
- const { board } = useAppContext();
345310
- const [tools, setTools] = import_react177.default.useState(board.tools);
345311
- useAppSubscription({
345312
- subjects: ["tools"],
345313
- observer: () => {
345314
- setTools(board.tools);
345315
- }
345316
- });
345317
- import_react177.useEffect(() => {}, [tools]);
345318
- return tools;
345319
- }
345320
345312
 
345321
345313
  // src/entities/AIInput/AIGenerationButton.tsx
345322
345314
  var AiGenerationButton = () => {
@@ -345795,7 +345787,7 @@ var getCorrectEnding = (number3) => {
345795
345787
  var sessionStorage5 = new SessionStorage2;
345796
345788
  var AIInput = () => {
345797
345789
  const { t: t10 } = useTranslation();
345798
- const { app: app2, board } = useAppContext();
345790
+ const { app, board } = useAppContext();
345799
345791
  const [inputValue, setInputValue] = import_react183.useState("");
345800
345792
  const disabledRef = import_react183.useRef(!!board.aiGeneratingOnItem);
345801
345793
  const inputRef = import_react183.useRef(null);
@@ -345879,7 +345871,7 @@ var AIInput = () => {
345879
345871
  }
345880
345872
  };
345881
345873
  const sendInputData = async () => {
345882
- const connection = app2.getConnection();
345874
+ const connection = app.getConnection();
345883
345875
  if (!connection) {
345884
345876
  console.error("Ws no open");
345885
345877
  return;
@@ -345977,7 +345969,7 @@ var AIInput = () => {
345977
345969
  }
345978
345970
  };
345979
345971
  const handleStopClick = async () => {
345980
- const boardId2 = app2.getBoard().getBoardId();
345972
+ const boardId2 = app.getBoard().getBoardId();
345981
345973
  if (responseNodeId) {
345982
345974
  await stopStream(boardId2, responseNodeId, account);
345983
345975
  board.aiGeneratingOnItem = undefined;
@@ -346319,7 +346311,7 @@ class CanvasBase extends React146.Component {
346319
346311
  var Canvas = withRouter(CanvasBase);
346320
346312
  // src/entities/Canvas/CanvasNoRouter.tsx
346321
346313
  var import_react186 = __toESM(require_react(), 1);
346322
- var CanvasNoRouter = ({ app: app2, board, children }) => {
346314
+ var CanvasNoRouter = ({ app, board, children }) => {
346323
346315
  const stageRef = import_react186.useRef(null);
346324
346316
  const canvasRef = import_react186.useRef(null);
346325
346317
  const cursorsCanvasRef = import_react186.useRef(null);
@@ -346351,13 +346343,13 @@ var CanvasNoRouter = ({ app: app2, board, children }) => {
346351
346343
  }, [board]);
346352
346344
  const initCanvasRendering = import_react186.useCallback(() => {
346353
346345
  renderToContext();
346354
- app2.subscriptions.add(drawingContextSubscription);
346355
- app2.subscriptions.add(cursorSubscription);
346356
- app2.subscriptions.add(resizeSubscription);
346357
- }, [app2, renderToContext]);
346346
+ app.subscriptions.add(drawingContextSubscription);
346347
+ app.subscriptions.add(cursorSubscription);
346348
+ app.subscriptions.add(resizeSubscription);
346349
+ }, [app, renderToContext]);
346358
346350
  import_react186.useEffect(() => {
346359
346351
  const stage = stageRef.current;
346360
- const controller16 = app2.controller;
346352
+ const controller16 = app.controller;
346361
346353
  if (stage) {
346362
346354
  const handlePointerDown = (event) => {
346363
346355
  controller16.onPointerDown(event);
@@ -346391,13 +346383,13 @@ var CanvasNoRouter = ({ app: app2, board, children }) => {
346391
346383
  });
346392
346384
  stage.removeEventListener("dblclick", controller16.onClick);
346393
346385
  stage.removeEventListener("pointermove", controller16.onPointerMove);
346394
- app2.subscriptions.remove(drawingContextSubscription);
346395
- app2.subscriptions.remove(cursorSubscription);
346396
- app2.subscriptions.remove(resizeSubscription);
346386
+ app.subscriptions.remove(drawingContextSubscription);
346387
+ app.subscriptions.remove(cursorSubscription);
346388
+ app.subscriptions.remove(resizeSubscription);
346397
346389
  };
346398
346390
  }
346399
346391
  return () => {};
346400
- }, [app2, initCanvasRendering]);
346392
+ }, [app, initCanvasRendering]);
346401
346393
  const drawingContextSubscription = {
346402
346394
  observer: renderToContext,
346403
346395
  subjects: ["camera", "items", "tools", "selection", "presence"]
@@ -346549,15 +346541,15 @@ function AccessDeniedModal() {
346549
346541
  // src/App/useBoardsList.ts
346550
346542
  var import_react188 = __toESM(require_react(), 1);
346551
346543
  function useBoardsList() {
346552
- const { app: app2 } = useAppContext();
346544
+ const { app } = useAppContext();
346553
346545
  const forceUpdate = useForceUpdate2();
346554
346546
  import_react188.useEffect(() => {
346555
- app2.boardsList.subject.subscribe(forceUpdate);
346547
+ app.boardsList.subject.subscribe(forceUpdate);
346556
346548
  return () => {
346557
- app2.boardsList.subject.unsubscribe(forceUpdate);
346549
+ app.boardsList.subject.unsubscribe(forceUpdate);
346558
346550
  };
346559
346551
  }, []);
346560
- return app2.boardsList;
346552
+ return app.boardsList;
346561
346553
  }
346562
346554
 
346563
346555
  // src/features/ContextMenu/ContextMenu.tsx
@@ -352187,15 +352179,15 @@ function SidePanelContextProvider({
352187
352179
  const [isOpen, setIsOpen] = import_react206.useState(false);
352188
352180
  const [stamp, setStamp] = import_react206.useState(null);
352189
352181
  const [highlighted, setHighlighted] = import_react206.useState(false);
352190
- const { app: app2 } = useAppContext();
352182
+ const { app } = useAppContext();
352191
352183
  const navigate = useNavigate();
352192
352184
  const boardsList = useBoardsList();
352193
352185
  const timeoutRef = import_react206.useRef();
352194
352186
  const { close } = useContextMenuContext();
352195
352187
  const forceUpdate = useForceUpdate2();
352196
352188
  import_react206.useEffect(() => {
352197
- app2.boardSubject.subscribe(forceUpdate);
352198
- return () => app2.boardSubject.unsubscribe(forceUpdate);
352189
+ app.boardSubject.subscribe(forceUpdate);
352190
+ return () => app.boardSubject.unsubscribe(forceUpdate);
352199
352191
  }, []);
352200
352192
  const toggleSideMenu = () => {
352201
352193
  setIsOpen((prev) => {
@@ -352226,7 +352218,7 @@ function SidePanelContextProvider({
352226
352218
  }, [isOpen]);
352227
352219
  const handleAddNew = async (cb) => {
352228
352220
  const boardId = await boardsList.createBoard();
352229
- await app2.openBoard(boardId);
352221
+ await app.openBoard(boardId);
352230
352222
  navigate(`/boards/${boardId}`, {
352231
352223
  replace: true
352232
352224
  });
@@ -352526,7 +352518,7 @@ var FolderItem_module_default = {
352526
352518
 
352527
352519
  // src/entities/Folder/FolderItem.tsx
352528
352520
  var FolderItem = import_react211.forwardRef(({ board, folder, handleOpenBoard }, ref4) => {
352529
- const { app: app2, board: currentBoard } = useAppContext();
352521
+ const { app, board: currentBoard } = useAppContext();
352530
352522
  const navigate = useNavigate();
352531
352523
  const { open } = useContextMenuContext();
352532
352524
  const { setRenamingId, setNewName, renamingId } = useRenameContext();
@@ -352550,7 +352542,7 @@ var FolderItem = import_react211.forwardRef(({ board, folder, handleOpenBoard },
352550
352542
  if (handleOpenBoard) {
352551
352543
  return handleOpenBoard(board);
352552
352544
  }
352553
- await app2.openBoard(board.id);
352545
+ await app.openBoard(board.id);
352554
352546
  navigate(`/boards/${board.id}`);
352555
352547
  }, (ev) => {
352556
352548
  ev.preventDefault();
@@ -352917,7 +352909,7 @@ function ContextMenu() {
352917
352909
  const { setNewName, setRenamingId } = useRenameContext();
352918
352910
  const boardsList = useBoardsList();
352919
352911
  const account = useAccount2();
352920
- const { board, app: app2 } = useAppContext();
352912
+ const { board, app } = useAppContext();
352921
352913
  const { t: t10 } = useTranslation();
352922
352914
  const { openModalConfirm } = useConfirmModalContext();
352923
352915
  const { openModal: openModal2 } = useUiModalContext();
@@ -352951,34 +352943,34 @@ function ContextMenu() {
352951
352943
  setRenamingId(boardId2);
352952
352944
  setNewName(boardInfo2?.title ?? "");
352953
352945
  setId(boardId2);
352954
- app2.openBoard(boardId2).then(() => navigate(`/boards/${boardId2}`));
352946
+ app.openBoard(boardId2).then(() => navigate(`/boards/${boardId2}`));
352955
352947
  };
352956
352948
  const deserializeBoard = (stringedHTML, emit5 = false) => {
352957
352949
  if (emit5) {
352958
- app2.getBoard().deserializeHTMLAndEmit(stringedHTML);
352950
+ app.getBoard().deserializeHTMLAndEmit(stringedHTML);
352959
352951
  } else {
352960
- app2.getBoard().deserializeHTML(stringedHTML);
352952
+ app.getBoard().deserializeHTML(stringedHTML);
352961
352953
  }
352962
- app2.render();
352963
- const sumMbr = app2.getBoard().items.listAll().reduce((acc, item) => {
352954
+ app.render();
352955
+ const sumMbr = app.getBoard().items.listAll().reduce((acc, item) => {
352964
352956
  if (!acc) {
352965
352957
  return item.getMbr();
352966
352958
  }
352967
352959
  return acc.combine(item.getMbr());
352968
352960
  }, undefined);
352969
352961
  if (sumMbr) {
352970
- app2.getBoard().camera.zoomToFit(sumMbr);
352962
+ app.getBoard().camera.zoomToFit(sumMbr);
352971
352963
  }
352972
352964
  };
352973
352965
  const handleEditLocalFile = async (ev) => {
352974
352966
  ev.preventDefault();
352975
352967
  ev.stopPropagation();
352976
352968
  setIsEditingLocalFile(true);
352977
- const stringedHTML = await app2.openAndEditFile();
352969
+ const stringedHTML = await app.openAndEditFile();
352978
352970
  if (stringedHTML) {
352979
352971
  close();
352980
352972
  setId(boardId);
352981
- app2.openBoardFromFile();
352973
+ app.openBoardFromFile();
352982
352974
  navigate(`/boards/local`);
352983
352975
  deserializeBoard(stringedHTML);
352984
352976
  }
@@ -353023,7 +353015,7 @@ function ContextMenu() {
353023
353015
  const boardId2 = await boardsList.createBoard(boardName, folderInfo?.type === exports_folders.FolderType.DRAFTS, folderId ?? undefined);
353024
353016
  close();
353025
353017
  setId(boardId2);
353026
- await app2.openBoard(boardId2);
353018
+ await app.openBoard(boardId2);
353027
353019
  navigate(`/boards/${boardId2}`);
353028
353020
  deserializeBoard(htmlContent, true);
353029
353021
  }
@@ -353068,7 +353060,7 @@ function ContextMenu() {
353068
353060
  }
353069
353061
  if (boardId === currentBoardId) {
353070
353062
  navigate("/boards/blank");
353071
- await app2.openBoard("blank");
353063
+ await app.openBoard("blank");
353072
353064
  board.disconnect();
353073
353065
  }
353074
353066
  setIsDeletingBoard(true);
@@ -353096,7 +353088,7 @@ function ContextMenu() {
353096
353088
  return;
353097
353089
  }
353098
353090
  if (boardsList.isFolderContainsBoard(folderId, board.getBoardId())) {
353099
- app2.openBoard("blank");
353091
+ app.openBoard("blank");
353100
353092
  navigate("/boards/blank");
353101
353093
  }
353102
353094
  boardsList.removeFolder(folderId);
@@ -353243,7 +353235,7 @@ function ContextMenuItem({
353243
353235
  // src/App/useDomMbr.ts
353244
353236
  var import_react216 = __toESM(require_react(), 1);
353245
353237
  function useDomMbr({
353246
- app: app2,
353238
+ app,
353247
353239
  board,
353248
353240
  ref: ref4,
353249
353241
  subjects = ["camera", "selection"],
@@ -353588,7 +353580,7 @@ var ConnectorType_module_default = {
353588
353580
  var MENU_NAME = "ConnectorType";
353589
353581
  function ConnectorType() {
353590
353582
  const { toggleMenu, openedMenu, panelMbr, windowHeight } = usePanelContext();
353591
- const { board, app: app2 } = useAppContext();
353583
+ const { board, app } = useAppContext();
353592
353584
  const { t: t10 } = useTranslation();
353593
353585
  const connectorType = board.selection.getConnectorLineStyle();
353594
353586
  const connectorLineWidth = board.selection.getConnectorLineWidth();
@@ -353598,17 +353590,17 @@ function ConnectorType() {
353598
353590
  };
353599
353591
  const handlePick = (type) => {
353600
353592
  board.selection.setConnectorLineStyle(type);
353601
- app2.sessionStorage.setConnectorLineStyle(type);
353593
+ app.sessionStorage.setConnectorLineStyle(type);
353602
353594
  toggleMenu("None");
353603
353595
  };
353604
353596
  const handleStrokeStylePick = (style2) => {
353605
353597
  board.selection.setStrokeStyle(style2);
353606
- app2.sessionStorage.setConnectorStrokeStyle(style2);
353598
+ app.sessionStorage.setConnectorStrokeStyle(style2);
353607
353599
  toggleMenu("None");
353608
353600
  };
353609
353601
  const handleSliderChange = (width2) => {
353610
353602
  board.selection.setStrokeWidth(width2);
353611
- app2.sessionStorage.setConnectorLineWidth(width2);
353603
+ app.sessionStorage.setConnectorLineWidth(width2);
353612
353604
  };
353613
353605
  return /* @__PURE__ */ import_react223.default.createElement(ButtonWithMenu, {
353614
353606
  menuName: MENU_NAME,
@@ -354078,7 +354070,7 @@ var EndPointer_module_default = {
354078
354070
  var MENU_NAME3 = "EndPointer";
354079
354071
  function EndPointer() {
354080
354072
  const { toggleMenu, openedMenu, panelMbr, windowHeight } = usePanelContext();
354081
- const { board, app: app2 } = useAppContext();
354073
+ const { board, app } = useAppContext();
354082
354074
  const { t: t10 } = useTranslation();
354083
354075
  const pointerStartStyle = board.selection.getEndPointerStyle();
354084
354076
  const handleClick = () => {
@@ -354086,7 +354078,7 @@ function EndPointer() {
354086
354078
  };
354087
354079
  const handlePick = (type) => {
354088
354080
  board.selection.setEndPointerStyle(type);
354089
- app2.sessionStorage.setConnectorPointer(type, "end");
354081
+ app.sessionStorage.setConnectorPointer(type, "end");
354090
354082
  toggleMenu("None");
354091
354083
  };
354092
354084
  return /* @__PURE__ */ import_react236.default.createElement(ButtonWithMenu, {
@@ -354971,7 +354963,7 @@ var StartPointer_module_default = {
354971
354963
  var MENU_NAME11 = "StartPointer";
354972
354964
  function StartPointer() {
354973
354965
  const { toggleMenu, openedMenu, panelMbr, windowHeight } = usePanelContext();
354974
- const { board, app: app2 } = useAppContext();
354966
+ const { board, app } = useAppContext();
354975
354967
  const { t: t10 } = useTranslation();
354976
354968
  const pointerStartStyle = board.selection.getStartPointerStyle();
354977
354969
  const handleClick = () => {
@@ -354979,7 +354971,7 @@ function StartPointer() {
354979
354971
  };
354980
354972
  const handlePick = (type) => {
354981
354973
  board.selection.setStartPointerStyle(type);
354982
- app2.sessionStorage.setConnectorPointer(type, "start");
354974
+ app.sessionStorage.setConnectorPointer(type, "start");
354983
354975
  toggleMenu("None");
354984
354976
  };
354985
354977
  return /* @__PURE__ */ import_react255.default.createElement(ButtonWithMenu, {
@@ -355535,7 +355527,7 @@ var import_react266 = __toESM(require_react(), 1);
355535
355527
  var MENU_NAME17 = "ConnectorLineColor";
355536
355528
  function ConnectorLineColor() {
355537
355529
  const { toggleMenu, openedMenu, panelMbr, windowHeight } = usePanelContext();
355538
- const { board, app: app2 } = useAppContext();
355530
+ const { board, app } = useAppContext();
355539
355531
  const { t: t10 } = useTranslation();
355540
355532
  const connectorLineColor = board.selection.getConnectorLineColor();
355541
355533
  const handleClick = () => {
@@ -355543,11 +355535,11 @@ function ConnectorLineColor() {
355543
355535
  };
355544
355536
  const handlePick = (color2) => {
355545
355537
  board.selection.setStrokeColor(color2);
355546
- app2.sessionStorage.setConnectorFillColor(color2);
355538
+ app.sessionStorage.setConnectorFillColor(color2);
355547
355539
  toggleMenu("None");
355548
355540
  };
355549
355541
  const handleCustomPick = (color2) => {
355550
- app2.sessionStorage.setConnectorFillColor(color2);
355542
+ app.sessionStorage.setConnectorFillColor(color2);
355551
355543
  board.selection.setStrokeColor(color2);
355552
355544
  };
355553
355545
  const isPredefinedColor = conf.SHAPE_STROKE_COLORS.some((color2) => color2 === connectorLineColor);
@@ -356431,11 +356423,11 @@ function FlipDeck({ rounded = "none" }) {
356431
356423
 
356432
356424
  // src/features/ContextPanel/ContextPanel.tsx
356433
356425
  function ContextPanel() {
356434
- const { app: app2, board } = useAppContext();
356426
+ const { app, board } = useAppContext();
356435
356427
  const [openedMenu, setOpenedMenu] = import_react289.useState("None");
356436
356428
  const panelRef = import_react289.useRef(null);
356437
356429
  const mbr = useDomMbr({
356438
- app: app2,
356430
+ app,
356439
356431
  board,
356440
356432
  ref: panelRef
356441
356433
  });
@@ -356769,7 +356761,7 @@ var HyperLink_module_default = {
356769
356761
  var HyperLink = () => {
356770
356762
  const [currentLink, setCurrentLink] = import_react292.useState(null);
356771
356763
  const [isTooltipUnderPointer, setIsTooltipUnderPointer] = import_react292.useState(false);
356772
- const { board, app: app2 } = useAppContext();
356764
+ const { board, app } = useAppContext();
356773
356765
  const forceUpdate = useForceUpdate2();
356774
356766
  const link2 = board.items.getUnderPointer().pop()?.getRichText()?.getHyperLinkByPointerCoordinates(board.pointer.point);
356775
356767
  if (link2 && !isTooltipUnderPointer && link2.hyperLink !== currentLink?.hyperLink) {
@@ -356784,7 +356776,7 @@ var HyperLink = () => {
356784
356776
  });
356785
356777
  const linkContainerRef = import_react292.useRef(null);
356786
356778
  const mbr = useDomMbr({
356787
- app: app2,
356779
+ app,
356788
356780
  board,
356789
356781
  ref: linkContainerRef,
356790
356782
  targetMbr: currentLink?.linkMbr,
@@ -356827,7 +356819,7 @@ var HyperLinkInput_module_default = {
356827
356819
  var HyperLinkInput = () => {
356828
356820
  const [inputValue, setInputValue] = import_react293.useState("");
356829
356821
  const { isEditingLink, setIsEditingLink, hyperLinkData, setHyperLinkData } = useHyperLinkContext();
356830
- const { board, app: app2 } = useAppContext();
356822
+ const { board, app } = useAppContext();
356831
356823
  const { t: t10 } = useTranslation();
356832
356824
  const containerRef = useClickOutside(() => {
356833
356825
  if (isEditingLink) {
@@ -356835,7 +356827,7 @@ var HyperLinkInput = () => {
356835
356827
  }
356836
356828
  }, [], true);
356837
356829
  const mbr = useDomMbr({
356838
- app: app2,
356830
+ app,
356839
356831
  board,
356840
356832
  ref: containerRef,
356841
356833
  targetMbr: board.selection.items.getSingle()?.getRichText()?.getMbr(),
@@ -356970,7 +356962,7 @@ var HyperLinkInput = () => {
356970
356962
  // src/features/ImportMiro/ImportMiroBoards/ImportMiro.tsx
356971
356963
  var import_react294 = __toESM(require_react(), 1);
356972
356964
  function ImportMiro() {
356973
- const { app: app2 } = useAppContext();
356965
+ const { app } = useAppContext();
356974
356966
  const navigate = useNavigate();
356975
356967
  const location3 = useLocation();
356976
356968
  const searchParams = new URLSearchParams(location3.search);
@@ -357000,19 +356992,19 @@ function ImportMiro() {
357000
356992
  }
357001
356993
  };
357002
356994
  const openSeenLastBoard = async () => {
357003
- const lastSeenBoardId = app2.getLastBoardId();
356995
+ const lastSeenBoardId = app.getLastBoardId();
357004
356996
  if (!lastSeenBoardId) {
357005
356997
  console.error("Last seen board is undefined");
357006
356998
  return;
357007
356999
  }
357008
- await app2.openBoard(lastSeenBoardId).then(() => {
357000
+ await app.openBoard(lastSeenBoardId).then(() => {
357009
357001
  navigate(`/boards/${lastSeenBoardId}?clipboard=true`, {
357010
357002
  replace: true
357011
357003
  });
357012
- app2.render();
357004
+ app.render();
357013
357005
  });
357014
- const lastSeenBoard = app2.getBoard();
357015
- useCopyBoardItems(lastSeenBoard, app2.account.accessToken);
357006
+ const lastSeenBoard = app.getBoard();
357007
+ useCopyBoardItems(lastSeenBoard, app.account.accessToken);
357016
357008
  };
357017
357009
  import_react294.useEffect(() => {
357018
357010
  const token = api10.get("miro_accessToken");
@@ -357031,14 +357023,14 @@ function ImportMiro() {
357031
357023
  // src/features/ItemTooltip/ItemTooltip.tsx
357032
357024
  var import_react295 = __toESM(require_react(), 1);
357033
357025
  function ItemTooltip() {
357034
- const { app: app2, board } = useAppContext();
357026
+ const { app, board } = useAppContext();
357035
357027
  const { t: t10 } = useTranslation();
357036
357028
  const { items, camera } = board;
357037
357029
  const [openedMenu, setOpenedMenu] = import_react295.useState("HoverUnderPointer");
357038
357030
  const panelRef = import_react295.useRef(null);
357039
357031
  const placeholders = items.getUnderPointer().filter((item) => item.itemType === "Placeholder" && item.getMiroData()?.type !== "image" /* IMAGE */);
357040
357032
  const mbr = useDomMbr({
357041
- app: app2,
357033
+ app,
357042
357034
  board,
357043
357035
  ref: panelRef,
357044
357036
  subjects: undefined,
@@ -357321,18 +357313,18 @@ var LocalFileSaveProgress_module_default = {
357321
357313
 
357322
357314
  // src/features/LocalFileSavingProgress/LocalFileSaveProgress.tsx
357323
357315
  var LocalFileSaveProgress = () => {
357324
- const { app: app2 } = useAppContext();
357316
+ const { app } = useAppContext();
357325
357317
  const forceUpdate = useForceUpdate2();
357326
357318
  useAppSubscription({
357327
357319
  subjects: ["board"],
357328
357320
  observer: forceUpdate
357329
357321
  });
357330
- if (!app2.getBoard().getBoardId().includes("local") || !app2.getLocalEditFileHandler()) {
357322
+ if (!app.getBoard().getBoardId().includes("local") || !app.getLocalEditFileHandler()) {
357331
357323
  return null;
357332
357324
  }
357333
357325
  return /* @__PURE__ */ import_react299.default.createElement(UiPanel, {
357334
357326
  className: LocalFileSaveProgress_module_default.unauthText
357335
- }, app2.getBoard().events?.log.saveFileTimeout ? "Saving..." : "Saved");
357327
+ }, app.getBoard().events?.log.saveFileTimeout ? "Saving..." : "Saved");
357336
357328
  };
357337
357329
  var LocalFileSaveProgress_default = LocalFileSaveProgress;
357338
357330
  // src/features/Modal/CookiesModal.tsx
@@ -357469,8 +357461,8 @@ var import_react302 = __toESM(require_react(), 1);
357469
357461
  function InactiveBoardHidder({
357470
357462
  children
357471
357463
  }) {
357472
- const { app: app2 } = useAppContext();
357473
- const appBoardId = app2.getBoard().getBoardId();
357464
+ const { app } = useAppContext();
357465
+ const appBoardId = app.getBoard().getBoardId();
357474
357466
  if (appBoardId === "blank") {
357475
357467
  return /* @__PURE__ */ import_react302.default.createElement(import_react302.default.Fragment, null);
357476
357468
  }
@@ -418448,7 +418440,7 @@ ButtonWithMenu2.displayName = "ButtonWithMenu";
418448
418440
 
418449
418441
  // src/features/ToolsPanel/Buttons/AddConnector.tsx
418450
418442
  function AddConnector2() {
418451
- const { board, app: app2 } = useAppContext();
418443
+ const { board, app } = useAppContext();
418452
418444
  const { t: t11 } = useTranslation();
418453
418445
  const [isActive, setIsActive] = import_react318.useState(Boolean(board.tools.getAddConnector()));
418454
418446
  const addTool = board.tools.getAddConnector();
@@ -418467,7 +418459,7 @@ function AddConnector2() {
418467
418459
  const tool = board.tools.getAddConnector();
418468
418460
  if (tool) {
418469
418461
  tool.applyLineStyle(lineStyle);
418470
- app2.sessionStorage.setConnectorLineStyle(lineStyle);
418462
+ app.sessionStorage.setConnectorLineStyle(lineStyle);
418471
418463
  setIsActive(false);
418472
418464
  }
418473
418465
  };
@@ -419905,7 +419897,7 @@ function getOperationAppendix(operation) {
419905
419897
  }
419906
419898
  if (operation.method === "transformMany") {
419907
419899
  const appendixes = Object.values(operation.items).map((op2) => getOperationAppendix(op2));
419908
- if (appendixes.every((app2) => app2 === appendixes[0])) {
419900
+ if (appendixes.every((app) => app === appendixes[0])) {
419909
419901
  appendix.push(appendixes[0]);
419910
419902
  }
419911
419903
  }
@@ -420632,7 +420624,12 @@ function AddGameItem() {
420632
420624
  function ToolsPanel() {
420633
420625
  const [openedMenu, setOpenedMenu] = import_react354.useState("None");
420634
420626
  const toggleMenu = (menu) => setOpenedMenu((prev2) => prev2 === menu ? "None" : menu);
420635
- useTools();
420627
+ const { app } = useAppContext();
420628
+ const forceUpdate = useForceUpdate2();
420629
+ useAppSubscription({
420630
+ subjects: ["tools"],
420631
+ observer: forceUpdate
420632
+ });
420636
420633
  import_react354.useEffect(() => {}, [window.showDebug]);
420637
420634
  return /* @__PURE__ */ import_react354.default.createElement(PanelContext2.Provider, {
420638
420635
  value: { toggleMenu, openedMenu }
@@ -421975,7 +421972,7 @@ var TogglePresenceRender_module_default = {
421975
421972
  var TogglePresenceRender = () => {
421976
421973
  const { t: t11 } = useTranslation();
421977
421974
  const [cursorsActive, setCursorsActive] = import_react370.useState(true);
421978
- const { app: app2 } = useAppContext();
421975
+ const { app } = useAppContext();
421979
421976
  return /* @__PURE__ */ import_react370.default.createElement(UiButton, {
421980
421977
  id: "tool-cursors-toggle",
421981
421978
  tooltipPosition: "bottom",
@@ -421985,7 +421982,7 @@ var TogglePresenceRender = () => {
421985
421982
  variant: "secondary",
421986
421983
  rounded: "none",
421987
421984
  onClick: () => {
421988
- const cursorsEnabled = app2.getBoard().presence.toggleCursorsRendering();
421985
+ const cursorsEnabled = app.getBoard().presence.toggleCursorsRendering();
421989
421986
  setCursorsActive(cursorsEnabled);
421990
421987
  }
421991
421988
  }, /* @__PURE__ */ import_react370.default.createElement(Icon, {
@@ -422827,13 +422824,13 @@ var CommentContainer = ({ comment: comment3 }) => {
422827
422824
  const commentRef = import_react384.useRef(null);
422828
422825
  const [isPreviewOpen, setIsPreviewOpen] = import_react384.useState(false);
422829
422826
  const initialCommentPosition = import_react384.useRef(comment3.getAnchorPoint());
422830
- const { app: app2, board } = useAppContext();
422827
+ const { app, board } = useAppContext();
422831
422828
  const { openedThreadId, setOpenedThreadId, setMovingComment, movingComment } = useCommentsContext();
422832
422829
  const movingCommentRef = import_react384.useRef(movingComment);
422833
422830
  const isThreadOpen = openedThreadId === comment3.getId();
422834
422831
  const account = useAccount2();
422835
422832
  const mbr = useDomMbr({
422836
- app: app2,
422833
+ app,
422837
422834
  board,
422838
422835
  ref: isThreadOpen ? threadPanelRef : commentContainerRef,
422839
422836
  targetMbr: comment3.getAnchorMbr(),
@@ -422859,14 +422856,14 @@ var CommentContainer = ({ comment: comment3 }) => {
422859
422856
  const width3 = 12 + 24 + 18 * (commentators.length > 3 ? 2 : commentators.length - 1);
422860
422857
  import_react384.useEffect(() => {
422861
422858
  if (commentRef.current) {
422862
- commentRef.current.addEventListener("wheel", app2.controller.onWheel, {
422859
+ commentRef.current.addEventListener("wheel", app.controller.onWheel, {
422863
422860
  capture: true,
422864
422861
  passive: false
422865
422862
  });
422866
422863
  }
422867
422864
  return () => {
422868
422865
  if (commentRef.current) {
422869
- commentRef.current.removeEventListener("wheel", app2.controller.onWheel);
422866
+ commentRef.current.removeEventListener("wheel", app.controller.onWheel);
422870
422867
  }
422871
422868
  };
422872
422869
  }, [isThreadOpen]);
@@ -422985,10 +422982,10 @@ var CreateComment = ({
422985
422982
  }) => {
422986
422983
  const formRef = import_react385.useRef(null);
422987
422984
  const [value2, setValue] = import_react385.useState("");
422988
- const { app: app2, board } = useAppContext();
422985
+ const { app, board } = useAppContext();
422989
422986
  const account = useAccount2();
422990
422987
  const mbr = useDomMbr({
422991
- app: app2,
422988
+ app,
422992
422989
  board,
422993
422990
  ref: formRef,
422994
422991
  targetMbr: comment3.getMbr(),
@@ -423041,10 +423038,10 @@ var Cluster_module_default = {
423041
423038
  // src/entities/comments/Cluster/Cluster.tsx
423042
423039
  var Cluster = ({ comments }) => {
423043
423040
  const clusterRef = import_react386.useRef(null);
423044
- const { board, app: app2 } = useAppContext();
423041
+ const { board, app } = useAppContext();
423045
423042
  const account = useAccount2();
423046
423043
  const mbr = useDomMbr({
423047
- app: app2,
423044
+ app,
423048
423045
  board,
423049
423046
  ref: clusterRef,
423050
423047
  targetMbr: comments[0].getAnchorMbr(),
@@ -423053,14 +423050,14 @@ var Cluster = ({ comments }) => {
423053
423050
  });
423054
423051
  import_react386.useEffect(() => {
423055
423052
  if (clusterRef.current) {
423056
- clusterRef.current.addEventListener("wheel", app2.controller.onWheel, {
423053
+ clusterRef.current.addEventListener("wheel", app.controller.onWheel, {
423057
423054
  capture: true,
423058
423055
  passive: false
423059
423056
  });
423060
423057
  }
423061
423058
  return () => {
423062
423059
  if (clusterRef.current) {
423063
- clusterRef.current.removeEventListener("wheel", app2.controller.onWheel);
423060
+ clusterRef.current.removeEventListener("wheel", app.controller.onWheel);
423064
423061
  }
423065
423062
  };
423066
423063
  }, []);
@@ -423540,7 +423537,7 @@ var CommentsPanel = () => {
423540
423537
  var UserPanel = () => {
423541
423538
  const { t: t11 } = useTranslation();
423542
423539
  const navigate = useNavigate();
423543
- const { app: app2, board } = useAppContext();
423540
+ const { app, board } = useAppContext();
423544
423541
  const account = useAccount2();
423545
423542
  const insideOfMicroboard = document.referrer.includes("https://microboard.io/") || document.referrer.includes("https://microboard.ru/");
423546
423543
  if (!account.isLoggedIn) {
@@ -423578,7 +423575,7 @@ var UserPanel = () => {
423578
423575
  padding: 0,
423579
423576
  className: UserPanel_module_default.wrapper
423580
423577
  }, /* @__PURE__ */ import_react393.default.createElement(ActionButtons, null), /* @__PURE__ */ import_react393.default.createElement(PresenceUsers, {
423581
- app: app2
423578
+ app
423582
423579
  }), board.getBoardId() !== "blank" && /* @__PURE__ */ import_react393.default.createElement("div", {
423583
423580
  className: UserPanel_module_default.container
423584
423581
  }, /* @__PURE__ */ import_react393.default.createElement(ShareBtn, null))), /* @__PURE__ */ import_react393.default.createElement(CommentsPanel, null));
@@ -423757,10 +423754,10 @@ var LinkToButton = ({
423757
423754
  const [iconUrl, setIconUrl] = import_react397.useState(undefined);
423758
423755
  const imgRef = import_react397.useRef(null);
423759
423756
  const [isTooltipOpen, setIsTooltipOpen] = import_react397.useState(false);
423760
- const { app: app2, board } = useAppContext();
423757
+ const { app, board } = useAppContext();
423761
423758
  const closeTooltipTimeoutId = import_react397.useRef();
423762
423759
  const mbr = useDomMbr({
423763
- app: app2,
423760
+ app,
423764
423761
  board,
423765
423762
  ref: linkToButtonRef,
423766
423763
  targetMbr: item instanceof Connector2 ? item.endPointer.path.getMbr() : item.getMbr(),
@@ -423992,7 +423989,7 @@ var QuickAddPanel_module_default = {
423992
423989
 
423993
423990
  // src/features/AppView/QuickAddPanel/QuickAddPanel.tsx
423994
423991
  function QuickAddPanel() {
423995
- const { app: app2 } = useAppContext();
423992
+ const { app } = useAppContext();
423996
423993
  const { t: t11 } = useTranslation();
423997
423994
  const forceUpdate = useForceUpdate2();
423998
423995
  useAppSubscription({
@@ -424001,7 +423998,7 @@ function QuickAddPanel() {
424001
423998
  forceUpdate();
424002
423999
  }
424003
424000
  });
424004
- const appBoard = app2.getBoard();
424001
+ const appBoard = app.getBoard();
424005
424002
  const single = appBoard.selection.items.getSingle();
424006
424003
  if (!appBoard.selection.showQuickAddPanel || !single || single.itemType !== "Connector") {
424007
424004
  return null;
@@ -424290,8 +424287,8 @@ var MouseOrTracpadModal_module_default = {
424290
424287
  var MOUSE_OR_TRACKPAD_MODAL = Symbol("mouseOrTrackpadModal");
424291
424288
  var modes = ["mouse", "trackpad", "auto"];
424292
424289
  var MouseOrTrackpadModal = () => {
424293
- const { app: app2 } = useAppContext();
424294
- const [selectedMode, setSelectedMode] = import_react404.useState(app2.getSettings().controlMode);
424290
+ const { app } = useAppContext();
424291
+ const [selectedMode, setSelectedMode] = import_react404.useState(app.getSettings().controlMode);
424295
424292
  const { closeModal: closeModal2 } = useUiModalContext();
424296
424293
  const { t: t11 } = useTranslation();
424297
424294
  const mouseCards = [
@@ -424325,7 +424322,7 @@ var MouseOrTrackpadModal = () => {
424325
424322
  }
424326
424323
  };
424327
424324
  const setControlMode = () => {
424328
- app2.setControlMode(selectedMode);
424325
+ app.setControlMode(selectedMode);
424329
424326
  closeModal2();
424330
424327
  };
424331
424328
  return /* @__PURE__ */ import_react404.default.createElement(UiModal, {
@@ -424379,16 +424376,16 @@ var Card6 = ({ iconName, style: style3, text: text5 }) => {
424379
424376
  // src/entities/BoardMenu/sections/MouseOrTrackpad.tsx
424380
424377
  var MouseOrTrackpad = () => {
424381
424378
  const [isSetControlModeOpen, setIsSetControlModeOpen] = import_react405.useState(false);
424382
- const { app: app2, board } = useAppContext();
424379
+ const { app, board } = useAppContext();
424383
424380
  const { t: t11 } = useTranslation();
424384
424381
  const forceUpdate = useForceUpdate2();
424385
424382
  const { openModal: openModal2 } = useUiModalContext();
424386
424383
  const setControlMode = (mode) => {
424387
- app2.setControlMode(mode);
424384
+ app.setControlMode(mode);
424388
424385
  forceUpdate();
424389
424386
  };
424390
424387
  const getIsActive = (mode) => {
424391
- return app2.getSettings().controlMode === mode;
424388
+ return app.getSettings().controlMode === mode;
424392
424389
  };
424393
424390
  return /* @__PURE__ */ import_react405.default.createElement(ButtonWithMenu2, {
424394
424391
  className: BoardMenu_module_default.buttonWithMenu,
@@ -424463,7 +424460,7 @@ var MouseOrTrackpad = () => {
424463
424460
  // src/entities/BoardMenu/BoardMenu.tsx
424464
424461
  var BoardMenu = () => {
424465
424462
  const menuRef = import_react406.useRef(null);
424466
- const { board, app: app2 } = useAppContext();
424463
+ const { board, app } = useAppContext();
424467
424464
  const cursorPosition2 = board.pointer.point;
424468
424465
  const [isOpen, setIsOpen] = import_react406.useState(false);
424469
424466
  const position5 = import_react406.useRef(new Mbr);
@@ -424482,7 +424479,7 @@ var BoardMenu = () => {
424482
424479
  }
424483
424480
  });
424484
424481
  const mbr = useDomMbr({
424485
- app: app2,
424482
+ app,
424486
424483
  board,
424487
424484
  ref: menuRef,
424488
424485
  targetMbr: new Mbr(cursorPosition2.x, cursorPosition2.y, cursorPosition2.x, cursorPosition2.y),
@@ -424889,14 +424886,14 @@ var YouTube_default = YouTube;
424889
424886
 
424890
424887
  // src/features/VideoPlayer/VideoPlayer.tsx
424891
424888
  var VideoPlayer = ({ item }) => {
424892
- const { board, app: app2 } = useAppContext();
424889
+ const { board, app } = useAppContext();
424893
424890
  const videoId = conf.getYouTubeId(item.getUrl());
424894
424891
  const videoRef = import_react410.useRef(null);
424895
424892
  const containerRef = import_react410.useRef(null);
424896
424893
  const stopTimeoutRef = import_react410.useRef(null);
424897
424894
  const timeoutDuration = videoId ? 300 : 10;
424898
424895
  import_react410.useEffect(() => {
424899
- containerRef.current?.addEventListener("wheel", app2.controller.onWheel, {
424896
+ containerRef.current?.addEventListener("wheel", app.controller.onWheel, {
424900
424897
  capture: true,
424901
424898
  passive: false
424902
424899
  });
@@ -424915,7 +424912,7 @@ var VideoPlayer = ({ item }) => {
424915
424912
  if (videoRef.current) {
424916
424913
  videoRef.current.removeEventListener("loadedmetadata", handleLoadedMetadata);
424917
424914
  }
424918
- containerRef.current?.removeEventListener("wheel", app2.controller.onWheel);
424915
+ containerRef.current?.removeEventListener("wheel", app.controller.onWheel);
424919
424916
  };
424920
424917
  }, []);
424921
424918
  const stopVideo = () => {
@@ -427261,7 +427258,8 @@ function Sprite() {
427261
427258
 
427262
427259
  // src/features/AppView/AppView.tsx
427263
427260
  function AppView() {
427264
- const { app: app2, board } = useAppContext();
427261
+ const { app, board } = useAppContext();
427262
+ const { t: t11 } = useTranslation();
427265
427263
  const { setQuotedText, tryToSendGenerationRequest } = useAIContext();
427266
427264
  const { setHyperLinkData, hyperLinkData } = useHyperLinkContext();
427267
427265
  const location3 = useLocation();
@@ -427288,6 +427286,12 @@ function AppView() {
427288
427286
  Audio: AudioPlayer
427289
427287
  };
427290
427288
  import_react414.useEffect(() => {
427289
+ notify2({
427290
+ header: t11("notifications.offlineHeader"),
427291
+ body: t11("notifications.offlineBody"),
427292
+ variant: "info",
427293
+ duration: Infinity
427294
+ });
427291
427295
  const handleCtrlWheel = (ev) => {
427292
427296
  if (ev.ctrlKey) {
427293
427297
  ev.preventDefault();
@@ -427304,9 +427308,9 @@ function AppView() {
427304
427308
  controller16.onPaste(event);
427305
427309
  canPasteAgain = false;
427306
427310
  };
427307
- app2.boardSubject.subscribe(update);
427311
+ app.boardSubject.subscribe(update);
427308
427312
  const container = containerRef.current;
427309
- const controller16 = app2.controller;
427313
+ const controller16 = app.controller;
427310
427314
  const abortController2 = new AbortController;
427311
427315
  if (container) {
427312
427316
  container.addEventListener("touchmove", preventDefault2, {
@@ -427352,11 +427356,11 @@ function AppView() {
427352
427356
  });
427353
427357
  }
427354
427358
  return () => {
427355
- app2.boardSubject.unsubscribe(update);
427359
+ app.boardSubject.unsubscribe(update);
427356
427360
  abortController2.abort();
427357
427361
  };
427358
427362
  }, [containerRef.current]);
427359
- const appBoard = app2.getBoard();
427363
+ const appBoard = app.getBoard();
427360
427364
  return /* @__PURE__ */ import_react414.default.createElement(ErrorBoundary, null, /* @__PURE__ */ import_react414.default.createElement("div", {
427361
427365
  className: AppView_module_default.wrapper
427362
427366
  }, shouldShow("titlePanel") && /* @__PURE__ */ import_react414.default.createElement(LandingMenu, null), shouldShow("titlePanel") && /* @__PURE__ */ import_react414.default.createElement(MobileLandingMenu, null), /* @__PURE__ */ import_react414.default.createElement(InactiveBoardHidder, null, /* @__PURE__ */ import_react414.default.createElement("div", {
@@ -427369,12 +427373,12 @@ function AppView() {
427369
427373
  }, /* @__PURE__ */ import_react414.default.createElement(UIMainLoader, null))
427370
427374
  }), /* @__PURE__ */ import_react414.default.createElement(Canvas, {
427371
427375
  router: { location: location3, navigate, params },
427372
- app: app2,
427376
+ app,
427373
427377
  board
427374
427378
  }, /* @__PURE__ */ import_react414.default.createElement(LinksProvider, null), /* @__PURE__ */ import_react414.default.createElement(ItemsProvider, {
427375
427379
  itemsComponents
427376
427380
  })), /* @__PURE__ */ import_react414.default.createElement(TextEditors, {
427377
- app: app2,
427381
+ app,
427378
427382
  board,
427379
427383
  setQuotedText,
427380
427384
  setHyperLinkData,
@@ -427390,7 +427394,7 @@ function AppView() {
427390
427394
  }
427391
427395
  return null;
427392
427396
  })), /* @__PURE__ */ import_react414.default.createElement(ExportVisible, null, /* @__PURE__ */ import_react414.default.createElement(UserPanelLayout, {
427393
- app: app2
427397
+ app
427394
427398
  }), /* @__PURE__ */ import_react414.default.createElement(CommentsProvider, null)), /* @__PURE__ */ import_react414.default.createElement(ExportVisible, null, /* @__PURE__ */ import_react414.default.createElement(UserTracking, {
427395
427399
  board
427396
427400
  })), /* @__PURE__ */ import_react414.default.createElement(InactiveBoardHidder, null, /* @__PURE__ */ import_react414.default.createElement(ZoomPanel, null)), /* @__PURE__ */ import_react414.default.createElement(ViewModeGuard, null, /* @__PURE__ */ import_react414.default.createElement(ContextPanel, null), /* @__PURE__ */ import_react414.default.createElement(QuickAddPanel, null), /* @__PURE__ */ import_react414.default.createElement(ExportPanel, null), /* @__PURE__ */ import_react414.default.createElement(BoardMenu, null)), /* @__PURE__ */ import_react414.default.createElement(HyperLink, null), /* @__PURE__ */ import_react414.default.createElement(AiGenerationButton, null), /* @__PURE__ */ import_react414.default.createElement(HyperLinkInput, null), /* @__PURE__ */ import_react414.default.createElement(ToastProvider, null), authCode && teamIdSearch ? /* @__PURE__ */ import_react414.default.createElement(ImportMiro, null) : null, /* @__PURE__ */ import_react414.default.createElement(CookiesModal, null), /* @__PURE__ */ import_react414.default.createElement(UiModalBackground, null, /* @__PURE__ */ import_react414.default.createElement(ImportMiroStartModal, null), /* @__PURE__ */ import_react414.default.createElement(SelectPaymentModal, null), /* @__PURE__ */ import_react414.default.createElement(UserPlanModal, null), /* @__PURE__ */ import_react414.default.createElement(LimitsModal, null), /* @__PURE__ */ import_react414.default.createElement(HistoryModal, null), /* @__PURE__ */ import_react414.default.createElement(ShareModal, null), /* @__PURE__ */ import_react414.default.createElement(ShareSnapshotModal, null), /* @__PURE__ */ import_react414.default.createElement(ProfileSettingsModal, null), /* @__PURE__ */ import_react414.default.createElement(ChangePasswordModal, null), /* @__PURE__ */ import_react414.default.createElement(AccessDeniedModal, null), /* @__PURE__ */ import_react414.default.createElement(AiUnavailableModal, null), /* @__PURE__ */ import_react414.default.createElement(MediaUnavailableModal, null), /* @__PURE__ */ import_react414.default.createElement(SelectTemplateModal, null), /* @__PURE__ */ import_react414.default.createElement(AuthClipboardModal, null), /* @__PURE__ */ import_react414.default.createElement(ImgAuthClipboardModal, null), /* @__PURE__ */ import_react414.default.createElement(LoadingNotification, null), /* @__PURE__ */ import_react414.default.createElement(ErrorNotification, null), /* @__PURE__ */ import_react414.default.createElement(SuccessNotification, null), /* @__PURE__ */ import_react414.default.createElement(WarnClipboardNotification, null), /* @__PURE__ */ import_react414.default.createElement(WarnNotification, null), /* @__PURE__ */ import_react414.default.createElement(SetLinkToModal, null), /* @__PURE__ */ import_react414.default.createElement(CreateTemplateModal, null), /* @__PURE__ */ import_react414.default.createElement(MouseOrTrackpadModal, null), /* @__PURE__ */ import_react414.default.createElement(CreateCardsModal, null), /* @__PURE__ */ import_react414.default.createElement(CreateDiceModal, null)), /* @__PURE__ */ import_react414.default.createElement(LocalFileSaveProgress_default, null)), /* @__PURE__ */ import_react414.default.createElement(Sprite, null));
@@ -427401,7 +427405,7 @@ function preventDefault2(event) {
427401
427405
  // src/features/AppView/LocalAppView.tsx
427402
427406
  var import_react415 = __toESM(require_react(), 1);
427403
427407
  function LocalAppView() {
427404
- const { app: app2, board } = useAppContext();
427408
+ const { app, board } = useAppContext();
427405
427409
  const forceUpdate = useForceUpdate2();
427406
427410
  const animationId = import_react415.useRef(null);
427407
427411
  const containerRef = import_react415.useRef(null);
@@ -427438,9 +427442,9 @@ function LocalAppView() {
427438
427442
  controller16.onPaste(event);
427439
427443
  canPasteAgain = false;
427440
427444
  };
427441
- app2.boardSubject.subscribe(update);
427445
+ app.boardSubject.subscribe(update);
427442
427446
  const container = containerRef.current;
427443
- const controller16 = app2.controller;
427447
+ const controller16 = app.controller;
427444
427448
  if (container) {
427445
427449
  document.addEventListener("touchmove", preventDefault3, {
427446
427450
  passive: false
@@ -427468,7 +427472,7 @@ function LocalAppView() {
427468
427472
  window.addEventListener("dragover", (event) => event.preventDefault());
427469
427473
  }
427470
427474
  return () => {
427471
- app2.boardSubject.unsubscribe(update);
427475
+ app.boardSubject.unsubscribe(update);
427472
427476
  if (container) {
427473
427477
  document.removeEventListener("touchmove", preventDefault3);
427474
427478
  container.removeEventListener("wheel", controller16.onWheel);
@@ -427489,10 +427493,10 @@ function LocalAppView() {
427489
427493
  }, /* @__PURE__ */ import_react415.default.createElement(InactiveBoardHidder, null, /* @__PURE__ */ import_react415.default.createElement("div", {
427490
427494
  ref: containerRef
427491
427495
  }, /* @__PURE__ */ import_react415.default.createElement(CanvasNoRouter, {
427492
- app: app2,
427496
+ app,
427493
427497
  board
427494
427498
  }, /* @__PURE__ */ import_react415.default.createElement(LinksProvider, null)), /* @__PURE__ */ import_react415.default.createElement(TextEditors, {
427495
- app: app2,
427499
+ app,
427496
427500
  board,
427497
427501
  setQuotedText,
427498
427502
  setHyperLinkData,
@@ -446310,30 +446314,28 @@ var pasteWelcomeBoardData = (board, lang) => {
446310
446314
  board.camera.zoomToFit(mbr);
446311
446315
  };
446312
446316
  function WelcomePage() {
446313
- const { app: app2 } = useAppContext();
446317
+ const { app } = useAppContext();
446314
446318
  const navigate = useNavigate();
446315
- const { i18n: i18n7, t: t11 } = useTranslation();
446316
- const boardsList = useBoardsList();
446317
- const createPublicBoard = async (app3) => {
446318
- const lastBoardId = app3.getLastBoardId();
446319
+ const createPublicBoard = async (app2) => {
446320
+ const lastBoardId = app2.getLastBoardId();
446319
446321
  if (lastBoardId) {
446320
- await app3.openBoard(lastBoardId);
446322
+ await app2.openBoard(lastBoardId);
446321
446323
  return lastBoardId;
446322
446324
  }
446323
- return "welcome";
446325
+ return "welcome-local";
446324
446326
  };
446325
446327
  import_react419.default.useEffect(() => {
446326
- createPublicBoard(app2).then((boardId) => {
446328
+ createPublicBoard(app).then((boardId) => {
446327
446329
  navigate(`/boards/${boardId}`);
446328
446330
  }).catch(console.error);
446329
- }, [app2]);
446331
+ }, [app]);
446330
446332
  return null;
446331
446333
  }
446332
446334
 
446333
446335
  // src/pages/BoardPage.tsx
446334
446336
  var BoardPage = () => {
446335
- const { app: app2 } = useAppContext();
446336
- const board = app2.getBoard();
446337
+ const { app } = useAppContext();
446338
+ const board = app.getBoard();
446337
446339
  const params = useParams();
446338
446340
  const { t: t11, i18n: i18n7 } = useTranslation();
446339
446341
  const navigate = useNavigate();
@@ -446345,10 +446347,10 @@ var BoardPage = () => {
446345
446347
  const boardsList = useBoardsList();
446346
446348
  const account = useAccount2();
446347
446349
  const { openModal: openModal2 } = useUiModalContext();
446348
- app2.connection.onAccessDenied = async (deniedBoardId, forceUpdate = false) => {
446350
+ app.connection.onAccessDenied = async (deniedBoardId, forceUpdate = false) => {
446349
446351
  if (forceUpdate || deniedBoardId === board.getBoardId() && !isOpenMiroBoards) {
446350
446352
  openModal2(ACCESS_DENIED_MODAL);
446351
- const deniedBoard = app2.getConnectedBoard(deniedBoardId);
446353
+ const deniedBoard = app.getConnectedBoard(deniedBoardId);
446352
446354
  if (deniedBoard) {
446353
446355
  deniedBoard.disconnect();
446354
446356
  }
@@ -446356,54 +446358,54 @@ var BoardPage = () => {
446356
446358
  await boardsList.removeBoard(board.getBoardId());
446357
446359
  }
446358
446360
  navigate("/boards/blank");
446359
- await app2.openBoard("blank");
446360
- app2.render();
446361
+ await app.openBoard("blank");
446362
+ app.render();
446361
446363
  }
446362
446364
  };
446363
446365
  import_react420.useLayoutEffect(() => {
446364
446366
  boardsList.loadBoards().then(() => {
446365
446367
  if (params.boardId?.includes("local")) {
446366
- app2.openBoardFromFile().then(() => {
446368
+ app.openBoardFromFile().then(() => {
446367
446369
  navigate(`/boards/${params.boardId}${search3}`, {
446368
446370
  replace: true
446369
446371
  });
446370
- app2.render();
446372
+ app.render();
446371
446373
  });
446372
446374
  } else if (params.boardId && params.boardId !== "blank") {
446373
- app2.openBoard(params.boardId, searchParams.get("accessKey") || undefined).then(() => {
446375
+ app.openBoard(params.boardId, searchParams.get("accessKey") || undefined).then(() => {
446374
446376
  navigate(`/boards/${params.boardId}${search3}`, {
446375
446377
  replace: true
446376
446378
  });
446377
- app2.render();
446379
+ app.render();
446378
446380
  });
446379
446381
  } else {
446380
446382
  const lastSeenBoard = localStorage.getItem(LAST_BOARD_KEY);
446381
446383
  const isFirstVisit = !api10.get("first_visit");
446382
446384
  if (lastSeenBoard) {
446383
- app2.openBoard(lastSeenBoard).then(() => {
446385
+ app.openBoard(lastSeenBoard).then(() => {
446384
446386
  navigate(`/boards/${lastSeenBoard}${search3}`, {
446385
446387
  replace: true
446386
446388
  });
446387
- app2.render();
446389
+ app.render();
446388
446390
  });
446389
446391
  } else if (isFirstVisit) {
446390
446392
  boardsList.createBoard(t11("board.welcomeBoardTitle"), true).then((boardId) => {
446391
- app2.openBoard(boardId).then(() => {
446393
+ app.openBoard(boardId).then(() => {
446392
446394
  navigate(`/boards/${boardId}`, {
446393
446395
  replace: true
446394
446396
  });
446395
- app2.render();
446396
- const board2 = app2.getBoard();
446397
+ app.render();
446398
+ const board2 = app.getBoard();
446397
446399
  pasteWelcomeBoardData(board2, i18n7.language);
446398
446400
  });
446399
446401
  });
446400
446402
  } else {
446401
446403
  boardsList.createBoard().then((boardId) => {
446402
- app2.openBoard(boardId).then(() => {
446404
+ app.openBoard(boardId).then(() => {
446403
446405
  navigate(`/boards/${boardId}`, {
446404
446406
  replace: true
446405
446407
  });
446406
- app2.render();
446408
+ app.render();
446407
446409
  });
446408
446410
  });
446409
446411
  }
@@ -446442,7 +446444,7 @@ var BoardPage = () => {
446442
446444
  return /* @__PURE__ */ import_react420.default.createElement("div", null);
446443
446445
  }
446444
446446
  return /* @__PURE__ */ import_react420.default.createElement(AppContext2.Provider, {
446445
- value: { app: app2, board }
446447
+ value: { app, board }
446446
446448
  }, /* @__PURE__ */ import_react420.default.createElement(AppView, null));
446447
446449
  };
446448
446450
 
@@ -446815,19 +446817,19 @@ var LOCAL_PROVIDERS = [
446815
446817
  ];
446816
446818
  var Provider = compose2(PROVIDERS);
446817
446819
  var LocalProvider = compose2(LOCAL_PROVIDERS);
446818
- function AppLayout({ app: app2 }) {
446819
- const board = app2.getBoard();
446820
+ function AppLayout({ app }) {
446821
+ const board = app.getBoard();
446820
446822
  return /* @__PURE__ */ import_react427.default.createElement(AppContext2.Provider, {
446821
- value: { app: app2, board }
446823
+ value: { app, board }
446822
446824
  }, /* @__PURE__ */ import_react427.default.createElement(Provider, null, /* @__PURE__ */ import_react427.default.createElement(Outlet, null), /* @__PURE__ */ import_react427.default.createElement(ToastProvider, null)));
446823
446825
  }
446824
446826
  function LocalAppLayout({
446825
- app: app2,
446827
+ app,
446826
446828
  children
446827
446829
  }) {
446828
- const board = app2.getBoard();
446830
+ const board = app.getBoard();
446829
446831
  return /* @__PURE__ */ import_react427.default.createElement(AppContext2.Provider, {
446830
- value: { app: app2, board }
446832
+ value: { app, board }
446831
446833
  }, /* @__PURE__ */ import_react427.default.createElement(LocalProvider, null, children, /* @__PURE__ */ import_react427.default.createElement(Outlet, null)));
446832
446834
  }
446833
446835
 
@@ -446836,8 +446838,8 @@ var import_react428 = __toESM(require_react(), 1);
446836
446838
  var QuickAddButtonsClear = ({
446837
446839
  children
446838
446840
  }) => {
446839
- const { app: app2 } = useAppContext();
446840
- app2.getBoard()?.selection.quickAddButtons.clear();
446841
+ const { app } = useAppContext();
446842
+ app.getBoard()?.selection.quickAddButtons.clear();
446841
446843
  return /* @__PURE__ */ import_react428.default.createElement(import_react428.default.Fragment, null, children);
446842
446844
  };
446843
446845
  var QuickAddButtonsClear_default = QuickAddButtonsClear;
@@ -447171,7 +447173,7 @@ var SelectBoardPage_module_default = {
447171
447173
  // src/pages/SelectBoardPage/SelectBoardPage.tsx
447172
447174
  var getName = (i18t, name3) => name3 || i18t("board.untitled");
447173
447175
  var SelectBoardPage = () => {
447174
- const { app: app2 } = useAppContext();
447176
+ const { app } = useAppContext();
447175
447177
  const { t: t11 } = useTranslation();
447176
447178
  const navigate = useNavigate();
447177
447179
  const forceUpdate = useForceUpdate2();
@@ -447220,7 +447222,7 @@ var SelectBoardPage = () => {
447220
447222
  }, [selected]);
447221
447223
  import_react433.useEffect(() => {
447222
447224
  const fetchBoards = async () => {
447223
- await app2.boardsList.loadBoards();
447225
+ await app.boardsList.loadBoards();
447224
447226
  };
447225
447227
  fetchBoards();
447226
447228
  }, []);
@@ -447228,7 +447230,7 @@ var SelectBoardPage = () => {
447228
447230
  try {
447229
447231
  if (selected === "addNew") {
447230
447232
  const createdId = await boardsList.createBoard(newBoardRef.current?.value, true);
447231
- const unauthedData = app2.storage.getCreatedBoard(createdId);
447233
+ const unauthedData = app.storage.getCreatedBoard(createdId);
447232
447234
  if (unauthedData) {
447233
447235
  handleSuccess(unauthedData.id, unauthedData.title, unauthedData.authorKey ?? undefined);
447234
447236
  } else {
@@ -448143,8 +448145,8 @@ var WheelLogger_module_default = {
448143
448145
 
448144
448146
  // src/pages/WheelLogger/WheelLogger.tsx
448145
448147
  var WheelEventLoggerPage = () => {
448146
- const { app: app2 } = useAppContext();
448147
- const board = app2.getBoard();
448148
+ const { app } = useAppContext();
448149
+ const board = app.getBoard();
448148
448150
  const boardsList = useBoardsList();
448149
448151
  const [events4, setEvents] = import_react439.useState([]);
448150
448152
  const [mousePosition, setMousePosition] = import_react439.useState({ x: 0, y: 0 });
@@ -448154,8 +448156,8 @@ var WheelEventLoggerPage = () => {
448154
448156
  try {
448155
448157
  await boardsList.loadBoards();
448156
448158
  const boardId = await boardsList.createBoard();
448157
- await app2.openBoard(boardId);
448158
- app2.render();
448159
+ await app.openBoard(boardId);
448160
+ app.render();
448159
448161
  loggerRef.current = new WheelEventLogger(setEvents, setMousePosition);
448160
448162
  console.log("Logger initialized successfully");
448161
448163
  } catch (error3) {
@@ -448183,7 +448185,7 @@ var WheelEventLoggerPage = () => {
448183
448185
  return /* @__PURE__ */ import_react439.default.createElement("div", null);
448184
448186
  }
448185
448187
  return /* @__PURE__ */ import_react439.default.createElement(import_react439.default.Fragment, null, /* @__PURE__ */ import_react439.default.createElement(AppContext2.Provider, {
448186
- value: { app: app2, board }
448188
+ value: { app, board }
448187
448189
  }, /* @__PURE__ */ import_react439.default.createElement(AppView, null)), /* @__PURE__ */ import_react439.default.createElement("div", {
448188
448190
  className: WheelLogger_module_default.loggerContainer
448189
448191
  }, /* @__PURE__ */ import_react439.default.createElement("div", {
@@ -448205,11 +448207,11 @@ var WheelEventLoggerPage = () => {
448205
448207
  // src/App/router.tsx
448206
448208
  var import_react440 = __toESM(require_react(), 1);
448207
448209
  var import_react_dom19 = __toESM(require_react_dom(), 1);
448208
- function getRender(app2) {
448210
+ function getRender(app) {
448209
448211
  const router = createBrowserRouter([
448210
448212
  {
448211
448213
  element: /* @__PURE__ */ import_react440.default.createElement(AppLayout, {
448212
- app: app2
448214
+ app
448213
448215
  }),
448214
448216
  children: [
448215
448217
  {
@@ -448297,10 +448299,10 @@ function getRender(app2) {
448297
448299
  router
448298
448300
  };
448299
448301
  }
448300
- function getLocalRender(app2, customId) {
448302
+ function getLocalRender(app, customId) {
448301
448303
  return () => {
448302
448304
  import_react_dom19.default.render(/* @__PURE__ */ import_react440.default.createElement(LocalAppLayout, {
448303
- app: app2
448305
+ app
448304
448306
  }, /* @__PURE__ */ import_react440.default.createElement(LocalSidePanelContextProvider, null, /* @__PURE__ */ import_react440.default.createElement(LocalAppView, null))), document.getElementById(customId));
448305
448307
  };
448306
448308
  }
@@ -448719,8 +448721,8 @@ function createApp(isHistory = true) {
448719
448721
  const authInterceptor = getAuthInterceptor(account);
448720
448722
  api.interceptors.addRequestInterceptor(authInterceptor);
448721
448723
  async function openBoard(id3, accessKey) {
448722
- if (id3 === "welcome") {
448723
- const welcomeBoard = new Board("welcome");
448724
+ if (id3.includes("welcome")) {
448725
+ const welcomeBoard = new Board(id3);
448724
448726
  pasteWelcomeBoardData(welcomeBoard, conf.i18n.language);
448725
448727
  subscriptions.setBoard(welcomeBoard);
448726
448728
  boardSubject.publish(welcomeBoard);
@@ -448729,7 +448731,7 @@ function createApp(isHistory = true) {
448729
448731
  await connectBoard(board);
448730
448732
  return;
448731
448733
  }
448732
- const appBoard = app2.getBoard();
448734
+ const appBoard = app.getBoard();
448733
448735
  if (id3 === "boards" || appBoard?.getBoardId() === id3) {
448734
448736
  return;
448735
448737
  }
@@ -448761,7 +448763,7 @@ function createApp(isHistory = true) {
448761
448763
  board.setName(boardsList.getBoardInfo(id3)?.title);
448762
448764
  }
448763
448765
  appBoard?.setIsOpen(false);
448764
- const newBoard = app2.getBoard();
448766
+ const newBoard = app.getBoard();
448765
448767
  if (!newBoard.camera.useSavedSnapshot(newBoard.getCameraSnapshot())) {
448766
448768
  if (newBoard.items.listAll().length > 0) {
448767
448769
  const itemsMbr = newBoard.items.getMbr();
@@ -448801,9 +448803,9 @@ function createApp(isHistory = true) {
448801
448803
  }, 1000);
448802
448804
  }
448803
448805
  async function openBoardFromFile() {
448804
- app2.getBoard()?.cleanup();
448806
+ app.getBoard()?.cleanup();
448805
448807
  const id3 = "local";
448806
- const currentBoard = new Board(id3, undefined, saveEditingFile.bind(app2));
448808
+ const currentBoard = new Board(id3, undefined, saveEditingFile.bind(app));
448807
448809
  connectBoard(currentBoard);
448808
448810
  subscriptions.setBoard(currentBoard);
448809
448811
  boardSubject.publish(currentBoard);
@@ -448864,13 +448866,13 @@ function createApp(isHistory = true) {
448864
448866
  const snapshotId = window.parent.location.href.split("/snapshots/")[1];
448865
448867
  const snapshot2 = document.documentElement.outerHTML;
448866
448868
  const boardId = await boardsList.createBoard(snapshotId.split("?")[0] + " copy", !account.isLoggedIn);
448867
- await app2.connection.connect();
448869
+ await app.connection.connect();
448868
448870
  window.parent.history.pushState({}, "", `/boards/${boardId}`);
448869
- await app2.openBoard(boardId);
448870
- const addedIds = app2.getBoard().deserializeHTMLAndEmit(snapshot2);
448871
+ await app.openBoard(boardId);
448872
+ const addedIds = app.getBoard().deserializeHTMLAndEmit(snapshot2);
448871
448873
  const promise = new Promise((resolve2) => {
448872
448874
  const reloadInterval = setInterval(() => {
448873
- const confirmedEvents = app2.getBoard().events?.getRaw().confirmedEvents;
448875
+ const confirmedEvents = app.getBoard().events?.getRaw().confirmedEvents;
448874
448876
  const flatOperations = confirmedEvents?.flatMap((ev) => ("operations" in ev.body) ? ev.body.operations : ev.body.operation) || [];
448875
448877
  const confirmedAddedIds = flatOperations.filter((op2) => op2.method === "add").flatMap((op2) => op2.item);
448876
448878
  if (confirmedAddedIds.length >= addedIds.length) {
@@ -448926,7 +448928,7 @@ function createApp(isHistory = true) {
448926
448928
  await writable.write(data);
448927
448929
  await writable.close();
448928
448930
  }
448929
- const app2 = {
448931
+ const app = {
448930
448932
  connection,
448931
448933
  clipboard,
448932
448934
  location: location3,
@@ -448961,7 +448963,7 @@ function createApp(isHistory = true) {
448961
448963
  storage2.softClean();
448962
448964
  });
448963
448965
  function render2() {
448964
- const { render: render3, router } = getRender(app2);
448966
+ const { render: render3, router } = getRender(app);
448965
448967
  boardSubject.subscribe(() => {
448966
448968
  boardsList.subject.publish();
448967
448969
  });
@@ -448992,10 +448994,10 @@ function createApp(isHistory = true) {
448992
448994
  render3();
448993
448995
  }
448994
448996
  function localRender(id3) {
448995
- const render3 = getLocalRender(app2, id3);
448997
+ const render3 = getLocalRender(app, id3);
448996
448998
  render3();
448997
448999
  }
448998
- return app2;
449000
+ return app;
448999
449001
  }
449000
449002
  // src/features/Cursors/pencil.svg
449001
449003
  var pencil_default = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">