@excalidraw/excalidraw 0.17.1-1ed53b1 → 0.17.1-2f9526d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-JKPJV7MZ.js → chunk-Q6A4M3MN.js} +4 -2
- package/dist/browser/dev/excalidraw-assets-dev/chunk-Q6A4M3MN.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-OKAZAA6U.js → chunk-Q6NFAEKN.js} +156 -74
- package/dist/browser/dev/excalidraw-assets-dev/chunk-Q6NFAEKN.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{dist-ITJNUBZF.js → dist-6QVAH5JA.js} +36 -14
- package/dist/browser/dev/excalidraw-assets-dev/dist-6QVAH5JA.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{en-BF4XUPIZ.js → en-Y27YPU72.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{image-LVS32KQQ.js → image-Y5X7K6KW.js} +2 -2
- package/dist/browser/dev/index.js +159 -86
- package/dist/browser/dev/index.js.map +3 -3
- package/dist/browser/prod/excalidraw-assets/{chunk-O4AI3NNG.js → chunk-IZMZ6RPD.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/chunk-MDMKPHYD.js +55 -0
- package/dist/browser/prod/excalidraw-assets/dist-567JAXHK.js +7 -0
- package/dist/browser/prod/excalidraw-assets/{en-N7CLNF6C.js → en-GSUSWMSH.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/image-7MVXYJUE.js +1 -0
- package/dist/browser/prod/index.js +14 -14
- package/dist/dev/{en-UQDDYCH7.json → en-OIPCBIOA.json} +3 -1
- package/dist/dev/index.js +320 -157
- package/dist/dev/index.js.map +4 -4
- package/dist/excalidraw/actions/actionBoundText.js +3 -1
- package/dist/excalidraw/actions/actionHistory.js +4 -4
- package/dist/excalidraw/actions/actionProperties.js +1 -1
- package/dist/excalidraw/actions/actionTextAutoResize.d.ts +17 -0
- package/dist/excalidraw/actions/actionTextAutoResize.js +38 -0
- package/dist/excalidraw/actions/types.d.ts +1 -1
- package/dist/excalidraw/components/Actions.js +1 -1
- package/dist/excalidraw/components/App.d.ts +1 -1
- package/dist/excalidraw/components/App.js +47 -32
- package/dist/excalidraw/components/ButtonIconSelect.js +1 -1
- package/dist/excalidraw/components/CheckboxItem.js +1 -1
- package/dist/excalidraw/components/CommandPalette/CommandPalette.js +2 -2
- package/dist/excalidraw/components/ContextMenu.js +1 -1
- package/dist/excalidraw/components/Dialog.js +1 -1
- package/dist/excalidraw/components/FollowMode/FollowMode.js +1 -1
- package/dist/excalidraw/components/IconPicker.js +2 -2
- package/dist/excalidraw/components/LayerUI.js +2 -2
- package/dist/excalidraw/components/MobileMenu.js +1 -1
- package/dist/excalidraw/components/PasteChartDialog.js +1 -1
- package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +1 -1
- package/dist/excalidraw/components/canvases/InteractiveCanvas.js +2 -2
- package/dist/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
- package/dist/excalidraw/components/canvases/StaticCanvas.js +2 -2
- package/dist/excalidraw/components/icons.js +6 -2
- package/dist/excalidraw/data/restore.js +1 -0
- package/dist/excalidraw/element/index.d.ts +1 -1
- package/dist/excalidraw/element/index.js +1 -1
- package/dist/excalidraw/element/mutateElement.d.ts +1 -1
- package/dist/excalidraw/element/mutateElement.js +5 -3
- package/dist/excalidraw/element/newElement.d.ts +0 -5
- package/dist/excalidraw/element/newElement.js +15 -13
- package/dist/excalidraw/element/resizeElements.js +71 -22
- package/dist/excalidraw/element/resizeTest.js +2 -4
- package/dist/excalidraw/element/textElement.js +8 -3
- package/dist/excalidraw/element/textWysiwyg.d.ts +8 -3
- package/dist/excalidraw/element/textWysiwyg.js +6 -8
- package/dist/excalidraw/element/transformHandles.js +0 -10
- package/dist/excalidraw/element/types.d.ts +7 -0
- package/dist/excalidraw/locales/en.json +3 -1
- package/dist/excalidraw/scene/Fonts.d.ts +1 -3
- package/dist/excalidraw/scene/Fonts.js +6 -12
- package/dist/excalidraw/scene/Renderer.d.ts +1 -1
- package/dist/excalidraw/scene/Renderer.js +2 -3
- package/dist/excalidraw/scene/Scene.d.ts +10 -4
- package/dist/excalidraw/scene/Scene.js +14 -8
- package/dist/excalidraw/scene/export.js +1 -1
- package/dist/prod/{en-UQDDYCH7.json → en-OIPCBIOA.json} +3 -1
- package/dist/prod/index.js +28 -28
- package/package.json +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/chunk-JKPJV7MZ.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-OKAZAA6U.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/dist-ITJNUBZF.js.map +0 -7
- package/dist/browser/prod/excalidraw-assets/chunk-SXBDZOS3.js +0 -55
- package/dist/browser/prod/excalidraw-assets/dist-54276HPL.js +0 -6
- package/dist/browser/prod/excalidraw-assets/image-VAGBVQ3G.js +0 -1
- /package/dist/browser/dev/excalidraw-assets-dev/{en-BF4XUPIZ.js.map → en-Y27YPU72.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-LVS32KQQ.js.map → image-Y5X7K6KW.js.map} +0 -0
|
@@ -148,7 +148,9 @@ var labels = {
|
|
|
148
148
|
discordChat: "Discord chat",
|
|
149
149
|
zoomToFitViewport: "Zoom to fit in viewport",
|
|
150
150
|
zoomToFitSelection: "Zoom to fit selection",
|
|
151
|
-
zoomToFit: "Zoom to fit all elements"
|
|
151
|
+
zoomToFit: "Zoom to fit all elements",
|
|
152
|
+
installPWA: "Install Excalidraw locally (PWA)",
|
|
153
|
+
autoResize: "Enable text auto-resizing"
|
|
152
154
|
};
|
|
153
155
|
var library = {
|
|
154
156
|
noItems: "No items added yet...",
|
|
@@ -630,4 +632,4 @@ export {
|
|
|
630
632
|
commandPalette,
|
|
631
633
|
en_default
|
|
632
634
|
};
|
|
633
|
-
//# sourceMappingURL=chunk-
|
|
635
|
+
//# sourceMappingURL=chunk-Q6A4M3MN.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 \"changeStroke\": \"Change stroke color\",\n \"background\": \"Background\",\n \"changeBackground\": \"Change background color\",\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 \"clearCanvas\": \"Clear 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 \"toggleGrid\": \"Toggle 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 \"loadScene\": \"Load scene from file\",\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 light/dark theme\",\n \"theme\": \"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 \"editArrow\": \"Edit arrow\"\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 \"zoomToFitViewport\": \"Zoom to fit in viewport\",\n \"zoomToFitSelection\": \"Zoom to fit selection\",\n \"zoomToFit\": \"Zoom to fit all elements\",\n \"installPWA\": \"Install Excalidraw locally (PWA)\",\n \"autoResize\": \"Enable text auto-resizing\"\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 \"systemMode\": \"System 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 \"inCall\": \"User is in a voice call\",\n \"micMuted\": \"User's microphone is muted\",\n \"isSpeaking\": \"User is speaking\"\n }\n },\n \"commandPalette\": {\n \"title\": \"Command palette\",\n \"shortcuts\": {\n \"select\": \"Select\",\n \"confirm\": \"Confirm\",\n \"close\": \"Close\"\n },\n \"recents\": \"Recently used\",\n \"search\": {\n \"placeholder\": \"Search menus, commands, and discover hidden gems\",\n \"noMatch\": \"No matching commands...\"\n },\n \"itemNotAvailable\": \"Command is not available...\",\n \"shortcutHint\": \"For Command palette, use {{shortcut}}\"\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -11148,8 +11148,8 @@ var redrawTextBoundingBox = (textElement, container, elementsMap, informMutation
|
|
|
11148
11148
|
angle: container?.angle ?? textElement.angle
|
|
11149
11149
|
};
|
|
11150
11150
|
boundTextUpdates.text = textElement.text;
|
|
11151
|
-
if (container) {
|
|
11152
|
-
maxWidth = getBoundTextMaxWidth(container, textElement);
|
|
11151
|
+
if (container || !textElement.autoResize) {
|
|
11152
|
+
maxWidth = container ? getBoundTextMaxWidth(container, textElement) : textElement.width;
|
|
11153
11153
|
boundTextUpdates.text = wrapText(
|
|
11154
11154
|
textElement.originalText,
|
|
11155
11155
|
getFontString(textElement),
|
|
@@ -11161,7 +11161,9 @@ var redrawTextBoundingBox = (textElement, container, elementsMap, informMutation
|
|
|
11161
11161
|
getFontString(textElement),
|
|
11162
11162
|
textElement.lineHeight
|
|
11163
11163
|
);
|
|
11164
|
-
|
|
11164
|
+
if (textElement.autoResize) {
|
|
11165
|
+
boundTextUpdates.width = metrics.width;
|
|
11166
|
+
}
|
|
11165
11167
|
boundTextUpdates.height = metrics.height;
|
|
11166
11168
|
if (container) {
|
|
11167
11169
|
const maxContainerHeight = getBoundTextMaxHeight(
|
|
@@ -11495,6 +11497,14 @@ var getApproxMinLineWidth = (font, lineHeight) => {
|
|
|
11495
11497
|
}
|
|
11496
11498
|
return maxCharWidth + BOUND_TEXT_PADDING * 2;
|
|
11497
11499
|
};
|
|
11500
|
+
var getMinCharWidth = (font) => {
|
|
11501
|
+
const cache = charWidth.getCache(font);
|
|
11502
|
+
if (!cache) {
|
|
11503
|
+
return 0;
|
|
11504
|
+
}
|
|
11505
|
+
const cacheWithOutEmpty = cache.filter((val) => val !== void 0);
|
|
11506
|
+
return Math.min(...cacheWithOutEmpty);
|
|
11507
|
+
};
|
|
11498
11508
|
var getMaxCharWidth = (font) => {
|
|
11499
11509
|
const cache = charWidth.getCache(font);
|
|
11500
11510
|
if (!cache) {
|
|
@@ -13951,36 +13961,41 @@ var newTextElement = (opts) => {
|
|
|
13951
13961
|
{ textAlign, verticalAlign },
|
|
13952
13962
|
metrics
|
|
13953
13963
|
);
|
|
13964
|
+
const textElementProps = {
|
|
13965
|
+
..._newElementBase("text", opts),
|
|
13966
|
+
text,
|
|
13967
|
+
fontSize,
|
|
13968
|
+
fontFamily,
|
|
13969
|
+
textAlign,
|
|
13970
|
+
verticalAlign,
|
|
13971
|
+
x: opts.x - offsets.x,
|
|
13972
|
+
y: opts.y - offsets.y,
|
|
13973
|
+
width: metrics.width,
|
|
13974
|
+
height: metrics.height,
|
|
13975
|
+
containerId: opts.containerId || null,
|
|
13976
|
+
originalText: text,
|
|
13977
|
+
autoResize: true,
|
|
13978
|
+
lineHeight
|
|
13979
|
+
};
|
|
13954
13980
|
const textElement = newElementWith(
|
|
13955
|
-
|
|
13956
|
-
..._newElementBase("text", opts),
|
|
13957
|
-
text,
|
|
13958
|
-
fontSize,
|
|
13959
|
-
fontFamily,
|
|
13960
|
-
textAlign,
|
|
13961
|
-
verticalAlign,
|
|
13962
|
-
x: opts.x - offsets.x,
|
|
13963
|
-
y: opts.y - offsets.y,
|
|
13964
|
-
width: metrics.width,
|
|
13965
|
-
height: metrics.height,
|
|
13966
|
-
containerId: opts.containerId || null,
|
|
13967
|
-
originalText: text,
|
|
13968
|
-
lineHeight
|
|
13969
|
-
},
|
|
13981
|
+
textElementProps,
|
|
13970
13982
|
{}
|
|
13971
13983
|
);
|
|
13972
13984
|
return textElement;
|
|
13973
13985
|
};
|
|
13974
13986
|
var getAdjustedDimensions = (element, elementsMap, nextText) => {
|
|
13975
|
-
|
|
13987
|
+
let { width: nextWidth, height: nextHeight } = measureText(
|
|
13976
13988
|
nextText,
|
|
13977
13989
|
getFontString(element),
|
|
13978
13990
|
element.lineHeight
|
|
13979
13991
|
);
|
|
13992
|
+
if (!element.autoResize) {
|
|
13993
|
+
nextWidth = element.width;
|
|
13994
|
+
}
|
|
13980
13995
|
const { textAlign, verticalAlign } = element;
|
|
13981
13996
|
let x;
|
|
13982
13997
|
let y;
|
|
13983
|
-
if (textAlign === "center" && verticalAlign === VERTICAL_ALIGN.MIDDLE && !element.containerId) {
|
|
13998
|
+
if (textAlign === "center" && verticalAlign === VERTICAL_ALIGN.MIDDLE && !element.containerId && element.autoResize) {
|
|
13984
13999
|
const prevMetrics = measureText(
|
|
13985
14000
|
element.text,
|
|
13986
14001
|
getFontString(element),
|
|
@@ -14030,27 +14045,16 @@ var refreshTextDimensions = (textElement, container, elementsMap, text = textEle
|
|
|
14030
14045
|
if (textElement.isDeleted) {
|
|
14031
14046
|
return;
|
|
14032
14047
|
}
|
|
14033
|
-
if (container) {
|
|
14048
|
+
if (container || !textElement.autoResize) {
|
|
14034
14049
|
text = wrapText(
|
|
14035
14050
|
text,
|
|
14036
14051
|
getFontString(textElement),
|
|
14037
|
-
getBoundTextMaxWidth(container, textElement)
|
|
14052
|
+
container ? getBoundTextMaxWidth(container, textElement) : textElement.width
|
|
14038
14053
|
);
|
|
14039
14054
|
}
|
|
14040
14055
|
const dimensions = getAdjustedDimensions(textElement, elementsMap, text);
|
|
14041
14056
|
return { text, ...dimensions };
|
|
14042
14057
|
};
|
|
14043
|
-
var updateTextElement = (textElement, container, elementsMap, {
|
|
14044
|
-
text,
|
|
14045
|
-
isDeleted,
|
|
14046
|
-
originalText
|
|
14047
|
-
}) => {
|
|
14048
|
-
return newElementWith(textElement, {
|
|
14049
|
-
originalText,
|
|
14050
|
-
isDeleted: isDeleted ?? textElement.isDeleted,
|
|
14051
|
-
...refreshTextDimensions(textElement, container, elementsMap, originalText)
|
|
14052
|
-
});
|
|
14053
|
-
};
|
|
14054
14058
|
var newFreeDrawElement = (opts) => {
|
|
14055
14059
|
return {
|
|
14056
14060
|
..._newElementBase(opts.type, opts),
|
|
@@ -17691,7 +17695,7 @@ var exportToSvg = async (elements, appState, files, opts) => {
|
|
|
17691
17695
|
let metadata = "";
|
|
17692
17696
|
if (exportEmbedScene) {
|
|
17693
17697
|
try {
|
|
17694
|
-
metadata = await (await import("./image-
|
|
17698
|
+
metadata = await (await import("./image-Y5X7K6KW.js")).encodeSvgMetadata({
|
|
17695
17699
|
// when embedding scene, we want to embed the origionally supplied
|
|
17696
17700
|
// elements which don't contain the temp frame labels.
|
|
17697
17701
|
// But it also requires that the exportToSvg is being supplied with
|
|
@@ -17717,7 +17721,7 @@ var exportToSvg = async (elements, appState, files, opts) => {
|
|
|
17717
17721
|
}
|
|
17718
17722
|
let assetPath = "https://excalidraw.com/";
|
|
17719
17723
|
if (define_import_meta_env_default.VITE_IS_EXCALIDRAW_NPM_PACKAGE) {
|
|
17720
|
-
assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${define_import_meta_env_default.VITE_PKG_NAME}@${define_import_meta_env_default.
|
|
17724
|
+
assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${define_import_meta_env_default.VITE_PKG_NAME}@${define_import_meta_env_default.VITE_PKG_VERSION}`;
|
|
17721
17725
|
if (assetPath?.startsWith("/")) {
|
|
17722
17726
|
assetPath = assetPath.replace("/", `${window.location.origin}/`);
|
|
17723
17727
|
}
|
|
@@ -17909,6 +17913,7 @@ var restoreElement = (element) => {
|
|
|
17909
17913
|
verticalAlign: element.verticalAlign || DEFAULT_VERTICAL_ALIGN,
|
|
17910
17914
|
containerId: element.containerId ?? null,
|
|
17911
17915
|
originalText: element.originalText || text,
|
|
17916
|
+
autoResize: element.autoResize ?? true,
|
|
17912
17917
|
lineHeight
|
|
17913
17918
|
});
|
|
17914
17919
|
if (!text && !element.isDeleted) {
|
|
@@ -19720,7 +19725,16 @@ var Scene = class _Scene {
|
|
|
19720
19725
|
elements: null,
|
|
19721
19726
|
cache: /* @__PURE__ */ new Map()
|
|
19722
19727
|
};
|
|
19723
|
-
|
|
19728
|
+
/**
|
|
19729
|
+
* Random integer regenerated each scene update.
|
|
19730
|
+
*
|
|
19731
|
+
* Does not relate to elements versions, it's only a renderer
|
|
19732
|
+
* cache-invalidation nonce at the moment.
|
|
19733
|
+
*/
|
|
19734
|
+
sceneNonce;
|
|
19735
|
+
getSceneNonce() {
|
|
19736
|
+
return this.sceneNonce;
|
|
19737
|
+
}
|
|
19724
19738
|
getNonDeletedElementsMap() {
|
|
19725
19739
|
return this.nonDeletedElementsMap;
|
|
19726
19740
|
}
|
|
@@ -19765,9 +19779,6 @@ var Scene = class _Scene {
|
|
|
19765
19779
|
getElement(id) {
|
|
19766
19780
|
return this.elementsMap.get(id) || null;
|
|
19767
19781
|
}
|
|
19768
|
-
getVersionNonce() {
|
|
19769
|
-
return this.versionNonce;
|
|
19770
|
-
}
|
|
19771
19782
|
getNonDeletedElement(id) {
|
|
19772
19783
|
const element = this.getElement(id);
|
|
19773
19784
|
if (element && isNonDeletedElement(element)) {
|
|
@@ -19824,15 +19835,15 @@ var Scene = class _Scene {
|
|
|
19824
19835
|
this.nonDeletedElementsMap = nonDeletedElements.elementsMap;
|
|
19825
19836
|
this.frames = nextFrameLikes;
|
|
19826
19837
|
this.nonDeletedFramesLikes = getNonDeletedElements3(this.frames).elements;
|
|
19827
|
-
this.
|
|
19838
|
+
this.triggerUpdate();
|
|
19828
19839
|
}
|
|
19829
|
-
|
|
19830
|
-
this.
|
|
19840
|
+
triggerUpdate() {
|
|
19841
|
+
this.sceneNonce = randomInteger();
|
|
19831
19842
|
for (const callback of Array.from(this.callbacks)) {
|
|
19832
19843
|
callback();
|
|
19833
19844
|
}
|
|
19834
19845
|
}
|
|
19835
|
-
|
|
19846
|
+
onUpdate(cb) {
|
|
19836
19847
|
if (this.callbacks.has(cb)) {
|
|
19837
19848
|
throw new Error();
|
|
19838
19849
|
}
|
|
@@ -19965,11 +19976,11 @@ var mutateElement = (element, updates, informMutation = true) => {
|
|
|
19965
19976
|
element.versionNonce = randomInteger();
|
|
19966
19977
|
element.updated = getUpdatedTimestamp();
|
|
19967
19978
|
if (informMutation) {
|
|
19968
|
-
Scene_default.getScene(element)?.
|
|
19979
|
+
Scene_default.getScene(element)?.triggerUpdate();
|
|
19969
19980
|
}
|
|
19970
19981
|
return element;
|
|
19971
19982
|
};
|
|
19972
|
-
var newElementWith = (element, updates) => {
|
|
19983
|
+
var newElementWith = (element, updates, force = false) => {
|
|
19973
19984
|
let didChange = false;
|
|
19974
19985
|
for (const key in updates) {
|
|
19975
19986
|
const value = updates[key];
|
|
@@ -19981,7 +19992,7 @@ var newElementWith = (element, updates) => {
|
|
|
19981
19992
|
didChange = true;
|
|
19982
19993
|
}
|
|
19983
19994
|
}
|
|
19984
|
-
if (!didChange) {
|
|
19995
|
+
if (!didChange && !force) {
|
|
19985
19996
|
return element;
|
|
19986
19997
|
}
|
|
19987
19998
|
return {
|
|
@@ -20097,12 +20108,6 @@ var DEFAULT_OMIT_SIDES = {
|
|
|
20097
20108
|
n: true,
|
|
20098
20109
|
w: true
|
|
20099
20110
|
};
|
|
20100
|
-
var OMIT_SIDES_FOR_TEXT_ELEMENT = {
|
|
20101
|
-
e: true,
|
|
20102
|
-
s: true,
|
|
20103
|
-
n: true,
|
|
20104
|
-
w: true
|
|
20105
|
-
};
|
|
20106
20111
|
var OMIT_SIDES_FOR_LINE_SLASH = {
|
|
20107
20112
|
e: true,
|
|
20108
20113
|
s: true,
|
|
@@ -20263,8 +20268,6 @@ var getTransformHandles = (element, zoom, elementsMap, pointerType = "mouse", om
|
|
|
20263
20268
|
omitSides = OMIT_SIDES_FOR_LINE_BACKSLASH;
|
|
20264
20269
|
}
|
|
20265
20270
|
}
|
|
20266
|
-
} else if (isTextElement(element)) {
|
|
20267
|
-
omitSides = OMIT_SIDES_FOR_TEXT_ELEMENT;
|
|
20268
20271
|
} else if (isFrameLikeElement(element)) {
|
|
20269
20272
|
omitSides = {
|
|
20270
20273
|
...omitSides,
|
|
@@ -20327,7 +20330,7 @@ var resizeTest = (element, elementsMap, appState, x, y, zoom, pointerType, devic
|
|
|
20327
20330
|
element,
|
|
20328
20331
|
elementsMap
|
|
20329
20332
|
);
|
|
20330
|
-
if (
|
|
20333
|
+
if (!(isLinearElement(element) && element.points.length <= 2)) {
|
|
20331
20334
|
const SPACING = SIDE_RESIZING_THRESHOLD / zoom.value;
|
|
20332
20335
|
const sides = getSelectionBorders(
|
|
20333
20336
|
[x1 - SPACING, y1 - SPACING],
|
|
@@ -20477,8 +20480,9 @@ var transformElements = (originalElements, transformHandleType, selectedElements
|
|
|
20477
20480
|
shouldRotateWithDiscreteAngle2
|
|
20478
20481
|
);
|
|
20479
20482
|
updateBoundElements(element, elementsMap);
|
|
20480
|
-
} else if (isTextElement(element) &&
|
|
20483
|
+
} else if (isTextElement(element) && transformHandleType) {
|
|
20481
20484
|
resizeSingleTextElement(
|
|
20485
|
+
originalElements,
|
|
20482
20486
|
element,
|
|
20483
20487
|
elementsMap,
|
|
20484
20488
|
transformHandleType,
|
|
@@ -20580,7 +20584,7 @@ var measureFontSizeFromWidth = (element, elementsMap, nextWidth) => {
|
|
|
20580
20584
|
size: nextFontSize
|
|
20581
20585
|
};
|
|
20582
20586
|
};
|
|
20583
|
-
var resizeSingleTextElement = (element, elementsMap, transformHandleType, shouldResizeFromCenter2, pointerX, pointerY) => {
|
|
20587
|
+
var resizeSingleTextElement = (originalElements, element, elementsMap, transformHandleType, shouldResizeFromCenter2, pointerX, pointerY) => {
|
|
20584
20588
|
const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(
|
|
20585
20589
|
element,
|
|
20586
20590
|
elementsMap
|
|
@@ -20594,17 +20598,19 @@ var resizeSingleTextElement = (element, elementsMap, transformHandleType, should
|
|
|
20594
20598
|
);
|
|
20595
20599
|
let scaleX = 0;
|
|
20596
20600
|
let scaleY = 0;
|
|
20597
|
-
if (transformHandleType
|
|
20598
|
-
|
|
20599
|
-
|
|
20600
|
-
|
|
20601
|
-
|
|
20602
|
-
|
|
20603
|
-
|
|
20604
|
-
|
|
20605
|
-
|
|
20606
|
-
|
|
20607
|
-
|
|
20601
|
+
if (transformHandleType !== "e" && transformHandleType !== "w") {
|
|
20602
|
+
if (transformHandleType.includes("e")) {
|
|
20603
|
+
scaleX = (rotatedX - x1) / (x2 - x1);
|
|
20604
|
+
}
|
|
20605
|
+
if (transformHandleType.includes("w")) {
|
|
20606
|
+
scaleX = (x2 - rotatedX) / (x2 - x1);
|
|
20607
|
+
}
|
|
20608
|
+
if (transformHandleType.includes("n")) {
|
|
20609
|
+
scaleY = (y2 - rotatedY) / (y2 - y1);
|
|
20610
|
+
}
|
|
20611
|
+
if (transformHandleType.includes("s")) {
|
|
20612
|
+
scaleY = (rotatedY - y1) / (y2 - y1);
|
|
20613
|
+
}
|
|
20608
20614
|
}
|
|
20609
20615
|
const scale = Math.max(scaleX, scaleY);
|
|
20610
20616
|
if (scale > 0) {
|
|
@@ -20659,6 +20665,83 @@ var resizeSingleTextElement = (element, elementsMap, transformHandleType, should
|
|
|
20659
20665
|
y: nextY
|
|
20660
20666
|
});
|
|
20661
20667
|
}
|
|
20668
|
+
if (transformHandleType === "e" || transformHandleType === "w") {
|
|
20669
|
+
const stateAtResizeStart = originalElements.get(element.id);
|
|
20670
|
+
const [x12, y12, x22, y22] = getResizedElementAbsoluteCoords(
|
|
20671
|
+
stateAtResizeStart,
|
|
20672
|
+
stateAtResizeStart.width,
|
|
20673
|
+
stateAtResizeStart.height,
|
|
20674
|
+
true
|
|
20675
|
+
);
|
|
20676
|
+
const startTopLeft = [x12, y12];
|
|
20677
|
+
const startBottomRight = [x22, y22];
|
|
20678
|
+
const startCenter = centerPoint(startTopLeft, startBottomRight);
|
|
20679
|
+
const rotatedPointer = rotatePoint(
|
|
20680
|
+
[pointerX, pointerY],
|
|
20681
|
+
startCenter,
|
|
20682
|
+
-stateAtResizeStart.angle
|
|
20683
|
+
);
|
|
20684
|
+
const [esx1, , esx2] = getResizedElementAbsoluteCoords(
|
|
20685
|
+
element,
|
|
20686
|
+
element.width,
|
|
20687
|
+
element.height,
|
|
20688
|
+
true
|
|
20689
|
+
);
|
|
20690
|
+
const boundsCurrentWidth = esx2 - esx1;
|
|
20691
|
+
const atStartBoundsWidth = startBottomRight[0] - startTopLeft[0];
|
|
20692
|
+
const minWidth = getMinCharWidth(getFontString(element)) + BOUND_TEXT_PADDING * 2;
|
|
20693
|
+
let scaleX2 = atStartBoundsWidth / boundsCurrentWidth;
|
|
20694
|
+
if (transformHandleType.includes("e")) {
|
|
20695
|
+
scaleX2 = (rotatedPointer[0] - startTopLeft[0]) / boundsCurrentWidth;
|
|
20696
|
+
}
|
|
20697
|
+
if (transformHandleType.includes("w")) {
|
|
20698
|
+
scaleX2 = (startBottomRight[0] - rotatedPointer[0]) / boundsCurrentWidth;
|
|
20699
|
+
}
|
|
20700
|
+
const newWidth = element.width * scaleX2 < minWidth ? minWidth : element.width * scaleX2;
|
|
20701
|
+
const text = wrapText(
|
|
20702
|
+
element.originalText,
|
|
20703
|
+
getFontString(element),
|
|
20704
|
+
Math.abs(newWidth)
|
|
20705
|
+
);
|
|
20706
|
+
const metrics = measureText(
|
|
20707
|
+
text,
|
|
20708
|
+
getFontString(element),
|
|
20709
|
+
element.lineHeight
|
|
20710
|
+
);
|
|
20711
|
+
const eleNewHeight = metrics.height;
|
|
20712
|
+
const [newBoundsX1, newBoundsY1, newBoundsX2, newBoundsY2] = getResizedElementAbsoluteCoords(
|
|
20713
|
+
stateAtResizeStart,
|
|
20714
|
+
newWidth,
|
|
20715
|
+
eleNewHeight,
|
|
20716
|
+
true
|
|
20717
|
+
);
|
|
20718
|
+
const newBoundsWidth = newBoundsX2 - newBoundsX1;
|
|
20719
|
+
const newBoundsHeight = newBoundsY2 - newBoundsY1;
|
|
20720
|
+
let newTopLeft = [...startTopLeft];
|
|
20721
|
+
if (["n", "w", "nw"].includes(transformHandleType)) {
|
|
20722
|
+
newTopLeft = [
|
|
20723
|
+
startBottomRight[0] - Math.abs(newBoundsWidth),
|
|
20724
|
+
startTopLeft[1]
|
|
20725
|
+
];
|
|
20726
|
+
}
|
|
20727
|
+
const angle = stateAtResizeStart.angle;
|
|
20728
|
+
const rotatedTopLeft = rotatePoint(newTopLeft, startCenter, angle);
|
|
20729
|
+
const newCenter = [
|
|
20730
|
+
newTopLeft[0] + Math.abs(newBoundsWidth) / 2,
|
|
20731
|
+
newTopLeft[1] + Math.abs(newBoundsHeight) / 2
|
|
20732
|
+
];
|
|
20733
|
+
const rotatedNewCenter = rotatePoint(newCenter, startCenter, angle);
|
|
20734
|
+
newTopLeft = rotatePoint(rotatedTopLeft, rotatedNewCenter, -angle);
|
|
20735
|
+
const resizedElement = {
|
|
20736
|
+
width: Math.abs(newWidth),
|
|
20737
|
+
height: Math.abs(metrics.height),
|
|
20738
|
+
x: newTopLeft[0],
|
|
20739
|
+
y: newTopLeft[1],
|
|
20740
|
+
text,
|
|
20741
|
+
autoResize: false
|
|
20742
|
+
};
|
|
20743
|
+
mutateElement(element, resizedElement);
|
|
20744
|
+
}
|
|
20662
20745
|
};
|
|
20663
20746
|
var resizeSingleElement = (originalElements, shouldMaintainAspectRatio2, element, elementsMap, transformHandleDirection, shouldResizeFromCenter2, pointerX, pointerY) => {
|
|
20664
20747
|
const stateAtResizeStart = originalElements.get(element.id);
|
|
@@ -21050,7 +21133,7 @@ var resizeMultipleElements = (originalElements, selectedElements, elementsMap, t
|
|
|
21050
21133
|
handleBindTextResize(element, elementsMap, transformHandleType, true);
|
|
21051
21134
|
}
|
|
21052
21135
|
}
|
|
21053
|
-
Scene_default.getScene(elementsAndUpdates[0].element)?.
|
|
21136
|
+
Scene_default.getScene(elementsAndUpdates[0].element)?.triggerUpdate();
|
|
21054
21137
|
};
|
|
21055
21138
|
var rotateMultipleElements = (originalElements, elements, elementsMap, pointerX, pointerY, shouldRotateWithDiscreteAngle2, centerX, centerY) => {
|
|
21056
21139
|
let centerAngle = 5 * Math.PI / 2 + Math.atan2(pointerY - centerY, pointerX - centerX);
|
|
@@ -21095,7 +21178,7 @@ var rotateMultipleElements = (originalElements, elements, elementsMap, pointerX,
|
|
|
21095
21178
|
);
|
|
21096
21179
|
}
|
|
21097
21180
|
});
|
|
21098
|
-
Scene_default.getScene(elements[0])?.
|
|
21181
|
+
Scene_default.getScene(elements[0])?.triggerUpdate();
|
|
21099
21182
|
};
|
|
21100
21183
|
var getResizeOffsetXY = (transformHandleType, selectedElements, elementsMap, x, y) => {
|
|
21101
21184
|
const [x1, y1, x2, y2] = selectedElements.length === 1 ? getElementAbsoluteCoords(selectedElements[0], elementsMap) : getCommonBounds(selectedElements);
|
|
@@ -21289,7 +21372,7 @@ var parseFileContents = async (blob) => {
|
|
|
21289
21372
|
let contents;
|
|
21290
21373
|
if (blob.type === MIME_TYPES.png) {
|
|
21291
21374
|
try {
|
|
21292
|
-
return await (await import("./image-
|
|
21375
|
+
return await (await import("./image-Y5X7K6KW.js")).decodePngMetadata(blob);
|
|
21293
21376
|
} catch (error) {
|
|
21294
21377
|
if (error.message === "INVALID") {
|
|
21295
21378
|
throw new ImageSceneDataError(
|
|
@@ -21316,7 +21399,7 @@ var parseFileContents = async (blob) => {
|
|
|
21316
21399
|
}
|
|
21317
21400
|
if (blob.type === MIME_TYPES.svg) {
|
|
21318
21401
|
try {
|
|
21319
|
-
return await (await import("./image-
|
|
21402
|
+
return await (await import("./image-Y5X7K6KW.js")).decodeSvgMetadata({
|
|
21320
21403
|
svg: contents
|
|
21321
21404
|
});
|
|
21322
21405
|
} catch (error) {
|
|
@@ -22037,7 +22120,6 @@ export {
|
|
|
22037
22120
|
newMagicFrameElement,
|
|
22038
22121
|
newTextElement,
|
|
22039
22122
|
refreshTextDimensions,
|
|
22040
|
-
updateTextElement,
|
|
22041
22123
|
newFreeDrawElement,
|
|
22042
22124
|
newLinearElement,
|
|
22043
22125
|
newImageElement,
|
|
@@ -22189,4 +22271,4 @@ export {
|
|
|
22189
22271
|
getNormalizedZoom,
|
|
22190
22272
|
getStateForZoom
|
|
22191
22273
|
};
|
|
22192
|
-
//# sourceMappingURL=chunk-
|
|
22274
|
+
//# sourceMappingURL=chunk-Q6NFAEKN.js.map
|