@excalidraw/common 0.18.0-c6f8ef9 → 0.18.0-d1cff91
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/dev/index.js +1522 -239
- package/dist/dev/index.js.map +4 -4
- package/dist/prod/index.js +3 -3
- package/dist/types/common/debug.d.ts +21 -0
- package/dist/types/common/src/bounds.d.ts +10 -0
- package/dist/types/common/src/colors.d.ts +59 -39
- package/dist/types/common/src/constants.d.ts +38 -27
- package/dist/types/common/src/editorInterface.d.ts +34 -0
- package/dist/types/common/src/font-metadata.d.ts +1 -3
- package/dist/types/common/src/index.d.ts +3 -0
- package/dist/types/common/src/keys.d.ts +1 -1
- package/dist/types/common/src/utility-types.d.ts +0 -1
- package/dist/types/common/src/utils.d.ts +53 -39
- package/dist/types/element/src/Scene.d.ts +6 -4
- package/dist/types/element/src/arrows/focus.d.ts +27 -0
- package/dist/types/element/src/arrows/helpers.d.ts +5 -0
- package/dist/types/element/src/binding.d.ts +67 -48
- package/dist/types/element/src/bounds.d.ts +3 -11
- package/dist/types/element/src/collision.d.ts +7 -2
- package/dist/types/element/src/comparisons.d.ts +7 -7
- package/dist/types/element/src/delta.d.ts +0 -1
- package/dist/types/element/src/distribute.d.ts +2 -1
- package/dist/types/element/src/dragElements.d.ts +3 -3
- package/dist/types/element/src/duplicate.d.ts +3 -3
- package/dist/types/element/src/elbowArrow.d.ts +2 -0
- package/dist/types/element/src/fractionalIndex.d.ts +2 -2
- package/dist/types/element/src/frame.d.ts +7 -3
- package/dist/types/element/src/heading.d.ts +2 -1
- package/dist/types/element/src/image.d.ts +1 -11
- package/dist/types/element/src/index.d.ts +4 -3
- package/dist/types/element/src/linearElementEditor.d.ts +21 -20
- package/dist/types/element/src/mutateElement.d.ts +5 -1
- package/dist/types/element/src/newElement.d.ts +6 -6
- package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
- package/dist/types/element/src/renderElement.d.ts +4 -7
- package/dist/types/element/src/resizeElements.d.ts +10 -10
- package/dist/types/element/src/resizeTest.d.ts +6 -5
- package/dist/types/element/src/selection.d.ts +3 -7
- package/dist/types/element/src/shape.d.ts +8 -7
- package/dist/types/element/src/textElement.d.ts +1 -1
- package/dist/types/element/src/textMeasurements.d.ts +1 -3
- package/dist/types/{excalidraw/data → element/src}/transform.d.ts +3 -3
- package/dist/types/element/src/transformHandles.d.ts +8 -27
- package/dist/types/element/src/typeChecks.d.ts +4 -7
- package/dist/types/element/src/types.d.ts +8 -12
- package/dist/types/element/src/utils.d.ts +8 -3
- package/dist/types/element/src/zindex.d.ts +7 -1
- package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +162 -202
- package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -7
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +85 -112
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +509 -853
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +119 -887
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +41 -55
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +139 -183
- package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +3 -4
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +51 -71
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +84 -111
- package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +57 -71
- package/dist/types/excalidraw/actions/actionExport.d.ts +181 -1141
- package/dist/types/excalidraw/actions/actionFinalize.d.ts +10 -394
- package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -3
- package/dist/types/excalidraw/actions/actionFrame.d.ts +288 -379
- package/dist/types/excalidraw/actions/actionGroup.d.ts +88 -123
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +176 -228
- package/dist/types/excalidraw/actions/actionLink.d.ts +57 -71
- package/dist/types/excalidraw/actions/actionMenu.d.ts +46 -432
- package/dist/types/excalidraw/actions/actionNavigate.d.ts +18 -359
- package/dist/types/excalidraw/actions/actionProperties.d.ts +144 -2501
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +44 -62
- package/dist/types/excalidraw/actions/actionStyles.d.ts +41 -55
- package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +3 -3
- package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +172 -0
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +57 -71
- package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +172 -0
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +57 -71
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +45 -65
- package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +56 -70
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +57 -71
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +57 -71
- package/dist/types/excalidraw/actions/actionZindex.d.ts +8 -9
- package/dist/types/excalidraw/actions/index.d.ts +4 -2
- package/dist/types/excalidraw/actions/register.d.ts +2 -2
- package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
- package/dist/types/excalidraw/actions/types.d.ts +4 -4
- package/dist/types/excalidraw/appState.d.ts +28 -21
- package/dist/types/excalidraw/charts/charts.bar.d.ts +2 -0
- package/dist/types/excalidraw/charts/charts.constants.d.ts +48 -0
- package/dist/types/excalidraw/charts/charts.helpers.d.ts +32 -0
- package/dist/types/excalidraw/charts/charts.line.d.ts +2 -0
- package/dist/types/excalidraw/charts/charts.parse.d.ts +10 -0
- package/dist/types/excalidraw/charts/charts.radar.d.ts +2 -0
- package/dist/types/excalidraw/charts/charts.types.d.ts +18 -0
- package/dist/types/excalidraw/charts/index.d.ts +7 -0
- package/dist/types/excalidraw/clipboard.d.ts +58 -19
- package/dist/types/excalidraw/components/Actions.d.ts +22 -5
- package/dist/types/excalidraw/components/App.d.ts +74 -66
- package/dist/types/excalidraw/components/Card.d.ts +1 -3
- package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
- package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +0 -1
- package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +2 -0
- package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +2 -1
- package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +2 -1
- package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +0 -1
- package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
- package/dist/types/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -0
- package/dist/types/excalidraw/components/CommandPalette/types.d.ts +2 -4
- package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
- package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
- package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
- package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
- package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +1 -2
- package/dist/types/excalidraw/components/EyeDropper.d.ts +0 -1
- package/dist/types/excalidraw/components/FilledButton.d.ts +2 -1
- package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
- package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +3 -1
- package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
- package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
- package/dist/types/excalidraw/components/HintViewer.d.ts +4 -3
- package/dist/types/excalidraw/components/InlineIcon.d.ts +3 -1
- package/dist/types/excalidraw/components/LayerUI.d.ts +2 -1
- package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
- package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
- package/dist/types/excalidraw/components/LibraryMenuSection.d.ts +1 -1
- package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -3
- package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
- package/dist/types/excalidraw/components/MobileMenu.d.ts +3 -5
- package/dist/types/excalidraw/components/MobileToolBar.d.ts +10 -0
- package/dist/types/excalidraw/components/Modal.d.ts +0 -1
- package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
- package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
- package/dist/types/excalidraw/components/Popover.d.ts +2 -1
- package/dist/types/excalidraw/components/PropertiesPopover.d.ts +2 -1
- package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
- package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
- package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
- package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +15 -21
- package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
- package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
- package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
- package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
- package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
- package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
- package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
- package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
- package/dist/types/excalidraw/components/Stats/DragInput.d.ts +0 -1
- package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
- package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
- package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +23 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +27 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
- package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
- package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +12 -29
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +2 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +2 -3
- package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
- package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +9 -0
- package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
- package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
- package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
- package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
- package/dist/types/excalidraw/components/TTDDialog/types.d.ts +95 -0
- package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/TTDStreamFetch.d.ts +24 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
- package/dist/types/excalidraw/components/TextField.d.ts +1 -0
- package/dist/types/excalidraw/components/Toast.d.ts +3 -3
- package/dist/types/excalidraw/components/ToolPopover.d.ts +25 -0
- package/dist/types/excalidraw/components/Trans.d.ts +2 -2
- package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +6 -3
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +47 -35
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +7 -5
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +13 -22
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +0 -1
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSub.d.ts +23 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubContent.d.ts +8 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +12 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
- package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +2 -2
- package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
- package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
- package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -1
- package/dist/types/excalidraw/components/icons.d.ts +32 -13
- package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +4 -3
- package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +19 -2
- package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +39 -35
- package/dist/types/excalidraw/components/shapes.d.ts +202 -1
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +6 -6
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +15 -16
- package/dist/types/excalidraw/data/blob.d.ts +326 -10
- package/dist/types/excalidraw/data/encode.d.ts +4 -4
- package/dist/types/excalidraw/data/encryption.d.ts +5 -5
- package/dist/types/excalidraw/data/filesystem.d.ts +2 -2
- package/dist/types/excalidraw/data/index.d.ts +3 -3
- package/dist/types/excalidraw/data/json.d.ts +160 -2
- package/dist/types/excalidraw/data/library.d.ts +24 -9
- package/dist/types/excalidraw/data/restore.d.ts +25 -10
- package/dist/types/excalidraw/data/types.d.ts +4 -1
- package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
- package/dist/types/excalidraw/errors.d.ts +14 -0
- package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
- package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +4 -3
- package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
- package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
- package/dist/types/excalidraw/i18n.d.ts +2 -2
- package/dist/types/excalidraw/index.d.ts +8 -7
- package/dist/types/excalidraw/renderer/animation.d.ts +12 -0
- package/dist/types/excalidraw/renderer/helpers.d.ts +6 -8
- package/dist/types/excalidraw/renderer/interactiveScene.d.ts +8 -14
- package/dist/types/excalidraw/scene/Renderer.d.ts +5 -2
- package/dist/types/excalidraw/scene/export.d.ts +2 -2
- package/dist/types/excalidraw/scene/scroll.d.ts +1 -6
- package/dist/types/excalidraw/scene/types.d.ts +22 -5
- package/dist/types/excalidraw/shortcut.d.ts +1 -0
- package/dist/types/excalidraw/snapping.d.ts +5 -5
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
- package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
- package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
- package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
- package/dist/types/excalidraw/types.d.ts +52 -29
- package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +2 -2
- package/dist/types/math/src/point.d.ts +6 -1
- package/dist/types/math/src/polygon.d.ts +2 -2
- package/dist/types/math/src/range.d.ts +1 -3
- package/dist/types/math/src/segment.d.ts +4 -3
- package/dist/types/math/src/types.d.ts +25 -1
- package/dist/types/utils/src/bbox.d.ts +1 -1
- package/dist/types/utils/src/export.d.ts +5 -5
- package/dist/types/utils/src/shape.d.ts +6 -6
- package/dist/types/utils/src/withinBounds.d.ts +2 -2
- package/package.json +7 -1
- package/dist/types/excalidraw/charts.d.ts +0 -27
package/dist/prod/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var he=Object.create;var Y=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var Le=Object.getPrototypeOf,Se=Object.prototype.hasOwnProperty;var Re=(e,t)=>()=>(e&&(t=e(e=0)),t);var V=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Oe=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ge(t))!Se.call(e,s)&&s!==n&&Y(e,s,{get:()=>t[s],enumerable:!(r=ye(t,s))||r.enumerable});return e};var X=(e,t,n)=>(n=e!=null?he(Le(e)):{},Oe(t||!e||!e.__esModule?Y(n,"default",{value:e,enumerable:!0}):n,e));var f,c=Re(()=>{f={PROD:!0}});var le=V((G,ae)=>{c();(function(e,t){typeof define=="function"&&define.amd?define([],t):typeof G=="object"?ae.exports=t():(e.PromisePool=t(),e.promisePool=e.PromisePool)})(G,function(){"use strict";var e=function(){this._listeners={}};e.prototype.addEventListener=function(o,a){this._listeners[o]=this._listeners[o]||[],this._listeners[o].indexOf(a)<0&&this._listeners[o].push(a)},e.prototype.removeEventListener=function(o,a){if(this._listeners[o]){var p=this._listeners[o].indexOf(a);p>=0&&this._listeners[o].splice(p,1)}},e.prototype.dispatchEvent=function(o){if(this._listeners[o.type]&&this._listeners[o.type].length)for(var a=this._listeners[o.type].slice(),p=0,m=a.length;p<m;++p)a[p].call(this,o)};var t=function(o){return typeof o.constructor=="function"&&o.constructor.name==="GeneratorFunction"},n=function(o){return{next:function(){var a=o();return a?{value:a}:{done:!0}}}},r=function(o){var a=!1;return{next:function(){return a?{done:!0}:(a=!0,{value:o})}}},s=function(o,a){var p=typeof o;if(p==="object"){if(typeof o.next=="function")return o;if(typeof o.then=="function")return r(o)}return p==="function"?t(o)?o():n(o):r(a.resolve(o))},l=function(o,a,p){this.target=o,this.type=a,this.data=p},i=function(o,a,p){if(e.call(this),typeof a!="number"||Math.floor(a)!==a||a<1)throw new Error("Invalid concurrency");this._concurrency=a,this._options=p||{},this._options.promise=this._options.promise||Promise,this._iterator=s(o,this._options.promise),this._done=!1,this._size=0,this._promise=null,this._callbacks=null};return i.prototype=new e,i.prototype.constructor=i,i.prototype.concurrency=function(o){return typeof o<"u"&&(this._concurrency=o,this.active()&&this._proceed()),this._concurrency},i.prototype.size=function(){return this._size},i.prototype.active=function(){return!!this._promise},i.prototype.promise=function(){return this._promise},i.prototype.start=function(){var o=this,a=this._options.promise;return this._promise=new a(function(p,m){o._callbacks={reject:m,resolve:p},o._proceed()}),this._promise},i.prototype._fireEvent=function(o,a){this.dispatchEvent(new l(this,o,a))},i.prototype._settle=function(o){o?this._callbacks.reject(o):this._callbacks.resolve(),this._promise=null,this._callbacks=null},i.prototype._onPooledPromiseFulfilled=function(o,a){this._size--,this.active()&&(this._fireEvent("fulfilled",{promise:o,result:a}),this._proceed())},i.prototype._onPooledPromiseRejected=function(o,a){this._size--,this.active()&&(this._fireEvent("rejected",{promise:o,error:a}),this._settle(a||new Error("Unknown error")))},i.prototype._trackPromise=function(o){var a=this;o.then(function(p){a._onPooledPromiseFulfilled(o,p)},function(p){a._onPooledPromiseRejected(o,p)}).catch(function(p){a._settle(new Error("Promise processing failed: "+p))})},i.prototype._proceed=function(){if(!this._done){for(var o={done:!1};this._size<this._concurrency&&!(o=this._iterator.next()).done;)this._size++,this._trackPromise(o.value);this._done=o===null||!!o.done}this._done&&this._size===0&&this._settle()},i.PromisePoolEvent=l,i.PromisePool=i,i})});var be=V(U=>{"use strict";c();Object.defineProperty(U,"__esModule",{value:!0});U.sanitizeUrl=void 0;var tt=/^([^\w]*)(javascript|data|vbscript)/im,nt=/&#(\w+)(^\w|;)?/g,rt=/&(newline|tab);/gi,ot=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,st=/^.+(:|:)/gim,it=[".","/"];function at(e){return it.indexOf(e[0])>-1}function lt(e){return e.replace(nt,function(t,n){return String.fromCharCode(n)})}function ct(e){var t=lt(e||"").replace(rt,"").replace(ot,"").trim();if(!t)return"about:blank";if(at(t))return t;var n=t.match(st);if(!n)return t;var r=n[0];return tt.test(r)?"about:blank":t}U.sanitizeUrl=ct});c();c();var $=class{constructor(t){this.scoreFunction=t}content=[];sinkDown(t){let n=this.content[t];for(;t>0;){let r=(t+1>>1)-1,s=this.content[r];if(this.scoreFunction(n)<this.scoreFunction(s))this.content[r]=n,this.content[t]=s,t=r;else break}}bubbleUp(t){let n=this.content.length,r=this.content[t],s=this.scoreFunction(r);for(;;){let l=t+1<<1,i=l-1,o=null,a=0;if(i<n){let p=this.content[i];a=this.scoreFunction(p),a<s&&(o=i)}if(l<n){let p=this.content[l];this.scoreFunction(p)<(o===null?s:a)&&(o=l)}if(o!==null)this.content[t]=this.content[o],this.content[o]=r,t=o;else break}}push(t){this.content.push(t),this.sinkDown(this.content.length-1)}pop(){if(this.content.length===0)return null;let t=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.bubbleUp(0)),t}remove(t){if(this.content.length===0)return;let n=this.content.indexOf(t),r=this.content.pop();n<this.content.length&&(this.content[n]=r,this.scoreFunction(r)<this.scoreFunction(t)?this.sinkDown(n):this.bubbleUp(n))}size(){return this.content.length}rescoreElement(t){this.sinkDown(this.content.indexOf(t))}};c();var z={white:"#ffffff",black:"#000000",gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]};var xt=240,Fe=(e,t)=>t.reduce((n,r)=>(r in e&&(n[r]=e[r]),n),{}),bt=5,_t=5,At=4,C=4,F=1,E=[0,2,4,6,8],ht=[0,1,2,3,4],x=(e,t)=>t.map(n=>z[e][n]),u={transparent:"transparent",black:"#1e1e1e",white:"#ffffff",gray:x("gray",E),red:x("red",E),pink:x("pink",E),grape:x("grape",E),violet:x("violet",E),blue:x("blue",E),cyan:x("cyan",E),teal:x("teal",E),green:x("green",E),yellow:x("yellow",E),orange:x("orange",E),bronze:["#f8f1ee","#eaddd7","#d2bab0","#a18072","#846358"]},j=Fe(u,["cyan","blue","violet","grape","pink","green","teal","yellow","orange","red"]),yt=[u.black,u.red[C],u.green[C],u.blue[C],u.yellow[C]],gt=[u.transparent,u.red[F],u.green[F],u.blue[F],u.yellow[F]],Lt=[u.white,"#f8f9fa","#f5faff","#fffce8","#fdf8f6"],St={transparent:u.transparent,white:u.white,gray:u.gray,black:u.black,bronze:u.bronze,...j},Rt={transparent:u.transparent,white:u.white,gray:u.gray,black:u.black,bronze:u.bronze,...j},Ot=e=>[u.cyan[e],u.blue[e],u.violet[e],u.grape[e],u.pink[e],u.green[e],u.teal[e],u.yellow[e],u.orange[e],u.red[e]],vt=(e,t,n)=>`#${((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1)}`;c();var w=/Mac|iPod|iPhone|iPad/.test(navigator.platform),It=/^Win/.test(navigator.platform),Mt=/\b(android)\b/i.test(navigator.userAgent),Pt=typeof window<"u"&&"netscape"in window&&navigator.userAgent.indexOf("rv:")>1&&navigator.userAgent.indexOf("Gecko")>1,we=navigator.userAgent.indexOf("Chrome")!==-1,Dt=!we&&navigator.userAgent.indexOf("Safari")!==-1,Ut=/iPad|iPhone/.test(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,Nt=()=>navigator.brave?.isBrave?.name==="isBrave",kt=typeof window<"u"&&"ResizeObserver"in window,Ht="Excalidraw",Kt=36,Bt=10,Gt=20,Wt=8,Yt=5,Vt=1,Xt=30,$t=Math.PI/12,zt="red",jt={TEXT:"text",CROSSHAIR:"crosshair",GRABBING:"grabbing",GRAB:"grab",POINTER:"pointer",MOVE:"move",AUTO:""},Zt={MAIN:0,WHEEL:1,SECONDARY:2,TOUCH:-1,ERASER:5},qt={enabled:"all",disabled:"none",inheritFromUI:"var(--ui-pointerEvents)"},Ie=(d=>(d.COPY="copy",d.PASTE="paste",d.CUT="cut",d.KEYDOWN="keydown",d.KEYUP="keyup",d.MOUSE_MOVE="mousemove",d.RESIZE="resize",d.UNLOAD="unload",d.FOCUS="focus",d.BLUR="blur",d.DRAG_OVER="dragover",d.DROP="drop",d.GESTURE_END="gestureend",d.BEFORE_UNLOAD="beforeunload",d.GESTURE_START="gesturestart",d.GESTURE_CHANGE="gesturechange",d.POINTER_MOVE="pointermove",d.POINTER_DOWN="pointerdown",d.POINTER_UP="pointerup",d.STATE_CHANGE="statechange",d.WHEEL="wheel",d.TOUCH_START="touchstart",d.TOUCH_END="touchend",d.HASHCHANGE="hashchange",d.VISIBILITY_CHANGE="visibilitychange",d.SCROLL="scroll",d.EXCALIDRAW_LINK="excalidraw-link",d.MENU_ITEM_SELECT="menu.itemSelect",d.MESSAGE="message",d.FULLSCREENCHANGE="fullscreenchange",d))(Ie||{}),Qt={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},I={TEST:"test",DEVELOPMENT:"development",PRODUCTION:"production"},Jt={SHAPE_ACTIONS_MENU:"App-menu__left",ZOOM_ACTIONS:"zoom-actions",SEARCH_MENU_INPUT_WRAPPER:"layer-ui__search-inputWrapper",CONVERT_ELEMENT_TYPE_POPUP:"ConvertElementTypePopup"},q="Xiaolai",L="Segoe UI Emoji",T={Virgil:1,Helvetica:2,Cascadia:3,Excalifont:5,Nunito:6,"Lilita One":7,"Comic Shanns":8,"Liberation Sans":9,Assistant:10},Q="sans-serif",J="monospace",Me={[Q]:998,[J]:999},B={[q]:100,...Me,[L]:1e3};function Pe(e){switch(e){case T.Cascadia:case T["Comic Shanns"]:return J;default:return Q}}var ee=e=>{let t=Pe(e);switch(e){case T.Excalifont:return[q,t,L];default:return[t,L]}},en={LIGHT:"light",DARK:"dark"},tn={strokeColor:"#bbb",strokeWidth:2,strokeStyle:"solid",fillStyle:"solid",roughness:0,roundness:null,backgroundColor:"transparent",radius:8,nameOffsetY:3,nameColorLightTheme:"#999999",nameColorDarkTheme:"#7a7a7a",nameFontSize:14,nameLineHeight:1.25},nn=1,rn=20,on=T.Excalifont,sn="left",an="top",te="{version}",De=2,Ue=2*De,Ne=1e-5,ln=2*Ue-Ne,cn="#ffffff",un="#1e1e1e",pn="#a2f1a6",dn=["selectAll"],fn=20,Tn=5,ne={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",gif:"image/gif",webp:"image/webp",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif",jfif:"image/jfif"},Z={text:"text/plain",html:"text/html",json:"application/json",excalidraw:"application/vnd.excalidraw+json",excalidrawlib:"application/vnd.excalidrawlib+json","excalidraw.svg":"image/svg+xml","excalidraw.png":"image/png",binary:"application/octet-stream",...ne},mn=[Z.text,Z.html,...Object.values(ne)],En={png:"png",svg:"svg",clipboard:"clipboard"},xn={excalidraw:"excalidraw",excalidrawClipboard:"excalidraw/clipboard",excalidrawLibrary:"excalidrawlib",excalidrawClipboardWithAPI:"excalidraw-api/clipboard"},bn=()=>window.EXCALIDRAW_EXPORT_SOURCE||window.location.origin,_n=500,An=300,hn=500,yn=1e4,gn=3e4,Ln=100,Sn=.1,Rn=.1,On=30,vn=300,Cn=6e4,Fn=3e3,wn="invert(93%) hue-rotate(180deg)",In={addLibrary:"addLibrary"},Mn={addLibrary:"addLibrary"},Pn={canvasActions:{changeViewBackgroundColor:!0,clearCanvas:!0,export:{saveFileToDisk:!0},loadScene:!0,saveToActiveFile:!0,toggleTheme:null,saveAsImage:!0},tools:{image:!0}},Dn=730,Un=1e3,Nn=500,kn=1229,Hn=2,Kn=[1,2,3],Bn=10,Gn=1440,Wn=4*1024*1024,Yn="http://www.w3.org/2000/svg",Vn=`<?xml version="1.0" standalone="no"?>
|
|
1
|
+
var je=Object.create;var ne=Object.defineProperty;var qe=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Qe=Object.getPrototypeOf,Je=Object.prototype.hasOwnProperty;var et=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var tt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ze(t))!Je.call(e,o)&&o!==n&&ne(e,o,{get:()=>t[o],enumerable:!(r=qe(t,o))||r.enumerable});return e};var oe=(e,t,n)=>(n=e!=null?je(Qe(e)):{},tt(t||!e||!e.__esModule?ne(n,"default",{value:e,enumerable:!0}):n,e));var h,f=et(()=>{h={PROD:!0}});var De=re((Q,Ce)=>{f();(function(e,t){typeof define=="function"&&define.amd?define([],t):typeof Q=="object"?Ce.exports=t():(e.PromisePool=t(),e.promisePool=e.PromisePool)})(Q,function(){"use strict";var e=function(){this._listeners={}};e.prototype.addEventListener=function(s,l){this._listeners[s]=this._listeners[s]||[],this._listeners[s].indexOf(l)<0&&this._listeners[s].push(l)},e.prototype.removeEventListener=function(s,l){if(this._listeners[s]){var u=this._listeners[s].indexOf(l);u>=0&&this._listeners[s].splice(u,1)}},e.prototype.dispatchEvent=function(s){if(this._listeners[s.type]&&this._listeners[s.type].length)for(var l=this._listeners[s.type].slice(),u=0,p=l.length;u<p;++u)l[u].call(this,s)};var t=function(s){return typeof s.constructor=="function"&&s.constructor.name==="GeneratorFunction"},n=function(s){return{next:function(){var l=s();return l?{value:l}:{done:!0}}}},r=function(s){var l=!1;return{next:function(){return l?{done:!0}:(l=!0,{value:s})}}},o=function(s,l){var u=typeof s;if(u==="object"){if(typeof s.next=="function")return s;if(typeof s.then=="function")return r(s)}return u==="function"?t(s)?s():n(s):r(l.resolve(s))},a=function(s,l,u){this.target=s,this.type=l,this.data=u},i=function(s,l,u){if(e.call(this),typeof l!="number"||Math.floor(l)!==l||l<1)throw new Error("Invalid concurrency");this._concurrency=l,this._options=u||{},this._options.promise=this._options.promise||Promise,this._iterator=o(s,this._options.promise),this._done=!1,this._size=0,this._promise=null,this._callbacks=null};return i.prototype=new e,i.prototype.constructor=i,i.prototype.concurrency=function(s){return typeof s<"u"&&(this._concurrency=s,this.active()&&this._proceed()),this._concurrency},i.prototype.size=function(){return this._size},i.prototype.active=function(){return!!this._promise},i.prototype.promise=function(){return this._promise},i.prototype.start=function(){var s=this,l=this._options.promise;return this._promise=new l(function(u,p){s._callbacks={reject:p,resolve:u},s._proceed()}),this._promise},i.prototype._fireEvent=function(s,l){this.dispatchEvent(new a(this,s,l))},i.prototype._settle=function(s){s?this._callbacks.reject(s):this._callbacks.resolve(),this._promise=null,this._callbacks=null},i.prototype._onPooledPromiseFulfilled=function(s,l){this._size--,this.active()&&(this._fireEvent("fulfilled",{promise:s,result:l}),this._proceed())},i.prototype._onPooledPromiseRejected=function(s,l){this._size--,this.active()&&(this._fireEvent("rejected",{promise:s,error:l}),this._settle(l||new Error("Unknown error")))},i.prototype._trackPromise=function(s){var l=this;s.then(function(u){l._onPooledPromiseFulfilled(s,u)},function(u){l._onPooledPromiseRejected(s,u)}).catch(function(u){l._settle(new Error("Promise processing failed: "+u))})},i.prototype._proceed=function(){if(!this._done){for(var s={done:!1};this._size<this._concurrency&&!(s=this._iterator.next()).done;)this._size++,this._trackPromise(s.value);this._done=s===null||!!s.done}this._done&&this._size===0&&this._settle()},i.PromisePoolEvent=a,i.PromisePool=i,i})});var Ye=re(Y=>{"use strict";f();Object.defineProperty(Y,"__esModule",{value:!0});Y.sanitizeUrl=void 0;var sn=/^([^\w]*)(javascript|data|vbscript)/im,ln=/&#(\w+)(^\w|;)?/g,cn=/&(newline|tab);/gi,un=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,fn=/^.+(:|:)/gim,dn=[".","/"];function pn(e){return dn.indexOf(e[0])>-1}function mn(e){return e.replace(ln,function(t,n){return String.fromCharCode(n)})}function hn(e){var t=mn(e||"").replace(cn,"").replace(un,"").trim();if(!t)return"about:blank";if(pn(t))return t;var n=t.match(fn);if(!n)return t;var r=n[0];return sn.test(r)?"about:blank":t}Y.sanitizeUrl=hn});f();f();var ae=class{constructor(t){this.scoreFunction=t}content=[];sinkDown(t){let n=this.content[t],r=this.scoreFunction(n);for(;t>0;){let o=(t+1>>1)-1,a=this.content[o];if(r<this.scoreFunction(a))this.content[t]=a,t=o;else break}this.content[t]=n}bubbleUp(t){let n=this.content.length,r=this.content[t],o=this.scoreFunction(r);for(;;){let a=(t+1<<1)-1,i=a+1,s=t,l=o;if(a<n){let u=this.scoreFunction(this.content[a]);u<l&&(s=a,l=u)}if(i<n&&this.scoreFunction(this.content[i])<l&&(s=i),s===t)break;this.content[t]=this.content[s],t=s}this.content[t]=r}push(t){this.content.push(t),this.sinkDown(this.content.length-1)}pop(){if(this.content.length===0)return null;let t=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.bubbleUp(0)),t}remove(t){if(this.content.length===0)return;let n=this.content.indexOf(t),r=this.content.pop();n<this.content.length&&(this.content[n]=r,this.scoreFunction(r)<this.scoreFunction(t)?this.sinkDown(n):this.bubbleUp(n))}size(){return this.content.length}rescoreElement(t){this.sinkDown(this.content.indexOf(t))}};f();var xn=e=>Array.isArray(e)&&e.length===4&&typeof e[0]=="number"&&typeof e[1]=="number"&&typeof e[2]=="number"&&typeof e[3]=="number";f();f();function k(e){"@babel/helpers - typeof";return k=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},k(e)}var rt=/^\s+/,ot=/\s+$/;function c(e,t){if(e=e||"",t=t||{},e instanceof c)return e;if(!(this instanceof c))return new c(e,t);var n=at(e);this._originalInput=e,this._r=n.r,this._g=n.g,this._b=n.b,this._a=n.a,this._roundA=Math.round(100*this._a)/100,this._format=t.format||n.format,this._gradientType=t.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=n.ok}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},getLuminance:function(){var t=this.toRgb(),n,r,o,a,i,s;return n=t.r/255,r=t.g/255,o=t.b/255,n<=.03928?a=n/12.92:a=Math.pow((n+.055)/1.055,2.4),r<=.03928?i=r/12.92:i=Math.pow((r+.055)/1.055,2.4),o<=.03928?s=o/12.92:s=Math.pow((o+.055)/1.055,2.4),.2126*a+.7152*i+.0722*s},setAlpha:function(t){return this._a=de(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=ie(this._r,this._g,this._b);return{h:t.h*360,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=ie(this._r,this._g,this._b),n=Math.round(t.h*360),r=Math.round(t.s*100),o=Math.round(t.v*100);return this._a==1?"hsv("+n+", "+r+"%, "+o+"%)":"hsva("+n+", "+r+"%, "+o+"%, "+this._roundA+")"},toHsl:function(){var t=se(this._r,this._g,this._b);return{h:t.h*360,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=se(this._r,this._g,this._b),n=Math.round(t.h*360),r=Math.round(t.s*100),o=Math.round(t.l*100);return this._a==1?"hsl("+n+", "+r+"%, "+o+"%)":"hsla("+n+", "+r+"%, "+o+"%, "+this._roundA+")"},toHex:function(t){return le(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return ct(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return"#"+this.toHex8(t)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(T(this._r,255)*100)+"%",g:Math.round(T(this._g,255)*100)+"%",b:Math.round(T(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(T(this._r,255)*100)+"%, "+Math.round(T(this._g,255)*100)+"%, "+Math.round(T(this._b,255)*100)+"%)":"rgba("+Math.round(T(this._r,255)*100)+"%, "+Math.round(T(this._g,255)*100)+"%, "+Math.round(T(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:At[le(this._r,this._g,this._b,!0)]||!1},toFilter:function(t){var n="#"+ce(this._r,this._g,this._b,this._a),r=n,o=this._gradientType?"GradientType = 1, ":"";if(t){var a=c(t);r="#"+ce(a._r,a._g,a._b,a._a)}return"progid:DXImageTransform.Microsoft.gradient("+o+"startColorstr="+n+",endColorstr="+r+")"},toString:function(t){var n=!!t;t=t||this._format;var r=!1,o=this._a<1&&this._a>=0,a=!n&&o&&(t==="hex"||t==="hex6"||t==="hex3"||t==="hex4"||t==="hex8"||t==="name");return a?t==="name"&&this._a===0?this.toName():this.toRgbString():(t==="rgb"&&(r=this.toRgbString()),t==="prgb"&&(r=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(r=this.toHexString()),t==="hex3"&&(r=this.toHexString(!0)),t==="hex4"&&(r=this.toHex8String(!0)),t==="hex8"&&(r=this.toHex8String()),t==="name"&&(r=this.toName()),t==="hsl"&&(r=this.toHslString()),t==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},clone:function(){return c(this.toString())},_applyModification:function(t,n){var r=t.apply(null,[this].concat([].slice.call(n)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(pt,arguments)},brighten:function(){return this._applyModification(mt,arguments)},darken:function(){return this._applyModification(ht,arguments)},desaturate:function(){return this._applyModification(ut,arguments)},saturate:function(){return this._applyModification(ft,arguments)},greyscale:function(){return this._applyModification(dt,arguments)},spin:function(){return this._applyModification(Tt,arguments)},_applyCombination:function(t,n){return t.apply(null,[this].concat([].slice.call(n)))},analogous:function(){return this._applyCombination(bt,arguments)},complement:function(){return this._applyCombination(gt,arguments)},monochromatic:function(){return this._applyCombination(_t,arguments)},splitcomplement:function(){return this._applyCombination(Et,arguments)},triad:function(){return this._applyCombination(ue,[3])},tetrad:function(){return this._applyCombination(ue,[4])}};c.fromRatio=function(e,t){if(k(e)=="object"){var n={};for(var r in e)e.hasOwnProperty(r)&&(r==="a"?n[r]=e[r]:n[r]=I(e[r]));e=n}return c(e,t)};function at(e){var t={r:0,g:0,b:0},n=1,r=null,o=null,a=null,i=!1,s=!1;return typeof e=="string"&&(e=Mt(e)),k(e)=="object"&&(y(e.r)&&y(e.g)&&y(e.b)?(t=st(e.r,e.g,e.b),i=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):y(e.h)&&y(e.s)&&y(e.v)?(r=I(e.s),o=I(e.v),t=lt(e.h,r,o),i=!0,s="hsv"):y(e.h)&&y(e.s)&&y(e.l)&&(r=I(e.s),a=I(e.l),t=it(e.h,r,a),i=!0,s="hsl"),e.hasOwnProperty("a")&&(n=e.a)),n=de(n),{ok:i,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}function st(e,t,n){return{r:T(e,255)*255,g:T(t,255)*255,b:T(n,255)*255}}function se(e,t,n){e=T(e,255),t=T(t,255),n=T(n,255);var r=Math.max(e,t,n),o=Math.min(e,t,n),a,i,s=(r+o)/2;if(r==o)a=i=0;else{var l=r-o;switch(i=s>.5?l/(2-r-o):l/(r+o),r){case e:a=(t-n)/l+(t<n?6:0);break;case t:a=(n-e)/l+2;break;case n:a=(e-t)/l+4;break}a/=6}return{h:a,s:i,l:s}}function it(e,t,n){var r,o,a;e=T(e,360),t=T(t,100),n=T(n,100);function i(u,p,g){return g<0&&(g+=1),g>1&&(g-=1),g<1/6?u+(p-u)*6*g:g<1/2?p:g<2/3?u+(p-u)*(2/3-g)*6:u}if(t===0)r=o=a=n;else{var s=n<.5?n*(1+t):n+t-n*t,l=2*n-s;r=i(l,s,e+1/3),o=i(l,s,e),a=i(l,s,e-1/3)}return{r:r*255,g:o*255,b:a*255}}function ie(e,t,n){e=T(e,255),t=T(t,255),n=T(n,255);var r=Math.max(e,t,n),o=Math.min(e,t,n),a,i,s=r,l=r-o;if(i=r===0?0:l/r,r==o)a=0;else{switch(r){case e:a=(t-n)/l+(t<n?6:0);break;case t:a=(n-e)/l+2;break;case n:a=(e-t)/l+4;break}a/=6}return{h:a,s:i,v:s}}function lt(e,t,n){e=T(e,360)*6,t=T(t,100),n=T(n,100);var r=Math.floor(e),o=e-r,a=n*(1-t),i=n*(1-o*t),s=n*(1-(1-o)*t),l=r%6,u=[n,i,a,a,s,n][l],p=[s,n,n,i,a,a][l],g=[a,a,s,n,n,i][l];return{r:u*255,g:p*255,b:g*255}}function le(e,t,n,r){var o=[x(Math.round(e).toString(16)),x(Math.round(t).toString(16)),x(Math.round(n).toString(16))];return r&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0):o.join("")}function ct(e,t,n,r,o){var a=[x(Math.round(e).toString(16)),x(Math.round(t).toString(16)),x(Math.round(n).toString(16)),x(pe(r))];return o&&a[0].charAt(0)==a[0].charAt(1)&&a[1].charAt(0)==a[1].charAt(1)&&a[2].charAt(0)==a[2].charAt(1)&&a[3].charAt(0)==a[3].charAt(1)?a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0):a.join("")}function ce(e,t,n,r){var o=[x(pe(r)),x(Math.round(e).toString(16)),x(Math.round(t).toString(16)),x(Math.round(n).toString(16))];return o.join("")}c.equals=function(e,t){return!e||!t?!1:c(e).toRgbString()==c(t).toRgbString()};c.random=function(){return c.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})};function ut(e,t){t=t===0?0:t||10;var n=c(e).toHsl();return n.s-=t/100,n.s=N(n.s),c(n)}function ft(e,t){t=t===0?0:t||10;var n=c(e).toHsl();return n.s+=t/100,n.s=N(n.s),c(n)}function dt(e){return c(e).desaturate(100)}function pt(e,t){t=t===0?0:t||10;var n=c(e).toHsl();return n.l+=t/100,n.l=N(n.l),c(n)}function mt(e,t){t=t===0?0:t||10;var n=c(e).toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),c(n)}function ht(e,t){t=t===0?0:t||10;var n=c(e).toHsl();return n.l-=t/100,n.l=N(n.l),c(n)}function Tt(e,t){var n=c(e).toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,c(n)}function gt(e){var t=c(e).toHsl();return t.h=(t.h+180)%360,c(t)}function ue(e,t){if(isNaN(t)||t<=0)throw new Error("Argument to polyad must be a positive number");for(var n=c(e).toHsl(),r=[c(e)],o=360/t,a=1;a<t;a++)r.push(c({h:(n.h+a*o)%360,s:n.s,l:n.l}));return r}function Et(e){var t=c(e).toHsl(),n=t.h;return[c(e),c({h:(n+72)%360,s:t.s,l:t.l}),c({h:(n+216)%360,s:t.s,l:t.l})]}function bt(e,t,n){t=t||6,n=n||30;var r=c(e).toHsl(),o=360/n,a=[c(e)];for(r.h=(r.h-(o*t>>1)+720)%360;--t;)r.h=(r.h+o)%360,a.push(c(r));return a}function _t(e,t){t=t||6;for(var n=c(e).toHsv(),r=n.h,o=n.s,a=n.v,i=[],s=1/t;t--;)i.push(c({h:r,s:o,v:a})),a=(a+s)%1;return i}c.mix=function(e,t,n){n=n===0?0:n||50;var r=c(e).toRgb(),o=c(t).toRgb(),a=n/100,i={r:(o.r-r.r)*a+r.r,g:(o.g-r.g)*a+r.g,b:(o.b-r.b)*a+r.b,a:(o.a-r.a)*a+r.a};return c(i)};c.readability=function(e,t){var n=c(e),r=c(t);return(Math.max(n.getLuminance(),r.getLuminance())+.05)/(Math.min(n.getLuminance(),r.getLuminance())+.05)};c.isReadable=function(e,t,n){var r=c.readability(e,t),o,a;switch(a=!1,o=St(n),o.level+o.size){case"AAsmall":case"AAAlarge":a=r>=4.5;break;case"AAlarge":a=r>=3;break;case"AAAsmall":a=r>=7;break}return a};c.mostReadable=function(e,t,n){var r=null,o=0,a,i,s,l;n=n||{},i=n.includeFallbackColors,s=n.level,l=n.size;for(var u=0;u<t.length;u++)a=c.readability(e,t[u]),a>o&&(o=a,r=c(t[u]));return c.isReadable(e,r,{level:s,size:l})||!i?r:(n.includeFallbackColors=!1,c.mostReadable(e,["#fff","#000"],n))};var j=c.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},At=c.hexNames=xt(j);function xt(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}function de(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function T(e,t){yt(e)&&(e="100%");var n=vt(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function N(e){return Math.min(1,Math.max(0,e))}function b(e){return parseInt(e,16)}function yt(e){return typeof e=="string"&&e.indexOf(".")!=-1&&parseFloat(e)===1}function vt(e){return typeof e=="string"&&e.indexOf("%")!=-1}function x(e){return e.length==1?"0"+e:""+e}function I(e){return e<=1&&(e=e*100+"%"),e}function pe(e){return Math.round(parseFloat(e)*255).toString(16)}function fe(e){return b(e)/255}var A=function(){var e="[-\\+]?\\d+%?",t="[-\\+]?\\d*\\.\\d+%?",n="(?:"+t+")|(?:"+e+")",r="[\\s|\\(]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")\\s*\\)?",o="[\\s|\\(]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")\\s*\\)?";return{CSS_UNIT:new RegExp(n),rgb:new RegExp("rgb"+r),rgba:new RegExp("rgba"+o),hsl:new RegExp("hsl"+r),hsla:new RegExp("hsla"+o),hsv:new RegExp("hsv"+r),hsva:new RegExp("hsva"+o),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function y(e){return!!A.CSS_UNIT.exec(e)}function Mt(e){e=e.replace(rt,"").replace(ot,"").toLowerCase();var t=!1;if(j[e])e=j[e],t=!0;else if(e=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n;return(n=A.rgb.exec(e))?{r:n[1],g:n[2],b:n[3]}:(n=A.rgba.exec(e))?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=A.hsl.exec(e))?{h:n[1],s:n[2],l:n[3]}:(n=A.hsla.exec(e))?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=A.hsv.exec(e))?{h:n[1],s:n[2],v:n[3]}:(n=A.hsva.exec(e))?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=A.hex8.exec(e))?{r:b(n[1]),g:b(n[2]),b:b(n[3]),a:fe(n[4]),format:t?"name":"hex8"}:(n=A.hex6.exec(e))?{r:b(n[1]),g:b(n[2]),b:b(n[3]),format:t?"name":"hex"}:(n=A.hex4.exec(e))?{r:b(n[1]+""+n[1]),g:b(n[2]+""+n[2]),b:b(n[3]+""+n[3]),a:fe(n[4]+""+n[4]),format:t?"name":"hex8"}:(n=A.hex3.exec(e))?{r:b(n[1]+""+n[1]),g:b(n[2]+""+n[2]),b:b(n[3]+""+n[3]),format:t?"name":"hex"}:!1}function St(e){var t,n;return e=e||{level:"AA",size:"small"},t=(e.level||"AA").toUpperCase(),n=(e.size||"small").toLowerCase(),t!=="AA"&&t!=="AAA"&&(t="AA"),n!=="small"&&n!=="large"&&(n="small"),{level:t,size:n}}import{clamp as me}from"@excalidraw/math";import{degreesToRadians as Rt}from"@excalidraw/math";var q=typeof window<"u"?new Map:null;function Lt(e,t,n,r){let o=e/255,a=t/255,i=n/255,s=Rt(r),l=Math.cos(s),u=Math.sin(s),p=[.213+l*.787-u*.213,.715-l*.715-u*.715,.072-l*.072+u*.928,.213-l*.213+u*.143,.715+l*.285+u*.14,.072-l*.072-u*.283,.213-l*.213-u*.787,.715-l*.715+u*.715,.072+l*.928+u*.072],g=o*p[0]+a*p[1]+i*p[2],O=o*p[3]+a*p[4]+i*p[5],_=o*p[6]+a*p[7]+i*p[8];return{r:Math.round(Math.max(0,Math.min(1,g))*255),g:Math.round(Math.max(0,Math.min(1,O))*255),b:Math.round(Math.max(0,Math.min(1,_))*255)}}var Ot=(e,t,n,r)=>{let o=me(r,0,100)/100,a=u=>{let p=u*(1-o)+(255-u)*o;return Math.round(me(p,0,255))},i=a(e),s=a(t),l=a(n);return{r:i,g:s,b:l}},Fn=e=>{let t=q?.get(e);if(t)return t;let n=c(e),r=n.getAlpha(),o=n.toRgb(),a=Ot(o.r,o.g,o.b,93),i=Lt(a.r,a.g,a.b,180),s=Te(i.r,i.g,i.b,r);return q&&q.set(e,s),s},Ft=(e,t)=>t.reduce((n,r)=>(r in e&&(n[r]=e[r]),n),{}),In=5,wn=5,Cn=4,H=4,G=1,d={transparent:"transparent",black:"#1e1e1e",white:"#ffffff",gray:["#f8f9fa","#e9ecef","#ced4da","#868e96","#343a40"],red:["#fff5f5","#ffc9c9","#ff8787","#fa5252","#e03131"],pink:["#fff0f6","#fcc2d7","#f783ac","#e64980","#c2255c"],grape:["#f8f0fc","#eebefa","#da77f2","#be4bdb","#9c36b5"],violet:["#f3f0ff","#d0bfff","#9775fa","#7950f2","#6741d9"],blue:["#e7f5ff","#a5d8ff","#4dabf7","#228be6","#1971c2"],cyan:["#e3fafc","#99e9f2","#3bc9db","#15aabf","#0c8599"],teal:["#e6fcf5","#96f2d7","#38d9a9","#12b886","#099268"],green:["#ebfbee","#b2f2bb","#69db7c","#40c057","#2f9e44"],yellow:["#fff9db","#ffec99","#ffd43b","#fab005","#f08c00"],orange:["#fff4e6","#ffd8a8","#ffa94d","#fd7e14","#e8590c"],bronze:["#f8f1ee","#eaddd7","#d2bab0","#a18072","#846358"]},he=Ft(d,["cyan","blue","violet","grape","pink","green","teal","yellow","orange","red"]),Dn=[d.black,d.red[H],d.green[H],d.blue[H],d.yellow[H]],Pn=[d.transparent,d.red[G],d.green[G],d.blue[G],d.yellow[G]],Un=[d.white,"#f8f9fa","#f5faff","#fffce8","#fdf8f6"],kn={transparent:d.transparent,white:d.white,gray:d.gray,black:d.black,bronze:d.bronze,...he},Nn={transparent:d.transparent,white:d.white,gray:d.gray,black:d.black,bronze:d.bronze,...he},Hn=e=>[d.cyan[e],d.blue[e],d.violet[e],d.grape[e],d.pink[e],d.green[e],d.teal[e],d.yellow[e],d.orange[e],d.red[e]],Te=(e,t,n,r)=>{let o=`#${(16777216+(e<<16)+(t<<8)+n).toString(16).slice(1)}`;if(r!==void 0&&r<1){let a=Math.round(r*255).toString(16).padStart(2,"0");return`${o}${a}`}return o},Gn=e=>{let t=c(e);if(!t.isValid())return null;let{r:n,g:r,b:o,a}=t.toRgb();return Te(n,r,o,a)},ge=e=>c(e).getAlpha()===0,Bn=240,It=(e,t,n)=>(e*299+t*587+n*114)/1e3,Kn=(e,t=160)=>{if(!e)return!0;if(ge(e))return!1;let n=c(e);if(!n.isValid())return!0;let{r,g:o,b:a}=n.toRgb();return It(r,o,a)<t},Wn=e=>{if(e=e.trim(),ge(e))return e;let t=c(e);return t.isValid()?["hex","hex8"].includes(t.getFormat())&&!e.startsWith("#")?`#${e}`:e:null};f();var Xn=typeof window<"u"&&"ResizeObserver"in window,zn="Excalidraw",jn=36,qn=10,Zn=20,Qn=8,Jn=5,er=1,tr=30,nr=Math.PI/12,rr="red",or={TEXT:"text",CROSSHAIR:"crosshair",GRABBING:"grabbing",GRAB:"grab",POINTER:"pointer",MOVE:"move",AUTO:""},ar={MAIN:0,WHEEL:1,SECONDARY:2,TOUCH:-1,ERASER:5},sr={enabled:"all",disabled:"none",inheritFromUI:"var(--ui-pointerEvents)"},wt=(m=>(m.COPY="copy",m.PASTE="paste",m.CUT="cut",m.KEYDOWN="keydown",m.KEYUP="keyup",m.MOUSE_MOVE="mousemove",m.RESIZE="resize",m.UNLOAD="unload",m.FOCUS="focus",m.BLUR="blur",m.DRAG_OVER="dragover",m.DROP="drop",m.GESTURE_END="gestureend",m.BEFORE_UNLOAD="beforeunload",m.GESTURE_START="gesturestart",m.GESTURE_CHANGE="gesturechange",m.POINTER_MOVE="pointermove",m.POINTER_DOWN="pointerdown",m.POINTER_UP="pointerup",m.STATE_CHANGE="statechange",m.WHEEL="wheel",m.TOUCH_START="touchstart",m.TOUCH_END="touchend",m.HASHCHANGE="hashchange",m.VISIBILITY_CHANGE="visibilitychange",m.SCROLL="scroll",m.EXCALIDRAW_LINK="excalidraw-link",m.MENU_ITEM_SELECT="menu.itemSelect",m.MESSAGE="message",m.FULLSCREENCHANGE="fullscreenchange",m))(wt||{}),ir={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},B={TEST:"test",DEVELOPMENT:"development",PRODUCTION:"production"},lr={SIDEBAR:"sidebar",SHAPE_ACTIONS_MENU:"App-menu__left",ZOOM_ACTIONS:"zoom-actions",SEARCH_MENU_INPUT_WRAPPER:"layer-ui__search-inputWrapper",CONVERT_ELEMENT_TYPE_POPUP:"ConvertElementTypePopup",SHAPE_ACTIONS_THEME_SCOPE:"shape-actions-theme-scope",FRAME_NAME:"frame-name",DROPDOWN_MENU_EVENT_WRAPPER:"dropdown-menu-event-wrapper"},cr={sm:16,md:20,lg:28,xl:36},be="Xiaolai",w="Segoe UI Emoji",E={Virgil:1,Helvetica:2,Cascadia:3,Excalifont:5,Nunito:6,"Lilita One":7,"Comic Shanns":8,"Liberation Sans":9,Assistant:10},_e="sans-serif",Ae="monospace",Ct={[_e]:998,[Ae]:999},Z={[be]:100,...Ct,[w]:1e3};function Dt(e){switch(e){case E.Cascadia:case E["Comic Shanns"]:return Ae;default:return _e}}var xe=e=>{let t=Dt(e);switch(e){case E.Excalifont:return[be,t,w];default:return[t,w]}},ur={LIGHT:"light",DARK:"dark"},fr="invert(93%) hue-rotate(180deg)",dr={strokeColor:"#bbb",strokeWidth:2,strokeStyle:"solid",fillStyle:"solid",roughness:0,roundness:null,backgroundColor:"transparent",radius:8,nameOffsetY:3,nameColorLightTheme:"#999999",nameColorDarkTheme:"#7a7a7a",nameFontSize:14,nameLineHeight:1.25},pr=1,mr=20,hr=E.Excalifont,Tr="left",gr="top",ye="{version}",Pt=2,Ut=2*Pt,kt=1e-5,Er=2*Ut-kt,br="#ffffff",_r="#1e1e1e",Ar="#a2f1a6",xr=["selectAll"],yr=20,vr=5,ve={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",gif:"image/gif",webp:"image/webp",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif",jfif:"image/jfif"},Nt={text:"text/plain",html:"text/html",json:"application/json",excalidraw:"application/vnd.excalidraw+json",excalidrawClipboard:"application/vnd.excalidraw.clipboard+json",excalidrawlib:"application/vnd.excalidrawlib+json",excalidrawlibIds:"application/vnd.excalidrawlib.ids+json"},Ee={...Nt,"excalidraw.svg":"image/svg+xml","excalidraw.png":"image/png",binary:"application/octet-stream",...ve},Mr=[Ee.text,Ee.html,...Object.values(ve)],Sr={png:"png",svg:"svg",clipboard:"clipboard"},Rr={excalidraw:"excalidraw",excalidrawClipboard:"excalidraw/clipboard",excalidrawLibrary:"excalidrawlib",excalidrawClipboardWithAPI:"excalidraw-api/clipboard"},Lr=()=>window.EXCALIDRAW_EXPORT_SOURCE||window.location.origin,Or=500,Fr=300,Ir=500,wr=1e4,Cr=3e4,Dr=100,Pr=.1,Ur=.1,kr=30,Nr=300,Hr=6e4,Gr=3e3,Br={addLibrary:"addLibrary"},Kr={addLibrary:"addLibrary"},Wr={canvasActions:{changeViewBackgroundColor:!0,clearCanvas:!0,export:{saveFileToDisk:!0},loadScene:!0,saveToActiveFile:!0,toggleTheme:null,saveAsImage:!0},tools:{image:!0}},Vr=2,Yr=[1,2,3],$r=10,Xr=1440,zr=4*1024*1024,jr="http://www.w3.org/2000/svg",qr=`<?xml version="1.0" standalone="no"?>
|
|
2
2
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
-
`,Xn=128,$n={excalidraw:2,excalidrawLibrary:2},zn=5,jn=.7,Zn=11,qn={TOP:"top",MIDDLE:"middle",BOTTOM:"bottom"},Qn={LEFT:"left",CENTER:"center",RIGHT:"right"},Jn=20,er=.25,tr=32,nr={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},ke={architect:0,artist:1,cartoonist:2},rr={thin:1,bold:2,extraBold:4},or={strokeColor:u.black,backgroundColor:u.transparent,fillStyle:"solid",strokeWidth:2,strokeStyle:"solid",roughness:ke.artist,opacity:100,locked:!1},He="library",sr="search",ir={name:"default",defaultTab:He},ar=new Set(["iframe","embeddable","image"]),lr={selection:"selection",lasso:"lasso",rectangle:"rectangle",diamond:"diamond",ellipse:"ellipse",arrow:"arrow",line:"line",freedraw:"freedraw",text:"text",image:"image",eraser:"eraser",hand:"hand",frame:"frame",magicframe:"magicframe",embeddable:"embeddable",laser:"laser"},cr={OAI_API_KEY:"excalidraw-oai-api-key",MERMAID_TO_EXCALIDRAW:"mermaid-to-excalidraw",PUBLISH_LIBRARY:"publish-library-data"},ur="Untitled",pr={generalStats:1,elementProperties:2},dr=1,fr={sharp:"sharp",round:"round",elbow:"elbow"},Tr=.3,mr="element",Er=Symbol.for("__test__originalId__"),Ke=(r=>(r.ACTIVE="active",r.AWAY="away",r.IDLE="idle",r))(Ke||{}),xr=20;c();var M={[T.Excalifont]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25}},[T.Nunito]:{metrics:{unitsPerEm:1e3,ascender:1011,descender:-353,lineHeight:1.25}},[T["Lilita One"]]:{metrics:{unitsPerEm:1e3,ascender:923,descender:-220,lineHeight:1.15}},[T["Comic Shanns"]]:{metrics:{unitsPerEm:1e3,ascender:750,descender:-250,lineHeight:1.25}},[T.Virgil]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},deprecated:!0},[T.Helvetica]:{metrics:{unitsPerEm:2048,ascender:1577,descender:-471,lineHeight:1.15},deprecated:!0,local:!0},[T.Cascadia]:{metrics:{unitsPerEm:2048,ascender:1900,descender:-480,lineHeight:1.2},deprecated:!0},[T["Liberation Sans"]]:{metrics:{unitsPerEm:2048,ascender:1854,descender:-434,lineHeight:1.15},private:!0},[T.Assistant]:{metrics:{unitsPerEm:2048,ascender:1021,descender:-287,lineHeight:1.25},private:!0},[B.Xiaolai]:{metrics:{unitsPerEm:1e3,ascender:880,descender:-144,lineHeight:1.25},fallback:!0},[B["Segoe UI Emoji"]]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},local:!0,fallback:!0}},hr={LATIN:"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD",LATIN_EXT:"U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF",CYRILIC_EXT:"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F",CYRILIC:"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116",VIETNAMESE:"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB"},yr="local:",gr=(e,t,n)=>{let{unitsPerEm:r,ascender:s,descender:l}=M[e]?.metrics||M[T.Excalifont].metrics,i=t/r,o=(n-i*s+i*l)/2;return i*s+o},Lr=e=>{let{lineHeight:t}=M[e]?.metrics||M[T.Excalifont].metrics;return t};c();var re=class{jobs=[];running=!1;tick(){if(this.running)return;let t=this.jobs.shift();t?(this.running=!0,t.promise.resolve(se(t.jobFactory,...t.args).finally(()=>{this.running=!1,this.tick()}))):this.running=!1}push(t,...n){let r=oe();return this.jobs.push({jobFactory:t,promise:r,args:n}),this.tick(),r}};c();var ie={EQUAL:"Equal",MINUS:"Minus",NUM_ADD:"NumpadAdd",NUM_SUBTRACT:"NumpadSubtract",NUM_ZERO:"Numpad0",BRACKET_RIGHT:"BracketRight",BRACKET_LEFT:"BracketLeft",ONE:"Digit1",TWO:"Digit2",THREE:"Digit3",NINE:"Digit9",QUOTE:"Quote",ZERO:"Digit0",SLASH:"Slash",C:"KeyC",D:"KeyD",H:"KeyH",V:"KeyV",Z:"KeyZ",Y:"KeyY",R:"KeyR",S:"KeyS"},y={ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",PAGE_UP:"PageUp",PAGE_DOWN:"PageDown",BACKSPACE:"Backspace",ALT:"Alt",CTRL_OR_CMD:w?"metaKey":"ctrlKey",DELETE:"Delete",ENTER:"Enter",ESCAPE:"Escape",QUESTION_MARK:"?",SPACE:" ",TAB:"Tab",CHEVRON_LEFT:"<",CHEVRON_RIGHT:">",PERIOD:".",COMMA:",",SUBTRACT:"-",SLASH:"/",A:"a",C:"c",D:"d",E:"e",F:"f",G:"g",H:"h",I:"i",L:"l",O:"o",P:"p",Q:"q",R:"r",S:"s",T:"t",V:"v",X:"x",Y:"y",Z:"z",K:"k",W:"w",0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9"},Be=new Map([[y.Z,ie.Z],[y.Y,ie.Y]]),Ge=e=>/^[a-z]$/.test(e.toLowerCase()),wr=(e,t)=>{if(t===e.key.toLowerCase())return!0;let n=Be.get(t);return!!(n&&!Ge(e.key)&&e.code===n)},Ir=e=>e===y.ARROW_LEFT||e===y.ARROW_RIGHT||e===y.ARROW_DOWN||e===y.ARROW_UP,Mr=e=>e.altKey,Pr=e=>e.shiftKey,Dr=e=>e.shiftKey;c();import{pointFromPair as We}from"@excalidraw/math";var Hr=e=>{let t=e.map(r=>r[0]),n=e.map(r=>r[1]);return{width:Math.max(...t)-Math.min(...t),height:Math.max(...n)-Math.min(...n)}},Kr=(e,t,n,r)=>{let s=n.map(b=>b[e]),l=Math.max(...s),i=Math.min(...s),o=l-i,a=o===0?1:t/o,p=1/0,m=n.map(b=>{let _=b[e]*a,A=[...b];return A[e]=_,_<p&&(p=_),A});if(!r||m.length===2)return m;let R=i-p;return m.map(b=>We(b.map((_,A)=>A===e?_+R:_)))},Br=(e,t,n)=>n?[Math.round(e/n)*n,Math.round(t/n)*n]:[e,t];c();var ue=X(le(),1),ce=class{pool;entries={};constructor(t,n){this.pool=new ue.default(t,n)}all(){let t=n=>{if(n.data.result){let[r,s]=n.data.result;this.entries[r]=s}};return this.pool.addEventListener("fulfilled",t),this.pool.start().then(()=>(setTimeout(()=>{this.pool.removeEventListener("fulfilled",t)}),Object.values(this.entries)))}};c();c();c();var pe=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,n)=>(n&=63,n<36?t+=n.toString(36):n<62?t+=(n-26).toString(36).toUpperCase():n>62?t+="-":t+="_",t),"");c();var S=class{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}};c();import{average as P}from"@excalidraw/math";var W=null,oo=e=>{W=e},so=()=>{if(W)return W;let e=new Date,t=e.getFullYear(),n=`${e.getMonth()+1}`.padStart(2,"0"),r=`${e.getDate()}`.padStart(2,"0"),s=`${e.getHours()}`.padStart(2,"0"),l=`${e.getMinutes()}`.padStart(2,"0");return`${t}-${n}-${r}-${s}${l}`},io=e=>e.charAt(0).toUpperCase()+e.slice(1),ao=e=>e instanceof HTMLElement&&e.className.includes("ToolIcon"),Ye=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,lo=e=>Ye(e)||e instanceof Element&&!!e.closest("label, button"),co=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&(e.type==="text"||e.type==="number"||e.type==="password"),Ve=({fontFamily:e})=>{for(let[t,n]of Object.entries(T))if(n===e)return`${t}${ee(n).map(r=>`, ${r}`).join("")}`;return L},uo=({fontSize:e,fontFamily:t})=>`${e}px ${Ve({fontFamily:t})}`,po=(e,t)=>{let n=0,r=null,s=(...l)=>{r=l,clearTimeout(n),n=window.setTimeout(()=>{r=null,e(...l)},t)};return s.flush=()=>{if(clearTimeout(n),r){let l=r;r=null,e(...l)}},s.cancel=()=>{r=null,clearTimeout(n)},s},fo=(e,t)=>{let n=null,r=null,s=null,l=o=>{n=window.requestAnimationFrame(()=>{n=null,e(...o),r=null,s&&(r=s,s=null,l(r))})},i=(...o)=>{if(D()){e(...o);return}r=o,n===null?l(r):t?.trailing&&(s=o)};return i.flush=()=>{n!==null&&(cancelAnimationFrame(n),n=null),r&&(e(...s||r),r=s=null)},i.cancel=()=>{r=s=null,n!==null&&(cancelAnimationFrame(n),n=null)},i},Te=e=>1-Math.pow(1-e,4),de=(e,t,n)=>(t-e)*Te(n)+e,To=({fromValues:e,toValues:t,onStep:n,duration:r=250,interpolateValue:s,onStart:l,onEnd:i,onCancel:o})=>{let a=!1,p=0,m;function R(N){if(a)return;m===void 0&&(m=N,l?.());let b=Math.min(N-m,r),_=Te(b/r),A={};if(Object.keys(e).forEach(g=>{let h=g,k=(t[h]-e[h])*_+e[h];A[h]=k}),n(A),b<r){let g=b/r,h={};Object.keys(e).forEach(k=>{let O=k,H=e[O],K=t[O],v;v=s?s(H,K,g,O):de(H,K,g),v==null&&(v=de(H,K,g)),h[O]=v}),n(h),p=window.requestAnimationFrame(R)}else n(t),i?.()}return p=window.requestAnimationFrame(R),()=>{o?.(),a=!0,window.cancelAnimationFrame(p)}},mo=(e,t)=>{if(!e.length||t<1)return[];let n=0,r=0,s=Array(Math.ceil(e.length/t));for(;n<e.length;)s[r++]=e.slice(n,n+=t);return s},Eo=e=>{let t=window.getSelection();if(t){let n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}},xo=()=>{let e=window.getSelection();e&&e.removeAllRanges()},bo=(e,t)=>Math.abs(e-t),_o=(e,t)=>t.type==="custom"?{...e.activeTool,type:"custom",customType:t.customType,locked:t.locked??e.activeTool.locked}:{...e.activeTool,lastActiveTool:t.lastActiveToolBeforeEraser===void 0?e.activeTool.lastActiveTool:t.lastActiveToolBeforeEraser,type:t.type,customType:null,locked:t.locked??e.activeTool.locked,fromSelection:t.fromSelection??!1},Ao=()=>document.fullscreenElement?.nodeName==="HTML",ho=()=>document.documentElement.requestFullscreen(),yo=()=>document.exitFullscreen(),go=e=>(e=e.replace(/\bAlt\b/i,"Alt").replace(/\bShift\b/i,"Shift").replace(/\b(Enter|Return)\b/i,"Enter"),w?e.replace(/\bCtrlOrCmd\b/gi,"Cmd").replace(/\bAlt\b/i,"Option"):e.replace(/\bCtrlOrCmd\b/gi,"Ctrl")),Lo=({clientX:e,clientY:t},{zoom:n,offsetLeft:r,offsetTop:s,scrollX:l,scrollY:i})=>{let o=(e-r)/n.value-l,a=(t-s)/n.value-i;return{x:o,y:a}},So=({sceneX:e,sceneY:t},{zoom:n,offsetLeft:r,offsetTop:s,scrollX:l,scrollY:i})=>{let o=(e+l)*n.value+r,a=(t+i)*n.value+s;return{x:o,y:a}},Ro=e=>getComputedStyle(document.documentElement).getPropertyValue(`--${e}`),Xe="A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF",$e="\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC",ze=new RegExp(`^[^${Xe}]*[${$e}]`),Oo=e=>ze.test(e),vo=e=>{let[t,n]=e;return{x:t,y:n}},Co=e=>{if(e?.name==="AbortError"){console.warn(e);return}throw e},Fo=(e,t,n=0)=>{n<0&&(n=e.length+n),n=Math.min(e.length,Math.max(n,0));let r=n-1;for(;++r<e.length;)if(t(e[r],r,e))return r;return-1},wo=(e,t,n=e.length-1)=>{n<0&&(n=e.length+n),n=Math.min(e.length-1,Math.max(n,0));let r=n+1;for(;--r>-1;)if(t(e[r],r,e))return r;return-1},Io=(e,t)=>{for(let n=0;n<e.length;n++){let r=t(e[n],n);if(r!=null)return r}},je=e=>{let t=e.length===5&&e.substr(4,1)==="0",n=e.length===9&&e.substr(7,2)==="00";return t||n||e===u.transparent},Mo=e=>e.fillStyle!=="solid"||je(e.backgroundColor),oe=()=>{let e,t,n=new Promise((r,s)=>{e=r,t=s});return n.resolve=e,n.reject=t,n},Po=(e,t)=>{let n=[{value:1,symbol:"b"},{value:1e3,symbol:"k"},{value:1e6,symbol:"M"},{value:1e9,symbol:"G"}],r=/\.0+$|(\.[0-9]*[1-9])0+$/,s;for(s=n.length-1;s>0&&!(e>=n[s].value);s--);return(e/n[s].value).toFixed(t).replace(r,"$1")+n[s].symbol},Do=()=>document.querySelector('meta[name="version"]')?.content||te,Uo=()=>{let t=document.createElement("canvas").getContext("2d");if(!t)return!1;let n=12;return t.fillStyle="#f00",t.textBaseline="top",t.font="32px Arial",t.fillText("\u{1F600}",0,0),t.getImageData(n,n,1,1).data[0]!==0},No=e=>{let t=e.parentElement;for(;t;){if(t===document.body)return document;let{overflowY:n}=window.getComputedStyle(t);if(t.scrollHeight>t.clientHeight&&(n==="auto"||n==="scroll"||n==="overlay"))return t;t=t.parentElement}return document},ko=e=>{let t=e.parentElement;for(;t;){if(t.tabIndex>-1){t.focus();return}t=t.parentElement}},Ho=e=>{e.preventDefault(),e.returnValue=""},Ko=e=>Array.from(e).map(t=>`0${t.toString(16)}`.slice(-2)).join(""),Bo=()=>D()?1:Date.now(),Go=e=>e instanceof Map?e:e.reduce((t,n)=>(t.set(typeof n=="string"?n:n.id,n),t),new Map),Wo=e=>e.reduce((t,n,r)=>(t.set(n.id,[n,r]),t),new Map),Yo=(e,t)=>e.reduce((n,r,s)=>(n[t?t(r):s]=r,n),{}),Vo=e=>e.reduce((t,n,r)=>{let s={...n,prev:null,next:null};if(r!==0){let l=t[r-1];if(s.prev=l,l.next=s,r===e.length-1){let i=t[0];s.next=i,i.prev=s}}return t.push(s),t},[]),Ze=e=>Array.isArray(e)?e:e.values(),Xo=e=>Array.isArray(e)?e:Array.from(Ze(e)),D=()=>f.MODE===I.TEST,$o=()=>f.MODE===I.DEVELOPMENT,zo=()=>f.MODE===I.PRODUCTION,jo=()=>typeof process<"u"&&!0,Zo=(e,t)=>new CustomEvent(e,{detail:{nativeEvent:t},cancelable:!0}),qo=(e,t)=>{let n=!1;for(let r in t){let s=t[r];if(typeof s<"u"){if(e[r]===s&&(typeof s!="object"||s===null))continue;n=!0}}return n?{...e,...t}:e},Qo=e=>{let t=typeof e;return e==null||t!=="object"&&t!=="function"},qe=()=>{try{return window.self===window.top?"top":"iframe"}catch{return"iframe"}},Jo=()=>qe()==="iframe",es=e=>!!e&&typeof e=="object"&&"then"in e&&"catch"in e&&"finally"in e,ts=e=>{let t=e?.querySelectorAll("button, a, input, select, textarea, div[tabindex], label[tabindex]");return t?Array.from(t).filter(n=>n.tabIndex>-1&&!n.disabled):[]},fe=(e,t)=>Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t,Qe=(e,t,n,r=!1)=>{let s=Object.keys(e),l=Object.keys(t);if(s.length!==l.length)return r&&console.warn("%cisShallowEqual: objects don't have same properties ->","color: #8B4000",e,t),!1;if(n&&Array.isArray(n)){for(let i of n)if(!(e[i]===t[i]||fe(e[i],t[i])))return r&&console.warn(`%cisShallowEqual: ${i} not equal ->`,"color: #8B4000",e[i],t[i]),!1;return!0}return s.every(i=>{let o=n?.[i],a=o?o(e[i],t[i]):e[i]===t[i]||fe(e[i],t[i]);return!a&&r&&console.warn(`%cisShallowEqual: ${i} not equal ->`,"color: #8B4000",e[i],t[i]),a})},ns=(e,t,{checkForDefaultPrevented:n=!0}={})=>function(s){if(e?.(s),!n||!s?.defaultPrevented)return t?.(s)},rs=(e,t,n)=>{if(!t)return e;if(n)return console.error(t),e;throw new Error(t)};function os(e,t){if(!e)throw new Error(t)}var ss=e=>{let t,n,r=function(s){let l=Object.entries(s);if(t){let o=!0;for(let[a,p]of l)if(t.get(a)!==p){o=!1;break}if(o)return n}let i=e(s);return t=new Map(l),n=i,i};return r.clear=()=>{t=void 0,n=void 0},r},is=(e,t)=>e instanceof Set||e instanceof Map?e.has(t):"includes"in e?e.includes(t):e.hasOwnProperty(t),as=e=>JSON.parse(JSON.stringify(e)),ls=(e,t)=>Qe(e,t)?e:t;function cs(e,t,n,r){return e?(e?.addEventListener?.(t,n,r),()=>{e?.removeEventListener?.(t,n,r)}):()=>{}}function us(e,t=!0){let n=e.length;if(n<4)return"";let r=e[0],s=e[1],l=e[2],i=`M${r[0].toFixed(2)},${r[1].toFixed(2)} Q${s[0].toFixed(2)},${s[1].toFixed(2)} ${P(s[0],l[0]).toFixed(2)},${P(s[1],l[1]).toFixed(2)} T`;for(let o=2,a=n-1;o<a;o++)r=e[o],s=e[o+1],i+=`${P(r[0],s[0]).toFixed(2)},${P(r[1],s[1]).toFixed(2)} `;return t&&(i+="Z"),i}var ps=e=>e.replace(/\r?\n|\r/g,`
|
|
4
|
-
`),ds=e=>e,se=async(e,...t)=>new Promise(n=>{n(e(...t))}),fs=(...e)=>Math.max(...e.map(t=>t?1:0))>0,Ts=e=>{try{return JSON.parse(e)}catch{return null}},me=e=>e.replace(/"/g,"""),ms=e=>Array.isArray(e)?e:[e],Je=e=>Array.isArray(e),et=e=>Je(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length,Es=(e,t)=>{if(et(e)===0)return null;let n=t||(s=>s),r=null;for(let s of e){let l=n(s);if((r===null||r===l)&&l!=null)r=l;else return null}return r};var Ee=new S(Date.now()),xe=0,ys=()=>Math.floor(Ee.next()*2**31),gs=e=>{Ee=new S(e),xe=0},Ls=()=>D()?`id${xe++}`:pe();c();var _e=X(be(),1);var ut=e=>(e=e.trim(),e&&(0,_e.sanitizeUrl)(me(e))),Fs=e=>!!(e?.includes(location.origin)||e?.startsWith("/")),ws=e=>{if(e=ut(e),e.startsWith("/"))return`${location.origin}${e}`;try{new URL(e)}catch{return"about:blank"}return e};c();var Ae=class{subscribers=[];on(...t){let n=t.flat().filter(r=>typeof r=="function");return this.subscribers.push(...n),()=>this.off(n)}once(...t){let n=t.flat().filter(s=>typeof s=="function");n.push(()=>r());let r=this.on(...n);return r}off(...t){let n=t.flat();this.subscribers=this.subscribers.filter(r=>!n.includes(r))}trigger(...t){for(let n of this.subscribers)n(...t);return this}clear(){this.subscribers=[]}};export{Fn as ACTIVE_THRESHOLD,mn as ALLOWED_PASTE_MIME_TYPES,Ht as APP_NAME,Zn as ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO,jn as ARROW_LABEL_WIDTH_FRACTION,fr as ARROW_TYPE,zn as BOUND_TEXT_PADDING,$ as BinaryHeap,dn as CANVAS_ONLY_ACTIONS,ht as CANVAS_PALETTE_SHADE_INDEXES,sr as CANVAS_SEARCH_TAB,q as CJK_HAND_DRAWN_FALLBACK_FONT,Jt as CLASSES,ie as CODES,_t as COLORS_PER_ROW,un as COLOR_CHARCOAL_BLACK,xt as COLOR_OUTLINE_CONTRAST_THRESHOLD,u as COLOR_PALETTE,pn as COLOR_VOICE_CALL,cn as COLOR_WHITE,jt as CURSOR_TYPE,tr as DEFAULT_ADAPTIVE_RADIUS,Lt as DEFAULT_CANVAS_BACKGROUND_PICKS,At as DEFAULT_CHART_COLOR_INDEX,ln as DEFAULT_COLLISION_THRESHOLD,F as DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX,Rt as DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE,gt as DEFAULT_ELEMENT_BACKGROUND_PICKS,or as DEFAULT_ELEMENT_PROPS,C as DEFAULT_ELEMENT_STROKE_COLOR_INDEX,St as DEFAULT_ELEMENT_STROKE_COLOR_PALETTE,yt as DEFAULT_ELEMENT_STROKE_PICKS,Bn as DEFAULT_EXPORT_PADDING,ur as DEFAULT_FILENAME,on as DEFAULT_FONT_FAMILY,rn as DEFAULT_FONT_SIZE,fn as DEFAULT_GRID_SIZE,Tn as DEFAULT_GRID_STEP,zt as DEFAULT_LASER_COLOR,Gn as DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT,er as DEFAULT_PROPORTIONAL_RADIUS,Tr as DEFAULT_REDUCED_GLOBAL_ALPHA,ir as DEFAULT_SIDEBAR,sn as DEFAULT_TEXT_ALIGN,De as DEFAULT_TRANSFORM_HANDLE_SPACING,Pn as DEFAULT_UI_OPTIONS,te as DEFAULT_VERSION,an as DEFAULT_VERTICAL_ALIGN,Bt as DRAGGING_THRESHOLD,cr as EDITOR_LS_KEYS,E as ELEMENTS_PALETTE_SHADE_INDEXES,mr as ELEMENT_LINK_KEY,Jn as ELEMENT_READY_TO_ERASE_OPACITY,Yt as ELEMENT_SHIFT_TRANSLATE_AMOUNT,Vt as ELEMENT_TRANSLATE_AMOUNT,Xn as ENCRYPTION_KEY_BITS,I as ENV,Ne as EPSILON,Ie as EVENT,xn as EXPORT_DATA_TYPES,En as EXPORT_IMAGE_TYPES,Kn as EXPORT_SCALES,Ae as Emitter,T as FONT_FAMILY,B as FONT_FAMILY_FALLBACKS,Me as FONT_FAMILY_GENERIC_FALLBACKS,M as FONT_METADATA,tn as FRAME_STYLE,hr as GOOGLE_FONTS_RANGES,vn as HYPERLINK_TOOLTIP_DELAY,Cn as IDLE_THRESHOLD,ne as IMAGE_MIME_TYPES,_n as IMAGE_RENDER_TIMEOUT,y as KEYS,Be as KeyCodeMap,ar as LIBRARY_DISABLED_TYPES,He as LIBRARY_SIDEBAR_TAB,Wt as LINE_CONFIRM_THRESHOLD,xr as LINE_POLYGON_POINT_MERGE_DISTANCE,yr as LOCAL_FONT_PROTOCOL,Wn as MAX_ALLOWED_FILE_BYTES,bt as MAX_CUSTOM_COLORS_USED_IN_CANVAS,Hn as MAX_DECIMALS_FOR_SVG_EXPORT,On as MAX_ZOOM,Z as MIME_TYPES,Gt as MINIMUM_ARROW_SIZE,nn as MIN_FONT_SIZE,dr as MIN_WIDTH_OR_HEIGHT,Rn as MIN_ZOOM,J as MONOSPACE_GENERIC_FONT,Nn as MQ_MAX_HEIGHT_LANDSCAPE,Un as MQ_MAX_WIDTH_LANDSCAPE,Dn as MQ_MAX_WIDTH_PORTRAIT,kn as MQ_RIGHT_SIDEBAR_MIN_WIDTH,Er as ORIG_ID,Zt as POINTER_BUTTON,qt as POINTER_EVENTS,ce as PromisePool,re as Queue,ke as ROUGHNESS,nr as ROUNDNESS,Q as SANS_SERIF_GENERIC_FONT,Ln as SCROLL_TIMEOUT,$t as SHIFT_LOCKING_ANGLE,Ue as SIDE_RESIZING_THRESHOLD,pr as STATS_PANELS,rr as STROKE_WIDTH,Vn as SVG_DOCUMENT_PREAMBLE,Yn as SVG_NS,An as TAP_TWICE_TIMEOUT,Qn as TEXT_ALIGN,Kt as TEXT_AUTOWRAP_THRESHOLD,Xt as TEXT_TO_CENTER_SNAP_THRESHOLD,en as THEME,wn as THEME_FILTER,yn as TITLE_TIMEOUT,lr as TOOL_TYPE,hn as TOUCH_CTX_MENU_TIMEOUT,Mn as URL_HASH_KEYS,In as URL_QUERY_KEYS,Ke as UserIdleState,$n as VERSIONS,gn as VERSION_TIMEOUT,qn as VERTICAL_ALIGN,L as WINDOWS_EMOJI_FALLBACK_FONT,Qt as YOUTUBE_STATES,Sn as ZOOM_STEP,cs as addEventListener,ho as allowFullScreen,Vo as arrayToList,Go as arrayToMap,Wo as arrayToMapWithIndex,Yo as arrayToObject,rs as assertNever,Ko as bytesToHexString,io as capitalizeString,ms as castArray,mo as chunk,as as cloneJSON,ns as composeEventHandlers,po as debounce,bo as distance,Te as easeOut,To as easeToValuesRAF,me as escapeDoubleQuotes,yo as exitFullScreen,Fo as findIndex,wo as findLastIndex,ko as focusNearestParent,Ot as getAllColorsSpecificShade,so as getDateTime,bn as getExportSource,ee as getFontFamilyFallbacks,Ve as getFontFamilyString,uo as getFontString,qe as getFrame,Pe as getGenericFontFamilyFallback,Ro as getGlobalCSSVariable,Br as getGridPoint,Lr as getLineHeight,No as getNearestScrollableContainer,go as getShortcutKey,Hr as getSizeFromPoints,x as getSpecificColorShades,us as getSvgPathFromStroke,Bo as getUpdatedTimestamp,Do as getVersion,gr as getVerticalOffset,os as invariant,Mt as isAndroid,fs as isAnyTrue,Ir as isArrowKey,Mo as isBindingFallthroughEnabled,Nt as isBrave,we as isChrome,w as isDarwin,$o as isDevEnv,Pt as isFirefox,Ao as isFullScreen,Ut as isIOS,Ye as isInputLike,lo as isInteractive,Ge as isLatinChar,Fs as isLocalLink,is as isMemberOf,Qo as isPrimitive,zo as isProdEnv,es as isPromiseLike,Oo as isRTL,Je as isReadonlyArray,Jo as isRunningInIframe,Dt as isSafari,jo as isServerEnv,Qe as isShallowEqual,D as isTestEnv,ao as isToolIcon,je as isTransparent,It as isWindows,co as isWritableElement,Io as mapFind,wr as matchKey,ss as memoize,Co as muteFSAbortError,Po as nFormatter,ps as normalizeEOL,ut as normalizeLink,Ho as preventUnload,se as promiseTry,ts as queryFocusableElements,Ls as randomId,ys as randomInteger,Es as reduceToCommonValue,xo as removeSelection,Kr as rescalePoints,gs as reseed,oe as resolvablePromise,vt as rgbToHex,Ts as safelyParseJSON,So as sceneCoordsToViewportCoords,Eo as selectNode,oo as setDateTimeForTests,Pr as shouldMaintainAspectRatio,Mr as shouldResizeFromCenter,Dr as shouldRotateWithDiscreteAngle,et as sizeOf,Uo as supportsEmoji,kt as supportsResizeObserver,fo as throttleRAF,Xo as toArray,ds as toBrandedType,Ze as toIterable,ws as toValidURL,vo as tupleToCoors,_o as updateActiveTool,qo as updateObject,ls as updateStable,Lo as viewportCoordsToSceneCoords,Zo as wrapEvent};
|
|
3
|
+
`,Zr=128,Qr={excalidraw:2,excalidrawLibrary:2},Jr=5,eo=.7,to=11,no={TOP:"top",MIDDLE:"middle",BOTTOM:"bottom"},ro={LEFT:"left",CENTER:"center",RIGHT:"right"},oo=20,ao=.25,so=32,io={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},Ht={architect:0,artist:1,cartoonist:2},lo={thin:1,bold:2,extraBold:4},co={strokeColor:d.black,backgroundColor:d.transparent,fillStyle:"solid",strokeWidth:2,strokeStyle:"solid",roughness:Ht.artist,opacity:100,locked:!1},Gt="library",uo="search",fo={name:"default",defaultTab:Gt},po=new Set(["iframe","embeddable","image"]),mo={selection:"selection",lasso:"lasso",rectangle:"rectangle",diamond:"diamond",ellipse:"ellipse",arrow:"arrow",line:"line",freedraw:"freedraw",text:"text",image:"image",eraser:"eraser",hand:"hand",frame:"frame",magicframe:"magicframe",embeddable:"embeddable",laser:"laser"},ho={OAI_API_KEY:"excalidraw-oai-api-key",MERMAID_TO_EXCALIDRAW:"mermaid-to-excalidraw",PUBLISH_LIBRARY:"publish-library-data"},To="Untitled",go={generalStats:1,elementProperties:2},Eo=1,bo={sharp:"sharp",round:"round",elbow:"elbow"},_o=.3,Ao="element",xo=Symbol.for("__test__originalId__"),Bt=(r=>(r.ACTIVE="active",r.AWAY="away",r.IDLE="idle",r))(Bt||{}),yo=20,vo=35,Mo=700,So={background:"var(--mobile-action-button-bg)"};f();var K={[E.Excalifont]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25}},[E.Nunito]:{metrics:{unitsPerEm:1e3,ascender:1011,descender:-353,lineHeight:1.25}},[E["Lilita One"]]:{metrics:{unitsPerEm:1e3,ascender:923,descender:-220,lineHeight:1.15}},[E["Comic Shanns"]]:{metrics:{unitsPerEm:1e3,ascender:750,descender:-250,lineHeight:1.25}},[E.Virgil]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},deprecated:!0},[E.Helvetica]:{metrics:{unitsPerEm:2048,ascender:1577,descender:-471,lineHeight:1.15},deprecated:!0,local:!0},[E.Cascadia]:{metrics:{unitsPerEm:2048,ascender:1900,descender:-480,lineHeight:1.2},deprecated:!0},[E["Liberation Sans"]]:{metrics:{unitsPerEm:2048,ascender:1854,descender:-434,lineHeight:1.15},private:!0},[E.Assistant]:{metrics:{unitsPerEm:2048,ascender:1021,descender:-287,lineHeight:1.25},private:!0},[Z.Xiaolai]:{metrics:{unitsPerEm:1e3,ascender:880,descender:-144,lineHeight:1.25},fallback:!0},[Z["Segoe UI Emoji"]]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},local:!0,fallback:!0}},Fo={LATIN:"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD",LATIN_EXT:"U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF",CYRILIC_EXT:"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F",CYRILIC:"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116",VIETNAMESE:"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB"},Io="local:",wo=(e,t,n)=>{let{unitsPerEm:r,ascender:o,descender:a}=K[e]?.metrics||K[E.Excalifont].metrics,i=t/r,s=(n-i*o+i*a)/2;return i*o+s},Co=e=>{let{lineHeight:t}=K[e]?.metrics||K[E.Excalifont].metrics;return t};f();var Me=class{jobs=[];running=!1;tick(){if(this.running)return;let t=this.jobs.shift();t?(this.running=!0,t.promise.resolve(Re(t.jobFactory,...t.args).finally(()=>{this.running=!1,this.tick()}))):this.running=!1}push(t,...n){let r=Se();return this.jobs.push({jobFactory:t,promise:r,args:n}),this.tick(),r}};f();f();var Le="excalidraw.desktopUIMode",Ho=599,Go=1e3,Bo=500,Ko=600,Wo=1180,Vo=1440,Yo=1229,Oe=/Mac|iPod|iPhone|iPad/.test(navigator.platform),$o=/^Win/.test(navigator.platform),Fe=/\b(android)\b/i.test(navigator.userAgent),Xo=typeof window<"u"&&"netscape"in window&&navigator.userAgent.indexOf("rv:")>1&&navigator.userAgent.indexOf("Gecko")>1,Kt=navigator.userAgent.indexOf("Chrome")!==-1,zo=!Kt&&navigator.userAgent.indexOf("Safari")!==-1,Ie=/iPad|iPhone/i.test(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,jo=()=>navigator.brave?.isBrave?.name==="isBrave",Wt=(e,t)=>e<=599||t<500&&e<1e3,Vt=(e,t)=>{let n=Math.min(e,t),r=Math.max(e,t);return n>=600&&r<=1180},Yt=()=>{let e=navigator.userAgent||"",t=navigator.platform||"",n=navigator.userAgentData;if(n){let o=(n.platform||"").toLowerCase(),a=o==="windows"||o==="macos"||o==="linux"||o==="chrome os";if(n.mobile===!0)return!0;if(n.mobile===!1&&o==="android")return matchMedia?.("(hover: none)").matches&&matchMedia?.("(pointer: coarse)").matches;if(a)return!1}if(Ie)return!0;if(Fe){let o=/Mobile/i.test(e);if(o||!o)return matchMedia?.("(hover: none)").matches&&matchMedia?.("(pointer: coarse)").matches}return/Win|Linux|CrOS|Mac/.test(t)||/Windows NT|X11|CrOS|Macintosh/.test(e),!1},qo=(e,t)=>Wt(e,t)?"phone":Vt(e,t)?"tablet":"desktop",Zo=e=>e.formFactor==="phone"?"mobile":e.formFactor==="tablet"?"compact":e.desktopUIMode,Qo=e=>{let t=e??"",n="unknown";return Ie?n="ios":Fe?n="android":t&&(n="other"),{isMobileDevice:Yt(),platform:n}},Jo=()=>{if(typeof window>"u")return null;try{let e=window.localStorage.getItem(Le);if(e==="compact"||e==="full")return e}catch{}return null},$t=e=>{if(!(typeof window>"u"))try{window.localStorage.setItem(Le,e)}catch{}},ea=e=>{if(!(e!=="compact"&&e!=="full"))return $t(e),e};var we={EQUAL:"Equal",MINUS:"Minus",NUM_ADD:"NumpadAdd",NUM_SUBTRACT:"NumpadSubtract",NUM_ZERO:"Numpad0",BRACKET_RIGHT:"BracketRight",BRACKET_LEFT:"BracketLeft",ONE:"Digit1",TWO:"Digit2",THREE:"Digit3",NINE:"Digit9",QUOTE:"Quote",ZERO:"Digit0",SLASH:"Slash",C:"KeyC",D:"KeyD",H:"KeyH",V:"KeyV",Z:"KeyZ",Y:"KeyY",R:"KeyR",S:"KeyS"},R={ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",PAGE_UP:"PageUp",PAGE_DOWN:"PageDown",BACKSPACE:"Backspace",ALT:"Alt",CTRL_OR_CMD:Oe?"metaKey":"ctrlKey",DELETE:"Delete",ENTER:"Enter",ESCAPE:"Escape",QUESTION_MARK:"?",SPACE:" ",TAB:"Tab",CHEVRON_LEFT:"<",CHEVRON_RIGHT:">",PERIOD:".",COMMA:",",SUBTRACT:"-",SLASH:"/",A:"a",C:"c",D:"d",E:"e",F:"f",G:"g",H:"h",I:"i",L:"l",O:"o",P:"p",Q:"q",R:"r",S:"s",T:"t",V:"v",X:"x",Y:"y",Z:"z",K:"k",W:"w",0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9"},Xt=new Map([[R.Z,we.Z],[R.Y,we.Y]]),zt=e=>/^[a-z]$/.test(e.toLowerCase()),oa=(e,t)=>{if(t===e.key.toLowerCase())return!0;let n=Xt.get(t);return!!(n&&!zt(e.key)&&e.code===n)},aa=e=>e===R.ARROW_LEFT||e===R.ARROW_RIGHT||e===R.ARROW_DOWN||e===R.ARROW_UP,sa=e=>e.altKey,ia=e=>e.shiftKey,la=e=>e.shiftKey;f();import{pointFromPair as jt}from"@excalidraw/math";var da=e=>{let t=e.map(r=>r[0]),n=e.map(r=>r[1]);return{width:Math.max(...t)-Math.min(...t),height:Math.max(...n)-Math.min(...n)}},pa=(e,t,n,r)=>{let o=n.map(_=>_[e]),a=Math.max(...o),i=Math.min(...o),s=a-i,l=s===0?1:t/s,u=1/0,p=n.map(_=>{let v=_[e]*l,M=[..._];return M[e]=v,v<u&&(u=v),M});if(!r||p.length===2)return p;let g=i-u;return p.map(_=>jt(_.map((v,M)=>M===e?v+g:v)))},ma=(e,t,n)=>n?[Math.round(e/n)*n,Math.round(t/n)*n]:[e,t];f();var Ue=oe(De(),1),Pe=class{pool;entries={};constructor(t,n){this.pool=new Ue.default(t,n)}all(){let t=n=>{if(n.data.result){let[r,o]=n.data.result;this.entries[r]=o}};return this.pool.addEventListener("fulfilled",t),this.pool.start().then(()=>(setTimeout(()=>{this.pool.removeEventListener("fulfilled",t)}),Object.values(this.entries)))}};f();f();f();var ke=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,n)=>(n&=63,n<36?t+=n.toString(36):n<62?t+=(n-26).toString(36).toUpperCase():n>62?t+="-":t+="_",t),"");f();var C=class{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}};f();import{average as W}from"@excalidraw/math";var J=null,Fa=e=>{J=e},Ia=()=>{if(J)return J;let e=new Date,t=e.getFullYear(),n=`${e.getMonth()+1}`.padStart(2,"0"),r=`${e.getDate()}`.padStart(2,"0"),o=`${e.getHours()}`.padStart(2,"0"),a=`${e.getMinutes()}`.padStart(2,"0");return`${t}-${n}-${r}-${o}${a}`},wa=e=>e.charAt(0).toUpperCase()+e.slice(1),Ca=e=>e instanceof HTMLElement&&e.className.includes("ToolIcon"),qt=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,Da=e=>qt(e)||e instanceof Element&&!!e.closest("label, button"),Pa=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&(e.type==="text"||e.type==="number"||e.type==="password"||e.type==="search"),Zt=({fontFamily:e})=>{for(let[t,n]of Object.entries(E))if(n===e)return`${t}${xe(n).map(r=>`, ${r}`).join("")}`;return w},Ua=({fontSize:e,fontFamily:t})=>`${e}px ${Zt({fontFamily:t})}`,ka=async e=>{requestAnimationFrame(()=>requestAnimationFrame(e))},Na=(e,t)=>{let n=0,r=null,o=(...a)=>{r=a,clearTimeout(n),n=window.setTimeout(()=>{r=null,e(...a)},t)};return o.flush=()=>{if(clearTimeout(n),r){let a=r;r=null,e(...a)}},o.cancel=()=>{r=null,clearTimeout(n)},o},Ha=(e,t)=>{let n=null,r=null,o=null,a=s=>{n=window.requestAnimationFrame(()=>{n=null,e(...s),r=null,o&&(r=o,o=null,a(r))})},i=(...s)=>{if(V()){e(...s);return}r=s,n===null?a(r):t?.trailing&&(o=s)};return i.flush=()=>{n!==null&&(cancelAnimationFrame(n),n=null),r&&(e(...o||r),r=o=null)},i.cancel=()=>{r=o=null,n!==null&&(cancelAnimationFrame(n),n=null)},i},Ge=e=>1-Math.pow(1-e,4),Ne=(e,t,n)=>(t-e)*Ge(n)+e,Ga=({fromValues:e,toValues:t,onStep:n,duration:r=250,interpolateValue:o,onStart:a,onEnd:i,onCancel:s})=>{let l=!1,u=0,p;function g(O){if(l)return;p===void 0&&(p=O,a?.());let _=Math.min(O-p,r),v=Ge(_/r),M={};if(Object.keys(e).forEach(F=>{let S=F,$=(t[S]-e[S])*v+e[S];M[S]=$}),n(M),_<r){let F=_/r,S={};Object.keys(e).forEach($=>{let P=$,X=e[P],z=t[P],U;U=o?o(X,z,F,P):Ne(X,z,F),U==null&&(U=Ne(X,z,F)),S[P]=U}),n(S),u=window.requestAnimationFrame(g)}else n(t),i?.()}return u=window.requestAnimationFrame(g),()=>{s?.(),l=!0,window.cancelAnimationFrame(u)}},Ba=(e,t)=>{if(!e.length||t<1)return[];let n=0,r=0,o=Array(Math.ceil(e.length/t));for(;n<e.length;)o[r++]=e.slice(n,n+=t);return o},Ka=e=>{let t=window.getSelection();if(t){let n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}},Wa=()=>{let e=window.getSelection();e&&e.removeAllRanges()},Va=(e,t)=>Math.abs(e-t),Ya=e=>e==="selection"||e==="lasso",$a=(e,t)=>t.type==="custom"?{...e.activeTool,type:"custom",customType:t.customType,locked:t.locked??e.activeTool.locked}:{...e.activeTool,lastActiveTool:t.lastActiveToolBeforeEraser===void 0?e.activeTool.lastActiveTool:t.lastActiveToolBeforeEraser,type:t.type,customType:null,locked:t.locked??e.activeTool.locked,fromSelection:t.fromSelection??!1},Xa=()=>document.fullscreenElement?.nodeName==="HTML",za=()=>document.documentElement.requestFullscreen(),ja=()=>document.exitFullscreen(),qa=({clientX:e,clientY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:a,scrollY:i})=>{let s=(e-r)/n.value-a,l=(t-o)/n.value-i;return{x:s,y:l}},Za=({sceneX:e,sceneY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:a,scrollY:i})=>{let s=(e+a)*n.value+r,l=(t+i)*n.value+o;return{x:s,y:l}},Qa=e=>getComputedStyle(document.documentElement).getPropertyValue(`--${e}`),Qt="A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF",Jt="\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC",en=new RegExp(`^[^${Qt}]*[${Jt}]`),Ja=e=>en.test(e),es=e=>{let[t,n]=e;return{x:t,y:n}},ts=e=>{if(e?.name==="AbortError"){console.warn(e);return}throw e},ns=(e,t,n=0)=>{n<0&&(n=e.length+n),n=Math.min(e.length,Math.max(n,0));let r=n-1;for(;++r<e.length;)if(t(e[r],r,e))return r;return-1},rs=(e,t,n=e.length-1)=>{n<0&&(n=e.length+n),n=Math.min(e.length-1,Math.max(n,0));let r=n+1;for(;--r>-1;)if(t(e[r],r,e))return r;return-1},os=(e,t)=>{for(let n=0;n<e.length;n++){let r=t(e[n],n);if(r!=null)return r}},Se=()=>{let e,t,n=new Promise((r,o)=>{e=r,t=o});return n.resolve=e,n.reject=t,n},as=(e,t)=>{let n=[{value:1,symbol:"b"},{value:1e3,symbol:"k"},{value:1e6,symbol:"M"},{value:1e9,symbol:"G"}],r=/\.0+$|(\.[0-9]*[1-9])0+$/,o;for(o=n.length-1;o>0&&!(e>=n[o].value);o--);return(e/n[o].value).toFixed(t).replace(r,"$1")+n[o].symbol},ss=()=>document.querySelector('meta[name="version"]')?.content||ye,is=()=>{let t=document.createElement("canvas").getContext("2d");if(!t)return!1;let n=12;return t.fillStyle="#f00",t.textBaseline="top",t.font="32px Arial",t.fillText("\u{1F600}",0,0),t.getImageData(n,n,1,1).data[0]!==0},ls=e=>{let t=e.parentElement;for(;t;){if(t===document.body)return document;let{overflowY:n}=window.getComputedStyle(t);if(t.scrollHeight>t.clientHeight&&(n==="auto"||n==="scroll"||n==="overlay"))return t;t=t.parentElement}return document},cs=e=>{let t=e.parentElement;for(;t;){if(t.tabIndex>-1){t.focus();return}t=t.parentElement}},us=e=>{e.preventDefault(),e.returnValue=""},fs=e=>Array.from(e).map(t=>`0${t.toString(16)}`.slice(-2)).join(""),ds=()=>V()?1:Date.now(),ps=e=>e instanceof Map?e:e.reduce((t,n)=>(t.set(typeof n=="string"?n:n.id,n),t),new Map),ms=e=>e.reduce((t,n,r)=>(t.set(n.id,[n,r]),t),new Map),hs=(e,t)=>e.reduce((n,r,o)=>(n[t?t(r):o]=r,n),{}),Ts=e=>e.reduce((t,n,r)=>{let o={...n,prev:null,next:null};if(r!==0){let a=t[r-1];if(o.prev=a,a.next=o,r===e.length-1){let i=t[0];o.next=i,i.prev=o}}return t.push(o),t},[]),tn=e=>Array.isArray(e)?e:e.values(),gs=e=>Array.isArray(e)?e:Array.from(tn(e)),V=()=>h.MODE===B.TEST,Es=()=>h.MODE===B.DEVELOPMENT,bs=()=>h.MODE===B.PRODUCTION,_s=()=>typeof process<"u"&&!0,As=(e,t)=>new CustomEvent(e,{detail:{nativeEvent:t},cancelable:!0}),xs=(e,t)=>{let n=!1;for(let r in t){let o=t[r];if(typeof o<"u"){if(e[r]===o&&(typeof o!="object"||o===null))continue;n=!0}}return n?{...e,...t}:e},ys=e=>{let t=typeof e;return e==null||t!=="object"&&t!=="function"},nn=()=>{try{return window.self===window.top?"top":"iframe"}catch{return"iframe"}},vs=()=>nn()==="iframe",Ms=e=>!!e&&typeof e=="object"&&"then"in e&&"catch"in e&&"finally"in e,Ss=e=>{let t=e?.querySelectorAll("button, a, input, select, textarea, div[tabindex], label[tabindex]");return t?Array.from(t).filter(n=>n.tabIndex>-1&&!n.disabled):[]},He=(e,t)=>Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t,rn=(e,t,n,r=!1)=>{let o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return r&&console.warn("%cisShallowEqual: objects don't have same properties ->","color: #8B4000",e,t),!1;if(n&&Array.isArray(n)){for(let i of n)if(!(e[i]===t[i]||He(e[i],t[i])))return r&&console.warn(`%cisShallowEqual: ${i} not equal ->`,"color: #8B4000",e[i],t[i]),!1;return!0}return o.every(i=>{let s=n?.[i],l=s?s(e[i],t[i]):e[i]===t[i]||He(e[i],t[i]);return!l&&r&&console.warn(`%cisShallowEqual: ${i} not equal ->`,"color: #8B4000",e[i],t[i]),l})},Rs=(e,t,{checkForDefaultPrevented:n=!0}={})=>function(o){if(e?.(o),!n||!o?.defaultPrevented)return t?.(o)},Ls=(e,t,n)=>{if(!t)return e;if(n)return console.error(t),e;throw new Error(t)};function Os(e,t){if(!e)throw new Error(t)}var Fs=e=>{let t,n,r=function(o){let a=Object.entries(o);if(t){let s=!0;for(let[l,u]of a)if(t.get(l)!==u){s=!1;break}if(s)return n}let i=e(o);return t=new Map(a),n=i,i};return r.clear=()=>{t=void 0,n=void 0},r},Is=(e,t)=>e instanceof Set||e instanceof Map?e.has(t):"includes"in e?e.includes(t):e.hasOwnProperty(t),ws=e=>JSON.parse(JSON.stringify(e)),Cs=(e,t)=>rn(e,t)?e:t;function Ds(e,t,n,r){return e?(e?.addEventListener?.(t,n,r),()=>{e?.removeEventListener?.(t,n,r)}):()=>{}}function Ps(e,t=!0){let n=e.length;if(n<4)return"";let r=e[0],o=e[1],a=e[2],i=`M${r[0].toFixed(2)},${r[1].toFixed(2)} Q${o[0].toFixed(2)},${o[1].toFixed(2)} ${W(o[0],a[0]).toFixed(2)},${W(o[1],a[1]).toFixed(2)} T`;for(let s=2,l=n-1;s<l;s++)r=e[s],o=e[s+1],i+=`${W(r[0],o[0]).toFixed(2)},${W(r[1],o[1]).toFixed(2)} `;return t&&(i+="Z"),i}var Us=e=>e.replace(/\r?\n|\r/g,`
|
|
4
|
+
`);function ks(e){return e}var Re=async(e,...t)=>new Promise(n=>{n(e(...t))}),Ns=(...e)=>Math.max(...e.map(t=>t?1:0))>0,Hs=e=>{try{return JSON.parse(e)}catch{return null}},Be=e=>e.replace(/"/g,"""),Gs=e=>Array.isArray(e)?e:[e],on=e=>Array.isArray(e),an=e=>on(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length,Bs=(e,t)=>{if(an(e)===0)return null;let n=t||(o=>o),r=null;for(let o of e){let a=n(o);if((r===null||r===a)&&a!=null)r=a;else return null}return r},Ke="excalidraw-feature-flags",ee={COMPLEX_BINDINGS:!1},L=null,Ks=e=>{if(!L)try{let t=localStorage.getItem(Ke);t&&(L=JSON.parse(t)??ee)}catch{}return(L||ee)[e]},Ws=(e,t)=>{try{L={...L||ee,[e]:t},localStorage.setItem(Ke,JSON.stringify(L))}catch(n){console.error("unable to set feature flag",n)}},Vs=(e,t)=>t.includes(e);var We=new C(Date.now()),Ve=0,qs=()=>Math.floor(We.next()*2**31),Zs=e=>{We=new C(e),Ve=0},Qs=()=>V()?`id${Ve++}`:ke();f();var $e=oe(Ye(),1);var Tn=e=>(e=e.trim(),e&&(0,$e.sanitizeUrl)(Be(e))),oi=e=>!!(e?.includes(location.origin)||e?.startsWith("/")),ai=e=>{if(e=Tn(e),e.startsWith("/"))return`${location.origin}${e}`;try{new URL(e)}catch{return"about:blank"}return e};f();var Xe=class{subscribers=[];on(...t){let n=t.flat().filter(r=>typeof r=="function");return this.subscribers.push(...n),()=>this.off(n)}once(...t){let n=t.flat().filter(o=>typeof o=="function");n.push(()=>r());let r=this.on(...n);return r}off(...t){let n=t.flat();this.subscribers=this.subscribers.filter(r=>!n.includes(r))}trigger(...t){for(let n of this.subscribers)n(...t);return this}clear(){this.subscribers=[]}};f();var D=(e,t=5)=>parseFloat(e.toPrecision(t)),gn=e=>D(e.reduce((t,n)=>t+n)/e.length),te=class e{static DEBUG_LOG_TIMES=!0;static TIMES_AGGR={};static TIMES_AVG={};static LAST_DEBUG_LOG_CALL=0;static DEBUG_LOG_INTERVAL_ID=null;static LAST_FRAME_TIMESTAMP=0;static FRAME_COUNT=0;static ANIMATION_FRAME_ID=null;static scheduleAnimationFrame=()=>{e.DEBUG_LOG_INTERVAL_ID!==null&&(e.ANIMATION_FRAME_ID=requestAnimationFrame(t=>{e.LAST_FRAME_TIMESTAMP!==t&&(e.LAST_FRAME_TIMESTAMP=t,e.FRAME_COUNT++),e.DEBUG_LOG_INTERVAL_ID!==null&&e.scheduleAnimationFrame()}))};static setupInterval=()=>{e.DEBUG_LOG_INTERVAL_ID===null&&(console.info("%c(starting perf recording)","color: lime"),e.DEBUG_LOG_INTERVAL_ID=window.setInterval(e.debugLogger,1e3),e.scheduleAnimationFrame()),e.LAST_DEBUG_LOG_CALL=Date.now()};static debugLogger=()=>{if(e.DEBUG_LOG_TIMES){for(let[t,{t:n,times:r}]of Object.entries(e.TIMES_AGGR))r.length&&(console.info(t,D(r.reduce((o,a)=>o+a)),r.sort((o,a)=>o-a).map(o=>D(o))),e.TIMES_AGGR[t]={t:n,times:[]});for(let[t,{t:n,times:r,avg:o}]of Object.entries(e.TIMES_AVG))if(r.length){let a=r.reduce((s,l)=>s+l),i=D(a/e.FRAME_COUNT);console.info(t,`- ${r.length} calls - ${i}ms/frame across ${e.FRAME_COUNT} frames (${D(i/16.67*100,1)}% of frame budget)`),e.TIMES_AVG[t]={t:n,times:[],avg:o!=null?gn([o,i]):i}}}e.FRAME_COUNT=0,Date.now()-e.LAST_DEBUG_LOG_CALL>600&&e.DEBUG_LOG_INTERVAL_ID!==null&&(console.info("%c(stopping perf recording)","color: red"),window.clearInterval(e.DEBUG_LOG_INTERVAL_ID),window.cancelAnimationFrame(e.ANIMATION_FRAME_ID),e.ANIMATION_FRAME_ID=null,e.FRAME_COUNT=0,e.LAST_FRAME_TIMESTAMP=0,e.DEBUG_LOG_INTERVAL_ID=null,e.TIMES_AGGR={},e.TIMES_AVG={})};static logTime=(t,n="default")=>{e.setupInterval();let r=performance.now(),{t:o,times:a}=e.TIMES_AGGR[n]=e.TIMES_AGGR[n]||{t:0,times:[]};o&&a.push(t??r-o),e.TIMES_AGGR[n].t=r};static logTimeAverage=(t,n="default")=>{e.setupInterval();let r=performance.now(),{t:o,times:a}=e.TIMES_AVG[n]=e.TIMES_AVG[n]||{t:0,times:[]};o&&a.push(t??r-o),e.TIMES_AVG[n].t=r};static logWrapper=t=>(n,r="default")=>(...o)=>{let a=performance.now(),i=n(...o);return e[t](performance.now()-a,r),i};static logTimeWrap=e.logWrapper("logTime");static logTimeAverageWrap=e.logWrapper("logTimeAverage");static perfWrap=(t,n="default")=>(...r)=>{console.time(n);let o=t(...r);return console.timeEnd(n),o};static CHANGED_CACHE={};static logChanged(t,n){let r=e.CHANGED_CACHE[t];if(e.CHANGED_CACHE[t]=n,!r)return;let o=new Set([...Object.keys(r),...Object.keys(n)]),a={};for(let i of o){let s=r[i],l=n[i];ze(s,l)||(a[i]={prev:s,next:l})}Object.keys(a).length>0&&console.info(`[${t}] changed:`,a)}};function ze(e,t){if(Object.is(e,t))return!0;if(e===null||t===null||typeof e!="object"||typeof t!="object"||Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let o of n)if(!ze(e[o],t[o]))return!1;return!0}export{Gr as ACTIVE_THRESHOLD,Mr as ALLOWED_PASTE_MIME_TYPES,zn as APP_NAME,to as ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO,eo as ARROW_LABEL_WIDTH_FRACTION,bo as ARROW_TYPE,Mo as BIND_MODE_TIMEOUT,Jr as BOUND_TEXT_PADDING,ae as BinaryHeap,xr as CANVAS_ONLY_ACTIONS,uo as CANVAS_SEARCH_TAB,be as CJK_HAND_DRAWN_FALLBACK_FONT,lr as CLASSES,we as CODES,wn as COLORS_PER_ROW,_r as COLOR_CHARCOAL_BLACK,Bn as COLOR_OUTLINE_CONTRAST_THRESHOLD,d as COLOR_PALETTE,Ar as COLOR_VOICE_CALL,br as COLOR_WHITE,or as CURSOR_TYPE,fr as DARK_THEME_FILTER,so as DEFAULT_ADAPTIVE_RADIUS,Un as DEFAULT_CANVAS_BACKGROUND_PICKS,Cn as DEFAULT_CHART_COLOR_INDEX,Er as DEFAULT_COLLISION_THRESHOLD,G as DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX,Nn as DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE,Pn as DEFAULT_ELEMENT_BACKGROUND_PICKS,co as DEFAULT_ELEMENT_PROPS,H as DEFAULT_ELEMENT_STROKE_COLOR_INDEX,kn as DEFAULT_ELEMENT_STROKE_COLOR_PALETTE,Dn as DEFAULT_ELEMENT_STROKE_PICKS,$r as DEFAULT_EXPORT_PADDING,To as DEFAULT_FILENAME,hr as DEFAULT_FONT_FAMILY,mr as DEFAULT_FONT_SIZE,yr as DEFAULT_GRID_SIZE,vr as DEFAULT_GRID_STEP,rr as DEFAULT_LASER_COLOR,Xr as DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT,ao as DEFAULT_PROPORTIONAL_RADIUS,_o as DEFAULT_REDUCED_GLOBAL_ALPHA,fo as DEFAULT_SIDEBAR,Tr as DEFAULT_TEXT_ALIGN,Pt as DEFAULT_TRANSFORM_HANDLE_SPACING,Wr as DEFAULT_UI_OPTIONS,ye as DEFAULT_VERSION,gr as DEFAULT_VERTICAL_ALIGN,vo as DOUBLE_TAP_POSITION_THRESHOLD,qn as DRAGGING_THRESHOLD,te as Debug,ho as EDITOR_LS_KEYS,Ao as ELEMENT_LINK_KEY,oo as ELEMENT_READY_TO_ERASE_OPACITY,Jn as ELEMENT_SHIFT_TRANSLATE_AMOUNT,er as ELEMENT_TRANSLATE_AMOUNT,Zr as ENCRYPTION_KEY_BITS,B as ENV,kt as EPSILON,wt as EVENT,Rr as EXPORT_DATA_TYPES,Sr as EXPORT_IMAGE_TYPES,Yr as EXPORT_SCALES,Xe as Emitter,E as FONT_FAMILY,Z as FONT_FAMILY_FALLBACKS,Ct as FONT_FAMILY_GENERIC_FALLBACKS,K as FONT_METADATA,cr as FONT_SIZES,dr as FRAME_STYLE,Fo as GOOGLE_FONTS_RANGES,Nr as HYPERLINK_TOOLTIP_DELAY,Hr as IDLE_THRESHOLD,ve as IMAGE_MIME_TYPES,Or as IMAGE_RENDER_TIMEOUT,R as KEYS,Xt as KeyCodeMap,po as LIBRARY_DISABLED_TYPES,Gt as LIBRARY_SIDEBAR_TAB,Qn as LINE_CONFIRM_THRESHOLD,yo as LINE_POLYGON_POINT_MERGE_DISTANCE,Io as LOCAL_FONT_PROTOCOL,zr as MAX_ALLOWED_FILE_BYTES,In as MAX_CUSTOM_COLORS_USED_IN_CANVAS,Vr as MAX_DECIMALS_FOR_SVG_EXPORT,kr as MAX_ZOOM,Ee as MIME_TYPES,Zn as MINIMUM_ARROW_SIZE,pr as MIN_FONT_SIZE,Eo as MIN_WIDTH_OR_HEIGHT,Ur as MIN_ZOOM,So as MOBILE_ACTION_BUTTON_BG,Ae as MONOSPACE_GENERIC_FONT,Bo as MQ_MAX_HEIGHT_LANDSCAPE,Ho as MQ_MAX_MOBILE,Wo as MQ_MAX_TABLET,Go as MQ_MAX_WIDTH_LANDSCAPE,Ko as MQ_MIN_TABLET,Vo as MQ_MIN_WIDTH_DESKTOP,Yo as MQ_RIGHT_SIDEBAR_MIN_WIDTH,xo as ORIG_ID,ar as POINTER_BUTTON,sr as POINTER_EVENTS,Pe as PromisePool,Me as Queue,Ht as ROUGHNESS,io as ROUNDNESS,_e as SANS_SERIF_GENERIC_FONT,Dr as SCROLL_TIMEOUT,nr as SHIFT_LOCKING_ANGLE,Ut as SIDE_RESIZING_THRESHOLD,go as STATS_PANELS,Nt as STRING_MIME_TYPES,lo as STROKE_WIDTH,qr as SVG_DOCUMENT_PREAMBLE,jr as SVG_NS,Fr as TAP_TWICE_TIMEOUT,ro as TEXT_ALIGN,jn as TEXT_AUTOWRAP_THRESHOLD,tr as TEXT_TO_CENTER_SNAP_THRESHOLD,ur as THEME,wr as TITLE_TIMEOUT,mo as TOOL_TYPE,Ir as TOUCH_CTX_MENU_TIMEOUT,Kr as URL_HASH_KEYS,Br as URL_QUERY_KEYS,Bt as UserIdleState,Qr as VERSIONS,Cr as VERSION_TIMEOUT,no as VERTICAL_ALIGN,w as WINDOWS_EMOJI_FALLBACK_FONT,ir as YOUTUBE_STATES,Pr as ZOOM_STEP,Ds as addEventListener,za as allowFullScreen,Fn as applyDarkModeFilter,Ts as arrayToList,ps as arrayToMap,ms as arrayToMapWithIndex,hs as arrayToObject,Ls as assertNever,fs as bytesToHexString,wa as capitalizeString,Gs as castArray,Ba as chunk,ws as cloneJSON,Gn as colorToHex,Rs as composeEventHandlers,Qo as createUserAgentDescriptor,Na as debounce,Zo as deriveStylesPanelMode,Va as distance,Ge as easeOut,Ga as easeToValuesRAF,Be as escapeDoubleQuotes,ja as exitFullScreen,ns as findIndex,rs as findLastIndex,cs as focusNearestParent,Hn as getAllColorsSpecificShade,Ia as getDateTime,Lr as getExportSource,Ks as getFeatureFlag,xe as getFontFamilyFallbacks,Zt as getFontFamilyString,Ua as getFontString,qo as getFormFactor,nn as getFrame,Dt as getGenericFontFamilyFallback,Qa as getGlobalCSSVariable,ma as getGridPoint,Co as getLineHeight,ls as getNearestScrollableContainer,da as getSizeFromPoints,Ps as getSvgPathFromStroke,ds as getUpdatedTimestamp,ss as getVersion,wo as getVerticalOffset,Os as invariant,Fe as isAndroid,Ns as isAnyTrue,aa as isArrowKey,xn as isBounds,jo as isBrave,Kt as isChrome,Kn as isColorDark,Oe as isDarwin,Es as isDevEnv,Xo as isFirefox,Xa as isFullScreen,Ie as isIOS,qt as isInputLike,Da as isInteractive,zt as isLatinChar,oi as isLocalLink,Is as isMemberOf,Wt as isMobileBreakpoint,ys as isPrimitive,bs as isProdEnv,Ms as isPromiseLike,Ja as isRTL,on as isReadonlyArray,vs as isRunningInIframe,zo as isSafari,Ya as isSelectionLikeTool,_s as isServerEnv,rn as isShallowEqual,Vt as isTabletBreakpoint,V as isTestEnv,Ca as isToolIcon,ge as isTransparent,$o as isWindows,Pa as isWritableElement,Jo as loadDesktopUIModePreference,os as mapFind,oa as matchKey,Fs as memoize,ts as muteFSAbortError,as as nFormatter,ka as nextAnimationFrame,Us as normalizeEOL,Wn as normalizeInputColor,Tn as normalizeLink,Vs as oneOf,us as preventUnload,Re as promiseTry,Ss as queryFocusableElements,Qs as randomId,qs as randomInteger,Bs as reduceToCommonValue,Wa as removeSelection,pa as rescalePoints,Zs as reseed,Se as resolvablePromise,Te as rgbToHex,Hs as safelyParseJSON,Za as sceneCoordsToViewportCoords,Ka as selectNode,Fa as setDateTimeForTests,ea as setDesktopUIMode,Ws as setFeatureFlag,ia as shouldMaintainAspectRatio,sa as shouldResizeFromCenter,la as shouldRotateWithDiscreteAngle,an as sizeOf,is as supportsEmoji,Xn as supportsResizeObserver,Ha as throttleRAF,gs as toArray,ks as toBrandedType,tn as toIterable,ai as toValidURL,es as tupleToCoors,$a as updateActiveTool,xs as updateObject,Cs as updateStable,qa as viewportCoordsToSceneCoords,As as wrapEvent};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare class Debug {
|
|
2
|
+
static DEBUG_LOG_TIMES: boolean;
|
|
3
|
+
private static TIMES_AGGR;
|
|
4
|
+
private static TIMES_AVG;
|
|
5
|
+
private static LAST_DEBUG_LOG_CALL;
|
|
6
|
+
private static DEBUG_LOG_INTERVAL_ID;
|
|
7
|
+
private static LAST_FRAME_TIMESTAMP;
|
|
8
|
+
private static FRAME_COUNT;
|
|
9
|
+
private static ANIMATION_FRAME_ID;
|
|
10
|
+
private static scheduleAnimationFrame;
|
|
11
|
+
private static setupInterval;
|
|
12
|
+
private static debugLogger;
|
|
13
|
+
static logTime: (time?: number, name?: string) => void;
|
|
14
|
+
static logTimeAverage: (time?: number, name?: string) => void;
|
|
15
|
+
private static logWrapper;
|
|
16
|
+
static logTimeWrap: <T extends any[], R>(fn: (...args: T) => R, name?: string) => (...args: T) => R;
|
|
17
|
+
static logTimeAverageWrap: <T extends any[], R>(fn: (...args: T) => R, name?: string) => (...args: T) => R;
|
|
18
|
+
static perfWrap: <T extends any[], R>(fn: (...args: T) => R, name?: string) => (...args: T) => R;
|
|
19
|
+
private static CHANGED_CACHE;
|
|
20
|
+
static logChanged(name: string, obj: Record<string, unknown>): void;
|
|
21
|
+
}
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import type { Merge } from "./utility-types";
|
|
3
|
-
export declare const COLOR_OUTLINE_CONTRAST_THRESHOLD = 240;
|
|
4
|
-
export type ColorPickerColor = Exclude<keyof oc, "indigo" | "lime"> | "transparent" | "bronze";
|
|
1
|
+
export declare const applyDarkModeFilter: (color: string) => string;
|
|
5
2
|
export type ColorTuple = readonly [string, string, string, string, string];
|
|
6
|
-
export type ColorPalette = Merge<Record<ColorPickerColor, ColorTuple>, {
|
|
7
|
-
black: "#1e1e1e";
|
|
8
|
-
white: "#ffffff";
|
|
9
|
-
transparent: "transparent";
|
|
10
|
-
}>;
|
|
11
3
|
export type ColorPaletteCustom = {
|
|
12
4
|
[key: string]: ColorTuple | string;
|
|
13
5
|
};
|
|
@@ -17,46 +9,74 @@ export declare const COLORS_PER_ROW = 5;
|
|
|
17
9
|
export declare const DEFAULT_CHART_COLOR_INDEX = 4;
|
|
18
10
|
export declare const DEFAULT_ELEMENT_STROKE_COLOR_INDEX = 4;
|
|
19
11
|
export declare const DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX = 1;
|
|
20
|
-
export declare const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
export declare const COLOR_PALETTE: {
|
|
13
|
+
readonly transparent: "transparent";
|
|
14
|
+
readonly black: "#1e1e1e";
|
|
15
|
+
readonly white: "#ffffff";
|
|
16
|
+
readonly gray: readonly ["#f8f9fa", "#e9ecef", "#ced4da", "#868e96", "#343a40"];
|
|
17
|
+
readonly red: readonly ["#fff5f5", "#ffc9c9", "#ff8787", "#fa5252", "#e03131"];
|
|
18
|
+
readonly pink: readonly ["#fff0f6", "#fcc2d7", "#f783ac", "#e64980", "#c2255c"];
|
|
19
|
+
readonly grape: readonly ["#f8f0fc", "#eebefa", "#da77f2", "#be4bdb", "#9c36b5"];
|
|
20
|
+
readonly violet: readonly ["#f3f0ff", "#d0bfff", "#9775fa", "#7950f2", "#6741d9"];
|
|
21
|
+
readonly blue: readonly ["#e7f5ff", "#a5d8ff", "#4dabf7", "#228be6", "#1971c2"];
|
|
22
|
+
readonly cyan: readonly ["#e3fafc", "#99e9f2", "#3bc9db", "#15aabf", "#0c8599"];
|
|
23
|
+
readonly teal: readonly ["#e6fcf5", "#96f2d7", "#38d9a9", "#12b886", "#099268"];
|
|
24
|
+
readonly green: readonly ["#ebfbee", "#b2f2bb", "#69db7c", "#40c057", "#2f9e44"];
|
|
25
|
+
readonly yellow: readonly ["#fff9db", "#ffec99", "#ffd43b", "#fab005", "#f08c00"];
|
|
26
|
+
readonly orange: readonly ["#fff4e6", "#ffd8a8", "#ffa94d", "#fd7e14", "#e8590c"];
|
|
27
|
+
readonly bronze: readonly ["#f8f1ee", "#eaddd7", "#d2bab0", "#a18072", "#846358"];
|
|
28
|
+
};
|
|
29
|
+
export type ColorPalette = typeof COLOR_PALETTE;
|
|
30
|
+
export type ColorPickerColor = keyof typeof COLOR_PALETTE;
|
|
24
31
|
export declare const DEFAULT_ELEMENT_STROKE_PICKS: ColorTuple;
|
|
25
32
|
export declare const DEFAULT_ELEMENT_BACKGROUND_PICKS: ColorTuple;
|
|
26
33
|
export declare const DEFAULT_CANVAS_BACKGROUND_PICKS: ColorTuple;
|
|
27
34
|
export declare const DEFAULT_ELEMENT_STROKE_COLOR_PALETTE: {
|
|
28
|
-
readonly red:
|
|
29
|
-
readonly pink:
|
|
30
|
-
readonly grape:
|
|
31
|
-
readonly violet:
|
|
32
|
-
readonly blue:
|
|
33
|
-
readonly cyan:
|
|
34
|
-
readonly teal:
|
|
35
|
-
readonly green:
|
|
36
|
-
readonly yellow:
|
|
37
|
-
readonly orange:
|
|
35
|
+
readonly red: readonly ["#fff5f5", "#ffc9c9", "#ff8787", "#fa5252", "#e03131"];
|
|
36
|
+
readonly pink: readonly ["#fff0f6", "#fcc2d7", "#f783ac", "#e64980", "#c2255c"];
|
|
37
|
+
readonly grape: readonly ["#f8f0fc", "#eebefa", "#da77f2", "#be4bdb", "#9c36b5"];
|
|
38
|
+
readonly violet: readonly ["#f3f0ff", "#d0bfff", "#9775fa", "#7950f2", "#6741d9"];
|
|
39
|
+
readonly blue: readonly ["#e7f5ff", "#a5d8ff", "#4dabf7", "#228be6", "#1971c2"];
|
|
40
|
+
readonly cyan: readonly ["#e3fafc", "#99e9f2", "#3bc9db", "#15aabf", "#0c8599"];
|
|
41
|
+
readonly teal: readonly ["#e6fcf5", "#96f2d7", "#38d9a9", "#12b886", "#099268"];
|
|
42
|
+
readonly green: readonly ["#ebfbee", "#b2f2bb", "#69db7c", "#40c057", "#2f9e44"];
|
|
43
|
+
readonly yellow: readonly ["#fff9db", "#ffec99", "#ffd43b", "#fab005", "#f08c00"];
|
|
44
|
+
readonly orange: readonly ["#fff4e6", "#ffd8a8", "#ffa94d", "#fd7e14", "#e8590c"];
|
|
38
45
|
readonly transparent: "transparent";
|
|
39
46
|
readonly white: "#ffffff";
|
|
40
|
-
readonly gray:
|
|
47
|
+
readonly gray: readonly ["#f8f9fa", "#e9ecef", "#ced4da", "#868e96", "#343a40"];
|
|
41
48
|
readonly black: "#1e1e1e";
|
|
42
|
-
readonly bronze:
|
|
49
|
+
readonly bronze: readonly ["#f8f1ee", "#eaddd7", "#d2bab0", "#a18072", "#846358"];
|
|
43
50
|
};
|
|
44
51
|
export declare const DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE: {
|
|
45
|
-
readonly red:
|
|
46
|
-
readonly pink:
|
|
47
|
-
readonly grape:
|
|
48
|
-
readonly violet:
|
|
49
|
-
readonly blue:
|
|
50
|
-
readonly cyan:
|
|
51
|
-
readonly teal:
|
|
52
|
-
readonly green:
|
|
53
|
-
readonly yellow:
|
|
54
|
-
readonly orange:
|
|
52
|
+
readonly red: readonly ["#fff5f5", "#ffc9c9", "#ff8787", "#fa5252", "#e03131"];
|
|
53
|
+
readonly pink: readonly ["#fff0f6", "#fcc2d7", "#f783ac", "#e64980", "#c2255c"];
|
|
54
|
+
readonly grape: readonly ["#f8f0fc", "#eebefa", "#da77f2", "#be4bdb", "#9c36b5"];
|
|
55
|
+
readonly violet: readonly ["#f3f0ff", "#d0bfff", "#9775fa", "#7950f2", "#6741d9"];
|
|
56
|
+
readonly blue: readonly ["#e7f5ff", "#a5d8ff", "#4dabf7", "#228be6", "#1971c2"];
|
|
57
|
+
readonly cyan: readonly ["#e3fafc", "#99e9f2", "#3bc9db", "#15aabf", "#0c8599"];
|
|
58
|
+
readonly teal: readonly ["#e6fcf5", "#96f2d7", "#38d9a9", "#12b886", "#099268"];
|
|
59
|
+
readonly green: readonly ["#ebfbee", "#b2f2bb", "#69db7c", "#40c057", "#2f9e44"];
|
|
60
|
+
readonly yellow: readonly ["#fff9db", "#ffec99", "#ffd43b", "#fab005", "#f08c00"];
|
|
61
|
+
readonly orange: readonly ["#fff4e6", "#ffd8a8", "#ffa94d", "#fd7e14", "#e8590c"];
|
|
55
62
|
readonly transparent: "transparent";
|
|
56
63
|
readonly white: "#ffffff";
|
|
57
|
-
readonly gray:
|
|
64
|
+
readonly gray: readonly ["#f8f9fa", "#e9ecef", "#ced4da", "#868e96", "#343a40"];
|
|
58
65
|
readonly black: "#1e1e1e";
|
|
59
|
-
readonly bronze:
|
|
66
|
+
readonly bronze: readonly ["#f8f1ee", "#eaddd7", "#d2bab0", "#a18072", "#846358"];
|
|
60
67
|
};
|
|
61
|
-
export declare const getAllColorsSpecificShade: (index: 0 | 1 | 2 | 3 | 4) =>
|
|
62
|
-
export declare const rgbToHex: (r: number, g: number, b: number) => string;
|
|
68
|
+
export declare const getAllColorsSpecificShade: (index: 0 | 1 | 2 | 3 | 4) => ("#fff5f5" | "#ffc9c9" | "#ff8787" | "#fa5252" | "#e03131" | "#fff0f6" | "#fcc2d7" | "#f783ac" | "#e64980" | "#c2255c" | "#f8f0fc" | "#eebefa" | "#da77f2" | "#be4bdb" | "#9c36b5" | "#f3f0ff" | "#d0bfff" | "#9775fa" | "#7950f2" | "#6741d9" | "#e7f5ff" | "#a5d8ff" | "#4dabf7" | "#228be6" | "#1971c2" | "#e3fafc" | "#99e9f2" | "#3bc9db" | "#15aabf" | "#0c8599" | "#e6fcf5" | "#96f2d7" | "#38d9a9" | "#12b886" | "#099268" | "#ebfbee" | "#b2f2bb" | "#69db7c" | "#40c057" | "#2f9e44" | "#fff9db" | "#ffec99" | "#ffd43b" | "#fab005" | "#f08c00" | "#fff4e6" | "#ffd8a8" | "#ffa94d" | "#fd7e14" | "#e8590c")[];
|
|
69
|
+
export declare const rgbToHex: (r: number, g: number, b: number, a?: number) => string;
|
|
70
|
+
/**
|
|
71
|
+
* @returns #RRGGBB or #RRGGBBAA based on color containing non-opaque alpha,
|
|
72
|
+
* null if not valid color
|
|
73
|
+
*/
|
|
74
|
+
export declare const colorToHex: (color: string) => string | null;
|
|
75
|
+
export declare const isTransparent: (color: string) => boolean;
|
|
76
|
+
export declare const COLOR_OUTLINE_CONTRAST_THRESHOLD = 240;
|
|
77
|
+
export declare const isColorDark: (color: string, threshold?: number) => boolean;
|
|
78
|
+
/**
|
|
79
|
+
* tries to keep the input color as-is if it's valid, making minimal adjustments
|
|
80
|
+
* (trimming whitespace or adding `#` to hex colors)
|
|
81
|
+
*/
|
|
82
|
+
export declare const normalizeInputColor: (color: string) => string | null;
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import type { ExcalidrawElement, FontFamilyValues } from "@excalidraw/element/types";
|
|
2
2
|
import type { AppProps, AppState } from "@excalidraw/excalidraw/types";
|
|
3
|
-
export declare const isDarwin: boolean;
|
|
4
|
-
export declare const isWindows: boolean;
|
|
5
|
-
export declare const isAndroid: boolean;
|
|
6
|
-
export declare const isFirefox: boolean;
|
|
7
|
-
export declare const isChrome: boolean;
|
|
8
|
-
export declare const isSafari: boolean;
|
|
9
|
-
export declare const isIOS: boolean;
|
|
10
|
-
export declare const isBrave: () => boolean;
|
|
11
3
|
export declare const supportsResizeObserver: boolean;
|
|
12
4
|
export declare const APP_NAME = "Excalidraw";
|
|
13
5
|
export declare const TEXT_AUTOWRAP_THRESHOLD = 36;
|
|
@@ -86,10 +78,20 @@ export declare const ENV: {
|
|
|
86
78
|
PRODUCTION: string;
|
|
87
79
|
};
|
|
88
80
|
export declare const CLASSES: {
|
|
81
|
+
SIDEBAR: string;
|
|
89
82
|
SHAPE_ACTIONS_MENU: string;
|
|
90
83
|
ZOOM_ACTIONS: string;
|
|
91
84
|
SEARCH_MENU_INPUT_WRAPPER: string;
|
|
92
85
|
CONVERT_ELEMENT_TYPE_POPUP: string;
|
|
86
|
+
SHAPE_ACTIONS_THEME_SCOPE: string;
|
|
87
|
+
FRAME_NAME: string;
|
|
88
|
+
DROPDOWN_MENU_EVENT_WRAPPER: string;
|
|
89
|
+
};
|
|
90
|
+
export declare const FONT_SIZES: {
|
|
91
|
+
readonly sm: 16;
|
|
92
|
+
readonly md: 20;
|
|
93
|
+
readonly lg: 28;
|
|
94
|
+
readonly xl: 36;
|
|
93
95
|
};
|
|
94
96
|
export declare const CJK_HAND_DRAWN_FALLBACK_FONT = "Xiaolai";
|
|
95
97
|
export declare const WINDOWS_EMOJI_FALLBACK_FONT = "Segoe UI Emoji";
|
|
@@ -130,17 +132,15 @@ export declare const THEME: {
|
|
|
130
132
|
readonly LIGHT: "light";
|
|
131
133
|
readonly DARK: "dark";
|
|
132
134
|
};
|
|
135
|
+
export declare const DARK_THEME_FILTER = "invert(93%) hue-rotate(180deg)";
|
|
133
136
|
export declare const FRAME_STYLE: {
|
|
134
|
-
strokeColor:
|
|
135
|
-
strokeWidth:
|
|
136
|
-
strokeStyle:
|
|
137
|
-
fillStyle:
|
|
138
|
-
roughness:
|
|
139
|
-
roundness:
|
|
140
|
-
|
|
141
|
-
value?: number | undefined;
|
|
142
|
-
} | null;
|
|
143
|
-
backgroundColor: string;
|
|
137
|
+
strokeColor: ExcalidrawElement["strokeColor"];
|
|
138
|
+
strokeWidth: ExcalidrawElement["strokeWidth"];
|
|
139
|
+
strokeStyle: ExcalidrawElement["strokeStyle"];
|
|
140
|
+
fillStyle: ExcalidrawElement["fillStyle"];
|
|
141
|
+
roughness: ExcalidrawElement["roughness"];
|
|
142
|
+
roundness: ExcalidrawElement["roundness"];
|
|
143
|
+
backgroundColor: ExcalidrawElement["backgroundColor"];
|
|
144
144
|
radius: number;
|
|
145
145
|
nameOffsetY: number;
|
|
146
146
|
nameColorLightTheme: string;
|
|
@@ -175,6 +175,15 @@ export declare const IMAGE_MIME_TYPES: {
|
|
|
175
175
|
readonly avif: "image/avif";
|
|
176
176
|
readonly jfif: "image/jfif";
|
|
177
177
|
};
|
|
178
|
+
export declare const STRING_MIME_TYPES: {
|
|
179
|
+
readonly text: "text/plain";
|
|
180
|
+
readonly html: "text/html";
|
|
181
|
+
readonly json: "application/json";
|
|
182
|
+
readonly excalidraw: "application/vnd.excalidraw+json";
|
|
183
|
+
readonly excalidrawClipboard: "application/vnd.excalidraw.clipboard+json";
|
|
184
|
+
readonly excalidrawlib: "application/vnd.excalidrawlib+json";
|
|
185
|
+
readonly excalidrawlibIds: "application/vnd.excalidrawlib.ids+json";
|
|
186
|
+
};
|
|
178
187
|
export declare const MIME_TYPES: {
|
|
179
188
|
readonly svg: "image/svg+xml";
|
|
180
189
|
readonly png: "image/png";
|
|
@@ -185,14 +194,16 @@ export declare const MIME_TYPES: {
|
|
|
185
194
|
readonly ico: "image/x-icon";
|
|
186
195
|
readonly avif: "image/avif";
|
|
187
196
|
readonly jfif: "image/jfif";
|
|
197
|
+
readonly "excalidraw.svg": "image/svg+xml";
|
|
198
|
+
readonly "excalidraw.png": "image/png";
|
|
199
|
+
readonly binary: "application/octet-stream";
|
|
188
200
|
readonly text: "text/plain";
|
|
189
201
|
readonly html: "text/html";
|
|
190
202
|
readonly json: "application/json";
|
|
191
203
|
readonly excalidraw: "application/vnd.excalidraw+json";
|
|
204
|
+
readonly excalidrawClipboard: "application/vnd.excalidraw.clipboard+json";
|
|
192
205
|
readonly excalidrawlib: "application/vnd.excalidrawlib+json";
|
|
193
|
-
readonly
|
|
194
|
-
readonly "excalidraw.png": "image/png";
|
|
195
|
-
readonly binary: "application/octet-stream";
|
|
206
|
+
readonly excalidrawlibIds: "application/vnd.excalidrawlib.ids+json";
|
|
196
207
|
};
|
|
197
208
|
export declare const ALLOWED_PASTE_MIME_TYPES: readonly ["text/plain", "text/html", ...("image/svg+xml" | "image/png" | "image/jpeg" | "image/gif" | "image/webp" | "image/bmp" | "image/x-icon" | "image/avif" | "image/jfif")[]];
|
|
198
209
|
export declare const EXPORT_IMAGE_TYPES: {
|
|
@@ -219,7 +230,6 @@ export declare const MAX_ZOOM = 30;
|
|
|
219
230
|
export declare const HYPERLINK_TOOLTIP_DELAY = 300;
|
|
220
231
|
export declare const IDLE_THRESHOLD = 60000;
|
|
221
232
|
export declare const ACTIVE_THRESHOLD = 3000;
|
|
222
|
-
export declare const THEME_FILTER = "invert(93%) hue-rotate(180deg)";
|
|
223
233
|
export declare const URL_QUERY_KEYS: {
|
|
224
234
|
readonly addLibrary: "addLibrary";
|
|
225
235
|
};
|
|
@@ -227,10 +237,6 @@ export declare const URL_HASH_KEYS: {
|
|
|
227
237
|
readonly addLibrary: "addLibrary";
|
|
228
238
|
};
|
|
229
239
|
export declare const DEFAULT_UI_OPTIONS: AppProps["UIOptions"];
|
|
230
|
-
export declare const MQ_MAX_WIDTH_PORTRAIT = 730;
|
|
231
|
-
export declare const MQ_MAX_WIDTH_LANDSCAPE = 1000;
|
|
232
|
-
export declare const MQ_MAX_HEIGHT_LANDSCAPE = 500;
|
|
233
|
-
export declare const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229;
|
|
234
240
|
export declare const MAX_DECIMALS_FOR_SVG_EXPORT = 2;
|
|
235
241
|
export declare const EXPORT_SCALES: number[];
|
|
236
242
|
export declare const DEFAULT_EXPORT_PADDING = 10;
|
|
@@ -290,7 +296,7 @@ export declare const DEFAULT_SIDEBAR: {
|
|
|
290
296
|
readonly name: "default";
|
|
291
297
|
readonly defaultTab: "library";
|
|
292
298
|
};
|
|
293
|
-
export declare const LIBRARY_DISABLED_TYPES: Set<"embeddable" | "
|
|
299
|
+
export declare const LIBRARY_DISABLED_TYPES: Set<"embeddable" | "iframe" | "image">;
|
|
294
300
|
export declare const TOOL_TYPE: {
|
|
295
301
|
readonly selection: "selection";
|
|
296
302
|
readonly lasso: "lasso";
|
|
@@ -342,3 +348,8 @@ export declare enum UserIdleState {
|
|
|
342
348
|
* the start and end points)
|
|
343
349
|
*/
|
|
344
350
|
export declare const LINE_POLYGON_POINT_MERGE_DISTANCE = 20;
|
|
351
|
+
export declare const DOUBLE_TAP_POSITION_THRESHOLD = 35;
|
|
352
|
+
export declare const BIND_MODE_TIMEOUT = 700;
|
|
353
|
+
export declare const MOBILE_ACTION_BUTTON_BG: {
|
|
354
|
+
readonly background: "var(--mobile-action-button-bg)";
|
|
355
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type StylesPanelMode = "compact" | "full" | "mobile";
|
|
2
|
+
export type EditorInterface = Readonly<{
|
|
3
|
+
formFactor: "phone" | "tablet" | "desktop";
|
|
4
|
+
desktopUIMode: "compact" | "full";
|
|
5
|
+
userAgent: Readonly<{
|
|
6
|
+
isMobileDevice: boolean;
|
|
7
|
+
platform: "ios" | "android" | "other" | "unknown";
|
|
8
|
+
}>;
|
|
9
|
+
isTouchScreen: boolean;
|
|
10
|
+
canFitSidebar: boolean;
|
|
11
|
+
isLandscape: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const MQ_MAX_MOBILE = 599;
|
|
14
|
+
export declare const MQ_MAX_WIDTH_LANDSCAPE = 1000;
|
|
15
|
+
export declare const MQ_MAX_HEIGHT_LANDSCAPE = 500;
|
|
16
|
+
export declare const MQ_MIN_TABLET: number;
|
|
17
|
+
export declare const MQ_MAX_TABLET = 1180;
|
|
18
|
+
export declare const MQ_MIN_WIDTH_DESKTOP = 1440;
|
|
19
|
+
export declare const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229;
|
|
20
|
+
export declare const isDarwin: boolean;
|
|
21
|
+
export declare const isWindows: boolean;
|
|
22
|
+
export declare const isAndroid: boolean;
|
|
23
|
+
export declare const isFirefox: boolean;
|
|
24
|
+
export declare const isChrome: boolean;
|
|
25
|
+
export declare const isSafari: boolean;
|
|
26
|
+
export declare const isIOS: boolean;
|
|
27
|
+
export declare const isBrave: () => boolean;
|
|
28
|
+
export declare const isMobileBreakpoint: (width: number, height: number) => boolean;
|
|
29
|
+
export declare const isTabletBreakpoint: (editorWidth: number, editorHeight: number) => boolean;
|
|
30
|
+
export declare const getFormFactor: (editorWidth: number, editorHeight: number) => EditorInterface["formFactor"];
|
|
31
|
+
export declare const deriveStylesPanelMode: (editorInterface: EditorInterface) => StylesPanelMode;
|
|
32
|
+
export declare const createUserAgentDescriptor: (userAgentString: string) => EditorInterface["userAgent"];
|
|
33
|
+
export declare const loadDesktopUIModePreference: () => "compact" | "full" | null;
|
|
34
|
+
export declare const setDesktopUIMode: (mode: EditorInterface["desktopUIMode"]) => "compact" | "full" | undefined;
|
|
@@ -43,6 +43,4 @@ export declare const getVerticalOffset: (fontFamily: ExcalidrawTextElement["font
|
|
|
43
43
|
/**
|
|
44
44
|
* Gets line height for a selected family.
|
|
45
45
|
*/
|
|
46
|
-
export declare const getLineHeight: (fontFamily: FontFamilyValues) =>
|
|
47
|
-
_brand: "unitlessLineHeight";
|
|
48
|
-
};
|
|
46
|
+
export declare const getLineHeight: (fontFamily: FontFamilyValues) => ExcalidrawTextElement["lineHeight"];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from "./binary-heap";
|
|
2
|
+
export * from "./bounds";
|
|
2
3
|
export * from "./colors";
|
|
3
4
|
export * from "./constants";
|
|
4
5
|
export * from "./font-metadata";
|
|
@@ -10,3 +11,5 @@ export * from "./random";
|
|
|
10
11
|
export * from "./url";
|
|
11
12
|
export * from "./utils";
|
|
12
13
|
export * from "./emitter";
|
|
14
|
+
export * from "./editorInterface";
|
|
15
|
+
export { Debug } from "../debug";
|
|
@@ -183,7 +183,7 @@ export declare const isLatinChar: (key: string) => boolean;
|
|
|
183
183
|
* More details in https://github.com/excalidraw/excalidraw/pull/5944
|
|
184
184
|
*/
|
|
185
185
|
export declare const matchKey: (event: KeyboardEvent | React.KeyboardEvent<Element>, key: ValueOf<typeof KEYS>) => boolean;
|
|
186
|
-
export declare const isArrowKey: (key: string) =>
|
|
186
|
+
export declare const isArrowKey: (key: string) => key is "ArrowDown" | "ArrowLeft" | "ArrowRight" | "ArrowUp";
|
|
187
187
|
export declare const shouldResizeFromCenter: (event: MouseEvent | KeyboardEvent) => boolean;
|
|
188
188
|
export declare const shouldMaintainAspectRatio: (event: MouseEvent | KeyboardEvent) => boolean;
|
|
189
189
|
export declare const shouldRotateWithDiscreteAngle: (event: MouseEvent | KeyboardEvent | React.PointerEvent<HTMLCanvasElement>) => boolean;
|