diff --git a/src/actions/actionExport.tsx b/src/actions/actionExport.tsx index 2748ad3a4..cf7864e96 100644 --- a/src/actions/actionExport.tsx +++ b/src/actions/actionExport.tsx @@ -9,7 +9,7 @@ import { loadFromJSON, saveAsJSON } from "../data"; import { t } from "../i18n"; import useIsMobile from "../is-mobile"; import { KEYS } from "../keys"; -import { muteFSAbortError } from "../utils"; +import { getDateTime, muteFSAbortError } from "../utils"; import { register } from "./register"; import "../components/ToolIcon.scss"; @@ -22,7 +22,7 @@ export const actionChangeProjectName = register({ PanelComponent: ({ appState, updateData }) => ( updateData(name)} /> ), diff --git a/src/appState.ts b/src/appState.ts index 7b8eba034..47b712525 100644 --- a/src/appState.ts +++ b/src/appState.ts @@ -1,7 +1,5 @@ import oc from "open-color"; import { AppState, FlooredNumber, NormalizedZoomValue } from "./types"; -import { getDateTime } from "./utils"; -import { t } from "./i18n"; import { DEFAULT_FONT_SIZE, DEFAULT_FONT_FAMILY, @@ -46,7 +44,7 @@ export const getDefaultAppState = (): Omit< scrollY: 0 as FlooredNumber, cursorButton: "up", scrolledOutside: false, - name: `${t("labels.untitled")}-${getDateTime()}`, + name: "", isBindingEnabled: true, isResizing: false, isRotating: false, diff --git a/src/components/App.tsx b/src/components/App.tsx index 5599b9515..8ccded6cf 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -10,7 +10,6 @@ import { duplicateElement, isInvisiblySmallElement, isTextElement, - textWysiwyg, getCommonBounds, getCursorForResizingElement, getPerfectElementSize, @@ -177,6 +176,7 @@ import { trackEvent, } from "../analytics"; import { Stats } from "./Stats"; +import { textWysiwyg } from "../element/textWysiwyg"; const { history } = createHistory(); diff --git a/src/components/ExportDialog.tsx b/src/components/ExportDialog.tsx index 013bbed33..1a682887a 100644 --- a/src/components/ExportDialog.tsx +++ b/src/components/ExportDialog.tsx @@ -100,6 +100,7 @@ const ExportModal = ({ exportPadding, scale, shouldAddWatermark, + watermarkText: t("labels.madeWithExcalidraw"), }); // if converting to blob fails, there's some problem that will @@ -175,6 +176,7 @@ const ExportModal = ({ exportPadding, shouldAddWatermark, s, + t("labels.madeWithExcalidraw"), ); const scaleButtonTitle = `${t( diff --git a/src/components/LayerUI.tsx b/src/components/LayerUI.tsx index 767b3e8ff..afcb5a55d 100644 --- a/src/components/LayerUI.tsx +++ b/src/components/LayerUI.tsx @@ -41,7 +41,7 @@ import "./LayerUI.scss"; import { LibraryUnit } from "./LibraryUnit"; import { ToolButton } from "./ToolButton"; import { saveLibraryAsJSON, importLibraryFromJSON } from "../data/json"; -import { muteFSAbortError } from "../utils"; +import { getDateTime, muteFSAbortError } from "../utils"; import { BackgroundPickerAndDarkModeToggle } from "./BackgroundPickerAndDarkModeToggle"; import clsx from "clsx"; import { Library } from "../data/library"; @@ -352,7 +352,7 @@ const LayerUI = ({ if (canvas) { await exportCanvas(type, exportedElements, appState, canvas, { exportBackground: appState.exportBackground, - name: appState.name, + name: appState.name || `${t("labels.untitled")}-${getDateTime()}`, viewBackgroundColor: appState.viewBackgroundColor, scale, shouldAddWatermark: appState.shouldAddWatermark, diff --git a/src/data/index.ts b/src/data/index.ts index 6797a7a30..4f4b3d881 100644 --- a/src/data/index.ts +++ b/src/data/index.ts @@ -75,6 +75,7 @@ export const exportCanvas = async ( exportPadding, scale, shouldAddWatermark, + watermarkText: t("labels.madeWithExcalidraw"), }); tempCanvas.style.display = "none"; document.body.appendChild(tempCanvas); diff --git a/src/data/json.ts b/src/data/json.ts index 67e969bef..da336a876 100644 --- a/src/data/json.ts +++ b/src/data/json.ts @@ -8,6 +8,8 @@ import { Library } from "./library"; import { MIME_TYPES } from "../constants"; import { clearElementsForExport } from "../element"; import { EVENT_LIBRARY, trackEvent } from "../analytics"; +import { t } from "../i18n"; +import { getDateTime } from "../utils"; export const serializeAsJSON = ( elements: readonly ExcalidrawElement[], @@ -33,11 +35,10 @@ export const saveAsJSON = async ( const blob = new Blob([serialized], { type: "application/json", }); - const fileHandle = await fileSave( blob, { - fileName: appState.name, + fileName: appState.name || `${t("labels.untitled")}-${getDateTime()}`, description: "Excalidraw file", extensions: [".excalidraw"], }, diff --git a/src/element/index.ts b/src/element/index.ts index e49bc633e..474b0be3d 100644 --- a/src/element/index.ts +++ b/src/element/index.ts @@ -49,7 +49,6 @@ export { dragNewElement, } from "./dragElements"; export { isTextElement, isExcalidrawElement } from "./typeChecks"; -export { textWysiwyg } from "./textWysiwyg"; export { redrawTextBoundingBox } from "./textElement"; export { getPerfectElementSize, diff --git a/src/history.ts b/src/history.ts index d0b29a25c..33f3b200d 100644 --- a/src/history.ts +++ b/src/history.ts @@ -2,6 +2,8 @@ import { AppState } from "./types"; import { ExcalidrawElement } from "./element/types"; import { isLinearElement } from "./element/typeChecks"; import { deepCopyElement } from "./element/newElement"; +import { getDateTime } from "./utils"; +import { t } from "./i18n"; export interface HistoryEntry { appState: ReturnType; @@ -24,7 +26,7 @@ const clearAppStatePropertiesForHistory = (appState: AppState) => { viewBackgroundColor: appState.viewBackgroundColor, editingLinearElement: appState.editingLinearElement, editingGroupId: appState.editingGroupId, - name: appState.name, + name: appState.name || `${t("labels.untitled")}-${getDateTime()}`, }; }; diff --git a/src/packages/utils/index.js b/src/packages/utils/index.js index 4dc03e935..b454e3fcd 100644 --- a/src/packages/utils/index.js +++ b/src/packages/utils/index.js @@ -1 +1 @@ -export { exportToBlob, exportToSvg, exportToCanvas } from "../utils.ts"; +export { exportToBlob, exportToSvg, exportToCanvas } from "./utils"; diff --git a/src/packages/utils/package.json b/src/packages/utils/package.json index 1f39f390b..7727c38a6 100644 --- a/src/packages/utils/package.json +++ b/src/packages/utils/package.json @@ -1,5 +1,6 @@ { "name": "@excalidraw/utils", + "sideEffects": false, "version": "0.1.0", "main": "dist/excalidraw-utils.min.js", "files": [ diff --git a/src/packages/utils.ts b/src/packages/utils/utils.ts similarity index 89% rename from src/packages/utils.ts rename to src/packages/utils/utils.ts index 442d6db10..6e136ba77 100644 --- a/src/packages/utils.ts +++ b/src/packages/utils/utils.ts @@ -1,11 +1,11 @@ import { exportToCanvas as _exportToCanvas, exportToSvg as _exportToSvg, -} from "../scene/export"; -import { getDefaultAppState } from "../appState"; -import { AppState } from "../types"; -import { ExcalidrawElement } from "../element/types"; -import { getNonDeletedElements } from "../element"; +} from "../../scene/export"; +import { getDefaultAppState } from "../../appState"; +import { AppState } from "../../types"; +import { ExcalidrawElement } from "../../element/types"; +import { getNonDeletedElements } from "../../element"; type ExportOpts = { elements: readonly ExcalidrawElement[]; diff --git a/src/packages/utils/webpack.prod.config.js b/src/packages/utils/webpack.prod.config.js index a3cc0b26e..e9b3cde23 100644 --- a/src/packages/utils/webpack.prod.config.js +++ b/src/packages/utils/webpack.prod.config.js @@ -13,7 +13,7 @@ module.exports = { libraryTarget: "umd", }, resolve: { - extensions: [".tsx", ".ts", ".js"], + extensions: [".ts", ".js"], }, optimization: { runtimeChunk: false, @@ -40,4 +40,18 @@ module.exports = { }), ...(process.env.ANALYZER === "true" ? [new BundleAnalyzerPlugin()] : []), ], + externals: { + react: { + root: "React", + commonjs2: "react", + commonjs: "react", + amd: "react", + }, + "react-dom": { + root: "ReactDOM", + commonjs2: "react-dom", + commonjs: "react-dom", + amd: "react-dom", + }, + }, }; diff --git a/src/scene/export.ts b/src/scene/export.ts index 57d3c18fe..9f697b12b 100644 --- a/src/scene/export.ts +++ b/src/scene/export.ts @@ -7,7 +7,6 @@ import { renderScene, renderSceneToSvg } from "../renderer/renderScene"; import { distance, SVG_NS } from "../utils"; import { normalizeScroll } from "./scroll"; import { AppState } from "../types"; -import { t } from "../i18n"; import { DEFAULT_FONT_FAMILY, DEFAULT_VERTICAL_ALIGN } from "../constants"; import { getDefaultAppState } from "../appState"; @@ -23,12 +22,14 @@ export const exportToCanvas = ( viewBackgroundColor, scale = 1, shouldAddWatermark, + watermarkText, }: { exportBackground: boolean; exportPadding?: number; scale?: number; viewBackgroundColor: string; shouldAddWatermark: boolean; + watermarkText?: string; }, createCanvas: (width: number, height: number) => HTMLCanvasElement = ( width, @@ -40,7 +41,11 @@ export const exportToCanvas = ( return tempCanvas; }, ) => { - const sceneElements = getElementsAndWatermark(elements, shouldAddWatermark); + const sceneElements = getElementsAndWatermark( + elements, + shouldAddWatermark, + watermarkText, + ); const [minX, minY, width, height] = getCanvasSize( sceneElements, @@ -152,20 +157,25 @@ export const exportToSvg = ( const getElementsAndWatermark = ( elements: readonly NonDeletedExcalidrawElement[], shouldAddWatermark: boolean, + watermarkText?: string, ): readonly NonDeletedExcalidrawElement[] => { let _elements = [...elements]; if (shouldAddWatermark) { const [, , maxX, maxY] = getCommonBounds(elements); - _elements = [..._elements, getWatermarkElement(maxX, maxY)]; + _elements = [..._elements, getWatermarkElement(maxX, maxY, watermarkText)]; } return _elements; }; -const getWatermarkElement = (maxX: number, maxY: number) => { +const getWatermarkElement = ( + maxX: number, + maxY: number, + watermarkText: string = "", +) => { return newTextElement({ - text: t("labels.madeWithExcalidraw"), + text: watermarkText, fontSize: WATERMARK_HEIGHT, fontFamily: DEFAULT_FONT_FAMILY, textAlign: "right", @@ -204,8 +214,13 @@ export const getExportSize = ( exportPadding: number, shouldAddWatermark: boolean, scale: number, + watermarkText?: string, ): [number, number] => { - const sceneElements = getElementsAndWatermark(elements, shouldAddWatermark); + const sceneElements = getElementsAndWatermark( + elements, + shouldAddWatermark, + watermarkText, + ); const [, , width, height] = getCanvasSize( sceneElements, diff --git a/src/tests/__snapshots__/regressionTests.test.tsx.snap b/src/tests/__snapshots__/regressionTests.test.tsx.snap index 0f5db1c95..d40bc4127 100644 --- a/src/tests/__snapshots__/regressionTests.test.tsx.snap +++ b/src/tests/__snapshots__/regressionTests.test.tsx.snap @@ -38,7 +38,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -491,7 +491,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -950,7 +950,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -1718,7 +1718,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -1914,7 +1914,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -2364,7 +2364,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -2609,7 +2609,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -2765,7 +2765,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -3234,7 +3234,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -3534,7 +3534,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -3730,7 +3730,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -3966,7 +3966,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -4210,7 +4210,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -4585,7 +4585,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -4872,7 +4872,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -5171,7 +5171,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -5371,7 +5371,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -5527,7 +5527,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -5972,7 +5972,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -6282,7 +6282,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -8308,7 +8308,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -8662,7 +8662,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -8909,7 +8909,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -9154,7 +9154,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -9461,7 +9461,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -9617,7 +9617,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -9773,7 +9773,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -9929,7 +9929,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -10115,7 +10115,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -10301,7 +10301,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -10487,7 +10487,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -10673,7 +10673,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -10829,7 +10829,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -10985,7 +10985,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -11171,7 +11171,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -11327,7 +11327,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -11513,7 +11513,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -12466,7 +12466,7 @@ Object { "isRotating": false, "lastPointerDownWith": "touch", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -12560,7 +12560,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -12652,7 +12652,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -12808,7 +12808,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -13108,7 +13108,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -13408,7 +13408,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -13564,7 +13564,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -13752,7 +13752,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -13993,7 +13993,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -14309,7 +14309,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -15140,7 +15140,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -15440,7 +15440,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -15740,7 +15740,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -16111,7 +16111,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -16270,7 +16270,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -16583,7 +16583,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -16814,7 +16814,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -17061,7 +17061,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -17380,7 +17380,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -17472,7 +17472,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -17628,7 +17628,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -18441,7 +18441,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -18533,7 +18533,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -19279,7 +19279,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -19676,7 +19676,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -19941,7 +19941,7 @@ Object { "isRotating": false, "lastPointerDownWith": "touch", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -20525,7 +20525,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null, @@ -20617,7 +20617,7 @@ Object { "isRotating": false, "lastPointerDownWith": "mouse", "multiElement": null, - "name": "Untitled-201933152653", + "name": "", "offsetLeft": 0, "offsetTop": 0, "openMenu": null,