diff --git a/.env.development b/.env.development index 0c2fb5527c..c56b62b360 100644 --- a/.env.development +++ b/.env.development @@ -20,14 +20,10 @@ REACT_APP_DEV_ENABLE_SW= # whether to disable live reload / HMR. Usuaully what you want to do when # debugging Service Workers. REACT_APP_DEV_DISABLE_LIVE_RELOAD= +REACT_APP_DISABLE_TRACKING=true FAST_REFRESH=false -# MATOMO -REACT_APP_MATOMO_URL= -REACT_APP_CDN_MATOMO_TRACKER_URL= -REACT_APP_MATOMO_SITE_ID= - #Debug flags # To enable bounding box for text containers diff --git a/.env.production b/.env.production index 8737c63c7f..b86aa4bcc5 100644 --- a/.env.production +++ b/.env.production @@ -11,14 +11,5 @@ REACT_APP_WS_SERVER_URL= REACT_APP_FIREBASE_CONFIG='{"apiKey":"AIzaSyAd15pYlMci_xIp9ko6wkEsDzAAA0Dn0RU","authDomain":"excalidraw-room-persistence.firebaseapp.com","databaseURL":"https://excalidraw-room-persistence.firebaseio.com","projectId":"excalidraw-room-persistence","storageBucket":"excalidraw-room-persistence.appspot.com","messagingSenderId":"654800341332","appId":"1:654800341332:web:4a692de832b55bd57ce0c1"}' -# production-only vars -# GOOGLE ANALYTICS -REACT_APP_GOOGLE_ANALYTICS_ID=UA-387204-13 -# MATOMO -REACT_APP_MATOMO_URL=https://excalidraw.matomo.cloud/ -REACT_APP_CDN_MATOMO_TRACKER_URL=//cdn.matomo.cloud/excalidraw.matomo.cloud/matomo.js -REACT_APP_MATOMO_SITE_ID=1 - - - REACT_APP_PLUS_APP=https://app.excalidraw.com +REACT_APP_DISABLE_TRACKING= diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/ref.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/ref.mdx index 08e8079071..eaf58f758e 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/api/props/ref.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/ref.mdx @@ -306,30 +306,32 @@ This is the history API. history.clear() will clear the history. ## scrollToContent -
-  (
- {" "} - target?:{" "} - - ExcalidrawElement - {" "} - |{" "} - - ExcalidrawElement - - [], -
- {" "}opts?: { fitToContent?: boolean; animate?: boolean; duration?: number - } -
) => void -
+```tsx +( + target?: ExcalidrawElement | ExcalidrawElement[], + opts?: + | { + fitToContent?: boolean; + animate?: boolean; + duration?: number; + } + | { + fitToViewport?: boolean; + viewportZoomFactor?: number; + animate?: boolean; + duration?: number; + } +) => void +``` Scroll the nearest element out of the elements supplied to the center of the viewport. Defaults to the elements on the scene. | Attribute | type | default | Description | | --- | --- | --- | --- | -| target | ExcalidrawElement | ExcalidrawElement[] | All scene elements | The element(s) to scroll to. | -| opts.fitToContent | boolean | false | Whether to fit the elements to viewport by automatically changing zoom as needed. | +| target | [ExcalidrawElement](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L115) | [ExcalidrawElement[]](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L115) | All scene elements | The element(s) to scroll to. | +| opts.fitToContent | boolean | false | Whether to fit the elements to viewport by automatically changing zoom as needed. Note that the zoom range is between 10%-100%. | +| opts.fitToViewport | boolean | false | Similar to fitToContent but the zoom range is not limited. If elements are smaller than the viewport, zoom will go above 100%. | +| opts.viewportZoomFactor | number | 0.7 | when fitToViewport=true, how much screen should the content cover, between 0.1 (10%) and 1 (100%) | | opts.animate | boolean | false | Whether to animate between starting and ending position. Note that for larger scenes the animation may not be smooth due to performance issues. | | opts.duration | number | 500 | Duration of the animation if `opts.animate` is `true`. | diff --git a/dev-docs/docs/introduction/contributing.mdx b/dev-docs/docs/introduction/contributing.mdx index d384c97a1a..821355e0ed 100644 --- a/dev-docs/docs/introduction/contributing.mdx +++ b/dev-docs/docs/introduction/contributing.mdx @@ -2,6 +2,11 @@ Pull requests are welcome. For major changes, please [open an issue](https://github.com/excalidraw/excalidraw/issues/new) first to discuss what you would like to change. +We have a [roadmap](https://github.com/orgs/excalidraw/projects/3) which we strongly recommend to go through and check if something interests you. +For new contributors we would recommend to start with *Easy* tasks. + +In case you want to pick up something from the roadmap, comment on that issue and one of the project maintainers will assign it to you, post which you can discuss in the issue and start working on it. + ## Setup ### Option 1 - Manual diff --git a/package.json b/package.json index 91a4400b6e..d1198fa230 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,8 @@ ] }, "dependencies": { + "@braintree/sanitize-url": "6.0.2", + "@excalidraw/random-username": "1.0.0", "@radix-ui/react-popover": "1.0.3", "@radix-ui/react-tabs": "1.0.2", "@sentry/browser": "6.2.5", @@ -27,6 +29,7 @@ "@testing-library/react": "12.1.5", "@tldraw/vec": "1.7.1", "browser-fs-access": "0.29.1", + "canvas-roundrect-polyfill": "0.0.1", "clsx": "1.1.1", "cross-env": "7.0.3", "fake-indexeddb": "3.1.7", @@ -106,7 +109,7 @@ "/src/packages/excalidraw/example" ], "transformIgnorePatterns": [ - "node_modules/(?!(roughjs|points-on-curve|path-data-parser|points-on-path|browser-fs-access)/)" + "node_modules/(?!(roughjs|points-on-curve|path-data-parser|points-on-path|browser-fs-access|canvas-roundrect-polyfill)/)" ], "resetMocks": false }, diff --git a/public/index.html b/public/index.html index f65e481f33..5509ded86a 100644 --- a/public/index.html +++ b/public/index.html @@ -148,33 +148,6 @@ // setting this so that libraries installation reuses this window tab. window.name = "_excalidraw"; - <% if (process.env.REACT_APP_DISABLE_TRACKING !== 'true') { %> - - - - - - - <% if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID) { %> - - - <% } %> - - <% } %> + ${exportingFrameClipPath} `; + // render background rect if (appState.exportBackground && viewBackgroundColor) { const rect = svgRoot.ownerDocument!.createElementNS(SVG_NS, "rect"); @@ -169,9 +208,10 @@ export const exportToSvg = async ( const rsvg = rough.svg(svgRoot); renderSceneToSvg(elements, rsvg, svgRoot, files || {}, { - offsetX: -minX + exportPadding, - offsetY: -minY + exportPadding, + offsetX, + offsetY, exportWithDarkMode: appState.exportWithDarkMode, + exportingFrameId: exportingFrame?.id || null, }); return svgRoot; @@ -182,9 +222,36 @@ const getCanvasSize = ( elements: readonly NonDeletedExcalidrawElement[], exportPadding: number, ): [number, number, number, number] => { + // we should decide if we are exporting the whole canvas + // if so, we are not clipping elements in the frame + // and therefore, we should not do anything special + + const isExportingWholeCanvas = + Scene.getScene(elements[0])?.getNonDeletedElements()?.length === + elements.length; + + const onlyExportingSingleFrame = isOnlyExportingSingleFrame(elements); + + if (!isExportingWholeCanvas || onlyExportingSingleFrame) { + const frames = elements.filter((element) => element.type === "frame"); + + const exportedFrameIds = frames.reduce((acc, frame) => { + acc[frame.id] = true; + return acc; + }, {} as Record); + + // elements in a frame do not affect the canvas size if we're not exporting + // the whole canvas + elements = elements.filter( + (element) => !exportedFrameIds[element.frameId ?? ""], + ); + } + const [minX, minY, maxX, maxY] = getCommonBounds(elements); - const width = distance(minX, maxX) + exportPadding * 2; - const height = distance(minY, maxY) + exportPadding + exportPadding; + const width = + distance(minX, maxX) + (onlyExportingSingleFrame ? 0 : exportPadding * 2); + const height = + distance(minY, maxY) + (onlyExportingSingleFrame ? 0 : exportPadding * 2); return [minX, minY, width, height]; }; diff --git a/src/scene/scrollbars.ts b/src/scene/scrollbars.ts index c36acde043..76a04d606e 100644 --- a/src/scene/scrollbars.ts +++ b/src/scene/scrollbars.ts @@ -41,10 +41,10 @@ export const getScrollBars = ( const viewportHeightDiff = viewportHeight - viewportHeightWithZoom; const safeArea = { - top: parseInt(getGlobalCSSVariable("sat")), - bottom: parseInt(getGlobalCSSVariable("sab")), - left: parseInt(getGlobalCSSVariable("sal")), - right: parseInt(getGlobalCSSVariable("sar")), + top: parseInt(getGlobalCSSVariable("sat")) || 0, + bottom: parseInt(getGlobalCSSVariable("sab")) || 0, + left: parseInt(getGlobalCSSVariable("sal")) || 0, + right: parseInt(getGlobalCSSVariable("sar")) || 0, }; const isRTL = getLanguage().rtl; diff --git a/src/scene/selection.test.ts b/src/scene/selection.test.ts new file mode 100644 index 0000000000..644d2129f9 --- /dev/null +++ b/src/scene/selection.test.ts @@ -0,0 +1,35 @@ +import { makeNextSelectedElementIds } from "./selection"; + +describe("makeNextSelectedElementIds", () => { + const _makeNextSelectedElementIds = ( + selectedElementIds: { [id: string]: true }, + prevSelectedElementIds: { [id: string]: true }, + expectUpdated: boolean, + ) => { + const ret = makeNextSelectedElementIds(selectedElementIds, { + selectedElementIds: prevSelectedElementIds, + }); + expect(ret === selectedElementIds).toBe(expectUpdated); + }; + it("should return prevState selectedElementIds if no change", () => { + _makeNextSelectedElementIds({}, {}, false); + _makeNextSelectedElementIds({ 1: true }, { 1: true }, false); + _makeNextSelectedElementIds( + { 1: true, 2: true }, + { 1: true, 2: true }, + false, + ); + }); + it("should return new selectedElementIds if changed", () => { + // _makeNextSelectedElementIds({ 1: true }, { 1: false }, true); + _makeNextSelectedElementIds({ 1: true }, {}, true); + _makeNextSelectedElementIds({}, { 1: true }, true); + _makeNextSelectedElementIds({ 1: true }, { 2: true }, true); + _makeNextSelectedElementIds({ 1: true }, { 1: true, 2: true }, true); + _makeNextSelectedElementIds( + { 1: true, 2: true }, + { 1: true, 3: true }, + true, + ); + }); +}); diff --git a/src/scene/selection.ts b/src/scene/selection.ts index 20d787bc45..bbb629d3c2 100644 --- a/src/scene/selection.ts +++ b/src/scene/selection.ts @@ -5,17 +5,62 @@ import { import { getElementAbsoluteCoords, getElementBounds } from "../element"; import { AppState } from "../types"; import { isBoundToContainer } from "../element/typeChecks"; +import { + elementOverlapsWithFrame, + getContainingFrame, + getFrameElements, +} from "../frame"; +import { isShallowEqual } from "../utils"; + +/** + * Frames and their containing elements are not to be selected at the same time. + * Given an array of selected elements, if there are frames and their containing elements + * we only keep the frames. + * @param selectedElements + */ +export const excludeElementsInFramesFromSelection = < + T extends ExcalidrawElement, +>( + selectedElements: readonly T[], +) => { + const framesInSelection = new Set(); + + selectedElements.forEach((element) => { + if (element.type === "frame") { + framesInSelection.add(element.id); + } + }); + + return selectedElements.filter((element) => { + if (element.frameId && framesInSelection.has(element.frameId)) { + return false; + } + return true; + }); +}; export const getElementsWithinSelection = ( elements: readonly NonDeletedExcalidrawElement[], selection: NonDeletedExcalidrawElement, + excludeElementsInFrames: boolean = true, ) => { const [selectionX1, selectionY1, selectionX2, selectionY2] = getElementAbsoluteCoords(selection); - return elements.filter((element) => { - const [elementX1, elementY1, elementX2, elementY2] = + + let elementsInSelection = elements.filter((element) => { + let [elementX1, elementY1, elementX2, elementY2] = getElementBounds(element); + const containingFrame = getContainingFrame(element); + if (containingFrame) { + const [fx1, fy1, fx2, fy2] = getElementBounds(containingFrame); + + elementX1 = Math.max(fx1, elementX1); + elementY1 = Math.max(fy1, elementY1); + elementX2 = Math.min(fx2, elementX2); + elementY2 = Math.min(fy2, elementY2); + } + return ( element.locked === false && element.type !== "selection" && @@ -26,13 +71,59 @@ export const getElementsWithinSelection = ( selectionY2 >= elementY2 ); }); + + elementsInSelection = excludeElementsInFrames + ? excludeElementsInFramesFromSelection(elementsInSelection) + : elementsInSelection; + + elementsInSelection = elementsInSelection.filter((element) => { + const containingFrame = getContainingFrame(element); + + if (containingFrame) { + return elementOverlapsWithFrame(element, containingFrame); + } + + return true; + }); + + return elementsInSelection; }; -export const isSomeElementSelected = ( - elements: readonly NonDeletedExcalidrawElement[], - appState: Pick, -): boolean => - elements.some((element) => appState.selectedElementIds[element.id]); +// FIXME move this into the editor instance to keep utility methods stateless +export const isSomeElementSelected = (function () { + let lastElements: readonly NonDeletedExcalidrawElement[] | null = null; + let lastSelectedElementIds: AppState["selectedElementIds"] | null = null; + let isSelected: boolean | null = null; + + const ret = ( + elements: readonly NonDeletedExcalidrawElement[], + appState: Pick, + ): boolean => { + if ( + isSelected != null && + elements === lastElements && + appState.selectedElementIds === lastSelectedElementIds + ) { + return isSelected; + } + + isSelected = elements.some( + (element) => appState.selectedElementIds[element.id], + ); + lastElements = elements; + lastSelectedElementIds = appState.selectedElementIds; + + return isSelected; + }; + + ret.clearCache = () => { + lastElements = null; + lastSelectedElementIds = null; + isSelected = null; + }; + + return ret; +})(); /** * Returns common attribute (picked by `getAttribute` callback) of selected @@ -56,14 +147,17 @@ export const getCommonAttributeOfSelectedElements = ( export const getSelectedElements = ( elements: readonly NonDeletedExcalidrawElement[], appState: Pick, - includeBoundTextElement: boolean = false, -) => - elements.filter((element) => { + opts?: { + includeBoundTextElement?: boolean; + includeElementsInFrames?: boolean; + }, +) => { + const selectedElements = elements.filter((element) => { if (appState.selectedElementIds[element.id]) { return element; } if ( - includeBoundTextElement && + opts?.includeBoundTextElement && isBoundToContainer(element) && appState.selectedElementIds[element?.containerId] ) { @@ -72,10 +166,44 @@ export const getSelectedElements = ( return null; }); + if (opts?.includeElementsInFrames) { + const elementsToInclude: ExcalidrawElement[] = []; + selectedElements.forEach((element) => { + if (element.type === "frame") { + getFrameElements(elements, element.id).forEach((e) => + elementsToInclude.push(e), + ); + } + elementsToInclude.push(element); + }); + + return elementsToInclude; + } + + return selectedElements; +}; + export const getTargetElements = ( elements: readonly NonDeletedExcalidrawElement[], appState: Pick, ) => appState.editingElement ? [appState.editingElement] - : getSelectedElements(elements, appState, true); + : getSelectedElements(elements, appState, { + includeBoundTextElement: true, + }); + +/** + * returns prevState's selectedElementids if no change from previous, so as to + * retain reference identity for memoization + */ +export const makeNextSelectedElementIds = ( + nextSelectedElementIds: AppState["selectedElementIds"], + prevState: Pick, +) => { + if (isShallowEqual(prevState.selectedElementIds, nextSelectedElementIds)) { + return prevState.selectedElementIds; + } + + return nextSelectedElementIds; +}; diff --git a/src/shapes.tsx b/src/shapes.tsx index a8b9b53012..bb827995be 100644 --- a/src/shapes.tsx +++ b/src/shapes.tsx @@ -83,6 +83,14 @@ export const SHAPES = [ numericKey: KEYS["0"], fillable: false, }, + // TODO: frame, create icon and set up numeric key + // { + // icon: RectangleIcon, + // value: "frame", + // key: KEYS.F, + // numericKey: KEYS.SUBTRACT, + // fillable: false, + // }, ] as const; export const findShapeByKey = (key: string) => { diff --git a/src/tests/__snapshots__/contextmenu.test.tsx.snap b/src/tests/__snapshots__/contextmenu.test.tsx.snap index 6103c2f51b..583c809a2c 100644 --- a/src/tests/__snapshots__/contextmenu.test.tsx.snap +++ b/src/tests/__snapshots__/contextmenu.test.tsx.snap @@ -41,6 +41,24 @@ Object { "category": "element", }, }, + Object { + "contextItemLabel": "labels.selectAllElementsInFrame", + "name": "selectAllElementsInFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "canvas", + }, + }, + Object { + "contextItemLabel": "labels.removeAllElementsFromFrame", + "name": "removeAllElementsFromFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "history", + }, + }, "separator", Object { "contextItemLabel": "labels.copyAsPng", @@ -247,6 +265,7 @@ Object { "keyTest": [Function], "name": "toggleElementLock", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -285,14 +304,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -324,6 +352,7 @@ Object { "id0": true, "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object { "g1": true, }, @@ -353,6 +382,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "solid", + "frameId": null, "groupIds": Array [ "g1", ], @@ -386,6 +416,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "solid", + "frameId": null, "groupIds": Array [ "g1", ], @@ -465,14 +496,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -503,6 +543,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -532,6 +573,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -590,6 +632,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -651,14 +694,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -689,6 +741,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -716,6 +769,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -747,6 +801,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -805,6 +860,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -847,6 +903,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -875,6 +932,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -917,6 +975,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -945,6 +1004,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1006,14 +1066,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -1044,6 +1113,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -1071,6 +1141,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -1102,6 +1173,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1160,6 +1232,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1202,6 +1275,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1230,6 +1304,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -1272,6 +1347,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -1300,6 +1376,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1361,14 +1438,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -1399,6 +1485,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -1428,6 +1515,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1486,6 +1574,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1547,14 +1636,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -1583,6 +1681,7 @@ Object { "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -1610,6 +1709,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1668,6 +1768,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1708,6 +1809,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1769,14 +1871,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -1807,6 +1918,7 @@ Object { "selectedElementIds": Object { "id0_copy": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -1834,6 +1946,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1865,6 +1978,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0_copy", @@ -1923,6 +2037,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1965,6 +2080,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -1993,6 +2109,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0_copy", @@ -2054,14 +2171,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -2094,8 +2220,8 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object { "id3": true, }, @@ -2125,6 +2251,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -2158,6 +2285,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -2218,6 +2346,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -2260,6 +2389,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -2288,6 +2418,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -2321,7 +2452,6 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, }, "selectedGroupIds": Object { "id3": true, @@ -2334,6 +2464,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -2364,6 +2495,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -2427,14 +2559,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -2465,6 +2606,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -2494,6 +2636,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -2525,6 +2668,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -2583,6 +2727,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -2625,6 +2770,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -2653,6 +2799,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -2695,6 +2842,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -2723,6 +2871,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -2765,6 +2914,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -2793,6 +2943,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -2835,6 +2986,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -2863,6 +3015,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -2905,6 +3058,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -2933,6 +3087,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -2975,6 +3130,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3003,6 +3159,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3045,6 +3202,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3073,6 +3231,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3115,6 +3274,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3143,6 +3303,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3185,6 +3346,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3213,6 +3375,7 @@ Object { "backgroundColor": "#a5d8ff", "boundElements": null, "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3274,14 +3437,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -3312,6 +3484,7 @@ Object { "selectedElementIds": Object { "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -3339,6 +3512,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3370,6 +3544,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3428,6 +3603,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3470,6 +3646,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3498,6 +3675,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3540,6 +3718,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3568,6 +3747,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3629,14 +3809,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -3667,6 +3856,7 @@ Object { "selectedElementIds": Object { "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -3694,6 +3884,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3725,6 +3916,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3783,6 +3975,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3825,6 +4018,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3853,6 +4047,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3895,6 +4090,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -3923,6 +4119,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -3984,14 +4181,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -4024,8 +4230,8 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -4053,6 +4259,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -4084,6 +4291,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -4142,6 +4350,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -4184,6 +4393,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -4212,6 +4422,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -4245,7 +4456,6 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, }, "selectedGroupIds": Object { "id3": true, @@ -4258,6 +4468,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -4288,6 +4499,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -4323,7 +4535,6 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -4334,6 +4545,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -4362,6 +4574,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -4436,6 +4649,24 @@ Object { "category": "element", }, }, + Object { + "contextItemLabel": "labels.selectAllElementsInFrame", + "name": "selectAllElementsInFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "canvas", + }, + }, + Object { + "contextItemLabel": "labels.removeAllElementsFromFrame", + "name": "removeAllElementsFromFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "history", + }, + }, "separator", Object { "contextItemLabel": "labels.copyAsPng", @@ -4642,6 +4873,7 @@ Object { "keyTest": [Function], "name": "toggleElementLock", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -4680,14 +4912,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -4712,7 +4953,6 @@ Object { "pendingImageElementId": null, "previousSelectedElementIds": Object { "id0": true, - "id2": true, }, "resizingElement": null, "scrollX": 0, @@ -4721,9 +4961,8 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -4751,6 +4990,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4782,6 +5022,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -4840,6 +5081,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4882,6 +5124,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4910,6 +5153,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -4984,6 +5228,24 @@ Object { "category": "element", }, }, + Object { + "contextItemLabel": "labels.selectAllElementsInFrame", + "name": "selectAllElementsInFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "canvas", + }, + }, + Object { + "contextItemLabel": "labels.removeAllElementsFromFrame", + "name": "removeAllElementsFromFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "history", + }, + }, "separator", Object { "contextItemLabel": "labels.copyAsPng", @@ -5190,6 +5452,7 @@ Object { "keyTest": [Function], "name": "toggleElementLock", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5228,14 +5491,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -5260,7 +5532,6 @@ Object { "pendingImageElementId": null, "previousSelectedElementIds": Object { "id0": true, - "id2": true, }, "resizingElement": null, "scrollX": 0, @@ -5269,9 +5540,8 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object { "id4": true, }, @@ -5301,6 +5571,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -5334,6 +5605,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -5394,6 +5666,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5436,6 +5709,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5464,6 +5738,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -5497,8 +5772,6 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, }, "selectedGroupIds": Object { "id4": true, @@ -5511,6 +5784,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -5541,6 +5815,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -5719,14 +5994,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -5755,6 +6039,7 @@ Object { "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -5841,6 +6126,24 @@ Object { "category": "element", }, }, + Object { + "contextItemLabel": "labels.selectAllElementsInFrame", + "name": "selectAllElementsInFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "canvas", + }, + }, + Object { + "contextItemLabel": "labels.removeAllElementsFromFrame", + "name": "removeAllElementsFromFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "history", + }, + }, "separator", Object { "contextItemLabel": "labels.copyAsPng", @@ -6047,6 +6350,7 @@ Object { "keyTest": [Function], "name": "toggleElementLock", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -6085,14 +6389,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -6123,6 +6436,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -6185,6 +6499,24 @@ Object { "category": "element", }, }, + Object { + "contextItemLabel": "labels.selectAllElementsInFrame", + "name": "selectAllElementsInFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "canvas", + }, + }, + Object { + "contextItemLabel": "labels.removeAllElementsFromFrame", + "name": "removeAllElementsFromFrame", + "perform": [Function], + "predicate": [Function], + "trackEvent": Object { + "category": "history", + }, + }, "separator", Object { "contextItemLabel": "labels.copyAsPng", @@ -6391,6 +6723,7 @@ Object { "keyTest": [Function], "name": "toggleElementLock", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -6429,14 +6762,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 100, "isBindingEnabled": true, @@ -6467,6 +6809,7 @@ Object { "selectedElementIds": Object { "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -6494,6 +6837,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", @@ -6525,6 +6869,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id0", @@ -6556,6 +6901,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id1", @@ -6614,6 +6960,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id0", diff --git a/src/tests/__snapshots__/dragCreate.test.tsx.snap b/src/tests/__snapshots__/dragCreate.test.tsx.snap index 4508fd3c71..b8d95d221c 100644 --- a/src/tests/__snapshots__/dragCreate.test.tsx.snap +++ b/src/tests/__snapshots__/dragCreate.test.tsx.snap @@ -10,6 +10,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -56,6 +57,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -89,6 +91,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -122,6 +125,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -168,6 +172,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", diff --git a/src/tests/__snapshots__/export.test.tsx.snap b/src/tests/__snapshots__/export.test.tsx.snap index f292d199a3..5f860150e5 100644 --- a/src/tests/__snapshots__/export.test.tsx.snap +++ b/src/tests/__snapshots__/export.test.tsx.snap @@ -15,6 +15,7 @@ exports[`export exporting svg containing transformed images: svg export output 1 src: url(\\"https://excalidraw.com/Cascadia.woff2\\"); } + - " + " `; diff --git a/src/tests/__snapshots__/move.test.tsx.snap b/src/tests/__snapshots__/move.test.tsx.snap index b214243c54..5084d15085 100644 --- a/src/tests/__snapshots__/move.test.tsx.snap +++ b/src/tests/__snapshots__/move.test.tsx.snap @@ -6,6 +6,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0_copy", @@ -37,6 +38,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -68,6 +70,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -104,6 +107,7 @@ Object { }, ], "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id0", @@ -140,6 +144,7 @@ Object { }, ], "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 300, "id": "id1", @@ -177,6 +182,7 @@ Object { "gap": 10, }, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 81.48231043525051, "id": "id2", diff --git a/src/tests/__snapshots__/multiPointCreate.test.tsx.snap b/src/tests/__snapshots__/multiPointCreate.test.tsx.snap index a1ce563629..0a6ae0cc89 100644 --- a/src/tests/__snapshots__/multiPointCreate.test.tsx.snap +++ b/src/tests/__snapshots__/multiPointCreate.test.tsx.snap @@ -8,6 +8,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 110, "id": "id0", @@ -61,6 +62,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 110, "id": "id0", diff --git a/src/tests/__snapshots__/regressionTests.test.tsx.snap b/src/tests/__snapshots__/regressionTests.test.tsx.snap index 931a2db5a3..fd2c2f5d7c 100644 --- a/src/tests/__snapshots__/regressionTests.test.tsx.snap +++ b/src/tests/__snapshots__/regressionTests.test.tsx.snap @@ -28,14 +28,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -62,9 +71,6 @@ Object { "id0": true, "id1": true, "id2": true, - "id3": true, - "id4": true, - "id6": true, }, "resizingElement": null, "scrollX": 0, @@ -73,8 +79,8 @@ Object { "selectedElementIds": Object { "id0": true, "id2": true, - "id7": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object { "id5": true, }, @@ -104,6 +110,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -135,6 +142,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", ], @@ -168,6 +176,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", ], @@ -228,6 +237,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -270,6 +280,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -298,6 +309,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -340,6 +352,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -368,6 +381,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -396,6 +410,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -429,8 +444,6 @@ Object { "selectedElementIds": Object { "id0": true, "id2": true, - "id3": true, - "id4": true, }, "selectedGroupIds": Object { "id5": true, @@ -443,6 +456,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -471,6 +485,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", ], @@ -501,6 +516,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", ], @@ -564,14 +580,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -598,28 +623,20 @@ Object { "id0": true, "id1": true, "id2": true, - "id3": true, - "id5": true, }, "resizingElement": null, "scrollX": 0, "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object { - "id0": false, "id1": true, - "id2": false, - "id3": true, - "id5": true, - "id6": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object { "id0": true, "id1": true, "id2": true, - "id3": true, "id4": false, - "id5": true, }, "selectedLinearElement": null, "selectionElement": null, @@ -647,6 +664,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -678,6 +696,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -711,6 +730,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -771,6 +791,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id0", @@ -813,6 +834,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id0", @@ -841,6 +863,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -883,6 +906,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id0", @@ -911,6 +935,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -939,6 +964,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id2", @@ -972,7 +998,6 @@ Object { "selectedElementIds": Object { "id0": true, "id2": true, - "id3": true, }, "selectedGroupIds": Object { "id4": true, @@ -985,6 +1010,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -1013,6 +1039,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -1043,6 +1070,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -1106,14 +1134,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": "id10", "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": false, @@ -1142,9 +1179,9 @@ Object { "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object { - "id12": true, "id7": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -1172,6 +1209,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -1206,6 +1244,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -1240,6 +1279,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id10", ], @@ -1300,6 +1340,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -1342,6 +1383,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -1370,6 +1412,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -1403,8 +1446,6 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, }, "selectedGroupIds": Object { "id4": true, @@ -1417,6 +1458,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -1447,6 +1489,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -1481,7 +1524,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id5": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -1492,6 +1534,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -1522,6 +1565,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -1566,6 +1610,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -1596,6 +1641,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -1626,6 +1672,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id7", @@ -1660,8 +1707,6 @@ Object { "id0": true, "id1": true, "id7": true, - "id8": true, - "id9": true, }, "selectedGroupIds": Object { "id10": true, @@ -1674,6 +1719,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -1705,6 +1751,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -1736,6 +1783,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id10", ], @@ -1770,7 +1818,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id11": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -1781,6 +1828,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -1812,6 +1860,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -1843,6 +1892,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id10", ], @@ -1876,7 +1926,6 @@ Object { "editingLinearElement": null, "name": "Untitled-201933152653", "selectedElementIds": Object { - "id12": true, "id7": true, }, "selectedGroupIds": Object {}, @@ -1888,6 +1937,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -1919,6 +1969,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -1950,6 +2001,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id10", ], @@ -2013,14 +2065,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -2052,8 +2113,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id0": true, - "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -2081,6 +2142,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -2139,6 +2201,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -2171,7 +2234,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id1": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -2182,6 +2244,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -2243,14 +2306,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -2275,7 +2347,6 @@ Object { "pendingImageElementId": null, "previousSelectedElementIds": Object { "id0": true, - "id3": true, }, "resizingElement": null, "scrollX": 0, @@ -2284,9 +2355,8 @@ Object { "selectedElementIds": Object { "id0": true, "id2": true, - "id3": true, - "id4": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object { "id5": true, }, @@ -2316,6 +2386,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -2347,6 +2418,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", ], @@ -2380,6 +2452,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", ], @@ -2440,6 +2513,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -2482,6 +2556,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -2510,6 +2585,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -2552,6 +2628,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -2580,6 +2657,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -2608,6 +2686,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -2641,8 +2720,6 @@ Object { "selectedElementIds": Object { "id0": true, "id2": true, - "id3": true, - "id4": true, }, "selectedGroupIds": Object { "id5": true, @@ -2655,6 +2732,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -2683,6 +2761,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", ], @@ -2713,6 +2792,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", ], @@ -2776,14 +2856,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -2815,8 +2904,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id0": true, - "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -2844,6 +2933,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0_copy", @@ -2875,6 +2965,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -2933,6 +3024,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -2965,7 +3057,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id1": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -2976,6 +3067,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0_copy", @@ -3004,6 +3096,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -3065,14 +3158,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -3103,6 +3205,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -3130,6 +3233,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -3188,6 +3292,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -3249,14 +3354,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -3288,8 +3402,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id1": true, - "id3": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -3317,6 +3431,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id0", @@ -3348,6 +3463,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id1", @@ -3379,6 +3495,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 350, "id": "id2", @@ -3437,6 +3554,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id0", @@ -3479,6 +3597,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id0", @@ -3507,6 +3626,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id1", @@ -3549,6 +3669,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id0", @@ -3577,6 +3698,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id1", @@ -3605,6 +3727,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 350, "id": "id2", @@ -3637,7 +3760,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id1": true, - "id3": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -3648,6 +3770,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id0", @@ -3676,6 +3799,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 200, "id": "id1", @@ -3704,6 +3828,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 350, "id": "id2", @@ -3765,14 +3890,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -3803,6 +3937,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -3830,6 +3965,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -3888,6 +4024,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -3930,6 +4067,7 @@ Object { "backgroundColor": "#ffec99", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -3972,6 +4110,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4014,6 +4153,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4075,14 +4215,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -4114,8 +4263,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id0": true, - "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -4143,6 +4292,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4201,6 +4351,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4233,7 +4384,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id1": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -4244,6 +4394,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4305,14 +4456,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -4337,7 +4497,6 @@ Object { "pendingImageElementId": null, "previousSelectedElementIds": Object { "id0": true, - "id1": true, }, "resizingElement": null, "scrollX": 0, @@ -4345,9 +4504,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id0": true, - "id1": true, - "id2": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -4375,6 +4533,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4433,6 +4592,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4465,7 +4625,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id1": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -4476,6 +4635,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4508,8 +4668,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id1": true, - "id2": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -4520,6 +4678,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4581,14 +4740,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -4620,8 +4788,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id0": true, - "id2": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -4649,6 +4817,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4680,6 +4849,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -4738,6 +4908,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4780,6 +4951,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4808,6 +4980,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -4869,14 +5042,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -4909,8 +5091,8 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id3": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -4938,6 +5120,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -4969,6 +5152,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -5000,6 +5184,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -5058,6 +5243,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5100,6 +5286,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5128,6 +5315,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -5170,6 +5358,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5198,6 +5387,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -5226,6 +5416,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -5290,6 +5481,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id3", @@ -5314,14 +5506,23 @@ Object { "y": 500, }, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -5347,13 +5548,13 @@ Object { "previousSelectedElementIds": Object { "id0": true, "id1": true, - "id2": true, }, "resizingElement": null, "scrollX": 0, "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": Object { @@ -5361,6 +5562,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id3", @@ -5408,6 +5610,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5439,6 +5642,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -5497,6 +5701,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5539,6 +5744,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5567,6 +5773,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -5631,6 +5838,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id3", @@ -5655,14 +5863,23 @@ Object { "y": 50, }, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -5688,13 +5905,13 @@ Object { "previousSelectedElementIds": Object { "id0": true, "id1": true, - "id2": true, }, "resizingElement": null, "scrollX": 0, "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -5722,6 +5939,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5753,6 +5971,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -5811,6 +6030,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5853,6 +6073,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -5881,6 +6102,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -5945,6 +6167,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id1", @@ -5969,14 +6192,23 @@ Object { "y": 110, }, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -6007,6 +6239,7 @@ Object { "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": Object { @@ -6014,6 +6247,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id1", @@ -6061,6 +6295,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -6119,6 +6354,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -6180,14 +6416,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -6217,9 +6462,8 @@ Object { "scrollX": 0, "scrollY": 0, "scrolledOutside": false, - "selectedElementIds": Object { - "id1": true, - }, + "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -6247,6 +6491,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id0", @@ -6305,6 +6550,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id0", @@ -6366,14 +6612,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": "id3", "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -6404,6 +6659,7 @@ Object { "selectedElementIds": Object { "id2": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -6431,6 +6687,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -6464,6 +6721,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -6497,6 +6755,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -6557,6 +6816,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -6599,6 +6859,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -6627,6 +6888,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -6669,6 +6931,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -6697,6 +6960,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -6725,6 +6989,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -6771,6 +7036,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -6801,6 +7067,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -6831,6 +7098,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -6894,14 +7162,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -6927,7 +7204,6 @@ Object { "previousSelectedElementIds": Object { "id0": true, "id1": true, - "id2": true, }, "resizingElement": null, "scrollX": 0, @@ -6936,9 +7212,8 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -6966,6 +7241,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -6997,6 +7273,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -7055,6 +7332,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -7097,6 +7375,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -7125,6 +7404,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -7158,8 +7438,6 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -7170,6 +7448,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -7198,6 +7477,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -7259,14 +7539,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -7294,9 +7583,8 @@ Object { "scrollX": 0, "scrollY": 0, "scrolledOutside": false, - "selectedElementIds": Object { - "id7": false, - }, + "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -7324,6 +7612,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -7355,6 +7644,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -7386,6 +7676,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -7419,6 +7710,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id3", @@ -7465,6 +7757,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id4", @@ -7511,6 +7804,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id5", @@ -7564,6 +7858,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id6", @@ -7615,6 +7910,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id7", @@ -7695,6 +7991,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -7737,6 +8034,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -7765,6 +8063,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -7807,6 +8106,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -7835,6 +8135,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -7863,6 +8164,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -7905,6 +8207,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -7933,6 +8236,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -7961,6 +8265,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -7991,6 +8296,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id3", @@ -8046,6 +8352,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -8074,6 +8381,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -8102,6 +8410,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -8132,6 +8441,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id3", @@ -8175,6 +8485,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id4", @@ -8230,6 +8541,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -8258,6 +8570,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -8286,6 +8599,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -8316,6 +8630,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id3", @@ -8359,6 +8674,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id4", @@ -8402,6 +8718,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id5", @@ -8460,6 +8777,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -8488,6 +8806,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -8516,6 +8835,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -8546,6 +8866,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id3", @@ -8589,6 +8910,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id4", @@ -8632,6 +8954,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id5", @@ -8694,6 +9017,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -8722,6 +9046,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -8750,6 +9075,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -8780,6 +9106,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id3", @@ -8823,6 +9150,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id4", @@ -8866,6 +9194,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id5", @@ -8916,6 +9245,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id6", @@ -8974,6 +9304,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -9002,6 +9333,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -9030,6 +9362,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -9060,6 +9393,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id3", @@ -9103,6 +9437,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id4", @@ -9146,6 +9481,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id5", @@ -9196,6 +9532,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id6", @@ -9246,9 +9583,7 @@ Object { "editingGroupId": null, "editingLinearElement": null, "name": "Untitled-201933152653", - "selectedElementIds": Object { - "id7": false, - }, + "selectedElementIds": Object {}, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", }, @@ -9258,6 +9593,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -9286,6 +9622,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -9314,6 +9651,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -9344,6 +9682,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id3", @@ -9387,6 +9726,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id4", @@ -9430,6 +9770,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id5", @@ -9480,6 +9821,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id6", @@ -9528,6 +9870,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id7", @@ -9611,14 +9954,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -9644,7 +9996,6 @@ Object { "previousSelectedElementIds": Object { "id0": true, "id2": true, - "id3": true, }, "resizingElement": null, "scrollX": 0, @@ -9652,8 +10003,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id1": true, - "id4": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -9681,6 +10032,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -9712,6 +10064,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -9743,6 +10096,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id2", @@ -9801,6 +10155,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -9843,6 +10198,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -9871,6 +10227,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -9913,6 +10270,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -9941,6 +10299,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -9969,6 +10328,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id2", @@ -10030,14 +10390,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -10062,7 +10431,6 @@ Object { "pendingImageElementId": null, "previousSelectedElementIds": Object { "id0": true, - "id2": true, }, "resizingElement": null, "scrollX": 0, @@ -10071,9 +10439,8 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -10101,6 +10468,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id0", @@ -10132,6 +10500,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id1", @@ -10190,6 +10559,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id0", @@ -10232,6 +10602,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id0", @@ -10260,6 +10631,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id1", @@ -10321,14 +10693,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -10353,7 +10734,6 @@ Object { "pendingImageElementId": null, "previousSelectedElementIds": Object { "id0": true, - "id2": true, }, "resizingElement": null, "scrollX": 0, @@ -10361,8 +10741,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id1": true, - "id3": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -10390,6 +10770,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id0", @@ -10421,6 +10802,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 500, "id": "id1", @@ -10469,7 +10851,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id2": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -10480,6 +10861,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id0", @@ -10508,6 +10890,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 500, "id": "id1", @@ -10569,14 +10952,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -10601,7 +10993,6 @@ Object { "pendingImageElementId": null, "previousSelectedElementIds": Object { "id0": true, - "id2": true, }, "resizingElement": null, "scrollX": 0, @@ -10609,9 +11000,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id0": true, - "id2": true, - "id3": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -10639,6 +11029,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id0", @@ -10670,6 +11061,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 500, "id": "id1", @@ -10718,7 +11110,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id2": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -10729,6 +11120,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id0", @@ -10757,6 +11149,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 500, "id": "id1", @@ -10789,8 +11182,6 @@ Object { "name": "Untitled-201933152653", "selectedElementIds": Object { "id0": true, - "id2": true, - "id3": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -10801,6 +11192,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 1000, "id": "id0", @@ -10829,6 +11221,7 @@ Object { "backgroundColor": "red", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 500, "id": "id1", @@ -10890,14 +11283,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -10928,6 +11330,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -10955,6 +11358,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11013,6 +11417,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11074,14 +11479,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -11112,6 +11526,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -11139,6 +11554,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11197,6 +11613,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11258,14 +11675,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -11296,6 +11722,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -11323,6 +11750,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11381,6 +11809,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11442,14 +11871,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -11480,6 +11918,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": LinearElementEditor { "elementId": "id0", @@ -11532,6 +11971,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11605,6 +12045,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11679,14 +12120,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -11717,6 +12167,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": LinearElementEditor { "elementId": "id0", @@ -11769,6 +12220,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11842,6 +12294,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -11916,14 +12369,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -11951,9 +12413,8 @@ Object { "scrollX": 0, "scrollY": 0, "scrolledOutside": false, - "selectedElementIds": Object { - "id0": false, - }, + "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -11981,6 +12442,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12049,9 +12511,7 @@ Object { "editingGroupId": null, "editingLinearElement": null, "name": "Untitled-201933152653", - "selectedElementIds": Object { - "id0": false, - }, + "selectedElementIds": Object {}, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", }, @@ -12061,6 +12521,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12144,14 +12605,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -12182,6 +12652,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": LinearElementEditor { "elementId": "id0", @@ -12234,6 +12705,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12307,6 +12779,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12381,14 +12854,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -12419,6 +12901,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -12446,6 +12929,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12504,6 +12988,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12565,14 +13050,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -12603,6 +13097,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": LinearElementEditor { "elementId": "id0", @@ -12655,6 +13150,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12728,6 +13224,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12802,14 +13299,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -12840,6 +13346,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -12867,6 +13374,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12925,6 +13433,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -12986,14 +13495,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -13021,9 +13539,8 @@ Object { "scrollX": 0, "scrollY": 0, "scrolledOutside": false, - "selectedElementIds": Object { - "id0": false, - }, + "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -13051,6 +13568,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -13119,9 +13637,7 @@ Object { "editingGroupId": null, "editingLinearElement": null, "name": "Untitled-201933152653", - "selectedElementIds": Object { - "id0": false, - }, + "selectedElementIds": Object {}, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", }, @@ -13131,6 +13647,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -13214,14 +13731,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -13252,6 +13778,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -13279,6 +13806,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -13337,6 +13865,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -13398,14 +13927,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -13432,7 +13970,6 @@ Object { "id0": true, "id1": true, "id2": true, - "id3": true, }, "resizingElement": null, "scrollX": 0, @@ -13442,9 +13979,8 @@ Object { "id0": true, "id1": true, "id2": true, - "id3": true, - "id5": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object { "id4": true, }, @@ -13474,6 +14010,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4_copy", ], @@ -13507,6 +14044,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4_copy", ], @@ -13540,6 +14078,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4_copy", ], @@ -13573,6 +14112,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -13606,6 +14146,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -13639,6 +14180,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -13699,6 +14241,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -13741,6 +14284,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -13769,6 +14313,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -13811,6 +14356,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -13839,6 +14385,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -13867,6 +14414,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -13901,7 +14449,6 @@ Object { "id0": true, "id1": true, "id2": true, - "id3": true, }, "selectedGroupIds": Object { "id4": true, @@ -13914,6 +14461,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -13944,6 +14492,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -13974,6 +14523,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -14010,8 +14560,6 @@ Object { "id0": true, "id1": true, "id2": true, - "id3": true, - "id5": true, }, "selectedGroupIds": Object { "id4": true, @@ -14024,6 +14572,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4_copy", ], @@ -14054,6 +14603,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4_copy", ], @@ -14084,6 +14634,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4_copy", ], @@ -14114,6 +14665,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -14144,6 +14696,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -14174,6 +14727,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -14237,14 +14791,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -14269,7 +14832,6 @@ Object { "pendingImageElementId": null, "previousSelectedElementIds": Object { "id0": true, - "id3": true, }, "resizingElement": null, "scrollX": 0, @@ -14277,8 +14839,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id1": true, - "id4": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -14306,6 +14868,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -14337,6 +14900,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -14395,6 +14959,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -14437,6 +15002,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -14465,6 +15031,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -14526,14 +15093,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -14561,9 +15137,8 @@ Object { "scrollX": -2.916666666666668, "scrollY": 0, "scrolledOutside": false, - "selectedElementIds": Object { - "id0": true, - }, + "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -14637,14 +15212,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -14673,6 +15257,7 @@ Object { "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -14746,14 +15331,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -14783,10 +15377,8 @@ Object { "scrollX": 0, "scrollY": 0, "scrolledOutside": false, - "selectedElementIds": Object { - "id0": false, - "id1": true, - }, + "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -14814,6 +15406,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -14872,6 +15465,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -14933,14 +15527,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -14966,8 +15569,6 @@ Object { "previousSelectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, }, "resizingElement": null, "scrollX": 0, @@ -14976,10 +15577,8 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, - "id4": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -15007,6 +15606,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -15038,6 +15638,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -15096,6 +15697,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -15138,6 +15740,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -15166,6 +15769,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -15199,9 +15803,6 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, - "id4": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -15212,6 +15813,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -15240,6 +15842,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -15301,14 +15904,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -15335,7 +15947,6 @@ Object { "id0": true, "id1": true, "id2": true, - "id3": true, }, "resizingElement": null, "scrollX": 0, @@ -15345,8 +15956,8 @@ Object { "id0": true, "id1": true, "id2": true, - "id5": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -15374,6 +15985,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -15405,6 +16017,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -15436,6 +16049,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -15494,6 +16108,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -15536,6 +16151,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -15564,6 +16180,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -15606,6 +16223,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -15634,6 +16252,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -15662,6 +16281,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -15696,7 +16316,6 @@ Object { "id0": true, "id1": true, "id2": true, - "id3": true, }, "selectedGroupIds": Object { "id4": true, @@ -15709,6 +16328,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -15739,6 +16359,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -15769,6 +16390,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -15805,7 +16427,6 @@ Object { "id0": true, "id1": true, "id2": true, - "id5": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -15816,6 +16437,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -15844,6 +16466,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -15872,6 +16495,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -15933,14 +16557,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -15970,8 +16603,8 @@ Object { "scrolledOutside": false, "selectedElementIds": Object { "id0": true, - "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -15999,6 +16632,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -16057,6 +16691,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -16099,6 +16734,7 @@ Object { "backgroundColor": "#ffc9c9", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -16160,14 +16796,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -16203,10 +16848,10 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id11": true, "id5": true, "id6": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object { "id10": true, }, @@ -16236,6 +16881,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -16270,6 +16916,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -16304,6 +16951,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id9", "id10", @@ -16338,6 +16986,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id9", "id10", @@ -16399,6 +17048,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -16441,6 +17091,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -16469,6 +17120,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -16502,8 +17154,6 @@ Object { "selectedElementIds": Object { "id0": true, "id1": true, - "id2": true, - "id3": true, }, "selectedGroupIds": Object { "id4": true, @@ -16516,6 +17166,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -16546,6 +17197,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -16590,6 +17242,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -16620,6 +17273,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -16650,6 +17304,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id5", @@ -16692,6 +17347,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -16722,6 +17378,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -16752,6 +17409,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id5", @@ -16780,6 +17438,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id6", @@ -16813,8 +17472,6 @@ Object { "selectedElementIds": Object { "id5": true, "id6": true, - "id7": true, - "id8": true, }, "selectedGroupIds": Object { "id9": true, @@ -16827,6 +17484,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -16857,6 +17515,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", ], @@ -16887,6 +17546,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id9", ], @@ -16917,6 +17577,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id9", ], @@ -16966,6 +17627,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -16997,6 +17659,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id4", "id10", @@ -17028,6 +17691,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id9", "id10", @@ -17059,6 +17723,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id9", "id10", @@ -17123,14 +17788,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -17159,6 +17833,7 @@ Object { "scrollY": 60, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -17232,14 +17907,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": "id3", "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -17272,6 +17956,7 @@ Object { "selectedElementIds": Object { "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -17299,6 +17984,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -17332,6 +18018,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", "id3", @@ -17366,6 +18053,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", "id3", @@ -17427,6 +18115,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -17469,6 +18158,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -17497,6 +18187,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id1", @@ -17539,6 +18230,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -17567,6 +18259,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id1", @@ -17595,6 +18288,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id2", @@ -17641,6 +18335,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -17671,6 +18366,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -17701,6 +18397,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -17736,7 +18433,6 @@ Object { "selectedElementIds": Object { "id0": true, "id2": true, - "id4": true, }, "selectedGroupIds": Object {}, "viewBackgroundColor": "#ffffff", @@ -17747,6 +18443,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -17777,6 +18474,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -17807,6 +18505,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -17842,7 +18541,6 @@ Object { "selectedElementIds": Object { "id0": true, "id2": true, - "id4": true, }, "selectedGroupIds": Object { "id5": true, @@ -17855,6 +18553,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -17885,6 +18584,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", "id3", @@ -17916,6 +18616,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", "id3", @@ -17953,7 +18654,6 @@ Object { "id0": true, "id1": true, "id2": true, - "id7": true, }, "selectedGroupIds": Object { "id3": true, @@ -17966,6 +18666,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id3", ], @@ -17996,6 +18697,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", "id3", @@ -18027,6 +18729,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [ "id5", "id3", @@ -18094,6 +18797,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id4", @@ -18118,14 +18822,23 @@ Object { "y": 0, }, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -18151,7 +18864,6 @@ Object { "previousSelectedElementIds": Object { "id1": true, "id2": true, - "id3": true, }, "resizingElement": null, "scrollX": 0, @@ -18160,6 +18872,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": Object { @@ -18167,6 +18880,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id4", @@ -18214,6 +18928,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -18245,6 +18960,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -18276,6 +18992,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id2", @@ -18334,6 +19051,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -18376,6 +19094,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -18404,6 +19123,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -18446,6 +19166,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -18474,6 +19195,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id1", @@ -18502,6 +19224,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id2", @@ -18566,6 +19289,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id2", @@ -18590,14 +19314,23 @@ Object { "y": 0, }, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -18630,6 +19363,7 @@ Object { "selectedElementIds": Object { "id0": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": Object { @@ -18637,6 +19371,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id2", @@ -18684,6 +19419,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -18715,6 +19451,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -18773,6 +19510,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -18815,6 +19553,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -18843,6 +19582,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id1", @@ -18904,14 +19644,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -18939,9 +19688,8 @@ Object { "scrollX": 10, "scrollY": -10, "scrolledOutside": false, - "selectedElementIds": Object { - "id0": true, - }, + "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -19015,14 +19763,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -19053,6 +19810,7 @@ Object { "selectedElementIds": Object { "id1": true, }, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -19080,6 +19838,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -19111,6 +19870,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -19144,6 +19904,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -19206,6 +19967,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -19234,6 +19996,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -19264,6 +20027,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id2", @@ -19326,6 +20090,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -19354,6 +20119,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -19384,6 +20150,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id2", @@ -19455,6 +20222,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -19497,6 +20265,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 10, "id": "id0", @@ -19525,6 +20294,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 20, "id": "id1", @@ -19586,14 +20356,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -19622,6 +20401,7 @@ Object { "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, @@ -19695,14 +20475,23 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "height": 768, "isBindingEnabled": true, @@ -19731,6 +20520,7 @@ Object { "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, diff --git a/src/tests/__snapshots__/selection.test.tsx.snap b/src/tests/__snapshots__/selection.test.tsx.snap index 61c4dc97a8..fff176a637 100644 --- a/src/tests/__snapshots__/selection.test.tsx.snap +++ b/src/tests/__snapshots__/selection.test.tsx.snap @@ -8,6 +8,7 @@ Object { "endArrowhead": "arrow", "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -54,6 +55,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -98,6 +100,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -129,6 +132,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", @@ -160,6 +164,7 @@ Object { "backgroundColor": "transparent", "boundElements": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 50, "id": "id0", diff --git a/src/tests/data/__snapshots__/restore.test.ts.snap b/src/tests/data/__snapshots__/restore.test.ts.snap index cfb57ecb24..bb2303bc34 100644 --- a/src/tests/data/__snapshots__/restore.test.ts.snap +++ b/src/tests/data/__snapshots__/restore.test.ts.snap @@ -8,6 +8,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id-arrow01", @@ -52,6 +53,7 @@ Object { "backgroundColor": "blue", "boundElements": Array [], "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [ "1", "2", @@ -87,6 +89,7 @@ Object { "backgroundColor": "blue", "boundElements": Array [], "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [ "1", "2", @@ -122,6 +125,7 @@ Object { "backgroundColor": "blue", "boundElements": Array [], "fillStyle": "cross-hatch", + "frameId": null, "groupIds": Array [ "1", "2", @@ -157,6 +161,7 @@ Object { "backgroundColor": "transparent", "boundElements": Array [], "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 0, "id": "id-freedraw01", @@ -194,6 +199,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id-line01", @@ -240,6 +246,7 @@ Object { "endArrowhead": null, "endBinding": null, "fillStyle": "hachure", + "frameId": null, "groupIds": Array [], "height": 100, "id": "id-draw01", @@ -288,6 +295,7 @@ Object { "fillStyle": "hachure", "fontFamily": 1, "fontSize": 14, + "frameId": null, "groupIds": Array [], "height": 100, "id": "id-text01", @@ -328,6 +336,7 @@ Object { "fillStyle": "hachure", "fontFamily": 1, "fontSize": 10, + "frameId": null, "groupIds": Array [], "height": 100, "id": "id-text01", diff --git a/src/tests/fitToContent.test.tsx b/src/tests/fitToContent.test.tsx index 6fce7cdcd5..fd7a1170bd 100644 --- a/src/tests/fitToContent.test.tsx +++ b/src/tests/fitToContent.test.tsx @@ -160,19 +160,6 @@ describe("fitToContent animated", () => { expect(window.requestAnimationFrame).toHaveBeenCalled(); - // Since this is an animation, we expect values to change through time. - // We'll verify that the zoom/scroll values change in each animation frame - - // zoom is not animated, it should be set to its final value, which in our - // case zooms out to 50% so that th element is fully visible (it's 2x large - // as the canvas) - expect(h.state.zoom.value).toBeLessThanOrEqual(0.5); - - // FIXME I think this should be [-100, -100] so we may have a bug in our zoom - // hadnling, alas - expect(h.state.scrollX).toBe(25); - expect(h.state.scrollY).toBe(25); - await waitForNextAnimationFrame(); const prevScrollX = h.state.scrollX; diff --git a/src/tests/fixtures/elementFixture.ts b/src/tests/fixtures/elementFixture.ts index e9db648914..fb4d559fec 100644 --- a/src/tests/fixtures/elementFixture.ts +++ b/src/tests/fixtures/elementFixture.ts @@ -15,6 +15,7 @@ const elementBase: Omit = { roughness: 1, opacity: 100, groupIds: [], + frameId: null, roundness: null, seed: 1041657908, version: 120, diff --git a/src/tests/flip.test.tsx b/src/tests/flip.test.tsx index 091d1c73b4..c90c07834a 100644 --- a/src/tests/flip.test.tsx +++ b/src/tests/flip.test.tsx @@ -430,7 +430,10 @@ describe("arrow", () => { const expectedAngle = (7 * Math.PI) / 4; const line = createLinearElementWithCurveInsideMinMaxPoints("arrow"); h.app.scene.replaceAllElements([line]); - h.app.state.selectedElementIds[line.id] = true; + h.state.selectedElementIds = { + ...h.state.selectedElementIds, + [line.id]: true, + }; mutateElement(line, { angle: originalAngle, }); @@ -446,7 +449,10 @@ describe("arrow", () => { const expectedAngle = (7 * Math.PI) / 4; const line = createLinearElementWithCurveInsideMinMaxPoints("arrow"); h.app.scene.replaceAllElements([line]); - h.app.state.selectedElementIds[line.id] = true; + h.state.selectedElementIds = { + ...h.state.selectedElementIds, + [line.id]: true, + }; mutateElement(line, { angle: originalAngle, }); @@ -616,7 +622,10 @@ describe("line", () => { const expectedAngle = (7 * Math.PI) / 4; const line = createLinearElementWithCurveInsideMinMaxPoints("line"); h.app.scene.replaceAllElements([line]); - h.app.state.selectedElementIds[line.id] = true; + h.state.selectedElementIds = { + ...h.state.selectedElementIds, + [line.id]: true, + }; mutateElement(line, { angle: originalAngle, }); @@ -632,7 +641,10 @@ describe("line", () => { const expectedAngle = (7 * Math.PI) / 4; const line = createLinearElementWithCurveInsideMinMaxPoints("line"); h.app.scene.replaceAllElements([line]); - h.app.state.selectedElementIds[line.id] = true; + h.state.selectedElementIds = { + ...h.state.selectedElementIds, + [line.id]: true, + }; mutateElement(line, { angle: originalAngle, }); @@ -659,14 +671,20 @@ describe("freedraw", () => { it("flips an unrotated drawing horizontally correctly", async () => { const draw = createAndReturnOneDraw(); // select draw, since not done automatically - h.state.selectedElementIds[draw.id] = true; + h.state.selectedElementIds = { + ...h.state.selectedElementIds, + [draw.id]: true, + }; await checkHorizontalFlip(); }); it("flips an unrotated drawing vertically correctly", async () => { const draw = createAndReturnOneDraw(); // select draw, since not done automatically - h.state.selectedElementIds[draw.id] = true; + h.state.selectedElementIds = { + ...h.state.selectedElementIds, + [draw.id]: true, + }; await checkVerticalFlip(); }); @@ -676,7 +694,10 @@ describe("freedraw", () => { const draw = createAndReturnOneDraw(originalAngle); // select draw, since not done automatically - h.state.selectedElementIds[draw.id] = true; + h.state.selectedElementIds = { + ...h.state.selectedElementIds, + [draw.id]: true, + }; await checkRotatedHorizontalFlip(expectedAngle); }); @@ -687,7 +708,10 @@ describe("freedraw", () => { const draw = createAndReturnOneDraw(originalAngle); // select draw, since not done automatically - h.state.selectedElementIds[draw.id] = true; + h.state.selectedElementIds = { + ...h.state.selectedElementIds, + [draw.id]: true, + }; await checkRotatedVerticalFlip(expectedAngle); }); diff --git a/src/tests/helpers/api.ts b/src/tests/helpers/api.ts index 705180d6a0..7bba8bdd3c 100644 --- a/src/tests/helpers/api.ts +++ b/src/tests/helpers/api.ts @@ -37,8 +37,12 @@ export class API { static getSelectedElements = ( includeBoundTextElement: boolean = false, + includeElementsInFrames: boolean = false, ): ExcalidrawElement[] => { - return getSelectedElements(h.elements, h.state, includeBoundTextElement); + return getSelectedElements(h.elements, h.state, { + includeBoundTextElement, + includeElementsInFrames, + }); }; static getSelectedElement = (): ExcalidrawElement => { @@ -141,6 +145,7 @@ export class API { | "versionNonce" | "isDeleted" | "groupIds" + | "frameId" | "link" | "updated" > = { diff --git a/src/tests/packages/__snapshots__/utils.test.ts.snap b/src/tests/packages/__snapshots__/utils.test.ts.snap index 98303fb75d..34085498f5 100644 --- a/src/tests/packages/__snapshots__/utils.test.ts.snap +++ b/src/tests/packages/__snapshots__/utils.test.ts.snap @@ -28,8 +28,10 @@ Object { "defaultSidebarDockedPreference": false, "draggingElement": null, "editingElement": null, + "editingFrame": null, "editingGroupId": null, "editingLinearElement": null, + "elementsToHighlight": null, "errorMessage": null, "exportBackground": true, "exportEmbedScene": false, @@ -37,6 +39,13 @@ Object { "exportScale": 1, "exportWithDarkMode": false, "fileHandle": null, + "frameRendering": Object { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, "gridSize": null, "isBindingEnabled": true, "isLoading": false, @@ -62,6 +71,7 @@ Object { "scrollY": 0, "scrolledOutside": false, "selectedElementIds": Object {}, + "selectedElementsAreBeingDragged": false, "selectedGroupIds": Object {}, "selectedLinearElement": null, "selectionElement": null, diff --git a/src/tests/queries/toolQueries.ts b/src/tests/queries/toolQueries.ts index bc1e4928d2..c20e0d309f 100644 --- a/src/tests/queries/toolQueries.ts +++ b/src/tests/queries/toolQueries.ts @@ -11,6 +11,7 @@ const toolMap = { freedraw: "freedraw", text: "text", eraser: "eraser", + frame: "frame", }; export type ToolName = keyof typeof toolMap; diff --git a/src/tests/scene/__snapshots__/export.test.ts.snap b/src/tests/scene/__snapshots__/export.test.ts.snap index 8015ebc4ca..9f706ca012 100644 --- a/src/tests/scene/__snapshots__/export.test.ts.snap +++ b/src/tests/scene/__snapshots__/export.test.ts.snap @@ -32,6 +32,7 @@ exports[`exportToSvg with default arguments 1`] = ` + @@ -88,6 +89,7 @@ exports[`exportToSvg with elements that have a link 1`] = ` src: url(\\"https://excalidraw.com/Cascadia.woff2\\"); } + " `; @@ -95,7 +97,7 @@ exports[`exportToSvg with elements that have a link 1`] = ` exports[`exportToSvg with exportEmbedScene 1`] = ` " - eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1SsW7CMFx1MDAxMN35iihdkUjSQChcdTAwMWItVVWpalx1MDAwN1x1MDAwNqRWXHUwMDFkTHxJrFx1MDAxONvEXHUwMDBlXHUwMDEwIf69tlx1MDAwM3GJXHUwMDE4O9aDpXt+7+58945cdTAwMDPP81UjwJ95Plx1MDAxY1JEXHSu0N5cdTAwMWZcdTAwMWF8XHUwMDA3lSSc6afIxpLXVWqZhVJiNlx1MDAxYVGuXHUwMDA1XHUwMDA1l6rlXHUwMDAzhVxyMCU140vHnne0t34h2Kh2q2r7Mc9KwnC0TTfJ22L+8mmllnTQnDiMu7gxhe+TLt5cdTAwMTOsXG6NhUHQYVx1MDAwNZC8UD1cdTAwMTCxnJo2XHUwMDFkXCJVxUt44pRXppG7wFx1MDAxZVd6jdIyr3jNsOOEY4TWmeNkhNKlamg7XHUwMDAwlFx1MDAxNnVcdTAwMDV+r8Lq0mJcdTAwMGbvdJLrXHUwMDAxO5UumVx1MDAxN1xmpLzScIFSoprer0x/4lx1MDAxNdvpfv/OwPA5XHUwMDAzqyl1hVx1MDAwMbDNXHUwMDEwh5Nx8lx1MDAxMEy7XHUwMDE3t9YwXG766DtndsVhOJ1cdTAwMDZBXHUwMDFjJZOOQeRCb1jZtFx1MDAxOaJcdTAwMTLc+ExcdTAwMTPPbvtXjdRcdTAwMDKjVuR+SFx0K/s8babyRu6LOTFBXHUwMDFizrBv8dPw31///vpTf1x1MDAwMaVESDj7S992XHUwMDA2Plx1MDAxMmKpdH5Nad3m71xi7Fx1MDAxZm/sM7PH6K07zT7BNHs8XHJOP7VXYMUifQ== + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1SPW/CMFx1MDAxMN35XHUwMDE1UbpcIpGk4aNstFRcdTAwMTVS1Vx1MDAwZVxmSK06mPiSWHHsYDtAhPjvtVxyxCVi7oRcdTAwMDdLfvfu7vnuXHUwMDFkep7nq6ZcdTAwMDJ/6vmwT1x1MDAxMCVYoJ3fN/hcdTAwMTaEJJzpUGTfktdcIrHMXFypajpcdTAwMThQrlx1MDAxM3Iu1YlcdTAwMGZcdTAwMTRKYEpqxrd+e97B3jpCsMnarsTmc5ZcdTAwMTaE4WiTlOP3+ezty6Za0l5z4jBu341p/Dhu3zuCVa6xMFxiWixcdTAwMDeS5apcdTAwMDNcIpZRI9MhUlx0XsBcdTAwMGKnXFxcdTAwMTghXHUwMDBmgT2u9Vx1MDAxYSVFJnjNsOOEQ4TWqeOkhNKlauhpXHUwMDAwKMlrXHUwMDAxfqfD6lwisYO3eZLrXHUwMDAxuyzdMstcdTAwMTlIeZXDK5RcdTAwMTDVdH5l9FVcdTAwMGJsp/vjVFx0VMLCjJfVlP4tzPC58FVAXHUwMDAyYFs4XHUwMDBlR8PxUzBpI27bYVx1MDAxNHTRXHUwMDBmzuzmw3AyXHSCOFx1MDAxYY9aXHUwMDA2kXO9eGXLpohKcFM1XCJenSmuhNRcdTAwMTVGpyT3cUpY0eVpj1x1MDAxNTdqXzyLXHQqOcO+xY/9u+3utvtcdTAwMGbbXHUwMDAxpaSScLadvu1ofFRVS6Xra8rJhP6WwO75xppTe0y+Na1ZM1x1MDAxOLGHY+/4XHUwMDBiw1x1MDAwNmzTIn0= + " `; diff --git a/src/tests/zindex.test.tsx b/src/tests/zindex.test.tsx index a59af77cfe..de3292af61 100644 --- a/src/tests/zindex.test.tsx +++ b/src/tests/zindex.test.tsx @@ -89,6 +89,7 @@ const populateElements = ( ...selectGroupsForSelectedElements( { ...h.state, ...appState, selectedElementIds }, h.elements, + h.state, ), ...appState, selectedElementIds, diff --git a/src/types.ts b/src/types.ts index 8354ced992..40f54831dd 100644 --- a/src/types.ts +++ b/src/types.ts @@ -15,6 +15,7 @@ import { ExcalidrawImageElement, Theme, StrokeRoundness, + ExcalidrawFrameElement, } from "./element/types"; import { SHAPES } from "./shapes"; import { Point as RoughPoint } from "roughjs/bin/geometry"; @@ -85,7 +86,7 @@ export type BinaryFiles = Record; export type LastActiveTool = | { - type: typeof SHAPES[number]["value"] | "eraser" | "hand"; + type: typeof SHAPES[number]["value"] | "eraser" | "hand" | "frame"; customType: null; } | { @@ -113,6 +114,15 @@ export type AppState = { isBindingEnabled: boolean; startBoundElement: NonDeleted | null; suggestedBindings: SuggestedBinding[]; + frameToHighlight: NonDeleted | null; + frameRendering: { + enabled: boolean; + name: boolean; + outline: boolean; + clip: boolean; + }; + editingFrame: string | null; + elementsToHighlight: NonDeleted[] | null; // element being edited, but not necessarily added to elements array yet // (e.g. text element when typing into the input) editingElement: NonDeletedExcalidrawElement | null; @@ -126,7 +136,7 @@ export type AppState = { locked: boolean; } & ( | { - type: typeof SHAPES[number]["value"] | "eraser" | "hand"; + type: typeof SHAPES[number]["value"] | "eraser" | "hand" | "frame"; customType: null; } | { @@ -176,8 +186,9 @@ export type AppState = { defaultSidebarDockedPreference: boolean; lastPointerDownWith: PointerType; - selectedElementIds: { [id: string]: boolean }; - previousSelectedElementIds: { [id: string]: boolean }; + selectedElementIds: Readonly<{ [id: string]: true }>; + previousSelectedElementIds: { [id: string]: true }; + selectedElementsAreBeingDragged: boolean; shouldCacheIgnoreZoom: boolean; toast: { message: string; closable?: boolean; duration?: number } | null; zenModeEnabled: boolean; @@ -532,6 +543,12 @@ export type ExcalidrawImperativeAPI = { setCursor: InstanceType["setCursor"]; resetCursor: InstanceType["resetCursor"]; toggleSidebar: InstanceType["toggleSidebar"]; + /** + * Disables rendering of frames (including element clipping), but currently + * the frames are still interactive in edit mode. As such, this API should be + * used in conjunction with view mode (props.viewModeEnabled). + */ + updateFrameRendering: InstanceType["updateFrameRendering"]; }; export type Device = Readonly<{ @@ -541,3 +558,22 @@ export type Device = Readonly<{ canDeviceFitSidebar: boolean; isLandscape: boolean; }>; + +type FrameNameBounds = { + x: number; + y: number; + width: number; + height: number; + angle: number; +}; + +export type FrameNameBoundsCache = { + get: (frameElement: ExcalidrawFrameElement) => FrameNameBounds | null; + _cache: Map< + string, + FrameNameBounds & { + zoom: AppState["zoom"]["value"]; + versionNonce: ExcalidrawFrameElement["versionNonce"]; + } + >; +}; diff --git a/src/utils.ts b/src/utils.ts index b5a65cae21..c644efd81e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -10,7 +10,11 @@ import { THEME, WINDOWS_EMOJI_FALLBACK_FONT, } from "./constants"; -import { FontFamilyValues, FontString } from "./element/types"; +import { + FontFamilyValues, + FontString, + NonDeletedExcalidrawElement, +} from "./element/types"; import { AppState, DataURL, LastActiveTool, Zoom } from "./types"; import { unstable_batchedUpdates } from "react-dom"; import { SHAPES } from "./shapes"; @@ -60,6 +64,13 @@ export const isInputLike = ( target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement; +export const isInteractive = (target: Element | EventTarget | null) => { + return ( + isInputLike(target) || + (target instanceof Element && !!target.closest("label, button")) + ); +}; + export const isWritableElement = ( target: Element | EventTarget | null, ): target is @@ -186,68 +197,134 @@ export const throttleRAF = ( * @param {number} k - The value to be tweened. * @returns {number} The tweened value. */ -function easeOut(k: number): number { +export const easeOut = (k: number) => { return 1 - Math.pow(1 - k, 4); -} +}; + +const easeOutInterpolate = (from: number, to: number, progress: number) => { + return (to - from) * easeOut(progress) + from; +}; /** - * Compute new values based on the same ease function and trigger the - * callback through a requestAnimationFrame call + * Animates values from `fromValues` to `toValues` using the requestAnimationFrame API. + * Executes the `onStep` callback on each step with the interpolated values. + * Returns a function that can be called to cancel the animation. * - * use `opts` to define a duration and/or an easeFn + * @example + * // Example usage: + * const fromValues = { x: 0, y: 0 }; + * const toValues = { x: 100, y: 200 }; + * const onStep = ({x, y}) => { + * setState(x, y) + * }; + * const onCancel = () => { + * console.log("Animation canceled"); + * }; * - * for example: - * ```ts - * easeToValuesRAF([10, 20, 10], [0, 0, 0], (a, b, c) => setState(a,b, c)) - * ``` + * const cancelAnimation = easeToValuesRAF({ + * fromValues, + * toValues, + * onStep, + * onCancel, + * }); * - * @param fromValues The initial values, must be numeric - * @param toValues The destination values, must also be numeric - * @param callback The callback receiving the values - * @param opts default to 250ms duration and the easeOut function + * // To cancel the animation: + * cancelAnimation(); */ -export const easeToValuesRAF = ( - fromValues: number[], - toValues: number[], - callback: (...values: number[]) => void, - opts?: { duration?: number; easeFn?: (value: number) => number }, -) => { +export const easeToValuesRAF = < + T extends Record, + K extends keyof T, +>({ + fromValues, + toValues, + onStep, + duration = 250, + interpolateValue, + onStart, + onEnd, + onCancel, +}: { + fromValues: T; + toValues: T; + /** + * Interpolate a single value. + * Return undefined to be handled by the default interpolator. + */ + interpolateValue?: ( + fromValue: number, + toValue: number, + /** no easing applied */ + progress: number, + key: K, + ) => number | undefined; + onStep: (values: T) => void; + duration?: number; + onStart?: () => void; + onEnd?: () => void; + onCancel?: () => void; +}) => { let canceled = false; let frameId = 0; let startTime: number; - const duration = opts?.duration || 250; // default animation to 0.25 seconds - const easeFn = opts?.easeFn || easeOut; // default the easeFn to easeOut - function step(timestamp: number) { if (canceled) { return; } if (startTime === undefined) { startTime = timestamp; + onStart?.(); } - const elapsed = timestamp - startTime; + const elapsed = Math.min(timestamp - startTime, duration); + const factor = easeOut(elapsed / duration); + + const newValues = {} as T; + + Object.keys(fromValues).forEach((key) => { + const _key = key as keyof T; + const result = ((toValues[_key] - fromValues[_key]) * factor + + fromValues[_key]) as T[keyof T]; + newValues[_key] = result; + }); + + onStep(newValues); if (elapsed < duration) { - // console.log(elapsed, duration, elapsed / duration); - const factor = easeFn(elapsed / duration); - const newValues = fromValues.map( - (fromValue, index) => - (toValues[index] - fromValue) * factor + fromValue, - ); + const progress = elapsed / duration; + + const newValues = {} as T; + + Object.keys(fromValues).forEach((key) => { + const _key = key as K; + const startValue = fromValues[_key]; + const endValue = toValues[_key]; + + let result; + + result = interpolateValue + ? interpolateValue(startValue, endValue, progress, _key) + : easeOutInterpolate(startValue, endValue, progress); + + if (result == null) { + result = easeOutInterpolate(startValue, endValue, progress); + } + + newValues[_key] = result as T[K]; + }); + onStep(newValues); - callback(...newValues); frameId = window.requestAnimationFrame(step); } else { - // ensure final values are reached at the end of the transition - callback(...toValues); + onStep(toValues); + onEnd?.(); } } frameId = window.requestAnimationFrame(step); return () => { + onCancel?.(); canceled = true; window.cancelAnimationFrame(frameId); }; @@ -292,7 +369,7 @@ export const distance = (x: number, y: number) => Math.abs(x - y); export const updateActiveTool = ( appState: Pick, data: ( - | { type: typeof SHAPES[number]["value"] | "eraser" | "hand" } + | { type: typeof SHAPES[number]["value"] | "eraser" | "hand" | "frame" } | { type: "custom"; customType: string } ) & { lastActiveToolBeforeEraser?: LastActiveTool }, ): AppState["activeTool"] => { @@ -741,6 +818,8 @@ export const getFrame = () => { } }; +export const isRunningInIframe = () => getFrame() === "iframe"; + export const isPromiseLike = ( value: any, ): value is Promise> => { @@ -815,3 +894,16 @@ export const composeEventHandlers = ( } }; }; + +export const isOnlyExportingSingleFrame = ( + elements: readonly NonDeletedExcalidrawElement[], +) => { + const frames = elements.filter((element) => element.type === "frame"); + + return ( + frames.length === 1 && + elements.every( + (element) => element.type === "frame" || element.frameId === frames[0].id, + ) + ); +}; diff --git a/src/zindex.ts b/src/zindex.ts index 4b96c8eb4a..a1f051c54f 100644 --- a/src/zindex.ts +++ b/src/zindex.ts @@ -1,36 +1,52 @@ import { bumpVersion } from "./element/mutateElement"; +import { isFrameElement } from "./element/typeChecks"; import { ExcalidrawElement } from "./element/types"; +import { groupByFrames } from "./frame"; import { getElementsInGroup } from "./groups"; import { getSelectedElements } from "./scene"; import Scene from "./scene/Scene"; import { AppState } from "./types"; import { arrayToMap, findIndex, findLastIndex } from "./utils"; +// elements that do not belong to a frame are considered a root element +const isRootElement = (element: ExcalidrawElement) => { + return !element.frameId; +}; + /** * Returns indices of elements to move based on selected elements. * Includes contiguous deleted elements that are between two selected elements, * e.g.: [0 (selected), 1 (deleted), 2 (deleted), 3 (selected)] + * + * Specified elements (elementsToBeMoved) take precedence over + * appState.selectedElementsIds */ const getIndicesToMove = ( elements: readonly ExcalidrawElement[], appState: AppState, + elementsToBeMoved?: readonly ExcalidrawElement[], ) => { let selectedIndices: number[] = []; let deletedIndices: number[] = []; let includeDeletedIndex = null; let index = -1; const selectedElementIds = arrayToMap( - getSelectedElements(elements, appState, true), + elementsToBeMoved + ? elementsToBeMoved + : getSelectedElements(elements, appState, { + includeBoundTextElement: true, + }), ); while (++index < elements.length) { - if (selectedElementIds.get(elements[index].id)) { + const element = elements[index]; + if (selectedElementIds.get(element.id)) { if (deletedIndices.length) { selectedIndices = selectedIndices.concat(deletedIndices); deletedIndices = []; } selectedIndices.push(index); includeDeletedIndex = index + 1; - } else if (elements[index].isDeleted && includeDeletedIndex === index) { + } else if (element.isDeleted && includeDeletedIndex === index) { includeDeletedIndex = index + 1; deletedIndices.push(index); } else { @@ -168,8 +184,8 @@ const getTargetIndex = ( return candidateIndex; }; -const getTargetElementsMap = ( - elements: readonly ExcalidrawElement[], +const getTargetElementsMap = ( + elements: readonly T[], indices: number[], ) => { return indices.reduce((acc, index) => { @@ -179,12 +195,13 @@ const getTargetElementsMap = ( }, {} as Record); }; -const shiftElements = ( - appState: AppState, +const _shiftElements = ( elements: readonly ExcalidrawElement[], + appState: AppState, direction: "left" | "right", + elementsToBeMoved?: readonly ExcalidrawElement[], ) => { - const indicesToMove = getIndicesToMove(elements, appState); + const indicesToMove = getIndicesToMove(elements, appState, elementsToBeMoved); const targetElementsMap = getTargetElementsMap(elements, indicesToMove); let groupedIndices = toContiguousGroups(indicesToMove); @@ -246,7 +263,22 @@ const shiftElements = ( }); }; -const shiftElementsToEnd = ( +const shiftElements = ( + appState: AppState, + elements: readonly ExcalidrawElement[], + direction: "left" | "right", + elementsToBeMoved?: readonly ExcalidrawElement[], +) => { + return shift( + elements, + appState, + direction, + _shiftElements, + elementsToBeMoved, + ); +}; + +const _shiftElementsToEnd = ( elements: readonly ExcalidrawElement[], appState: AppState, direction: "left" | "right", @@ -317,33 +349,121 @@ const shiftElementsToEnd = ( ]; }; +const shiftElementsToEnd = ( + elements: readonly ExcalidrawElement[], + appState: AppState, + direction: "left" | "right", + elementsToBeMoved?: readonly ExcalidrawElement[], +) => { + return shift( + elements, + appState, + direction, + _shiftElementsToEnd, + elementsToBeMoved, + ); +}; + +function shift( + elements: readonly ExcalidrawElement[], + appState: AppState, + direction: "left" | "right", + shiftFunction: ( + elements: ExcalidrawElement[], + appState: AppState, + direction: "left" | "right", + elementsToBeMoved?: readonly ExcalidrawElement[], + ) => ExcalidrawElement[] | readonly ExcalidrawElement[], + elementsToBeMoved?: readonly ExcalidrawElement[], +) { + const elementsMap = arrayToMap(elements); + const frameElementsMap = groupByFrames(elements); + + // in case root is non-existent, we promote children elements to root + let rootElements = elements.filter( + (element) => + isRootElement(element) || + (element.frameId && !elementsMap.has(element.frameId)), + ); + // and remove non-existet root + for (const frameId of frameElementsMap.keys()) { + if (!elementsMap.has(frameId)) { + frameElementsMap.delete(frameId); + } + } + + // shift the root elements first + rootElements = shiftFunction( + rootElements, + appState, + direction, + elementsToBeMoved, + ) as ExcalidrawElement[]; + + // shift the elements in frames if needed + frameElementsMap.forEach((frameElements, frameId) => { + if (!appState.selectedElementIds[frameId]) { + frameElementsMap.set( + frameId, + shiftFunction( + frameElements, + appState, + direction, + elementsToBeMoved, + ) as ExcalidrawElement[], + ); + } + }); + + // return the final elements + let finalElements: ExcalidrawElement[] = []; + + rootElements.forEach((element) => { + if (isFrameElement(element)) { + finalElements = [ + ...finalElements, + ...(frameElementsMap.get(element.id) ?? []), + element, + ]; + } else { + finalElements = [...finalElements, element]; + } + }); + + return finalElements; +} + // public API // ----------------------------------------------------------------------------- export const moveOneLeft = ( elements: readonly ExcalidrawElement[], appState: AppState, + elementsToBeMoved?: readonly ExcalidrawElement[], ) => { - return shiftElements(appState, elements, "left"); + return shiftElements(appState, elements, "left", elementsToBeMoved); }; export const moveOneRight = ( elements: readonly ExcalidrawElement[], appState: AppState, + elementsToBeMoved?: readonly ExcalidrawElement[], ) => { - return shiftElements(appState, elements, "right"); + return shiftElements(appState, elements, "right", elementsToBeMoved); }; export const moveAllLeft = ( elements: readonly ExcalidrawElement[], appState: AppState, + elementsToBeMoved?: readonly ExcalidrawElement[], ) => { - return shiftElementsToEnd(elements, appState, "left"); + return shiftElementsToEnd(elements, appState, "left", elementsToBeMoved); }; export const moveAllRight = ( elements: readonly ExcalidrawElement[], appState: AppState, + elementsToBeMoved?: readonly ExcalidrawElement[], ) => { - return shiftElementsToEnd(elements, appState, "right"); + return shiftElementsToEnd(elements, appState, "right", elementsToBeMoved); }; diff --git a/yarn.lock b/yarn.lock index 720e61a3ef..2e8bdda5a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1086,6 +1086,11 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@braintree/sanitize-url@6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" + integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== + "@csstools/normalize.css@*": version "12.0.0" resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" @@ -1254,6 +1259,11 @@ resolved "https://registry.yarnpkg.com/@excalidraw/prettier-config/-/prettier-config-1.0.2.tgz#b7c061c99cee2f78b9ca470ea1fbd602683bba65" integrity sha512-rFIq8+A8WvkEzBsF++Rw6gzxE+hU3ZNkdg8foI+Upz2y/rOC/gUpWJaggPbCkoH3nlREVU59axQjZ1+F6ePRGg== +"@excalidraw/random-username@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@excalidraw/random-username/-/random-username-1.0.0.tgz#6d5293148aee6cd08dcdfcadc0c91276572f4499" + integrity sha512-pd4VapWahQ7PIyThGq32+C+JUS73mf3RSdC7BmQiXzhQsCTU4RHc8y9jBi+pb1CFV0iJXvjJRXnVdLCbTj3+HA== + "@firebase/analytics-types@0.4.0": version "0.4.0" resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508" @@ -3825,6 +3835,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz#0ef8a1cf8b16be47a0f9fc4ecfc952232724b32a" integrity sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw== +canvas-roundrect-polyfill@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/canvas-roundrect-polyfill/-/canvas-roundrect-polyfill-0.0.1.tgz#70bf107ebe2037f26d839d7f809a26f4a95f5696" + integrity sha512-yWq+R3U3jE+coOeEb3a3GgE2j/0MMiDKM/QpLb6h9ihf5fGY9UXtvK9o4vNqjWXoZz7/3EaSVU3IX53TvFFUOw== + case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4"