@excalidraw/excalidraw 0.17.1-a38e82f → 0.17.1-b7babe5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/dist/browser/dev/excalidraw-assets-dev/{chunk-IM4WTX2M.js → chunk-6NMK7JTV.js} +2 -1
  3. package/dist/browser/dev/excalidraw-assets-dev/chunk-6NMK7JTV.js.map +7 -0
  4. package/dist/browser/dev/excalidraw-assets-dev/{chunk-5VWQDKDR.js → chunk-CX3RATXT.js} +50 -5
  5. package/dist/browser/dev/excalidraw-assets-dev/chunk-CX3RATXT.js.map +7 -0
  6. package/dist/browser/dev/excalidraw-assets-dev/{en-IOBA4CS2.js → en-BZY7JRTM.js} +2 -2
  7. package/dist/browser/dev/excalidraw-assets-dev/{image-VKDAL6BQ.js → image-CVN3YKRW.js} +2 -2
  8. package/dist/browser/dev/index.js +332 -76
  9. package/dist/browser/dev/index.js.map +4 -4
  10. package/dist/browser/prod/excalidraw-assets/{chunk-N2C5DK3B.js → chunk-VJAIK3AX.js} +15 -15
  11. package/dist/browser/prod/excalidraw-assets/{chunk-LIG3S5TN.js → chunk-YYO5DFUW.js} +3 -3
  12. package/dist/browser/prod/excalidraw-assets/{en-WFZVQ7I6.js → en-O2YCQM2W.js} +1 -1
  13. package/dist/browser/prod/excalidraw-assets/image-6FKY54X5.js +1 -0
  14. package/dist/browser/prod/index.js +16 -16
  15. package/dist/{prod/en-TDNWCAOT.json → dev/en-EY7E2L5O.json} +1 -0
  16. package/dist/dev/index.js +372 -77
  17. package/dist/dev/index.js.map +3 -3
  18. package/dist/excalidraw/data/library.d.ts +60 -8
  19. package/dist/excalidraw/data/library.js +302 -33
  20. package/dist/excalidraw/element/index.d.ts +8 -0
  21. package/dist/excalidraw/element/index.js +23 -0
  22. package/dist/excalidraw/element/textElement.d.ts +16 -1
  23. package/dist/excalidraw/element/textElement.js +10 -3
  24. package/dist/excalidraw/index.d.ts +2 -2
  25. package/dist/excalidraw/index.js +2 -2
  26. package/dist/excalidraw/locales/en.json +1 -0
  27. package/dist/excalidraw/queue.d.ts +9 -0
  28. package/dist/excalidraw/queue.js +27 -0
  29. package/dist/excalidraw/types.d.ts +6 -6
  30. package/dist/excalidraw/utility-types.d.ts +2 -0
  31. package/dist/excalidraw/utils.d.ts +3 -1
  32. package/dist/excalidraw/utils.js +6 -0
  33. package/dist/{dev/en-TDNWCAOT.json → prod/en-EY7E2L5O.json} +1 -0
  34. package/dist/prod/index.js +26 -26
  35. package/package.json +1 -1
  36. package/dist/browser/dev/excalidraw-assets-dev/chunk-5VWQDKDR.js.map +0 -7
  37. package/dist/browser/dev/excalidraw-assets-dev/chunk-IM4WTX2M.js.map +0 -7
  38. package/dist/browser/prod/excalidraw-assets/image-4AT7LYMR.js +0 -1
  39. /package/dist/browser/dev/excalidraw-assets-dev/{en-IOBA4CS2.js.map → en-BZY7JRTM.js.map} +0 -0
  40. /package/dist/browser/dev/excalidraw-assets-dev/{image-VKDAL6BQ.js.map → image-CVN3YKRW.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -15,6 +15,10 @@ Please add the latest change on the top under the correct section.
15
15
 
16
16
  ### Features
17
17
 
18
+ - Add `useHandleLibrary`'s `opts.adapter` as the new recommended pattern to handle library initialization and persistence on library updates. [#7655](https://github.com/excalidraw/excalidraw/pull/7655)
19
+ - Add `useHandleLibrary`'s `opts.migrationAdapter` adapter to handle library migration during init, when migrating from one data store to another (e.g. from LocalStorage to IndexedDB). [#7655](https://github.com/excalidraw/excalidraw/pull/7655)
20
+ - Soft-deprecate `useHandleLibrary`'s `opts.getInitialLibraryItems` in favor of `opts.adapter`. [#7655](https://github.com/excalidraw/excalidraw/pull/7655)
21
+
18
22
  - Add `onPointerUp` prop [#7638](https://github.com/excalidraw/excalidraw/pull/7638).
19
23
 
20
24
  - Expose `getVisibleSceneBounds` helper to get scene bounds of visible canvas area. [#7450](https://github.com/excalidraw/excalidraw/pull/7450)
@@ -27,7 +31,7 @@ Please add the latest change on the top under the correct section.
27
31
 
28
32
  - `ExcalidrawEmbeddableElement.validated` was removed and moved to private editor state. This should largely not affect your apps unless you were reading from this attribute. We keep validating embeddable urls internally, and the public [`props.validateEmbeddable`](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props#validateembeddable) still applies. [#7539](https://github.com/excalidraw/excalidraw/pull/7539)
29
33
 
30
- - `ExcalidrawTextElement.baseline` was removed and replaced with a vertical offset computation based on font metrics, performed on each text element re-render.
34
+ - `ExcalidrawTextElement.baseline` was removed and replaced with a vertical offset computation based on font metrics, performed on each text element re-render. In case of custom font usage, extend the `FONT_METRICS` object with the related properties.
31
35
 
32
36
  - Create an `ESM` build for `@excalidraw/excalidraw`. The API is in progress and subject to change before stable release. There are some changes on how the package will be consumed
33
37
 
@@ -216,6 +216,7 @@ var errors = {
216
216
  failedToFetchImage: "Failed to fetch image.",
217
217
  cannotResolveCollabServer: "Couldn't connect to the collab server. Please reload the page and try again.",
218
218
  importLibraryError: "Couldn't load library",
219
+ saveLibraryError: "Couldn't save library to storage. Please save your library to a file locally to make sure you don't lose changes.",
219
220
  collabSaveFailed: "Couldn't save to the backend database. If problems persist, you should save your file locally to ensure you don't lose your work.",
220
221
  collabSaveFailed_sizeExceeded: "Couldn't save to the backend database, the canvas seems to be too big. You should save the file locally to ensure you don't lose your work.",
221
222
  imageToolNotSupported: "Images are disabled.",
@@ -600,4 +601,4 @@ export {
600
601
  userList,
601
602
  en_default
602
603
  };
603
- //# sourceMappingURL=chunk-IM4WTX2M.js.map
604
+ //# sourceMappingURL=chunk-6NMK7JTV.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../locales/en.json"],
4
+ "sourcesContent": ["{\n \"labels\": {\n \"paste\": \"Paste\",\n \"pasteAsPlaintext\": \"Paste as plaintext\",\n \"pasteCharts\": \"Paste charts\",\n \"selectAll\": \"Select all\",\n \"multiSelect\": \"Add element to selection\",\n \"moveCanvas\": \"Move canvas\",\n \"cut\": \"Cut\",\n \"copy\": \"Copy\",\n \"copyAsPng\": \"Copy to clipboard as PNG\",\n \"copyAsSvg\": \"Copy to clipboard as SVG\",\n \"copyText\": \"Copy to clipboard as text\",\n \"copySource\": \"Copy source to clipboard\",\n \"convertToCode\": \"Convert to code\",\n \"bringForward\": \"Bring forward\",\n \"sendToBack\": \"Send to back\",\n \"bringToFront\": \"Bring to front\",\n \"sendBackward\": \"Send backward\",\n \"delete\": \"Delete\",\n \"copyStyles\": \"Copy styles\",\n \"pasteStyles\": \"Paste styles\",\n \"stroke\": \"Stroke\",\n \"background\": \"Background\",\n \"fill\": \"Fill\",\n \"strokeWidth\": \"Stroke width\",\n \"strokeStyle\": \"Stroke style\",\n \"strokeStyle_solid\": \"Solid\",\n \"strokeStyle_dashed\": \"Dashed\",\n \"strokeStyle_dotted\": \"Dotted\",\n \"sloppiness\": \"Sloppiness\",\n \"opacity\": \"Opacity\",\n \"textAlign\": \"Text align\",\n \"edges\": \"Edges\",\n \"sharp\": \"Sharp\",\n \"round\": \"Round\",\n \"arrowheads\": \"Arrowheads\",\n \"arrowhead_none\": \"None\",\n \"arrowhead_arrow\": \"Arrow\",\n \"arrowhead_bar\": \"Bar\",\n \"arrowhead_circle\": \"Circle\",\n \"arrowhead_circle_outline\": \"Circle (outline)\",\n \"arrowhead_triangle\": \"Triangle\",\n \"arrowhead_triangle_outline\": \"Triangle (outline)\",\n \"arrowhead_diamond\": \"Diamond\",\n \"arrowhead_diamond_outline\": \"Diamond (outline)\",\n \"fontSize\": \"Font size\",\n \"fontFamily\": \"Font family\",\n \"addWatermark\": \"Add \\\"Made with Excalidraw\\\"\",\n \"handDrawn\": \"Hand-drawn\",\n \"normal\": \"Normal\",\n \"code\": \"Code\",\n \"small\": \"Small\",\n \"medium\": \"Medium\",\n \"large\": \"Large\",\n \"veryLarge\": \"Very large\",\n \"solid\": \"Solid\",\n \"hachure\": \"Hachure\",\n \"zigzag\": \"Zigzag\",\n \"crossHatch\": \"Cross-hatch\",\n \"thin\": \"Thin\",\n \"bold\": \"Bold\",\n \"left\": \"Left\",\n \"center\": \"Center\",\n \"right\": \"Right\",\n \"extraBold\": \"Extra bold\",\n \"architect\": \"Architect\",\n \"artist\": \"Artist\",\n \"cartoonist\": \"Cartoonist\",\n \"fileTitle\": \"File name\",\n \"colorPicker\": \"Color picker\",\n \"canvasColors\": \"Used on canvas\",\n \"canvasBackground\": \"Canvas background\",\n \"drawingCanvas\": \"Drawing canvas\",\n \"layers\": \"Layers\",\n \"actions\": \"Actions\",\n \"language\": \"Language\",\n \"liveCollaboration\": \"Live collaboration...\",\n \"duplicateSelection\": \"Duplicate\",\n \"untitled\": \"Untitled\",\n \"name\": \"Name\",\n \"yourName\": \"Your name\",\n \"madeWithExcalidraw\": \"Made with Excalidraw\",\n \"group\": \"Group selection\",\n \"ungroup\": \"Ungroup selection\",\n \"collaborators\": \"Collaborators\",\n \"showGrid\": \"Show grid\",\n \"addToLibrary\": \"Add to library\",\n \"removeFromLibrary\": \"Remove from library\",\n \"libraryLoadingMessage\": \"Loading library\u2026\",\n \"libraries\": \"Browse libraries\",\n \"loadingScene\": \"Loading scene\u2026\",\n \"align\": \"Align\",\n \"alignTop\": \"Align top\",\n \"alignBottom\": \"Align bottom\",\n \"alignLeft\": \"Align left\",\n \"alignRight\": \"Align right\",\n \"centerVertically\": \"Center vertically\",\n \"centerHorizontally\": \"Center horizontally\",\n \"distributeHorizontally\": \"Distribute horizontally\",\n \"distributeVertically\": \"Distribute vertically\",\n \"flipHorizontal\": \"Flip horizontal\",\n \"flipVertical\": \"Flip vertical\",\n \"viewMode\": \"View mode\",\n \"share\": \"Share\",\n \"showStroke\": \"Show stroke color picker\",\n \"showBackground\": \"Show background color picker\",\n \"toggleTheme\": \"Toggle theme\",\n \"personalLib\": \"Personal Library\",\n \"excalidrawLib\": \"Excalidraw Library\",\n \"decreaseFontSize\": \"Decrease font size\",\n \"increaseFontSize\": \"Increase font size\",\n \"unbindText\": \"Unbind text\",\n \"bindText\": \"Bind text to the container\",\n \"createContainerFromText\": \"Wrap text in a container\",\n \"link\": {\n \"edit\": \"Edit link\",\n \"editEmbed\": \"Edit link & embed\",\n \"create\": \"Create link\",\n \"createEmbed\": \"Create link & embed\",\n \"label\": \"Link\",\n \"labelEmbed\": \"Link & embed\",\n \"empty\": \"No link is set\"\n },\n \"lineEditor\": {\n \"edit\": \"Edit line\",\n \"exit\": \"Exit line editor\"\n },\n \"elementLock\": {\n \"lock\": \"Lock\",\n \"unlock\": \"Unlock\",\n \"lockAll\": \"Lock all\",\n \"unlockAll\": \"Unlock all\"\n },\n \"statusPublished\": \"Published\",\n \"sidebarLock\": \"Keep sidebar open\",\n \"selectAllElementsInFrame\": \"Select all elements in frame\",\n \"removeAllElementsFromFrame\": \"Remove all elements from frame\",\n \"eyeDropper\": \"Pick color from canvas\",\n \"textToDiagram\": \"Text to diagram\",\n \"prompt\": \"Prompt\",\n \"followUs\": \"Follow us\",\n \"discordChat\": \"Discord chat\"\n },\n \"library\": {\n \"noItems\": \"No items added yet...\",\n \"hint_emptyLibrary\": \"Select an item on canvas to add it here, or install a library from the public repository, below.\",\n \"hint_emptyPrivateLibrary\": \"Select an item on canvas to add it here.\"\n },\n \"buttons\": {\n \"clearReset\": \"Reset the canvas\",\n \"exportJSON\": \"Export to file\",\n \"exportImage\": \"Export image...\",\n \"export\": \"Save to...\",\n \"copyToClipboard\": \"Copy to clipboard\",\n \"save\": \"Save to current file\",\n \"saveAs\": \"Save as\",\n \"load\": \"Open\",\n \"getShareableLink\": \"Get shareable link\",\n \"close\": \"Close\",\n \"selectLanguage\": \"Select language\",\n \"scrollBackToContent\": \"Scroll back to content\",\n \"zoomIn\": \"Zoom in\",\n \"zoomOut\": \"Zoom out\",\n \"resetZoom\": \"Reset zoom\",\n \"menu\": \"Menu\",\n \"done\": \"Done\",\n \"edit\": \"Edit\",\n \"undo\": \"Undo\",\n \"redo\": \"Redo\",\n \"resetLibrary\": \"Reset library\",\n \"createNewRoom\": \"Create new room\",\n \"fullScreen\": \"Full screen\",\n \"darkMode\": \"Dark mode\",\n \"lightMode\": \"Light mode\",\n \"zenMode\": \"Zen mode\",\n \"objectsSnapMode\": \"Snap to objects\",\n \"exitZenMode\": \"Exit zen mode\",\n \"cancel\": \"Cancel\",\n \"clear\": \"Clear\",\n \"remove\": \"Remove\",\n \"embed\": \"Toggle embedding\",\n \"publishLibrary\": \"Publish\",\n \"submit\": \"Submit\",\n \"confirm\": \"Confirm\",\n \"embeddableInteractionButton\": \"Click to interact\"\n },\n \"alerts\": {\n \"clearReset\": \"This will clear the whole canvas. Are you sure?\",\n \"couldNotCreateShareableLink\": \"Couldn't create shareable link.\",\n \"couldNotCreateShareableLinkTooBig\": \"Couldn't create shareable link: the scene is too big\",\n \"couldNotLoadInvalidFile\": \"Couldn't load invalid file\",\n \"importBackendFailed\": \"Importing from backend failed.\",\n \"cannotExportEmptyCanvas\": \"Cannot export empty canvas.\",\n \"couldNotCopyToClipboard\": \"Couldn't copy to clipboard.\",\n \"decryptFailed\": \"Couldn't decrypt data.\",\n \"uploadedSecurly\": \"The upload has been secured with end-to-end encryption, which means that Excalidraw server and third parties can't read the content.\",\n \"loadSceneOverridePrompt\": \"Loading external drawing will replace your existing content. Do you wish to continue?\",\n \"collabStopOverridePrompt\": \"Stopping the session will overwrite your previous, locally stored drawing. Are you sure?\\n\\n(If you want to keep your local drawing, simply close the browser tab instead.)\",\n \"errorAddingToLibrary\": \"Couldn't add item to the library\",\n \"errorRemovingFromLibrary\": \"Couldn't remove item from the library\",\n \"confirmAddLibrary\": \"This will add {{numShapes}} shape(s) to your library. Are you sure?\",\n \"imageDoesNotContainScene\": \"This image does not seem to contain any scene data. Have you enabled scene embedding during export?\",\n \"cannotRestoreFromImage\": \"Scene couldn't be restored from this image file\",\n \"invalidSceneUrl\": \"Couldn't import scene from the supplied URL. It's either malformed, or doesn't contain valid Excalidraw JSON data.\",\n \"resetLibrary\": \"This will clear your library. Are you sure?\",\n \"removeItemsFromsLibrary\": \"Delete {{count}} item(s) from library?\",\n \"invalidEncryptionKey\": \"Encryption key must be of 22 characters. Live collaboration is disabled.\",\n \"collabOfflineWarning\": \"No internet connection available.\\nYour changes will not be saved!\"\n },\n \"errors\": {\n \"unsupportedFileType\": \"Unsupported file type.\",\n \"imageInsertError\": \"Couldn't insert image. Try again later...\",\n \"fileTooBig\": \"File is too big. Maximum allowed size is {{maxSize}}.\",\n \"svgImageInsertError\": \"Couldn't insert SVG image. The SVG markup looks invalid.\",\n \"failedToFetchImage\": \"Failed to fetch image.\",\n \"cannotResolveCollabServer\": \"Couldn't connect to the collab server. Please reload the page and try again.\",\n \"importLibraryError\": \"Couldn't load library\",\n \"saveLibraryError\": \"Couldn't save library to storage. Please save your library to a file locally to make sure you don't lose changes.\",\n \"collabSaveFailed\": \"Couldn't save to the backend database. If problems persist, you should save your file locally to ensure you don't lose your work.\",\n \"collabSaveFailed_sizeExceeded\": \"Couldn't save to the backend database, the canvas seems to be too big. You should save the file locally to ensure you don't lose your work.\",\n \"imageToolNotSupported\": \"Images are disabled.\",\n \"brave_measure_text_error\": {\n \"line1\": \"Looks like you are using Brave browser with the <bold>Aggressively Block Fingerprinting</bold> setting enabled.\",\n \"line2\": \"This could result in breaking the <bold>Text Elements</bold> in your drawings.\",\n \"line3\": \"We strongly recommend disabling this setting. You can follow <link>these steps</link> on how to do so.\",\n \"line4\": \"If disabling this setting doesn't fix the display of text elements, please open an <issueLink>issue</issueLink> on our GitHub, or write us on <discordLink>Discord</discordLink>\"\n },\n \"libraryElementTypeError\": {\n \"embeddable\": \"Embeddable elements cannot be added to the library.\",\n \"iframe\": \"IFrame elements cannot be added to the library.\",\n \"image\": \"Support for adding images to the library coming soon!\"\n },\n \"asyncPasteFailedOnRead\": \"Couldn't paste (couldn't read from system clipboard).\",\n \"asyncPasteFailedOnParse\": \"Couldn't paste.\",\n \"copyToSystemClipboardFailed\": \"Couldn't copy to clipboard.\"\n },\n \"toolBar\": {\n \"selection\": \"Selection\",\n \"image\": \"Insert image\",\n \"rectangle\": \"Rectangle\",\n \"diamond\": \"Diamond\",\n \"ellipse\": \"Ellipse\",\n \"arrow\": \"Arrow\",\n \"line\": \"Line\",\n \"freedraw\": \"Draw\",\n \"text\": \"Text\",\n \"library\": \"Library\",\n \"lock\": \"Keep selected tool active after drawing\",\n \"penMode\": \"Pen mode - prevent touch\",\n \"link\": \"Add / Update link for a selected shape\",\n \"eraser\": \"Eraser\",\n \"frame\": \"Frame tool\",\n \"magicframe\": \"Wireframe to code\",\n \"embeddable\": \"Web Embed\",\n \"laser\": \"Laser pointer\",\n \"hand\": \"Hand (panning tool)\",\n \"extraTools\": \"More tools\",\n \"mermaidToExcalidraw\": \"Mermaid to Excalidraw\",\n \"magicSettings\": \"AI settings\"\n },\n \"headings\": {\n \"canvasActions\": \"Canvas actions\",\n \"selectedShapeActions\": \"Selected shape actions\",\n \"shapes\": \"Shapes\"\n },\n \"hints\": {\n \"canvasPanning\": \"To move canvas, hold mouse wheel or spacebar while dragging, or use the hand tool\",\n \"linearElement\": \"Click to start multiple points, drag for single line\",\n \"freeDraw\": \"Click and drag, release when you're finished\",\n \"text\": \"Tip: you can also add text by double-clicking anywhere with the selection tool\",\n \"embeddable\": \"Click-drag to create a website embed\",\n \"text_selected\": \"Double-click or press ENTER to edit text\",\n \"text_editing\": \"Press Escape or CtrlOrCmd+ENTER to finish editing\",\n \"linearElementMulti\": \"Click on last point or press Escape or Enter to finish\",\n \"lockAngle\": \"You can constrain angle by holding SHIFT\",\n \"resize\": \"You can constrain proportions by holding SHIFT while resizing,\\nhold ALT to resize from the center\",\n \"resizeImage\": \"You can resize freely by holding SHIFT,\\nhold ALT to resize from the center\",\n \"rotate\": \"You can constrain angles by holding SHIFT while rotating\",\n \"lineEditor_info\": \"Hold CtrlOrCmd and Double-click or press CtrlOrCmd + Enter to edit points\",\n \"lineEditor_pointSelected\": \"Press Delete to remove point(s),\\nCtrlOrCmd+D to duplicate, or drag to move\",\n \"lineEditor_nothingSelected\": \"Select a point to edit (hold SHIFT to select multiple),\\nor hold Alt and click to add new points\",\n \"placeImage\": \"Click to place the image, or click and drag to set its size manually\",\n \"publishLibrary\": \"Publish your own library\",\n \"bindTextToElement\": \"Press enter to add text\",\n \"deepBoxSelect\": \"Hold CtrlOrCmd to deep select, and to prevent dragging\",\n \"eraserRevert\": \"Hold Alt to revert the elements marked for deletion\",\n \"firefox_clipboard_write\": \"This feature can likely be enabled by setting the \\\"dom.events.asyncClipboard.clipboardItem\\\" flag to \\\"true\\\". To change the browser flags in Firefox, visit the \\\"about:config\\\" page.\",\n \"disableSnapping\": \"Hold CtrlOrCmd to disable snapping\"\n },\n \"canvasError\": {\n \"cannotShowPreview\": \"Cannot show preview\",\n \"canvasTooBig\": \"The canvas may be too big.\",\n \"canvasTooBigTip\": \"Tip: try moving the farthest elements a bit closer together.\"\n },\n \"errorSplash\": {\n \"headingMain\": \"Encountered an error. Try <button>reloading the page</button>.\",\n \"clearCanvasMessage\": \"If reloading doesn't work, try <button>clearing the canvas</button>.\",\n \"clearCanvasCaveat\": \" This will result in loss of work \",\n \"trackedToSentry\": \"The error with identifier {{eventId}} was tracked on our system.\",\n \"openIssueMessage\": \"We were very cautious not to include your scene information on the error. If your scene is not private, please consider following up on our <button>bug tracker</button>. Please include information below by copying and pasting into the GitHub issue.\",\n \"sceneContent\": \"Scene content:\"\n },\n \"shareDialog\": {\n \"or\": \"Or\"\n },\n \"roomDialog\": {\n \"desc_intro\": \"Invite people to collaborate on your drawing.\",\n \"desc_privacy\": \"Don't worry, the session is end-to-end encrypted, and fully private. Not even our server can see what you draw.\",\n \"button_startSession\": \"Start session\",\n \"button_stopSession\": \"Stop session\",\n \"desc_inProgressIntro\": \"Live-collaboration session is now in progress.\",\n \"desc_shareLink\": \"Share this link with anyone you want to collaborate with:\",\n \"desc_exitSession\": \"Stopping the session will disconnect you from the room, but you'll be able to continue working with the scene, locally. Note that this won't affect other people, and they'll still be able to collaborate on their version.\",\n \"shareTitle\": \"Join a live collaboration session on Excalidraw\"\n },\n \"errorDialog\": {\n \"title\": \"Error\"\n },\n \"exportDialog\": {\n \"disk_title\": \"Save to disk\",\n \"disk_details\": \"Export the scene data to a file from which you can import later.\",\n \"disk_button\": \"Save to file\",\n \"link_title\": \"Shareable link\",\n \"link_details\": \"Export as a read-only link.\",\n \"link_button\": \"Export to Link\",\n \"excalidrawplus_description\": \"Save the scene to your Excalidraw+ workspace.\",\n \"excalidrawplus_button\": \"Export\",\n \"excalidrawplus_exportError\": \"Couldn't export to Excalidraw+ at this moment...\"\n },\n \"helpDialog\": {\n \"blog\": \"Read our blog\",\n \"click\": \"click\",\n \"deepSelect\": \"Deep select\",\n \"deepBoxSelect\": \"Deep select within box, and prevent dragging\",\n \"curvedArrow\": \"Curved arrow\",\n \"curvedLine\": \"Curved line\",\n \"documentation\": \"Documentation\",\n \"doubleClick\": \"double-click\",\n \"drag\": \"drag\",\n \"editor\": \"Editor\",\n \"editLineArrowPoints\": \"Edit line/arrow points\",\n \"editText\": \"Edit text / add label\",\n \"github\": \"Found an issue? Submit\",\n \"howto\": \"Follow our guides\",\n \"or\": \"or\",\n \"preventBinding\": \"Prevent arrow binding\",\n \"tools\": \"Tools\",\n \"shortcuts\": \"Keyboard shortcuts\",\n \"textFinish\": \"Finish editing (text editor)\",\n \"textNewLine\": \"Add new line (text editor)\",\n \"title\": \"Help\",\n \"view\": \"View\",\n \"zoomToFit\": \"Zoom to fit all elements\",\n \"zoomToSelection\": \"Zoom to selection\",\n \"toggleElementLock\": \"Lock/unlock selection\",\n \"movePageUpDown\": \"Move page up/down\",\n \"movePageLeftRight\": \"Move page left/right\"\n },\n \"clearCanvasDialog\": {\n \"title\": \"Clear canvas\"\n },\n \"publishDialog\": {\n \"title\": \"Publish library\",\n \"itemName\": \"Item name\",\n \"authorName\": \"Author name\",\n \"githubUsername\": \"GitHub username\",\n \"twitterUsername\": \"Twitter username\",\n \"libraryName\": \"Library name\",\n \"libraryDesc\": \"Library description\",\n \"website\": \"Website\",\n \"placeholder\": {\n \"authorName\": \"Your name or username\",\n \"libraryName\": \"Name of your library\",\n \"libraryDesc\": \"Description of your library to help people understand its usage\",\n \"githubHandle\": \"GitHub handle (optional), so you can edit the library once submitted for review\",\n \"twitterHandle\": \"Twitter username (optional), so we know who to credit when promoting over Twitter\",\n \"website\": \"Link to your personal website or elsewhere (optional)\"\n },\n \"errors\": {\n \"required\": \"Required\",\n \"website\": \"Enter a valid URL\"\n },\n \"noteDescription\": \"Submit your library to be included in the <link>public library repository</link> for other people to use in their drawings.\",\n \"noteGuidelines\": \"The library needs to be manually approved first. Please read the <link>guidelines</link> before submitting. You will need a GitHub account to communicate and make changes if requested, but it is not strictly required.\",\n \"noteLicense\": \"By submitting, you agree the library will be published under the <link>MIT License</link>, which in short means anyone can use them without restrictions.\",\n \"noteItems\": \"Each library item must have its own name so it's filterable. The following library items will be included:\",\n \"atleastOneLibItem\": \"Please select at least one library item to get started\",\n \"republishWarning\": \"Note: some of the selected items are marked as already published/submitted. You should only resubmit items when updating an existing library or submission.\"\n },\n \"publishSuccessDialog\": {\n \"title\": \"Library submitted\",\n \"content\": \"Thank you {{authorName}}. Your library has been submitted for review. You can track the status <link>here</link>\"\n },\n \"confirmDialog\": {\n \"resetLibrary\": \"Reset library\",\n \"removeItemsFromLib\": \"Remove selected items from library\"\n },\n \"imageExportDialog\": {\n \"header\": \"Export image\",\n \"label\": {\n \"withBackground\": \"Background\",\n \"onlySelected\": \"Only selected\",\n \"darkMode\": \"Dark mode\",\n \"embedScene\": \"Embed scene\",\n \"scale\": \"Scale\",\n \"padding\": \"Padding\"\n },\n \"tooltip\": {\n \"embedScene\": \"Scene data will be saved into the exported PNG/SVG file so that the scene can be restored from it.\\nWill increase exported file size.\"\n },\n \"title\": {\n \"exportToPng\": \"Export to PNG\",\n \"exportToSvg\": \"Export to SVG\",\n \"copyPngToClipboard\": \"Copy PNG to clipboard\"\n },\n \"button\": {\n \"exportToPng\": \"PNG\",\n \"exportToSvg\": \"SVG\",\n \"copyPngToClipboard\": \"Copy to clipboard\"\n }\n },\n \"encrypted\": {\n \"tooltip\": \"Your drawings are end-to-end encrypted so Excalidraw's servers will never see them.\",\n \"link\": \"Blog post on end-to-end encryption in Excalidraw\"\n },\n \"stats\": {\n \"angle\": \"Angle\",\n \"element\": \"Element\",\n \"elements\": \"Elements\",\n \"height\": \"Height\",\n \"scene\": \"Scene\",\n \"selected\": \"Selected\",\n \"storage\": \"Storage\",\n \"title\": \"Stats for nerds\",\n \"total\": \"Total\",\n \"version\": \"Version\",\n \"versionCopy\": \"Click to copy\",\n \"versionNotAvailable\": \"Version not available\",\n \"width\": \"Width\"\n },\n \"toast\": {\n \"addedToLibrary\": \"Added to library\",\n \"copyStyles\": \"Copied styles.\",\n \"copyToClipboard\": \"Copied to clipboard.\",\n \"copyToClipboardAsPng\": \"Copied {{exportSelection}} to clipboard as PNG\\n({{exportColorScheme}})\",\n \"fileSaved\": \"File saved.\",\n \"fileSavedToFilename\": \"Saved to {filename}\",\n \"canvas\": \"canvas\",\n \"selection\": \"selection\",\n \"pasteAsSingleElement\": \"Use {{shortcut}} to paste as a single element,\\nor paste into an existing text editor\",\n \"unableToEmbed\": \"Embedding this url is currently not allowed. Raise an issue on GitHub to request the url whitelisted\",\n \"unrecognizedLinkFormat\": \"The link you embedded does not match the expected format. Please try to paste the 'embed' string provided by the source site\"\n },\n \"colors\": {\n \"transparent\": \"Transparent\",\n \"black\": \"Black\",\n \"white\": \"White\",\n \"red\": \"Red\",\n \"pink\": \"Pink\",\n \"grape\": \"Grape\",\n \"violet\": \"Violet\",\n \"gray\": \"Gray\",\n \"blue\": \"Blue\",\n \"cyan\": \"Cyan\",\n \"teal\": \"Teal\",\n \"green\": \"Green\",\n \"yellow\": \"Yellow\",\n \"orange\": \"Orange\",\n \"bronze\": \"Bronze\"\n },\n \"welcomeScreen\": {\n \"app\": {\n \"center_heading\": \"All your data is saved locally in your browser.\",\n \"center_heading_plus\": \"Did you want to go to the Excalidraw+ instead?\",\n \"menuHint\": \"Export, preferences, languages, ...\"\n },\n \"defaults\": {\n \"menuHint\": \"Export, preferences, and more...\",\n \"center_heading\": \"Diagrams. Made. Simple.\",\n \"toolbarHint\": \"Pick a tool & Start drawing!\",\n \"helpHint\": \"Shortcuts & help\"\n }\n },\n \"colorPicker\": {\n \"mostUsedCustomColors\": \"Most used custom colors\",\n \"colors\": \"Colors\",\n \"shades\": \"Shades\",\n \"hexCode\": \"Hex code\",\n \"noShades\": \"No shades available for this color\"\n },\n \"overwriteConfirm\": {\n \"action\": {\n \"exportToImage\": {\n \"title\": \"Export as image\",\n \"button\": \"Export as image\",\n \"description\": \"Export the scene data as an image from which you can import later.\"\n },\n \"saveToDisk\": {\n \"title\": \"Save to disk\",\n \"button\": \"Save to disk\",\n \"description\": \"Export the scene data to a file from which you can import later.\"\n },\n \"excalidrawPlus\": {\n \"title\": \"Excalidraw+\",\n \"button\": \"Export to Excalidraw+\",\n \"description\": \"Save the scene to your Excalidraw+ workspace.\"\n }\n },\n \"modal\": {\n \"loadFromFile\": {\n \"title\": \"Load from file\",\n \"button\": \"Load from file\",\n \"description\": \"Loading from a file will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first using one of the options below.\"\n },\n \"shareableLink\": {\n \"title\": \"Load from link\",\n \"button\": \"Replace my content\",\n \"description\": \"Loading external drawing will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first by using one of the options below.\"\n }\n }\n },\n \"mermaid\": {\n \"title\": \"Mermaid to Excalidraw\",\n \"button\": \"Insert\",\n \"description\": \"Currently only <flowchartLink>Flowchart</flowchartLink>,<sequenceLink> Sequence, </sequenceLink> and <classLink>Class </classLink>Diagrams are supported. The other types will be rendered as image in Excalidraw.\",\n \"syntax\": \"Mermaid Syntax\",\n \"preview\": \"Preview\"\n },\n \"userList\": {\n \"search\": {\n \"placeholder\": \"Quick search\",\n \"empty\": \"No users found\"\n },\n \"hint\": {\n \"text\": \"Click on user to follow\",\n \"followStatus\": \"You're currently following this user\"\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -5714,6 +5714,17 @@ var isTransparent = (color) => {
5714
5714
  const isRRGGBBTransparent = color.length === 9 && color.substr(7, 2) === "00";
5715
5715
  return isRGBTransparent || isRRGGBBTransparent || color === COLOR_PALETTE.transparent;
5716
5716
  };
5717
+ var resolvablePromise = () => {
5718
+ let resolve;
5719
+ let reject;
5720
+ const promise = new Promise((_resolve, _reject) => {
5721
+ resolve = _resolve;
5722
+ reject = _reject;
5723
+ });
5724
+ promise.resolve = resolve;
5725
+ promise.reject = reject;
5726
+ return promise;
5727
+ };
5717
5728
  var getNearestScrollableContainer = (element) => {
5718
5729
  let parent = element.parentElement;
5719
5730
  while (parent) {
@@ -5739,6 +5750,10 @@ var focusNearestParent = (element) => {
5739
5750
  parent = parent.parentElement;
5740
5751
  }
5741
5752
  };
5753
+ var preventUnload = (event) => {
5754
+ event.preventDefault();
5755
+ event.returnValue = "";
5756
+ };
5742
5757
  var bytesToHexString = (bytes) => {
5743
5758
  return Array.from(bytes).map((byte) => `0${byte.toString(16)}`.slice(-2)).join("");
5744
5759
  };
@@ -5948,6 +5963,11 @@ var normalizeEOL = (str) => {
5948
5963
  var toBrandedType = (value) => {
5949
5964
  return value;
5950
5965
  };
5966
+ var promiseTry = async (fn, ...args) => {
5967
+ return new Promise((resolve) => {
5968
+ resolve(fn(...args));
5969
+ });
5970
+ };
5951
5971
 
5952
5972
  // element/typeChecks.ts
5953
5973
  var isInitializedImageElement = (element) => {
@@ -11628,7 +11648,7 @@ var getLineHeightInPx = (fontSize, lineHeight) => {
11628
11648
  return fontSize * lineHeight;
11629
11649
  };
11630
11650
  var getVerticalOffset = (fontFamily, fontSize, lineHeightPx) => {
11631
- const { unitsPerEm, ascender, descender } = FONT_METRICS[fontFamily];
11651
+ const { unitsPerEm, ascender, descender } = FONT_METRICS[fontFamily] || FONT_METRICS[FONT_FAMILY.Helvetica];
11632
11652
  const fontSizeEm = fontSize / unitsPerEm;
11633
11653
  const lineGap = lineHeightPx - fontSizeEm * ascender + fontSizeEm * descender;
11634
11654
  const verticalOffset = fontSizeEm * ascender + lineGap;
@@ -12023,6 +12043,11 @@ var FONT_METRICS = {
12023
12043
  unitsPerEm: 2048,
12024
12044
  ascender: 1977,
12025
12045
  descender: -480
12046
+ },
12047
+ [FONT_FAMILY.Assistant]: {
12048
+ unitsPerEm: 1e3,
12049
+ ascender: 1021,
12050
+ descender: -287
12026
12051
  }
12027
12052
  };
12028
12053
  var getDefaultLineHeight = (fontFamily) => {
@@ -16110,7 +16135,7 @@ var exportToSvg = async (elements, appState, files, opts) => {
16110
16135
  let metadata = "";
16111
16136
  if (exportEmbedScene) {
16112
16137
  try {
16113
- metadata = await (await import("./image-VKDAL6BQ.js")).encodeSvgMetadata({
16138
+ metadata = await (await import("./image-CVN3YKRW.js")).encodeSvgMetadata({
16114
16139
  // when embedding scene, we want to embed the origionally supplied
16115
16140
  // elements which don't contain the temp frame labels.
16116
16141
  // But it also requires that the exportToSvg is being supplied with
@@ -19383,6 +19408,21 @@ var showSelectedShapeActions = (appState, elements) => Boolean(
19383
19408
 
19384
19409
  // element/index.ts
19385
19410
  var getSceneVersion = (elements) => elements.reduce((acc, el) => acc + el.version, 0);
19411
+ var hashElementsVersion = (elements) => {
19412
+ let hash = 5381;
19413
+ for (let i2 = 0; i2 < elements.length; i2++) {
19414
+ hash = (hash << 5) + hash + elements[i2].versionNonce;
19415
+ }
19416
+ return hash >>> 0;
19417
+ };
19418
+ var hashString = (s2) => {
19419
+ let hash = 5381;
19420
+ for (let i2 = 0; i2 < s2.length; i2++) {
19421
+ const char = s2.charCodeAt(i2);
19422
+ hash = (hash << 5) + hash + char;
19423
+ }
19424
+ return hash >>> 0;
19425
+ };
19386
19426
  var getVisibleElements = (elements) => elements.filter(
19387
19427
  (el) => !el.isDeleted && !isInvisiblySmallElement(el)
19388
19428
  );
@@ -19399,7 +19439,7 @@ var parseFileContents = async (blob) => {
19399
19439
  let contents;
19400
19440
  if (blob.type === MIME_TYPES.png) {
19401
19441
  try {
19402
- return await (await import("./image-VKDAL6BQ.js")).decodePngMetadata(blob);
19442
+ return await (await import("./image-CVN3YKRW.js")).decodePngMetadata(blob);
19403
19443
  } catch (error) {
19404
19444
  if (error.message === "INVALID") {
19405
19445
  throw new ImageSceneDataError(
@@ -19426,7 +19466,7 @@ var parseFileContents = async (blob) => {
19426
19466
  }
19427
19467
  if (blob.type === MIME_TYPES.svg) {
19428
19468
  try {
19429
- return await (await import("./image-VKDAL6BQ.js")).decodeSvgMetadata({
19469
+ return await (await import("./image-CVN3YKRW.js")).decodeSvgMetadata({
19430
19470
  svg: contents
19431
19471
  });
19432
19472
  } catch (error) {
@@ -19986,8 +20026,10 @@ export {
19986
20026
  findIndex,
19987
20027
  findLastIndex,
19988
20028
  isTransparent,
20029
+ resolvablePromise,
19989
20030
  getNearestScrollableContainer,
19990
20031
  focusNearestParent,
20032
+ preventUnload,
19991
20033
  arrayToMap,
19992
20034
  arrayToMapWithIndex,
19993
20035
  isTestEnv,
@@ -20008,6 +20050,7 @@ export {
20008
20050
  getSvgPathFromStroke,
20009
20051
  normalizeEOL,
20010
20052
  toBrandedType,
20053
+ promiseTry,
20011
20054
  isInitializedImageElement,
20012
20055
  isImageElement,
20013
20056
  isEmbeddableElement,
@@ -20261,6 +20304,8 @@ export {
20261
20304
  dragNewElement,
20262
20305
  showSelectedShapeActions,
20263
20306
  getSceneVersion,
20307
+ hashElementsVersion,
20308
+ hashString,
20264
20309
  getNonDeletedElements2 as getNonDeletedElements,
20265
20310
  isNonDeletedElement,
20266
20311
  excludeElementsInFramesFromSelection,
@@ -20276,4 +20321,4 @@ export {
20276
20321
  getNormalizedZoom,
20277
20322
  getStateForZoom
20278
20323
  };
20279
- //# sourceMappingURL=chunk-5VWQDKDR.js.map
20324
+ //# sourceMappingURL=chunk-CX3RATXT.js.map