@excalidraw/common 0.18.0-9ba0f5d → 0.18.0-a9ca16e
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 +315 -21
- package/dist/dev/index.js.map +3 -3
- package/dist/prod/index.js +3 -3
- package/dist/types/common/debug.d.ts +21 -0
- package/dist/types/common/src/appEventBus.d.ts +27 -0
- package/dist/types/common/src/colors.d.ts +13 -13
- package/dist/types/common/src/constants.d.ts +4 -0
- package/dist/types/common/src/index.d.ts +3 -0
- package/dist/types/common/src/utils.d.ts +4 -7
- package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
- package/dist/types/element/src/Scene.d.ts +2 -0
- package/dist/types/element/src/arrowheads.d.ts +3 -0
- 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 +13 -8
- package/dist/types/element/src/bounds.d.ts +1 -1
- package/dist/types/element/src/collision.d.ts +4 -3
- package/dist/types/element/src/distribute.d.ts +2 -1
- package/dist/types/element/src/elbowArrow.d.ts +2 -0
- package/dist/types/element/src/index.d.ts +3 -0
- package/dist/types/element/src/linearElementEditor.d.ts +5 -0
- package/dist/types/element/src/mutateElement.d.ts +2 -0
- package/dist/types/element/src/selection.d.ts +6 -2
- package/dist/types/element/src/textElement.d.ts +1 -1
- package/dist/types/element/src/textWrapping.d.ts +26 -0
- package/dist/types/element/src/types.d.ts +5 -2
- package/dist/types/element/src/utils.d.ts +5 -3
- package/dist/types/element/src/zindex.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +38 -35
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +27 -25
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +216 -204
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +26 -24
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +13 -12
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +42 -37
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +9 -12
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +26 -24
- package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +13 -12
- package/dist/types/excalidraw/actions/actionExport.d.ts +114 -386
- package/dist/types/excalidraw/actions/actionFrame.d.ts +52 -48
- package/dist/types/excalidraw/actions/actionGroup.d.ts +29 -27
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +15 -12
- package/dist/types/excalidraw/actions/actionLink.d.ts +13 -12
- package/dist/types/excalidraw/actions/actionMenu.d.ts +9 -12
- package/dist/types/excalidraw/actions/actionProperties.d.ts +29 -27
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +14 -13
- package/dist/types/excalidraw/actions/actionStyles.d.ts +13 -11
- 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 +13 -12
- package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +172 -0
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +13 -12
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +9 -12
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +13 -12
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +13 -12
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +13 -12
- package/dist/types/excalidraw/actions/index.d.ts +2 -0
- package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
- package/dist/types/excalidraw/actions/types.d.ts +1 -1
- package/dist/types/excalidraw/appState.d.ts +29 -27
- 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 +8 -9
- package/dist/types/excalidraw/components/App.d.ts +53 -13
- package/dist/types/excalidraw/components/AppStateObserver.d.ts +37 -0
- package/dist/types/excalidraw/components/CommandPalette/types.d.ts +1 -1
- package/dist/types/excalidraw/components/IconPicker.d.ts +14 -9
- package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
- package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -1
- package/dist/types/excalidraw/components/Range.d.ts +10 -4
- package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +2 -6
- package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +2 -1
- package/dist/types/excalidraw/components/TTDDialog/CodeMirrorEditor.d.ts +11 -0
- package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +11 -7
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +3 -3
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +4 -1
- package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
- package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +2 -1
- package/dist/types/excalidraw/components/TTDDialog/mermaid-lang-lite.d.ts +2 -0
- package/dist/types/excalidraw/components/TTDDialog/types.d.ts +4 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/mermaidAutoFix.d.ts +1 -0
- package/dist/types/excalidraw/components/TTDDialog/utils/mermaidError.d.ts +10 -0
- package/dist/types/excalidraw/components/Toast.d.ts +8 -4
- package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +1 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +30 -16
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +3 -2
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +11 -12
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
- package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +2 -1
- 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/common.d.ts +1 -1
- package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
- package/dist/types/excalidraw/components/icons.d.ts +23 -9
- package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +17 -0
- package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +23 -14
- package/dist/types/excalidraw/components/shapes.d.ts +74 -1
- package/dist/types/excalidraw/data/blob.d.ts +167 -166
- package/dist/types/excalidraw/data/filesystem.d.ts +3 -5
- package/dist/types/excalidraw/data/index.d.ts +2 -3
- package/dist/types/excalidraw/data/json.d.ts +94 -85
- package/dist/types/excalidraw/data/resave.d.ts +7 -2
- package/dist/types/excalidraw/textAutoResizeHandle.d.ts +15 -0
- package/dist/types/excalidraw/types.d.ts +93 -16
- package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +5 -1
- package/dist/types/math/src/point.d.ts +7 -2
- package/dist/types/math/src/types.d.ts +25 -1
- package/package.json +1 -1
- package/dist/types/excalidraw/charts.d.ts +0 -27
- package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +0 -4
- package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +0 -15
- package/dist/types/excalidraw/components/InitializeApp.d.ts +0 -10
- package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +0 -8
- package/dist/types/excalidraw/components/TTDDialog/utils/TTDStreamFetch.d.ts +0 -24
- package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +0 -8
- package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +0 -11
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +0 -58
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +0 -19
- package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +0 -84
- package/dist/types/excalidraw/data/reconcile.d.ts +0 -7
- package/dist/types/excalidraw/index.d.ts +0 -46
- package/dist/types/excalidraw/polyfill.d.ts +0 -2
package/dist/prod/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Xe=Object.create;var ee=Object.defineProperty;var ze=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var qe=Object.getPrototypeOf,je=Object.prototype.hasOwnProperty;var Ze=(e,t)=>()=>(e&&(t=e(e=0)),t);var te=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Qe=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $e(t))!je.call(e,o)&&o!==n&&ee(e,o,{get:()=>t[o],enumerable:!(r=ze(t,o))||r.enumerable});return e};var ne=(e,t,n)=>(n=e!=null?Xe(qe(e)):{},Qe(t||!e||!e.__esModule?ee(n,"default",{value:e,enumerable:!0}):n,e));var m,f=Ze(()=>{m={PROD:!0}});var Ie=te((Z,we)=>{f();(function(e,t){typeof define=="function"&&define.amd?define([],t):typeof Z=="object"?we.exports=t():(e.PromisePool=t(),e.promisePool=e.PromisePool)})(Z,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 We=te(Y=>{"use strict";f();Object.defineProperty(Y,"__esModule",{value:!0});Y.sanitizeUrl=void 0;var rn=/^([^\w]*)(javascript|data|vbscript)/im,on=/&#(\w+)(^\w|;)?/g,an=/&(newline|tab);/gi,sn=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,ln=/^.+(:|:)/gim,cn=[".","/"];function un(e){return cn.indexOf(e[0])>-1}function fn(e){return e.replace(on,function(t,n){return String.fromCharCode(n)})}function dn(e){var t=fn(e||"").replace(an,"").replace(sn,"").trim();if(!t)return"about:blank";if(un(t))return t;var n=t.match(ln);if(!n)return t;var r=n[0];return rn.test(r)?"about:blank":t}Y.sanitizeUrl=dn});f();f();var re=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 gn=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 U(e){"@babel/helpers - typeof";return U=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},U(e)}var et=/^\s+/,tt=/\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=nt(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=ue(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=ae(this._r,this._g,this._b);return{h:t.h*360,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=ae(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=oe(this._r,this._g,this._b);return{h:t.h*360,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=oe(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 se(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return st(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:gt[se(this._r,this._g,this._b,!0)]||!1},toFilter:function(t){var n="#"+ie(this._r,this._g,this._b,this._a),r=n,o=this._gradientType?"GradientType = 1, ":"";if(t){var a=c(t);r="#"+ie(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(ut,arguments)},brighten:function(){return this._applyModification(ft,arguments)},darken:function(){return this._applyModification(dt,arguments)},desaturate:function(){return this._applyModification(it,arguments)},saturate:function(){return this._applyModification(lt,arguments)},greyscale:function(){return this._applyModification(ct,arguments)},spin:function(){return this._applyModification(pt,arguments)},_applyCombination:function(t,n){return t.apply(null,[this].concat([].slice.call(n)))},analogous:function(){return this._applyCombination(Tt,arguments)},complement:function(){return this._applyCombination(ht,arguments)},monochromatic:function(){return this._applyCombination(bt,arguments)},splitcomplement:function(){return this._applyCombination(mt,arguments)},triad:function(){return this._applyCombination(le,[3])},tetrad:function(){return this._applyCombination(le,[4])}};c.fromRatio=function(e,t){if(U(e)=="object"){var n={};for(var r in e)e.hasOwnProperty(r)&&(r==="a"?n[r]=e[r]:n[r]=w(e[r]));e=n}return c(e,t)};function nt(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=yt(e)),U(e)=="object"&&(A(e.r)&&A(e.g)&&A(e.b)?(t=rt(e.r,e.g,e.b),i=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):A(e.h)&&A(e.s)&&A(e.v)?(r=w(e.s),o=w(e.v),t=at(e.h,r,o),i=!0,s="hsv"):A(e.h)&&A(e.s)&&A(e.l)&&(r=w(e.s),a=w(e.l),t=ot(e.h,r,a),i=!0,s="hsl"),e.hasOwnProperty("a")&&(n=e.a)),n=ue(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 rt(e,t,n){return{r:T(e,255)*255,g:T(t,255)*255,b:T(n,255)*255}}function oe(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 ot(e,t,n){var r,o,a;e=T(e,360),t=T(t,100),n=T(n,100);function i(u,p,b){return b<0&&(b+=1),b>1&&(b-=1),b<1/6?u+(p-u)*6*b:b<1/2?p:b<2/3?u+(p-u)*(2/3-b)*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 ae(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 at(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],b=[a,a,s,n,n,i][l];return{r:u*255,g:p*255,b:b*255}}function se(e,t,n,r){var o=[y(Math.round(e).toString(16)),y(Math.round(t).toString(16)),y(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 st(e,t,n,r,o){var a=[y(Math.round(e).toString(16)),y(Math.round(t).toString(16)),y(Math.round(n).toString(16)),y(fe(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 ie(e,t,n,r){var o=[y(fe(r)),y(Math.round(e).toString(16)),y(Math.round(t).toString(16)),y(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 it(e,t){t=t===0?0:t||10;var n=c(e).toHsl();return n.s-=t/100,n.s=k(n.s),c(n)}function lt(e,t){t=t===0?0:t||10;var n=c(e).toHsl();return n.s+=t/100,n.s=k(n.s),c(n)}function ct(e){return c(e).desaturate(100)}function ut(e,t){t=t===0?0:t||10;var n=c(e).toHsl();return n.l+=t/100,n.l=k(n.l),c(n)}function ft(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 dt(e,t){t=t===0?0:t||10;var n=c(e).toHsl();return n.l-=t/100,n.l=k(n.l),c(n)}function pt(e,t){var n=c(e).toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,c(n)}function ht(e){var t=c(e).toHsl();return t.h=(t.h+180)%360,c(t)}function le(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 mt(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 Tt(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 bt(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=At(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 $=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"},gt=c.hexNames=Et($);function Et(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}function ue(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function T(e,t){_t(e)&&(e="100%");var n=xt(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 k(e){return Math.min(1,Math.max(0,e))}function E(e){return parseInt(e,16)}function _t(e){return typeof e=="string"&&e.indexOf(".")!=-1&&parseFloat(e)===1}function xt(e){return typeof e=="string"&&e.indexOf("%")!=-1}function y(e){return e.length==1?"0"+e:""+e}function w(e){return e<=1&&(e=e*100+"%"),e}function fe(e){return Math.round(parseFloat(e)*255).toString(16)}function ce(e){return E(e)/255}var x=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 A(e){return!!x.CSS_UNIT.exec(e)}function yt(e){e=e.replace(et,"").replace(tt,"").toLowerCase();var t=!1;if($[e])e=$[e],t=!0;else if(e=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n;return(n=x.rgb.exec(e))?{r:n[1],g:n[2],b:n[3]}:(n=x.rgba.exec(e))?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=x.hsl.exec(e))?{h:n[1],s:n[2],l:n[3]}:(n=x.hsla.exec(e))?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=x.hsv.exec(e))?{h:n[1],s:n[2],v:n[3]}:(n=x.hsva.exec(e))?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=x.hex8.exec(e))?{r:E(n[1]),g:E(n[2]),b:E(n[3]),a:ce(n[4]),format:t?"name":"hex8"}:(n=x.hex6.exec(e))?{r:E(n[1]),g:E(n[2]),b:E(n[3]),format:t?"name":"hex"}:(n=x.hex4.exec(e))?{r:E(n[1]+""+n[1]),g:E(n[2]+""+n[2]),b:E(n[3]+""+n[3]),a:ce(n[4]+""+n[4]),format:t?"name":"hex8"}:(n=x.hex3.exec(e))?{r:E(n[1]+""+n[1]),g:E(n[2]+""+n[2]),b:E(n[3]+""+n[3]),format:t?"name":"hex"}:!1}function At(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 de}from"@excalidraw/math";import{degreesToRadians as vt}from"@excalidraw/math";var q=typeof window<"u"?new Map:null;function St(e,t,n,r){let o=e/255,a=t/255,i=n/255,s=vt(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],b=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,b))*255),g:Math.round(Math.max(0,Math.min(1,O))*255),b:Math.round(Math.max(0,Math.min(1,_))*255)}}var Mt=(e,t,n,r)=>{let o=de(r,0,100)/100,a=u=>{let p=u*(1-o)+(255-u)*o;return Math.round(de(p,0,255))},i=a(e),s=a(t),l=a(n);return{r:i,g:s,b:l}},Mn=e=>{let t=q?.get(e);if(t)return t;let n=c(e),r=n.getAlpha(),o=n.toRgb(),a=Mt(o.r,o.g,o.b,93),i=St(a.r,a.g,a.b,180),s=he(i.r,i.g,i.b,r);return q&&q.set(e,s),s},Rt=(e,t)=>t.reduce((n,r)=>(r in e&&(n[r]=e[r]),n),{}),Rn=5,Ln=5,On=4,N=4,H=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"]},pe=Rt(d,["cyan","blue","violet","grape","pink","green","teal","yellow","orange","red"]),Fn=[d.black,d.red[N],d.green[N],d.blue[N],d.yellow[N]],wn=[d.transparent,d.red[H],d.green[H],d.blue[H],d.yellow[H]],In=[d.white,"#f8f9fa","#f5faff","#fffce8","#fdf8f6"],Cn={transparent:d.transparent,white:d.white,gray:d.gray,black:d.black,bronze:d.bronze,...pe},Pn={transparent:d.transparent,white:d.white,gray:d.gray,black:d.black,bronze:d.bronze,...pe},Dn=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]],he=(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},Un=e=>{let t=c(e);if(!t.isValid())return null;let{r:n,g:r,b:o,a}=t.toRgb();return he(n,r,o,a)},me=e=>c(e).getAlpha()===0,kn=240,Lt=(e,t,n)=>(e*299+t*587+n*114)/1e3,Nn=(e,t=160)=>{if(!e)return!0;if(me(e))return!1;let n=c(e);if(!n.isValid())return!0;let{r,g:o,b:a}=n.toRgb();return Lt(r,o,a)<t},Hn=e=>{if(e=e.trim(),me(e))return e;let t=c(e);return t.isValid()?t.getFormat()==="hex"&&!e.startsWith("#")?`#${e}`:e:null};f();var Wn=typeof window<"u"&&"ResizeObserver"in window,Yn="Excalidraw",Vn=36,Xn=10,zn=20,$n=8,qn=5,jn=1,Zn=30,Qn=Math.PI/12,Jn="red",er={TEXT:"text",CROSSHAIR:"crosshair",GRABBING:"grabbing",GRAB:"grab",POINTER:"pointer",MOVE:"move",AUTO:""},tr={MAIN:0,WHEEL:1,SECONDARY:2,TOUCH:-1,ERASER:5},nr={enabled:"all",disabled:"none",inheritFromUI:"var(--ui-pointerEvents)"},Ot=(h=>(h.COPY="copy",h.PASTE="paste",h.CUT="cut",h.KEYDOWN="keydown",h.KEYUP="keyup",h.MOUSE_MOVE="mousemove",h.RESIZE="resize",h.UNLOAD="unload",h.FOCUS="focus",h.BLUR="blur",h.DRAG_OVER="dragover",h.DROP="drop",h.GESTURE_END="gestureend",h.BEFORE_UNLOAD="beforeunload",h.GESTURE_START="gesturestart",h.GESTURE_CHANGE="gesturechange",h.POINTER_MOVE="pointermove",h.POINTER_DOWN="pointerdown",h.POINTER_UP="pointerup",h.STATE_CHANGE="statechange",h.WHEEL="wheel",h.TOUCH_START="touchstart",h.TOUCH_END="touchend",h.HASHCHANGE="hashchange",h.VISIBILITY_CHANGE="visibilitychange",h.SCROLL="scroll",h.EXCALIDRAW_LINK="excalidraw-link",h.MENU_ITEM_SELECT="menu.itemSelect",h.MESSAGE="message",h.FULLSCREENCHANGE="fullscreenchange",h))(Ot||{}),rr={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},B={TEST:"test",DEVELOPMENT:"development",PRODUCTION:"production"},or={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"},ar={sm:16,md:20,lg:28,xl:36},be="Xiaolai",I="Segoe UI Emoji",g={Virgil:1,Helvetica:2,Cascadia:3,Excalifont:5,Nunito:6,"Lilita One":7,"Comic Shanns":8,"Liberation Sans":9,Assistant:10},ge="sans-serif",Ee="monospace",Ft={[ge]:998,[Ee]:999},j={[be]:100,...Ft,[I]:1e3};function wt(e){switch(e){case g.Cascadia:case g["Comic Shanns"]:return Ee;default:return ge}}var _e=e=>{let t=wt(e);switch(e){case g.Excalifont:return[be,t,I];default:return[t,I]}},sr={LIGHT:"light",DARK:"dark"},ir={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},lr=1,cr=20,ur=g.Excalifont,fr="left",dr="top",xe="{version}",It=2,Ct=2*It,Pt=1e-5,pr=2*Ct-Pt,hr="#ffffff",mr="#1e1e1e",Tr="#a2f1a6",br=["selectAll"],gr=20,Er=5,ye={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"},Dt={text:"text/plain",html:"text/html",json:"application/json",excalidraw:"application/vnd.excalidraw+json",excalidrawlib:"application/vnd.excalidrawlib+json",excalidrawlibIds:"application/vnd.excalidrawlib.ids+json"},Te={...Dt,"excalidraw.svg":"image/svg+xml","excalidraw.png":"image/png",binary:"application/octet-stream",...ye},_r=[Te.text,Te.html,...Object.values(ye)],xr={png:"png",svg:"svg",clipboard:"clipboard"},yr={excalidraw:"excalidraw",excalidrawClipboard:"excalidraw/clipboard",excalidrawLibrary:"excalidrawlib",excalidrawClipboardWithAPI:"excalidraw-api/clipboard"},Ar=()=>window.EXCALIDRAW_EXPORT_SOURCE||window.location.origin,vr=500,Sr=300,Mr=500,Rr=1e4,Lr=3e4,Or=100,Fr=.1,wr=.1,Ir=30,Cr=300,Pr=6e4,Dr=3e3,Ur={addLibrary:"addLibrary"},kr={addLibrary:"addLibrary"},Nr={canvasActions:{changeViewBackgroundColor:!0,clearCanvas:!0,export:{saveFileToDisk:!0},loadScene:!0,saveToActiveFile:!0,toggleTheme:null,saveAsImage:!0},tools:{image:!0}},Hr=2,Br=[1,2,3],Gr=10,Kr=1440,Wr=4*1024*1024,Yr="http://www.w3.org/2000/svg",Vr=`<?xml version="1.0" standalone="no"?>
|
|
1
|
+
var Qe=Object.create;var re=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var tt=Object.getPrototypeOf,nt=Object.prototype.hasOwnProperty;var rt=(e,t)=>()=>(e&&(t=e(e=0)),t);var oe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ot=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of et(t))!nt.call(e,o)&&o!==n&&re(e,o,{get:()=>t[o],enumerable:!(r=Je(t,o))||r.enumerable});return e};var se=(e,t,n)=>(n=e!=null?Qe(tt(e)):{},ot(t||!e||!e.__esModule?re(n,"default",{value:e,enumerable:!0}):n,e));var m,p=rt(()=>{m={PROD:!0}});var De=oe((Q,Pe)=>{p();(function(e,t){typeof define=="function"&&define.amd?define([],t):typeof Q=="object"?Pe.exports=t():(e.PromisePool=t(),e.promisePool=e.PromisePool)})(Q,function(){"use strict";var e=function(){this._listeners={}};e.prototype.addEventListener=function(a,l){this._listeners[a]=this._listeners[a]||[],this._listeners[a].indexOf(l)<0&&this._listeners[a].push(l)},e.prototype.removeEventListener=function(a,l){if(this._listeners[a]){var u=this._listeners[a].indexOf(l);u>=0&&this._listeners[a].splice(u,1)}},e.prototype.dispatchEvent=function(a){if(this._listeners[a.type]&&this._listeners[a.type].length)for(var l=this._listeners[a.type].slice(),u=0,f=l.length;u<f;++u)l[u].call(this,a)};var t=function(a){return typeof a.constructor=="function"&&a.constructor.name==="GeneratorFunction"},n=function(a){return{next:function(){var l=a();return l?{value:l}:{done:!0}}}},r=function(a){var l=!1;return{next:function(){return l?{done:!0}:(l=!0,{value:a})}}},o=function(a,l){var u=typeof a;if(u==="object"){if(typeof a.next=="function")return a;if(typeof a.then=="function")return r(a)}return u==="function"?t(a)?a():n(a):r(l.resolve(a))},s=function(a,l,u){this.target=a,this.type=l,this.data=u},i=function(a,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(a,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(a){return typeof a<"u"&&(this._concurrency=a,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 a=this,l=this._options.promise;return this._promise=new l(function(u,f){a._callbacks={reject:f,resolve:u},a._proceed()}),this._promise},i.prototype._fireEvent=function(a,l){this.dispatchEvent(new s(this,a,l))},i.prototype._settle=function(a){a?this._callbacks.reject(a):this._callbacks.resolve(),this._promise=null,this._callbacks=null},i.prototype._onPooledPromiseFulfilled=function(a,l){this._size--,this.active()&&(this._fireEvent("fulfilled",{promise:a,result:l}),this._proceed())},i.prototype._onPooledPromiseRejected=function(a,l){this._size--,this.active()&&(this._fireEvent("rejected",{promise:a,error:l}),this._settle(l||new Error("Unknown error")))},i.prototype._trackPromise=function(a){var l=this;a.then(function(u){l._onPooledPromiseFulfilled(a,u)},function(u){l._onPooledPromiseRejected(a,u)}).catch(function(u){l._settle(new Error("Promise processing failed: "+u))})},i.prototype._proceed=function(){if(!this._done){for(var a={done:!1};this._size<this._concurrency&&!(a=this._iterator.next()).done;)this._size++,this._trackPromise(a.value);this._done=a===null||!!a.done}this._done&&this._size===0&&this._settle()},i.PromisePoolEvent=s,i.PromisePool=i,i})});var Xe=oe(W=>{"use strict";p();Object.defineProperty(W,"__esModule",{value:!0});W.sanitizeUrl=void 0;var un=/^([^\w]*)(javascript|data|vbscript)/im,pn=/&#(\w+)(^\w|;)?/g,dn=/&(newline|tab);/gi,fn=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,hn=/^.+(:|:)/gim,mn=[".","/"];function En(e){return mn.indexOf(e[0])>-1}function Tn(e){return e.replace(pn,function(t,n){return String.fromCharCode(n)})}function bn(e){var t=Tn(e||"").replace(dn,"").replace(fn,"").trim();if(!t)return"about:blank";if(En(t))return t;var n=t.match(hn);if(!n)return t;var r=n[0];return un.test(r)?"about:blank":t}W.sanitizeUrl=bn});p();p();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,s=this.content[o];if(r<this.scoreFunction(s))this.content[t]=s,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 s=(t+1<<1)-1,i=s+1,a=t,l=o;if(s<n){let u=this.scoreFunction(this.content[s]);u<l&&(a=s,l=u)}if(i<n&&this.scoreFunction(this.content[i])<l&&(a=i),a===t)break;this.content[t]=this.content[a],t=a}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))}};p();var Sn=e=>Array.isArray(e)&&e.length===4&&typeof e[0]=="number"&&typeof e[1]=="number"&&typeof e[2]=="number"&&typeof e[3]=="number";p();p();function U(e){"@babel/helpers - typeof";return U=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},U(e)}var at=/^\s+/,it=/\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=lt(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,s,i,a;return n=t.r/255,r=t.g/255,o=t.b/255,n<=.03928?s=n/12.92:s=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?a=o/12.92:a=Math.pow((o+.055)/1.055,2.4),.2126*s+.7152*i+.0722*a},setAlpha:function(t){return this._a=fe(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=le(this._r,this._g,this._b);return{h:t.h*360,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=le(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=ie(this._r,this._g,this._b);return{h:t.h*360,s:t.s,l:t.l,a:this._a}},toHslString: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.l*100);return this._a==1?"hsl("+n+", "+r+"%, "+o+"%)":"hsla("+n+", "+r+"%, "+o+"%, "+this._roundA+")"},toHex:function(t){return ce(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return dt(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(E(this._r,255)*100)+"%",g:Math.round(E(this._g,255)*100)+"%",b:Math.round(E(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(E(this._r,255)*100)+"%, "+Math.round(E(this._g,255)*100)+"%, "+Math.round(E(this._b,255)*100)+"%)":"rgba("+Math.round(E(this._r,255)*100)+"%, "+Math.round(E(this._g,255)*100)+"%, "+Math.round(E(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:vt[ce(this._r,this._g,this._b,!0)]||!1},toFilter:function(t){var n="#"+ue(this._r,this._g,this._b,this._a),r=n,o=this._gradientType?"GradientType = 1, ":"";if(t){var s=c(t);r="#"+ue(s._r,s._g,s._b,s._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,s=!n&&o&&(t==="hex"||t==="hex6"||t==="hex3"||t==="hex4"||t==="hex8"||t==="name");return s?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(Et,arguments)},brighten:function(){return this._applyModification(Tt,arguments)},darken:function(){return this._applyModification(bt,arguments)},desaturate:function(){return this._applyModification(ft,arguments)},saturate:function(){return this._applyModification(ht,arguments)},greyscale:function(){return this._applyModification(mt,arguments)},spin:function(){return this._applyModification(gt,arguments)},_applyCombination:function(t,n){return t.apply(null,[this].concat([].slice.call(n)))},analogous:function(){return this._applyCombination(xt,arguments)},complement:function(){return this._applyCombination(_t,arguments)},monochromatic:function(){return this._applyCombination(yt,arguments)},splitcomplement:function(){return this._applyCombination(At,arguments)},triad:function(){return this._applyCombination(pe,[3])},tetrad:function(){return this._applyCombination(pe,[4])}};c.fromRatio=function(e,t){if(U(e)=="object"){var n={};for(var r in e)e.hasOwnProperty(r)&&(r==="a"?n[r]=e[r]:n[r]=F(e[r]));e=n}return c(e,t)};function lt(e){var t={r:0,g:0,b:0},n=1,r=null,o=null,s=null,i=!1,a=!1;return typeof e=="string"&&(e=Lt(e)),U(e)=="object"&&(y(e.r)&&y(e.g)&&y(e.b)?(t=ct(e.r,e.g,e.b),i=!0,a=String(e.r).substr(-1)==="%"?"prgb":"rgb"):y(e.h)&&y(e.s)&&y(e.v)?(r=F(e.s),o=F(e.v),t=pt(e.h,r,o),i=!0,a="hsv"):y(e.h)&&y(e.s)&&y(e.l)&&(r=F(e.s),s=F(e.l),t=ut(e.h,r,s),i=!0,a="hsl"),e.hasOwnProperty("a")&&(n=e.a)),n=fe(n),{ok:i,format:e.format||a,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 ct(e,t,n){return{r:E(e,255)*255,g:E(t,255)*255,b:E(n,255)*255}}function ie(e,t,n){e=E(e,255),t=E(t,255),n=E(n,255);var r=Math.max(e,t,n),o=Math.min(e,t,n),s,i,a=(r+o)/2;if(r==o)s=i=0;else{var l=r-o;switch(i=a>.5?l/(2-r-o):l/(r+o),r){case e:s=(t-n)/l+(t<n?6:0);break;case t:s=(n-e)/l+2;break;case n:s=(e-t)/l+4;break}s/=6}return{h:s,s:i,l:a}}function ut(e,t,n){var r,o,s;e=E(e,360),t=E(t,100),n=E(n,100);function i(u,f,T){return T<0&&(T+=1),T>1&&(T-=1),T<1/6?u+(f-u)*6*T:T<1/2?f:T<2/3?u+(f-u)*(2/3-T)*6:u}if(t===0)r=o=s=n;else{var a=n<.5?n*(1+t):n+t-n*t,l=2*n-a;r=i(l,a,e+1/3),o=i(l,a,e),s=i(l,a,e-1/3)}return{r:r*255,g:o*255,b:s*255}}function le(e,t,n){e=E(e,255),t=E(t,255),n=E(n,255);var r=Math.max(e,t,n),o=Math.min(e,t,n),s,i,a=r,l=r-o;if(i=r===0?0:l/r,r==o)s=0;else{switch(r){case e:s=(t-n)/l+(t<n?6:0);break;case t:s=(n-e)/l+2;break;case n:s=(e-t)/l+4;break}s/=6}return{h:s,s:i,v:a}}function pt(e,t,n){e=E(e,360)*6,t=E(t,100),n=E(n,100);var r=Math.floor(e),o=e-r,s=n*(1-t),i=n*(1-o*t),a=n*(1-(1-o)*t),l=r%6,u=[n,i,s,s,a,n][l],f=[a,n,n,i,s,s][l],T=[s,s,a,n,n,i][l];return{r:u*255,g:f*255,b:T*255}}function ce(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 dt(e,t,n,r,o){var s=[x(Math.round(e).toString(16)),x(Math.round(t).toString(16)),x(Math.round(n).toString(16)),x(he(r))];return o&&s[0].charAt(0)==s[0].charAt(1)&&s[1].charAt(0)==s[1].charAt(1)&&s[2].charAt(0)==s[2].charAt(1)&&s[3].charAt(0)==s[3].charAt(1)?s[0].charAt(0)+s[1].charAt(0)+s[2].charAt(0)+s[3].charAt(0):s.join("")}function ue(e,t,n,r){var o=[x(he(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 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 ht(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 mt(e){return c(e).desaturate(100)}function Et(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){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 bt(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 gt(e,t){var n=c(e).toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,c(n)}function _t(e){var t=c(e).toHsl();return t.h=(t.h+180)%360,c(t)}function pe(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,s=1;s<t;s++)r.push(c({h:(n.h+s*o)%360,s:n.s,l:n.l}));return r}function At(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 xt(e,t,n){t=t||6,n=n||30;var r=c(e).toHsl(),o=360/n,s=[c(e)];for(r.h=(r.h-(o*t>>1)+720)%360;--t;)r.h=(r.h+o)%360,s.push(c(r));return s}function yt(e,t){t=t||6;for(var n=c(e).toHsv(),r=n.h,o=n.s,s=n.v,i=[],a=1/t;t--;)i.push(c({h:r,s:o,v:s})),s=(s+a)%1;return i}c.mix=function(e,t,n){n=n===0?0:n||50;var r=c(e).toRgb(),o=c(t).toRgb(),s=n/100,i={r:(o.r-r.r)*s+r.r,g:(o.g-r.g)*s+r.g,b:(o.b-r.b)*s+r.b,a:(o.a-r.a)*s+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,s;switch(s=!1,o=Ot(n),o.level+o.size){case"AAsmall":case"AAAlarge":s=r>=4.5;break;case"AAlarge":s=r>=3;break;case"AAAsmall":s=r>=7;break}return s};c.mostReadable=function(e,t,n){var r=null,o=0,s,i,a,l;n=n||{},i=n.includeFallbackColors,a=n.level,l=n.size;for(var u=0;u<t.length;u++)s=c.readability(e,t[u]),s>o&&(o=s,r=c(t[u]));return c.isReadable(e,r,{level:a,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"},vt=c.hexNames=St(j);function St(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}function fe(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function E(e,t){Mt(e)&&(e="100%");var n=Rt(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 g(e){return parseInt(e,16)}function Mt(e){return typeof e=="string"&&e.indexOf(".")!=-1&&parseFloat(e)===1}function Rt(e){return typeof e=="string"&&e.indexOf("%")!=-1}function x(e){return e.length==1?"0"+e:""+e}function F(e){return e<=1&&(e=e*100+"%"),e}function he(e){return Math.round(parseFloat(e)*255).toString(16)}function de(e){return g(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 Lt(e){e=e.replace(at,"").replace(it,"").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:g(n[1]),g:g(n[2]),b:g(n[3]),a:de(n[4]),format:t?"name":"hex8"}:(n=A.hex6.exec(e))?{r:g(n[1]),g:g(n[2]),b:g(n[3]),format:t?"name":"hex"}:(n=A.hex4.exec(e))?{r:g(n[1]+""+n[1]),g:g(n[2]+""+n[2]),b:g(n[3]+""+n[3]),a:de(n[4]+""+n[4]),format:t?"name":"hex8"}:(n=A.hex3.exec(e))?{r:g(n[1]+""+n[1]),g:g(n[2]+""+n[2]),b:g(n[3]+""+n[3]),format:t?"name":"hex"}:!1}function Ot(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 wt}from"@excalidraw/math";var q=typeof window<"u"?new Map:null;function Ft(e,t,n,r){let o=e/255,s=t/255,i=n/255,a=wt(r),l=Math.cos(a),u=Math.sin(a),f=[.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],T=o*f[0]+s*f[1]+i*f[2],O=o*f[3]+s*f[4]+i*f[5],_=o*f[6]+s*f[7]+i*f[8];return{r:Math.round(Math.max(0,Math.min(1,T))*255),g:Math.round(Math.max(0,Math.min(1,O))*255),b:Math.round(Math.max(0,Math.min(1,_))*255)}}var It=(e,t,n,r)=>{let o=me(r,0,100)/100,s=u=>{let f=u*(1-o)+(255-u)*o;return Math.round(me(f,0,255))},i=s(e),a=s(t),l=s(n);return{r:i,g:a,b:l}},Cn=e=>{let t=q?.get(e);if(t)return t;let n=c(e),r=n.getAlpha(),o=n.toRgb(),s=It(o.r,o.g,o.b,93),i=Ft(s.r,s.g,s.b,180),a=Te(i.r,i.g,i.b,r);return q&&q.set(e,a),a},Ct=(e,t)=>t.reduce((n,r)=>(r in e&&(n[r]=e[r]),n),{}),Pn=5,Dn=5,kn=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"]},Ee=Ct(d,["cyan","blue","violet","grape","pink","green","teal","yellow","orange","red"]),Un=[d.black,d.red[H],d.green[H],d.blue[H],d.yellow[H]],Nn=[d.transparent,d.red[G],d.green[G],d.blue[G],d.yellow[G]],Hn=[d.white,"#f8f9fa","#f5faff","#fffce8","#fdf8f6"],Gn={transparent:d.transparent,white:d.white,gray:d.gray,black:d.black,bronze:d.bronze,...Ee},Bn={transparent:d.transparent,white:d.white,gray:d.gray,black:d.black,bronze:d.bronze,...Ee},Kn=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 s=Math.round(r*255).toString(16).padStart(2,"0");return`${o}${s}`}return o},Vn=e=>{let t=c(e);if(!t.isValid())return null;let{r:n,g:r,b:o,a:s}=t.toRgb();return Te(n,r,o,s)},be=e=>c(e).getAlpha()===0,Wn=240,Pt=(e,t,n)=>(e*299+t*587+n*114)/1e3,Yn=(e,t=160)=>{if(!e)return!0;if(be(e))return!1;let n=c(e);if(!n.isValid())return!0;let{r,g:o,b:s}=n.toRgb();return Pt(r,o,s)<t},$n=e=>{if(e=e.trim(),be(e))return e;let t=c(e);return t.isValid()?["hex","hex8"].includes(t.getFormat())&&!e.startsWith("#")?`#${e}`:e:null};p();var qn=typeof window<"u"&&"ResizeObserver"in window,Zn="Excalidraw",Qn=36,Jn=10,er=20,tr=8,nr=5,rr=1,or=30,sr=Math.PI/12,ar="red",ir={TEXT:"text",CROSSHAIR:"crosshair",GRABBING:"grabbing",GRAB:"grab",POINTER:"pointer",MOVE:"move",AUTO:""},lr={MAIN:0,WHEEL:1,SECONDARY:2,TOUCH:-1,ERASER:5},cr={enabled:"all",disabled:"none",inheritFromUI:"var(--ui-pointerEvents)"},Dt=(h=>(h.COPY="copy",h.PASTE="paste",h.CUT="cut",h.KEYDOWN="keydown",h.KEYUP="keyup",h.MOUSE_MOVE="mousemove",h.RESIZE="resize",h.UNLOAD="unload",h.FOCUS="focus",h.BLUR="blur",h.DRAG_OVER="dragover",h.DROP="drop",h.GESTURE_END="gestureend",h.BEFORE_UNLOAD="beforeunload",h.GESTURE_START="gesturestart",h.GESTURE_CHANGE="gesturechange",h.POINTER_MOVE="pointermove",h.POINTER_DOWN="pointerdown",h.POINTER_UP="pointerup",h.STATE_CHANGE="statechange",h.WHEEL="wheel",h.TOUCH_START="touchstart",h.TOUCH_END="touchend",h.HASHCHANGE="hashchange",h.VISIBILITY_CHANGE="visibilitychange",h.SCROLL="scroll",h.EXCALIDRAW_LINK="excalidraw-link",h.MENU_ITEM_SELECT="menu.itemSelect",h.MESSAGE="message",h.FULLSCREENCHANGE="fullscreenchange",h))(Dt||{}),ur={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},B={TEST:"test",DEVELOPMENT:"development",PRODUCTION:"production"},pr={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"},dr={sm:16,md:20,lg:28,xl:36},_e="Xiaolai",I="Segoe UI Emoji",b={Virgil:1,Helvetica:2,Cascadia:3,Excalifont:5,Nunito:6,"Lilita One":7,"Comic Shanns":8,"Liberation Sans":9,Assistant:10},Ae="sans-serif",xe="monospace",kt={[Ae]:998,[xe]:999},Z={[_e]:100,...kt,[I]:1e3};function Ut(e){switch(e){case b.Cascadia:case b["Comic Shanns"]:return xe;default:return Ae}}var ye=e=>{let t=Ut(e);switch(e){case b.Excalifont:return[_e,t,I];default:return[t,I]}},fr={LIGHT:"light",DARK:"dark"},hr="invert(93%) hue-rotate(180deg)",mr={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},Er=1,Tr=20,br=b.Excalifont,gr="left",_r="top",ve="{version}",Nt=2,Ht=2*Nt,Gt=1e-5,Ar=2*Ht-Gt,xr="#ffffff",yr="#1e1e1e",vr="#a2f1a6",Sr=["selectAll"],Mr=20,Rr=5,Se={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"},Bt={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"},ge={...Bt,"excalidraw.svg":"image/svg+xml","excalidraw.png":"image/png",binary:"application/octet-stream",...Se},Lr=[ge.text,ge.html,...Object.values(Se)],Or={png:"png",svg:"svg",clipboard:"clipboard"},wr={excalidraw:"excalidraw",excalidrawClipboard:"excalidraw/clipboard",excalidrawLibrary:"excalidrawlib",excalidrawClipboardWithAPI:"excalidraw-api/clipboard"},Fr=()=>window.EXCALIDRAW_EXPORT_SOURCE||window.location.origin,Ir=500,Cr=300,Pr=500,Dr=1e4,kr=3e4,Ur=100,Nr=.1,Hr=.1,Gr=30,Br=300,Kr=6e4,Vr=3e3,Wr={addLibrary:"addLibrary"},Yr={addLibrary:"addLibrary"},$r={canvasActions:{changeViewBackgroundColor:!0,clearCanvas:!0,export:{saveFileToDisk:!0},loadScene:!0,saveToActiveFile:!0,toggleTheme:null,saveAsImage:!0},tools:{image:!0}},Xr=2,zr=[1,2,3],jr=10,qr=1440,Zr=4*1024*1024,Qr="http://www.w3.org/2000/svg",Jr=`<?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
|
-
`,Xr=128,zr={excalidraw:2,excalidrawLibrary:2},$r=5,qr=.7,jr=11,Zr={TOP:"top",MIDDLE:"middle",BOTTOM:"bottom"},Qr={LEFT:"left",CENTER:"center",RIGHT:"right"},Jr=20,eo=.25,to=32,no={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},Ut={architect:0,artist:1,cartoonist:2},ro={thin:1,bold:2,extraBold:4},oo={strokeColor:d.black,backgroundColor:d.transparent,fillStyle:"solid",strokeWidth:2,strokeStyle:"solid",roughness:Ut.artist,opacity:100,locked:!1},kt="library",ao="search",so={name:"default",defaultTab:kt},io=new Set(["iframe","embeddable","image"]),lo={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"},co={OAI_API_KEY:"excalidraw-oai-api-key",MERMAID_TO_EXCALIDRAW:"mermaid-to-excalidraw",PUBLISH_LIBRARY:"publish-library-data"},uo="Untitled",fo={generalStats:1,elementProperties:2},po=1,ho={sharp:"sharp",round:"round",elbow:"elbow"},mo=.3,To="element",bo=Symbol.for("__test__originalId__"),Nt=(r=>(r.ACTIVE="active",r.AWAY="away",r.IDLE="idle",r))(Nt||{}),go=20,Eo=35,_o=700,xo={background:"var(--mobile-action-button-bg)"};f();var G={[g.Excalifont]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25}},[g.Nunito]:{metrics:{unitsPerEm:1e3,ascender:1011,descender:-353,lineHeight:1.25}},[g["Lilita One"]]:{metrics:{unitsPerEm:1e3,ascender:923,descender:-220,lineHeight:1.15}},[g["Comic Shanns"]]:{metrics:{unitsPerEm:1e3,ascender:750,descender:-250,lineHeight:1.25}},[g.Virgil]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},deprecated:!0},[g.Helvetica]:{metrics:{unitsPerEm:2048,ascender:1577,descender:-471,lineHeight:1.15},deprecated:!0,local:!0},[g.Cascadia]:{metrics:{unitsPerEm:2048,ascender:1900,descender:-480,lineHeight:1.2},deprecated:!0},[g["Liberation Sans"]]:{metrics:{unitsPerEm:2048,ascender:1854,descender:-434,lineHeight:1.15},private:!0},[g.Assistant]:{metrics:{unitsPerEm:2048,ascender:1021,descender:-287,lineHeight:1.25},private:!0},[j.Xiaolai]:{metrics:{unitsPerEm:1e3,ascender:880,descender:-144,lineHeight:1.25},fallback:!0},[j["Segoe UI Emoji"]]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},local:!0,fallback:!0}},So={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"},Mo="local:",Ro=(e,t,n)=>{let{unitsPerEm:r,ascender:o,descender:a}=G[e]?.metrics||G[g.Excalifont].metrics,i=t/r,s=(n-i*o+i*a)/2;return i*o+s},Lo=e=>{let{lineHeight:t}=G[e]?.metrics||G[g.Excalifont].metrics;return t};f();var Ae=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=ve();return this.jobs.push({jobFactory:t,promise:r,args:n}),this.tick(),r}};f();f();var Me="excalidraw.desktopUIMode",Po=599,Do=1e3,Uo=500,ko=600,No=1180,Ho=1440,Bo=1229,Re=/Mac|iPod|iPhone|iPad/.test(navigator.platform),Go=/^Win/.test(navigator.platform),Le=/\b(android)\b/i.test(navigator.userAgent),Ko=typeof window<"u"&&"netscape"in window&&navigator.userAgent.indexOf("rv:")>1&&navigator.userAgent.indexOf("Gecko")>1,Ht=navigator.userAgent.indexOf("Chrome")!==-1,Wo=!Ht&&navigator.userAgent.indexOf("Safari")!==-1,Oe=/iPad|iPhone/i.test(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,Yo=()=>navigator.brave?.isBrave?.name==="isBrave",Bt=(e,t)=>e<=599||t<500&&e<1e3,Gt=(e,t)=>{let n=Math.min(e,t),r=Math.max(e,t);return n>=600&&r<=1180},Kt=()=>{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(Oe)return!0;if(Le){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},Vo=(e,t)=>Bt(e,t)?"phone":Gt(e,t)?"tablet":"desktop",Xo=e=>e.formFactor==="phone"?"mobile":e.formFactor==="tablet"?"compact":e.desktopUIMode,zo=e=>{let t=e??"",n="unknown";return Oe?n="ios":Le?n="android":t&&(n="other"),{isMobileDevice:Kt(),platform:n}},$o=()=>{if(typeof window>"u")return null;try{let e=window.localStorage.getItem(Me);if(e==="compact"||e==="full")return e}catch{}return null},Wt=e=>{if(!(typeof window>"u"))try{window.localStorage.setItem(Me,e)}catch{}},qo=e=>{if(!(e!=="compact"&&e!=="full"))return Wt(e),e};var Fe={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:Re?"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"},Yt=new Map([[R.Z,Fe.Z],[R.Y,Fe.Y]]),Vt=e=>/^[a-z]$/.test(e.toLowerCase()),Jo=(e,t)=>{if(t===e.key.toLowerCase())return!0;let n=Yt.get(t);return!!(n&&!Vt(e.key)&&e.code===n)},ea=e=>e===R.ARROW_LEFT||e===R.ARROW_RIGHT||e===R.ARROW_DOWN||e===R.ARROW_UP,ta=e=>e.altKey,na=e=>e.shiftKey,ra=e=>e.shiftKey;f();import{pointFromPair as Xt}from"@excalidraw/math";var ia=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)}},la=(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,S=[..._];return S[e]=v,v<u&&(u=v),S});if(!r||p.length===2)return p;let b=i-u;return p.map(_=>Xt(_.map((v,S)=>S===e?v+b:v)))},ca=(e,t,n)=>n?[Math.round(e/n)*n,Math.round(t/n)*n]:[e,t];f();var Pe=ne(Ie(),1),Ce=class{pool;entries={};constructor(t,n){this.pool=new Pe.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 De=(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 K}from"@excalidraw/math";var Q=null,Sa=e=>{Q=e},Ma=()=>{if(Q)return Q;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}`},Ra=e=>e.charAt(0).toUpperCase()+e.slice(1),La=e=>e instanceof HTMLElement&&e.className.includes("ToolIcon"),zt=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,Oa=e=>zt(e)||e instanceof Element&&!!e.closest("label, button"),Fa=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"),$t=({fontFamily:e})=>{for(let[t,n]of Object.entries(g))if(n===e)return`${t}${_e(n).map(r=>`, ${r}`).join("")}`;return I},wa=({fontSize:e,fontFamily:t})=>`${e}px ${$t({fontFamily:t})}`,Ia=async e=>{requestAnimationFrame(()=>requestAnimationFrame(e))},Ca=(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},Pa=(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(W()){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},Ne=e=>1-Math.pow(1-e,4),Ue=(e,t,n)=>(t-e)*Ne(n)+e,Da=({fromValues:e,toValues:t,onStep:n,duration:r=250,interpolateValue:o,onStart:a,onEnd:i,onCancel:s})=>{let l=!1,u=0,p;function b(O){if(l)return;p===void 0&&(p=O,a?.());let _=Math.min(O-p,r),v=Ne(_/r),S={};if(Object.keys(e).forEach(F=>{let M=F,V=(t[M]-e[M])*v+e[M];S[M]=V}),n(S),_<r){let F=_/r,M={};Object.keys(e).forEach(V=>{let P=V,X=e[P],z=t[P],D;D=o?o(X,z,F,P):Ue(X,z,F),D==null&&(D=Ue(X,z,F)),M[P]=D}),n(M),u=window.requestAnimationFrame(b)}else n(t),i?.()}return u=window.requestAnimationFrame(b),()=>{s?.(),l=!0,window.cancelAnimationFrame(u)}},Ua=(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)}},Na=()=>{let e=window.getSelection();e&&e.removeAllRanges()},Ha=(e,t)=>Math.abs(e-t),Ba=e=>e==="selection"||e==="lasso",Ga=(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},Ka=()=>document.fullscreenElement?.nodeName==="HTML",Wa=()=>document.documentElement.requestFullscreen(),Ya=()=>document.exitFullscreen(),Va=({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}},Xa=({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}},za=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",Zt=new RegExp(`^[^${qt}]*[${jt}]`),$a=e=>Zt.test(e),qa=e=>{let[t,n]=e;return{x:t,y:n}},ja=e=>{if(e?.name==="AbortError"){console.warn(e);return}throw e},Za=(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},Qa=(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},Ja=(e,t)=>{for(let n=0;n<e.length;n++){let r=t(e[n],n);if(r!=null)return r}},ve=()=>{let e,t,n=new Promise((r,o)=>{e=r,t=o});return n.resolve=e,n.reject=t,n},es=(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},ts=()=>document.querySelector('meta[name="version"]')?.content||xe,ns=()=>{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},rs=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},os=e=>{let t=e.parentElement;for(;t;){if(t.tabIndex>-1){t.focus();return}t=t.parentElement}},as=e=>{e.preventDefault(),e.returnValue=""},ss=e=>Array.from(e).map(t=>`0${t.toString(16)}`.slice(-2)).join(""),is=()=>W()?1:Date.now(),ls=e=>e instanceof Map?e:e.reduce((t,n)=>(t.set(typeof n=="string"?n:n.id,n),t),new Map),cs=e=>e.reduce((t,n,r)=>(t.set(n.id,[n,r]),t),new Map),us=(e,t)=>e.reduce((n,r,o)=>(n[t?t(r):o]=r,n),{}),fs=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},[]),Qt=e=>Array.isArray(e)?e:e.values(),ds=e=>Array.isArray(e)?e:Array.from(Qt(e)),W=()=>m.MODE===B.TEST,ps=()=>m.MODE===B.DEVELOPMENT,hs=()=>m.MODE===B.PRODUCTION,ms=()=>typeof process<"u"&&!0,Ts=(e,t)=>new CustomEvent(e,{detail:{nativeEvent:t},cancelable:!0}),bs=(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},gs=e=>{let t=typeof e;return e==null||t!=="object"&&t!=="function"},Jt=()=>{try{return window.self===window.top?"top":"iframe"}catch{return"iframe"}},Es=()=>Jt()==="iframe",_s=e=>!!e&&typeof e=="object"&&"then"in e&&"catch"in e&&"finally"in e,xs=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):[]},ke=(e,t)=>Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t,en=(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]||ke(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]||ke(e[i],t[i]);return!l&&r&&console.warn(`%cisShallowEqual: ${i} not equal ->`,"color: #8B4000",e[i],t[i]),l})},ys=(e,t,{checkForDefaultPrevented:n=!0}={})=>function(o){if(e?.(o),!n||!o?.defaultPrevented)return t?.(o)},As=(e,t,n)=>{if(!t)return e;if(n)return console.error(t),e;throw new Error(t)};function vs(e,t){if(!e)throw new Error(t)}var Ss=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},Ms=(e,t)=>e instanceof Set||e instanceof Map?e.has(t):"includes"in e?e.includes(t):e.hasOwnProperty(t),Rs=e=>JSON.parse(JSON.stringify(e)),Ls=(e,t)=>en(e,t)?e:t;function Os(e,t,n,r){return e?(e?.addEventListener?.(t,n,r),()=>{e?.removeEventListener?.(t,n,r)}):()=>{}}function Fs(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)} ${K(o[0],a[0]).toFixed(2)},${K(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+=`${K(r[0],o[0]).toFixed(2)},${K(r[1],o[1]).toFixed(2)} `;return t&&(i+="Z"),i}var ws=e=>e.replace(/\r?\n|\r/g,`
|
|
4
|
-
`);function Is(e){return e}var Se=async(e,...t)=>new Promise(n=>{n(e(...t))}),Cs=(...e)=>Math.max(...e.map(t=>t?1:0))>0,Ps=e=>{try{return JSON.parse(e)}catch{return null}},He=e=>e.replace(/"/g,"""),Ds=e=>Array.isArray(e)?e:[e],tn=e=>Array.isArray(e),nn=e=>tn(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length,Us=(e,t)=>{if(nn(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},Be="excalidraw-feature-flags",J={COMPLEX_BINDINGS:!1},L=null,ks=e=>{if(!L)try{let t=localStorage.getItem(Be);t&&(L=JSON.parse(t)??J)}catch{}return(L||J)[e]},Ns=(e,t)=>{try{L={...L||J,[e]:t},localStorage.setItem(Be,JSON.stringify(L))}catch(n){console.error("unable to set feature flag",n)}};var Ge=new C(Date.now()),Ke=0,Ys=()=>Math.floor(Ge.next()*2**31),Vs=e=>{Ge=new C(e),Ke=0},Xs=()=>W()?`id${Ke++}`:De();f();var Ye=ne(We(),1);var pn=e=>(e=e.trim(),e&&(0,Ye.sanitizeUrl)(He(e))),Qs=e=>!!(e?.includes(location.origin)||e?.startsWith("/")),Js=e=>{if(e=pn(e),e.startsWith("/"))return`${location.origin}${e}`;try{new URL(e)}catch{return"about:blank"}return e};f();var Ve=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=[]}};export{Dr as ACTIVE_THRESHOLD,_r as ALLOWED_PASTE_MIME_TYPES,Yn as APP_NAME,jr as ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO,qr as ARROW_LABEL_WIDTH_FRACTION,ho as ARROW_TYPE,_o as BIND_MODE_TIMEOUT,$r as BOUND_TEXT_PADDING,re as BinaryHeap,br as CANVAS_ONLY_ACTIONS,ao as CANVAS_SEARCH_TAB,be as CJK_HAND_DRAWN_FALLBACK_FONT,or as CLASSES,Fe as CODES,Ln as COLORS_PER_ROW,mr as COLOR_CHARCOAL_BLACK,kn as COLOR_OUTLINE_CONTRAST_THRESHOLD,d as COLOR_PALETTE,Tr as COLOR_VOICE_CALL,hr as COLOR_WHITE,er as CURSOR_TYPE,to as DEFAULT_ADAPTIVE_RADIUS,In as DEFAULT_CANVAS_BACKGROUND_PICKS,On as DEFAULT_CHART_COLOR_INDEX,pr as DEFAULT_COLLISION_THRESHOLD,H as DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX,Pn as DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE,wn as DEFAULT_ELEMENT_BACKGROUND_PICKS,oo as DEFAULT_ELEMENT_PROPS,N as DEFAULT_ELEMENT_STROKE_COLOR_INDEX,Cn as DEFAULT_ELEMENT_STROKE_COLOR_PALETTE,Fn as DEFAULT_ELEMENT_STROKE_PICKS,Gr as DEFAULT_EXPORT_PADDING,uo as DEFAULT_FILENAME,ur as DEFAULT_FONT_FAMILY,cr as DEFAULT_FONT_SIZE,gr as DEFAULT_GRID_SIZE,Er as DEFAULT_GRID_STEP,Jn as DEFAULT_LASER_COLOR,Kr as DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT,eo as DEFAULT_PROPORTIONAL_RADIUS,mo as DEFAULT_REDUCED_GLOBAL_ALPHA,so as DEFAULT_SIDEBAR,fr as DEFAULT_TEXT_ALIGN,It as DEFAULT_TRANSFORM_HANDLE_SPACING,Nr as DEFAULT_UI_OPTIONS,xe as DEFAULT_VERSION,dr as DEFAULT_VERTICAL_ALIGN,Eo as DOUBLE_TAP_POSITION_THRESHOLD,Xn as DRAGGING_THRESHOLD,co as EDITOR_LS_KEYS,To as ELEMENT_LINK_KEY,Jr as ELEMENT_READY_TO_ERASE_OPACITY,qn as ELEMENT_SHIFT_TRANSLATE_AMOUNT,jn as ELEMENT_TRANSLATE_AMOUNT,Xr as ENCRYPTION_KEY_BITS,B as ENV,Pt as EPSILON,Ot as EVENT,yr as EXPORT_DATA_TYPES,xr as EXPORT_IMAGE_TYPES,Br as EXPORT_SCALES,Ve as Emitter,g as FONT_FAMILY,j as FONT_FAMILY_FALLBACKS,Ft as FONT_FAMILY_GENERIC_FALLBACKS,G as FONT_METADATA,ar as FONT_SIZES,ir as FRAME_STYLE,So as GOOGLE_FONTS_RANGES,Cr as HYPERLINK_TOOLTIP_DELAY,Pr as IDLE_THRESHOLD,ye as IMAGE_MIME_TYPES,vr as IMAGE_RENDER_TIMEOUT,R as KEYS,Yt as KeyCodeMap,io as LIBRARY_DISABLED_TYPES,kt as LIBRARY_SIDEBAR_TAB,$n as LINE_CONFIRM_THRESHOLD,go as LINE_POLYGON_POINT_MERGE_DISTANCE,Mo as LOCAL_FONT_PROTOCOL,Wr as MAX_ALLOWED_FILE_BYTES,Rn as MAX_CUSTOM_COLORS_USED_IN_CANVAS,Hr as MAX_DECIMALS_FOR_SVG_EXPORT,Ir as MAX_ZOOM,Te as MIME_TYPES,zn as MINIMUM_ARROW_SIZE,lr as MIN_FONT_SIZE,po as MIN_WIDTH_OR_HEIGHT,wr as MIN_ZOOM,xo as MOBILE_ACTION_BUTTON_BG,Ee as MONOSPACE_GENERIC_FONT,Uo as MQ_MAX_HEIGHT_LANDSCAPE,Po as MQ_MAX_MOBILE,No as MQ_MAX_TABLET,Do as MQ_MAX_WIDTH_LANDSCAPE,ko as MQ_MIN_TABLET,Ho as MQ_MIN_WIDTH_DESKTOP,Bo as MQ_RIGHT_SIDEBAR_MIN_WIDTH,bo as ORIG_ID,tr as POINTER_BUTTON,nr as POINTER_EVENTS,Ce as PromisePool,Ae as Queue,Ut as ROUGHNESS,no as ROUNDNESS,ge as SANS_SERIF_GENERIC_FONT,Or as SCROLL_TIMEOUT,Qn as SHIFT_LOCKING_ANGLE,Ct as SIDE_RESIZING_THRESHOLD,fo as STATS_PANELS,Dt as STRING_MIME_TYPES,ro as STROKE_WIDTH,Vr as SVG_DOCUMENT_PREAMBLE,Yr as SVG_NS,Sr as TAP_TWICE_TIMEOUT,Qr as TEXT_ALIGN,Vn as TEXT_AUTOWRAP_THRESHOLD,Zn as TEXT_TO_CENTER_SNAP_THRESHOLD,sr as THEME,Rr as TITLE_TIMEOUT,lo as TOOL_TYPE,Mr as TOUCH_CTX_MENU_TIMEOUT,kr as URL_HASH_KEYS,Ur as URL_QUERY_KEYS,Nt as UserIdleState,zr as VERSIONS,Lr as VERSION_TIMEOUT,Zr as VERTICAL_ALIGN,I as WINDOWS_EMOJI_FALLBACK_FONT,rr as YOUTUBE_STATES,Fr as ZOOM_STEP,Os as addEventListener,Wa as allowFullScreen,Mn as applyDarkModeFilter,fs as arrayToList,ls as arrayToMap,cs as arrayToMapWithIndex,us as arrayToObject,As as assertNever,ss as bytesToHexString,Ra as capitalizeString,Ds as castArray,Ua as chunk,Rs as cloneJSON,Un as colorToHex,ys as composeEventHandlers,zo as createUserAgentDescriptor,Ca as debounce,Xo as deriveStylesPanelMode,Ha as distance,Ne as easeOut,Da as easeToValuesRAF,He as escapeDoubleQuotes,Ya as exitFullScreen,Za as findIndex,Qa as findLastIndex,os as focusNearestParent,Dn as getAllColorsSpecificShade,Ma as getDateTime,Ar as getExportSource,ks as getFeatureFlag,_e as getFontFamilyFallbacks,$t as getFontFamilyString,wa as getFontString,Vo as getFormFactor,Jt as getFrame,wt as getGenericFontFamilyFallback,za as getGlobalCSSVariable,ca as getGridPoint,Lo as getLineHeight,rs as getNearestScrollableContainer,ia as getSizeFromPoints,Fs as getSvgPathFromStroke,is as getUpdatedTimestamp,ts as getVersion,Ro as getVerticalOffset,vs as invariant,Le as isAndroid,Cs as isAnyTrue,ea as isArrowKey,gn as isBounds,Yo as isBrave,Ht as isChrome,Nn as isColorDark,Re as isDarwin,ps as isDevEnv,Ko as isFirefox,Ka as isFullScreen,Oe as isIOS,zt as isInputLike,Oa as isInteractive,Vt as isLatinChar,Qs as isLocalLink,Ms as isMemberOf,Bt as isMobileBreakpoint,gs as isPrimitive,hs as isProdEnv,_s as isPromiseLike,$a as isRTL,tn as isReadonlyArray,Es as isRunningInIframe,Wo as isSafari,Ba as isSelectionLikeTool,ms as isServerEnv,en as isShallowEqual,Gt as isTabletBreakpoint,W as isTestEnv,La as isToolIcon,me as isTransparent,Go as isWindows,Fa as isWritableElement,$o as loadDesktopUIModePreference,Ja as mapFind,Jo as matchKey,Ss as memoize,ja as muteFSAbortError,es as nFormatter,Ia as nextAnimationFrame,ws as normalizeEOL,Hn as normalizeInputColor,pn as normalizeLink,as as preventUnload,Se as promiseTry,xs as queryFocusableElements,Xs as randomId,Ys as randomInteger,Us as reduceToCommonValue,Na as removeSelection,la as rescalePoints,Vs as reseed,ve as resolvablePromise,he as rgbToHex,Ps as safelyParseJSON,Xa as sceneCoordsToViewportCoords,ka as selectNode,Sa as setDateTimeForTests,qo as setDesktopUIMode,Ns as setFeatureFlag,na as shouldMaintainAspectRatio,ta as shouldResizeFromCenter,ra as shouldRotateWithDiscreteAngle,nn as sizeOf,ns as supportsEmoji,Wn as supportsResizeObserver,Pa as throttleRAF,ds as toArray,Is as toBrandedType,Qt as toIterable,Js as toValidURL,qa as tupleToCoors,Ga as updateActiveTool,bs as updateObject,Ls as updateStable,Va as viewportCoordsToSceneCoords,Ts as wrapEvent};
|
|
3
|
+
`,eo=128,to={excalidraw:2,excalidrawLibrary:2},no=5,ro=.7,oo=11,so={TOP:"top",MIDDLE:"middle",BOTTOM:"bottom"},ao={LEFT:"left",CENTER:"center",RIGHT:"right"},io=20,lo=.25,co=32,uo={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},Kt={architect:0,artist:1,cartoonist:2},po={thin:1,bold:2,extraBold:4},fo={strokeColor:d.black,backgroundColor:d.transparent,fillStyle:"solid",strokeWidth:2,strokeStyle:"solid",roughness:Kt.artist,opacity:100,locked:!1},Vt="library",ho="search",mo={name:"default",defaultTab:Vt},Eo=new Set(["iframe","embeddable","image"]),To={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"},bo={OAI_API_KEY:"excalidraw-oai-api-key",MERMAID_TO_EXCALIDRAW:"mermaid-to-excalidraw",PUBLISH_LIBRARY:"publish-library-data"},go="Untitled",_o={generalStats:1,elementProperties:2},Ao=1,xo={sharp:"sharp",round:"round",elbow:"elbow"},yo=.3,vo="element",So=Symbol.for("__test__originalId__"),Wt=(r=>(r.ACTIVE="active",r.AWAY="away",r.IDLE="idle",r))(Wt||{}),Mo=20,Ro=35,Lo=700,Oo={background:"var(--mobile-action-button-bg)"};p();var K={[b.Excalifont]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25}},[b.Nunito]:{metrics:{unitsPerEm:1e3,ascender:1011,descender:-353,lineHeight:1.25}},[b["Lilita One"]]:{metrics:{unitsPerEm:1e3,ascender:923,descender:-220,lineHeight:1.15}},[b["Comic Shanns"]]:{metrics:{unitsPerEm:1e3,ascender:750,descender:-250,lineHeight:1.25}},[b.Virgil]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},deprecated:!0},[b.Helvetica]:{metrics:{unitsPerEm:2048,ascender:1577,descender:-471,lineHeight:1.15},deprecated:!0,local:!0},[b.Cascadia]:{metrics:{unitsPerEm:2048,ascender:1900,descender:-480,lineHeight:1.2},deprecated:!0},[b["Liberation Sans"]]:{metrics:{unitsPerEm:2048,ascender:1854,descender:-434,lineHeight:1.15},private:!0},[b.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}},Co={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"},Po="local:",Do=(e,t,n)=>{let{unitsPerEm:r,ascender:o,descender:s}=K[e]?.metrics||K[b.Excalifont].metrics,i=t/r,a=(n-i*o+i*s)/2;return i*o+a},ko=e=>{let{lineHeight:t}=K[e]?.metrics||K[b.Excalifont].metrics;return t};p();var Me=class{jobs=[];running=!1;tick(){if(this.running)return;let t=this.jobs.shift();t?(this.running=!0,t.promise.resolve(Le(t.jobFactory,...t.args).finally(()=>{this.running=!1,this.tick()}))):this.running=!1}push(t,...n){let r=Re();return this.jobs.push({jobFactory:t,promise:r,args:n}),this.tick(),r}};p();p();var Oe="excalidraw.desktopUIMode",Ko=599,Vo=1e3,Wo=500,Yo=600,$o=1180,Xo=1440,zo=1229,we=/Mac|iPod|iPhone|iPad/.test(navigator.platform),jo=/^Win/.test(navigator.platform),Fe=/\b(android)\b/i.test(navigator.userAgent),qo=typeof window<"u"&&"netscape"in window&&navigator.userAgent.indexOf("rv:")>1&&navigator.userAgent.indexOf("Gecko")>1,Yt=navigator.userAgent.indexOf("Chrome")!==-1,Zo=!Yt&&navigator.userAgent.indexOf("Safari")!==-1,Ie=/iPad|iPhone/i.test(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,Qo=()=>navigator.brave?.isBrave?.name==="isBrave",$t=(e,t)=>e<=599||t<500&&e<1e3,Xt=(e,t)=>{let n=Math.min(e,t),r=Math.max(e,t);return n>=600&&r<=1180},zt=()=>{let e=navigator.userAgent||"",t=navigator.platform||"",n=navigator.userAgentData;if(n){let o=(n.platform||"").toLowerCase(),s=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(s)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},Jo=(e,t)=>$t(e,t)?"phone":Xt(e,t)?"tablet":"desktop",es=e=>e.formFactor==="phone"?"mobile":e.formFactor==="tablet"?"compact":e.desktopUIMode,ts=e=>{let t=e??"",n="unknown";return Ie?n="ios":Fe?n="android":t&&(n="other"),{isMobileDevice:zt(),platform:n}},ns=()=>{if(typeof window>"u")return null;try{let e=window.localStorage.getItem(Oe);if(e==="compact"||e==="full")return e}catch{}return null},jt=e=>{if(!(typeof window>"u"))try{window.localStorage.setItem(Oe,e)}catch{}},rs=e=>{if(!(e!=="compact"&&e!=="full"))return jt(e),e};var Ce={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:we?"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"},qt=new Map([[R.Z,Ce.Z],[R.Y,Ce.Y]]),Zt=e=>/^[a-z]$/.test(e.toLowerCase()),is=(e,t)=>{if(t===e.key.toLowerCase())return!0;let n=qt.get(t);return!!(n&&!Zt(e.key)&&e.code===n)},ls=e=>e===R.ARROW_LEFT||e===R.ARROW_RIGHT||e===R.ARROW_DOWN||e===R.ARROW_UP,cs=e=>e.altKey,us=e=>e.shiftKey,ps=e=>e.shiftKey;p();import{pointFromPair as Qt}from"@excalidraw/math";var ms=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)}},Es=(e,t,n,r)=>{let o=n.map(_=>_[e]),s=Math.max(...o),i=Math.min(...o),a=s-i,l=a===0?1:t/a,u=1/0,f=n.map(_=>{let v=_[e]*l,S=[..._];return S[e]=v,v<u&&(u=v),S});if(!r||f.length===2)return f;let T=i-u;return f.map(_=>Qt(_.map((v,S)=>S===e?v+T:v)))},Ts=(e,t,n)=>n?[Math.round(e/n)*n,Math.round(t/n)*n]:[e,t];p();var Ue=se(De(),1),ke=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)))}};p();p();p();var Ne=(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),"");p();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()}};p();import{average as V}from"@excalidraw/math";var J=null,Cs=e=>{J=e},Ps=()=>{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"),s=`${e.getMinutes()}`.padStart(2,"0");return`${t}-${n}-${r}-${o}${s}`},Ds=e=>e.charAt(0).toUpperCase()+e.slice(1),ks=e=>e instanceof HTMLElement&&e.className.includes("ToolIcon"),Jt=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,Us=e=>Jt(e)||e instanceof Element&&!!e.closest("label, button"),Ns=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")||e instanceof HTMLElement&&e.closest(".cm-editor")!==null,en=({fontFamily:e})=>{for(let[t,n]of Object.entries(b))if(n===e)return`${t}${ye(n).map(r=>`, ${r}`).join("")}`;return I},Hs=({fontSize:e,fontFamily:t})=>`${e}px ${en({fontFamily:t})}`,Gs=async e=>{requestAnimationFrame(()=>requestAnimationFrame(e))},Bs=(e,t)=>{let n=0,r=null,o=(...s)=>{r=s,clearTimeout(n),n=window.setTimeout(()=>{r=null,e(...s)},t)};return o.flush=()=>{if(clearTimeout(n),r){let s=r;r=null,e(...s)}},o.cancel=()=>{r=null,clearTimeout(n)},o},Ks=e=>{let t=null,n=null,r=()=>{t=window.requestAnimationFrame(()=>{t=null;let s=n;n=null,s&&e(...s)})},o=(...s)=>{n=s,t===null&&r()};return o.flush=()=>{t!==null&&(cancelAnimationFrame(t),t=null),n&&(e(...n),n=null)},o.cancel=()=>{n=null,t!==null&&(cancelAnimationFrame(t),t=null)},o},Be=e=>1-Math.pow(1-e,4),He=(e,t,n)=>(t-e)*Be(n)+e,Vs=({fromValues:e,toValues:t,onStep:n,duration:r=250,interpolateValue:o,onStart:s,onEnd:i,onCancel:a})=>{let l=!1,u=0,f;function T(O){if(l)return;f===void 0&&(f=O,s?.());let _=Math.min(O-f,r),v=Be(_/r),S={};if(Object.keys(e).forEach(w=>{let M=w,$=(t[M]-e[M])*v+e[M];S[M]=$}),n(S),_<r){let w=_/r,M={};Object.keys(e).forEach($=>{let D=$,X=e[D],z=t[D],k;k=o?o(X,z,w,D):He(X,z,w),k==null&&(k=He(X,z,w)),M[D]=k}),n(M),u=window.requestAnimationFrame(T)}else n(t),i?.()}return u=window.requestAnimationFrame(T),()=>{a?.(),l=!0,window.cancelAnimationFrame(u)}},Ws=(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},Ys=e=>{let t=window.getSelection();if(t){let n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}},$s=()=>{let e=window.getSelection();e&&e.removeAllRanges()},Xs=(e,t)=>Math.abs(e-t),zs=e=>e==="selection"||e==="lasso",js=(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},qs=()=>document.fullscreenElement?.nodeName==="HTML",Zs=()=>document.documentElement.requestFullscreen(),Qs=()=>document.exitFullscreen(),Js=({clientX:e,clientY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:s,scrollY:i})=>{let a=(e-r)/n.value-s,l=(t-o)/n.value-i;return{x:a,y:l}},ea=({sceneX:e,sceneY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:s,scrollY:i})=>{let a=(e+s)*n.value+r,l=(t+i)*n.value+o;return{x:a,y:l}},ta=e=>getComputedStyle(document.documentElement).getPropertyValue(`--${e}`),tn="A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF",nn="\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC",rn=new RegExp(`^[^${tn}]*[${nn}]`),na=e=>rn.test(e),ra=e=>{let[t,n]=e;return{x:t,y:n}},oa=e=>{if(e?.name==="AbortError"){console.warn(e);return}throw e},sa=(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},aa=(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},ia=(e,t)=>{for(let n=0;n<e.length;n++){let r=t(e[n],n);if(r!=null)return r}},Re=()=>{let e,t,n=new Promise((r,o)=>{e=r,t=o});return n.resolve=e,n.reject=t,n},la=(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},ca=()=>document.querySelector('meta[name="version"]')?.content||ve,ua=()=>{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},pa=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},da=e=>{let t=e.parentElement;for(;t;){if(t.tabIndex>-1){t.focus();return}t=t.parentElement}},fa=e=>{e.preventDefault(),e.returnValue=""},ha=e=>Array.from(e).map(t=>`0${t.toString(16)}`.slice(-2)).join(""),ma=()=>te()?1:Date.now(),Ea=e=>e instanceof Map?e:e.reduce((t,n)=>(t.set(typeof n=="string"?n:n.id,n),t),new Map),Ta=e=>e.reduce((t,n,r)=>(t.set(n.id,[n,r]),t),new Map),ba=(e,t)=>e.reduce((n,r,o)=>(n[t?t(r):o]=r,n),{}),ga=e=>e.reduce((t,n,r)=>{let o={...n,prev:null,next:null};if(r!==0){let s=t[r-1];if(o.prev=s,s.next=o,r===e.length-1){let i=t[0];o.next=i,i.prev=o}}return t.push(o),t},[]),on=e=>Array.isArray(e)?e:e.values(),_a=e=>Array.isArray(e)?e:Array.from(on(e)),te=()=>m.MODE===B.TEST,Aa=()=>m.MODE===B.DEVELOPMENT,Ke=()=>m.MODE===B.PRODUCTION,xa=()=>typeof process<"u"&&!0,ya=(e,t)=>new CustomEvent(e,{detail:{nativeEvent:t},cancelable:!0}),va=(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},Sa=e=>{let t=typeof e;return e==null||t!=="object"&&t!=="function"},sn=()=>{try{return window.self===window.top?"top":"iframe"}catch{return"iframe"}},Ma=()=>sn()==="iframe",Ra=e=>!!e&&typeof e=="object"&&"then"in e&&"catch"in e&&"finally"in e,La=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):[]},Ge=(e,t)=>Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t,an=(e,t,n,r=!1)=>{let o=Object.keys(e),s=Object.keys(t);if(o.length!==s.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]||Ge(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 a=n?.[i],l=a?a(e[i],t[i]):e[i]===t[i]||Ge(e[i],t[i]);return!l&&r&&console.warn(`%cisShallowEqual: ${i} not equal ->`,"color: #8B4000",e[i],t[i]),l})},Oa=(e,t,{checkForDefaultPrevented:n=!0}={})=>function(o){if(e?.(o),!n||!o?.defaultPrevented)return t?.(o)},wa=(e,t,n)=>{if(!t)return e;if(n)return console.error(t),e;throw new Error(t)};function Fa(e,t){if(!e)throw new Error(t)}var Ia=e=>{let t,n,r=function(o){let s=Object.entries(o);if(t){let a=!0;for(let[l,u]of s)if(t.get(l)!==u){a=!1;break}if(a)return n}let i=e(o);return t=new Map(s),n=i,i};return r.clear=()=>{t=void 0,n=void 0},r},Ca=(e,t)=>e instanceof Set||e instanceof Map?e.has(t):"includes"in e?e.includes(t):e.hasOwnProperty(t),Pa=e=>JSON.parse(JSON.stringify(e)),Da=(e,t)=>an(e,t)?e:t;function ka(e,t,n,r){return e?(e?.addEventListener?.(t,n,r),()=>{e?.removeEventListener?.(t,n,r)}):()=>{}}function Ua(e,t=!0){let n=e.length;if(n<4)return"";let r=e[0],o=e[1],s=e[2],i=`M${r[0].toFixed(2)},${r[1].toFixed(2)} Q${o[0].toFixed(2)},${o[1].toFixed(2)} ${V(o[0],s[0]).toFixed(2)},${V(o[1],s[1]).toFixed(2)} T`;for(let a=2,l=n-1;a<l;a++)r=e[a],o=e[a+1],i+=`${V(r[0],o[0]).toFixed(2)},${V(r[1],o[1]).toFixed(2)} `;return t&&(i+="Z"),i}var Na=e=>e.replace(/\r?\n|\r/g,`
|
|
4
|
+
`);function Ha(e){return e}var Le=async(e,...t)=>new Promise(n=>{n(e(...t))}),Ga=(...e)=>Math.max(...e.map(t=>t?1:0))>0,Ba=e=>{try{return JSON.parse(e)}catch{return null}},Ve=e=>e.replace(/"/g,"""),Ka=e=>Array.isArray(e)?e:[e],ln=e=>Array.isArray(e),cn=e=>ln(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length,Va=(e,t)=>{if(cn(e)===0)return null;let n=t||(o=>o),r=null;for(let o of e){let s=n(o);if((r===null||r===s)&&s!=null)r=s;else return null}return r},We="excalidraw-feature-flags",ee={COMPLEX_BINDINGS:!1},L=null,Wa=e=>{if(!L)try{let t=localStorage.getItem(We);t&&(L=JSON.parse(t)??ee)}catch{}return(L||ee)[e]},Ya=(e,t)=>{try{L={...L||ee,[e]:t},localStorage.setItem(We,JSON.stringify(L))}catch(n){console.error("unable to set feature flag",n)}},$a=(e,t)=>t.includes(e);var Ye=new C(Date.now()),$e=0,Qa=()=>Math.floor(Ye.next()*2**31),Ja=e=>{Ye=new C(e),$e=0},ei=()=>te()?`id${$e++}`:Ne();p();var ze=se(Xe(),1);var gn=e=>(e=e.trim(),e&&(0,ze.sanitizeUrl)(Ve(e))),ai=e=>!!(e?.includes(location.origin)||e?.startsWith("/")),ii=e=>{if(e=gn(e),e.startsWith("/"))return`${location.origin}${e}`;try{new URL(e)}catch{return"about:blank"}return e};p();var Y=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=[]}};p();var je=class{constructor(t){this.behavior=t}emitters=new Map;lastPayload=new Map;emittedOnce=new Set;getEmitter(t){let n=this.emitters.get(t);return n||(n=new Y,this.emitters.set(t,n)),n}toPromiseValue(t){return t.length===1?t[0]:t}on(t,n){let r=this.behavior[t],o=this.lastPayload.get(t);if(n)return r.replay==="last"&&o&&(queueMicrotask(()=>n(...o)),r.cardinality==="once")?()=>{}:this.getEmitter(t).on(n);if(r.cardinality!=="once"||r.replay!=="last")throw new Error(`Event "${String(t)}" requires a callback`);return o?Promise.resolve(this.toPromiseValue(o)):new Promise(s=>{this.getEmitter(t).once((...i)=>{s(this.toPromiseValue(i))})})}emit(t,...n){let r=this.behavior[t];if(!Ke()&&r.cardinality==="once"){if(this.emittedOnce.has(t))throw new Error(`Event "${String(t)}" can only be emitted once`);this.emittedOnce.add(t)}r.replay==="last"&&this.lastPayload.set(t,n);try{this.getEmitter(t).trigger(...n)}finally{r.cardinality==="once"&&this.getEmitter(t).clear()}}clear(){this.lastPayload.clear(),this.emittedOnce.clear();for(let t of this.emitters.values())t.clear();this.emitters.clear()}};p();var qe=class{constructor(t,n=Object.is){this.isEqual=n;this.value=t}version=0;value;waiters=new Set;subscribers=new Set;getSnapshot(){return{version:this.version,value:this.value}}set(t){if(this.isEqual(this.value,t))return!1;this.value=t,this.version+=1;let n=this.getSnapshot();for(let r of this.subscribers)r(n);for(let r of this.waiters)r(n);return this.waiters.clear(),!0}update(t){return this.set(t(this.value))}subscribe(t){return this.subscribers.add(t),()=>{this.subscribers.delete(t)}}pull(t=-1){return this.version!==t?Promise.resolve(this.getSnapshot()):new Promise(n=>{this.waiters.add(n)})}};p();var P=(e,t=5)=>parseFloat(e.toPrecision(t)),_n=e=>P(e.reduce((t,n)=>t+n)/e.length),ne=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,P(r.reduce((o,s)=>o+s)),r.sort((o,s)=>o-s).map(o=>P(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 s=r.reduce((a,l)=>a+l),i=P(s/e.FRAME_COUNT);console.info(t,`- ${r.length} calls - ${i}ms/frame across ${e.FRAME_COUNT} frames (${P(i/16.67*100,1)}% of frame budget)`),e.TIMES_AVG[t]={t:n,times:[],avg:o!=null?_n([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:s}=e.TIMES_AGGR[n]=e.TIMES_AGGR[n]||{t:0,times:[]};o&&s.push(t??r-o),e.TIMES_AGGR[n].t=r};static logTimeAverage=(t,n="default")=>{e.setupInterval();let r=performance.now(),{t:o,times:s}=e.TIMES_AVG[n]=e.TIMES_AVG[n]||{t:0,times:[]};o&&s.push(t??r-o),e.TIMES_AVG[n].t=r};static logWrapper=t=>(n,r="default")=>(...o)=>{let s=performance.now(),i=n(...o);return e[t](performance.now()-s,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)]),s={};for(let i of o){let a=r[i],l=n[i];Ze(a,l)||(s[i]={prev:a,next:l})}Object.keys(s).length>0&&console.info(`[${t}] changed:`,s)}};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{Vr as ACTIVE_THRESHOLD,Lr as ALLOWED_PASTE_MIME_TYPES,Zn as APP_NAME,oo as ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO,ro as ARROW_LABEL_WIDTH_FRACTION,xo as ARROW_TYPE,je as AppEventBus,Lo as BIND_MODE_TIMEOUT,no as BOUND_TEXT_PADDING,ae as BinaryHeap,Sr as CANVAS_ONLY_ACTIONS,ho as CANVAS_SEARCH_TAB,_e as CJK_HAND_DRAWN_FALLBACK_FONT,pr as CLASSES,Ce as CODES,Dn as COLORS_PER_ROW,yr as COLOR_CHARCOAL_BLACK,Wn as COLOR_OUTLINE_CONTRAST_THRESHOLD,d as COLOR_PALETTE,vr as COLOR_VOICE_CALL,xr as COLOR_WHITE,ir as CURSOR_TYPE,hr as DARK_THEME_FILTER,co as DEFAULT_ADAPTIVE_RADIUS,Hn as DEFAULT_CANVAS_BACKGROUND_PICKS,kn as DEFAULT_CHART_COLOR_INDEX,Ar as DEFAULT_COLLISION_THRESHOLD,G as DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX,Bn as DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE,Nn as DEFAULT_ELEMENT_BACKGROUND_PICKS,fo as DEFAULT_ELEMENT_PROPS,H as DEFAULT_ELEMENT_STROKE_COLOR_INDEX,Gn as DEFAULT_ELEMENT_STROKE_COLOR_PALETTE,Un as DEFAULT_ELEMENT_STROKE_PICKS,jr as DEFAULT_EXPORT_PADDING,go as DEFAULT_FILENAME,br as DEFAULT_FONT_FAMILY,Tr as DEFAULT_FONT_SIZE,Mr as DEFAULT_GRID_SIZE,Rr as DEFAULT_GRID_STEP,ar as DEFAULT_LASER_COLOR,qr as DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT,lo as DEFAULT_PROPORTIONAL_RADIUS,yo as DEFAULT_REDUCED_GLOBAL_ALPHA,mo as DEFAULT_SIDEBAR,gr as DEFAULT_TEXT_ALIGN,Nt as DEFAULT_TRANSFORM_HANDLE_SPACING,$r as DEFAULT_UI_OPTIONS,ve as DEFAULT_VERSION,_r as DEFAULT_VERTICAL_ALIGN,Ro as DOUBLE_TAP_POSITION_THRESHOLD,Jn as DRAGGING_THRESHOLD,ne as Debug,bo as EDITOR_LS_KEYS,vo as ELEMENT_LINK_KEY,io as ELEMENT_READY_TO_ERASE_OPACITY,nr as ELEMENT_SHIFT_TRANSLATE_AMOUNT,rr as ELEMENT_TRANSLATE_AMOUNT,eo as ENCRYPTION_KEY_BITS,B as ENV,Gt as EPSILON,Dt as EVENT,wr as EXPORT_DATA_TYPES,Or as EXPORT_IMAGE_TYPES,zr as EXPORT_SCALES,Y as Emitter,b as FONT_FAMILY,Z as FONT_FAMILY_FALLBACKS,kt as FONT_FAMILY_GENERIC_FALLBACKS,K as FONT_METADATA,dr as FONT_SIZES,mr as FRAME_STYLE,Co as GOOGLE_FONTS_RANGES,Br as HYPERLINK_TOOLTIP_DELAY,Kr as IDLE_THRESHOLD,Se as IMAGE_MIME_TYPES,Ir as IMAGE_RENDER_TIMEOUT,R as KEYS,qt as KeyCodeMap,Eo as LIBRARY_DISABLED_TYPES,Vt as LIBRARY_SIDEBAR_TAB,tr as LINE_CONFIRM_THRESHOLD,Mo as LINE_POLYGON_POINT_MERGE_DISTANCE,Po as LOCAL_FONT_PROTOCOL,Zr as MAX_ALLOWED_FILE_BYTES,Pn as MAX_CUSTOM_COLORS_USED_IN_CANVAS,Xr as MAX_DECIMALS_FOR_SVG_EXPORT,Gr as MAX_ZOOM,ge as MIME_TYPES,er as MINIMUM_ARROW_SIZE,Er as MIN_FONT_SIZE,Ao as MIN_WIDTH_OR_HEIGHT,Hr as MIN_ZOOM,Oo as MOBILE_ACTION_BUTTON_BG,xe as MONOSPACE_GENERIC_FONT,Wo as MQ_MAX_HEIGHT_LANDSCAPE,Ko as MQ_MAX_MOBILE,$o as MQ_MAX_TABLET,Vo as MQ_MAX_WIDTH_LANDSCAPE,Yo as MQ_MIN_TABLET,Xo as MQ_MIN_WIDTH_DESKTOP,zo as MQ_RIGHT_SIDEBAR_MIN_WIDTH,So as ORIG_ID,lr as POINTER_BUTTON,cr as POINTER_EVENTS,ke as PromisePool,Me as Queue,Kt as ROUGHNESS,uo as ROUNDNESS,Ae as SANS_SERIF_GENERIC_FONT,Ur as SCROLL_TIMEOUT,sr as SHIFT_LOCKING_ANGLE,Ht as SIDE_RESIZING_THRESHOLD,_o as STATS_PANELS,Bt as STRING_MIME_TYPES,po as STROKE_WIDTH,Jr as SVG_DOCUMENT_PREAMBLE,Qr as SVG_NS,Cr as TAP_TWICE_TIMEOUT,ao as TEXT_ALIGN,Qn as TEXT_AUTOWRAP_THRESHOLD,or as TEXT_TO_CENTER_SNAP_THRESHOLD,fr as THEME,Dr as TITLE_TIMEOUT,To as TOOL_TYPE,Pr as TOUCH_CTX_MENU_TIMEOUT,Yr as URL_HASH_KEYS,Wr as URL_QUERY_KEYS,Wt as UserIdleState,to as VERSIONS,kr as VERSION_TIMEOUT,so as VERTICAL_ALIGN,qe as VersionedSnapshotStore,I as WINDOWS_EMOJI_FALLBACK_FONT,ur as YOUTUBE_STATES,Nr as ZOOM_STEP,ka as addEventListener,Zs as allowFullScreen,Cn as applyDarkModeFilter,ga as arrayToList,Ea as arrayToMap,Ta as arrayToMapWithIndex,ba as arrayToObject,wa as assertNever,ha as bytesToHexString,Ds as capitalizeString,Ka as castArray,Ws as chunk,Pa as cloneJSON,Vn as colorToHex,Oa as composeEventHandlers,ts as createUserAgentDescriptor,Bs as debounce,es as deriveStylesPanelMode,Xs as distance,Be as easeOut,Vs as easeToValuesRAF,Ve as escapeDoubleQuotes,Qs as exitFullScreen,sa as findIndex,aa as findLastIndex,da as focusNearestParent,Kn as getAllColorsSpecificShade,Ps as getDateTime,Fr as getExportSource,Wa as getFeatureFlag,ye as getFontFamilyFallbacks,en as getFontFamilyString,Hs as getFontString,Jo as getFormFactor,sn as getFrame,Ut as getGenericFontFamilyFallback,ta as getGlobalCSSVariable,Ts as getGridPoint,ko as getLineHeight,pa as getNearestScrollableContainer,ms as getSizeFromPoints,Ua as getSvgPathFromStroke,ma as getUpdatedTimestamp,ca as getVersion,Do as getVerticalOffset,Fa as invariant,Fe as isAndroid,Ga as isAnyTrue,ls as isArrowKey,Sn as isBounds,Qo as isBrave,Yt as isChrome,Yn as isColorDark,we as isDarwin,Aa as isDevEnv,qo as isFirefox,qs as isFullScreen,Ie as isIOS,Jt as isInputLike,Us as isInteractive,Zt as isLatinChar,ai as isLocalLink,Ca as isMemberOf,$t as isMobileBreakpoint,Sa as isPrimitive,Ke as isProdEnv,Ra as isPromiseLike,na as isRTL,ln as isReadonlyArray,Ma as isRunningInIframe,Zo as isSafari,zs as isSelectionLikeTool,xa as isServerEnv,an as isShallowEqual,Xt as isTabletBreakpoint,te as isTestEnv,ks as isToolIcon,be as isTransparent,jo as isWindows,Ns as isWritableElement,ns as loadDesktopUIModePreference,ia as mapFind,is as matchKey,Ia as memoize,oa as muteFSAbortError,la as nFormatter,Gs as nextAnimationFrame,Na as normalizeEOL,$n as normalizeInputColor,gn as normalizeLink,$a as oneOf,fa as preventUnload,Le as promiseTry,La as queryFocusableElements,ei as randomId,Qa as randomInteger,Va as reduceToCommonValue,$s as removeSelection,Es as rescalePoints,Ja as reseed,Re as resolvablePromise,Te as rgbToHex,Ba as safelyParseJSON,ea as sceneCoordsToViewportCoords,Ys as selectNode,Cs as setDateTimeForTests,rs as setDesktopUIMode,Ya as setFeatureFlag,us as shouldMaintainAspectRatio,cs as shouldResizeFromCenter,ps as shouldRotateWithDiscreteAngle,cn as sizeOf,ua as supportsEmoji,qn as supportsResizeObserver,Ks as throttleRAF,_a as toArray,Ha as toBrandedType,on as toIterable,ii as toValidURL,ra as tupleToCoors,js as updateActiveTool,va as updateObject,Da as updateStable,Js as viewportCoordsToSceneCoords,ya 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
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { UnsubscribeCallback } from "@excalidraw/excalidraw/types";
|
|
2
|
+
export type AppEventPayloadMap = Record<string, unknown[]>;
|
|
3
|
+
export type AppEventBehavior = {
|
|
4
|
+
cardinality: "once" | "many";
|
|
5
|
+
replay: "none" | "last";
|
|
6
|
+
};
|
|
7
|
+
export type AppEventBehaviorMap<Events extends AppEventPayloadMap> = {
|
|
8
|
+
[K in keyof Events]: AppEventBehavior;
|
|
9
|
+
};
|
|
10
|
+
type AwaitableAppEventKeys<Events extends AppEventPayloadMap, Behavior extends AppEventBehaviorMap<Events>> = {
|
|
11
|
+
[K in keyof Events]: Behavior[K]["cardinality"] extends "once" ? Behavior[K]["replay"] extends "last" ? K : never : never;
|
|
12
|
+
}[keyof Events];
|
|
13
|
+
type AppEventPromiseValue<Args extends any[]> = Args extends [infer Only] ? Only : Args;
|
|
14
|
+
export declare class AppEventBus<Events extends AppEventPayloadMap, Behavior extends AppEventBehaviorMap<Events>> {
|
|
15
|
+
private readonly behavior;
|
|
16
|
+
private readonly emitters;
|
|
17
|
+
private readonly lastPayload;
|
|
18
|
+
private readonly emittedOnce;
|
|
19
|
+
constructor(behavior: Behavior);
|
|
20
|
+
private getEmitter;
|
|
21
|
+
private toPromiseValue;
|
|
22
|
+
on<K extends keyof Events>(name: K, callback: (...args: Events[K]) => void): UnsubscribeCallback;
|
|
23
|
+
on<K extends AwaitableAppEventKeys<Events, Behavior>>(name: K): Promise<AppEventPromiseValue<Events[K]>>;
|
|
24
|
+
emit<K extends keyof Events>(name: K, ...args: Events[K]): void;
|
|
25
|
+
clear(): void;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -32,16 +32,16 @@ export declare const DEFAULT_ELEMENT_STROKE_PICKS: ColorTuple;
|
|
|
32
32
|
export declare const DEFAULT_ELEMENT_BACKGROUND_PICKS: ColorTuple;
|
|
33
33
|
export declare const DEFAULT_CANVAS_BACKGROUND_PICKS: ColorTuple;
|
|
34
34
|
export declare const DEFAULT_ELEMENT_STROKE_COLOR_PALETTE: {
|
|
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
35
|
readonly cyan: readonly ["#e3fafc", "#99e9f2", "#3bc9db", "#15aabf", "#0c8599"];
|
|
41
|
-
readonly
|
|
36
|
+
readonly blue: readonly ["#e7f5ff", "#a5d8ff", "#4dabf7", "#228be6", "#1971c2"];
|
|
37
|
+
readonly violet: readonly ["#f3f0ff", "#d0bfff", "#9775fa", "#7950f2", "#6741d9"];
|
|
38
|
+
readonly grape: readonly ["#f8f0fc", "#eebefa", "#da77f2", "#be4bdb", "#9c36b5"];
|
|
39
|
+
readonly pink: readonly ["#fff0f6", "#fcc2d7", "#f783ac", "#e64980", "#c2255c"];
|
|
42
40
|
readonly green: readonly ["#ebfbee", "#b2f2bb", "#69db7c", "#40c057", "#2f9e44"];
|
|
41
|
+
readonly teal: readonly ["#e6fcf5", "#96f2d7", "#38d9a9", "#12b886", "#099268"];
|
|
43
42
|
readonly yellow: readonly ["#fff9db", "#ffec99", "#ffd43b", "#fab005", "#f08c00"];
|
|
44
43
|
readonly orange: readonly ["#fff4e6", "#ffd8a8", "#ffa94d", "#fd7e14", "#e8590c"];
|
|
44
|
+
readonly red: readonly ["#fff5f5", "#ffc9c9", "#ff8787", "#fa5252", "#e03131"];
|
|
45
45
|
readonly transparent: "transparent";
|
|
46
46
|
readonly white: "#ffffff";
|
|
47
47
|
readonly gray: readonly ["#f8f9fa", "#e9ecef", "#ced4da", "#868e96", "#343a40"];
|
|
@@ -49,23 +49,23 @@ export declare const DEFAULT_ELEMENT_STROKE_COLOR_PALETTE: {
|
|
|
49
49
|
readonly bronze: readonly ["#f8f1ee", "#eaddd7", "#d2bab0", "#a18072", "#846358"];
|
|
50
50
|
};
|
|
51
51
|
export declare const DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE: {
|
|
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
52
|
readonly cyan: readonly ["#e3fafc", "#99e9f2", "#3bc9db", "#15aabf", "#0c8599"];
|
|
58
|
-
readonly
|
|
53
|
+
readonly blue: readonly ["#e7f5ff", "#a5d8ff", "#4dabf7", "#228be6", "#1971c2"];
|
|
54
|
+
readonly violet: readonly ["#f3f0ff", "#d0bfff", "#9775fa", "#7950f2", "#6741d9"];
|
|
55
|
+
readonly grape: readonly ["#f8f0fc", "#eebefa", "#da77f2", "#be4bdb", "#9c36b5"];
|
|
56
|
+
readonly pink: readonly ["#fff0f6", "#fcc2d7", "#f783ac", "#e64980", "#c2255c"];
|
|
59
57
|
readonly green: readonly ["#ebfbee", "#b2f2bb", "#69db7c", "#40c057", "#2f9e44"];
|
|
58
|
+
readonly teal: readonly ["#e6fcf5", "#96f2d7", "#38d9a9", "#12b886", "#099268"];
|
|
60
59
|
readonly yellow: readonly ["#fff9db", "#ffec99", "#ffd43b", "#fab005", "#f08c00"];
|
|
61
60
|
readonly orange: readonly ["#fff4e6", "#ffd8a8", "#ffa94d", "#fd7e14", "#e8590c"];
|
|
61
|
+
readonly red: readonly ["#fff5f5", "#ffc9c9", "#ff8787", "#fa5252", "#e03131"];
|
|
62
62
|
readonly transparent: "transparent";
|
|
63
63
|
readonly white: "#ffffff";
|
|
64
64
|
readonly gray: readonly ["#f8f9fa", "#e9ecef", "#ced4da", "#868e96", "#343a40"];
|
|
65
65
|
readonly black: "#1e1e1e";
|
|
66
66
|
readonly bronze: readonly ["#f8f1ee", "#eaddd7", "#d2bab0", "#a18072", "#846358"];
|
|
67
67
|
};
|
|
68
|
-
export declare const getAllColorsSpecificShade: (index: 0 | 1 | 2 | 3 | 4) =>
|
|
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
69
|
export declare const rgbToHex: (r: number, g: number, b: number, a?: number) => string;
|
|
70
70
|
/**
|
|
71
71
|
* @returns #RRGGBB or #RRGGBBAA based on color containing non-opaque alpha,
|
|
@@ -85,6 +85,7 @@ export declare const CLASSES: {
|
|
|
85
85
|
CONVERT_ELEMENT_TYPE_POPUP: string;
|
|
86
86
|
SHAPE_ACTIONS_THEME_SCOPE: string;
|
|
87
87
|
FRAME_NAME: string;
|
|
88
|
+
DROPDOWN_MENU_EVENT_WRAPPER: string;
|
|
88
89
|
};
|
|
89
90
|
export declare const FONT_SIZES: {
|
|
90
91
|
readonly sm: 16;
|
|
@@ -131,6 +132,7 @@ export declare const THEME: {
|
|
|
131
132
|
readonly LIGHT: "light";
|
|
132
133
|
readonly DARK: "dark";
|
|
133
134
|
};
|
|
135
|
+
export declare const DARK_THEME_FILTER = "invert(93%) hue-rotate(180deg)";
|
|
134
136
|
export declare const FRAME_STYLE: {
|
|
135
137
|
strokeColor: ExcalidrawElement["strokeColor"];
|
|
136
138
|
strokeWidth: ExcalidrawElement["strokeWidth"];
|
|
@@ -178,6 +180,7 @@ export declare const STRING_MIME_TYPES: {
|
|
|
178
180
|
readonly html: "text/html";
|
|
179
181
|
readonly json: "application/json";
|
|
180
182
|
readonly excalidraw: "application/vnd.excalidraw+json";
|
|
183
|
+
readonly excalidrawClipboard: "application/vnd.excalidraw.clipboard+json";
|
|
181
184
|
readonly excalidrawlib: "application/vnd.excalidrawlib+json";
|
|
182
185
|
readonly excalidrawlibIds: "application/vnd.excalidrawlib.ids+json";
|
|
183
186
|
};
|
|
@@ -198,6 +201,7 @@ export declare const MIME_TYPES: {
|
|
|
198
201
|
readonly html: "text/html";
|
|
199
202
|
readonly json: "application/json";
|
|
200
203
|
readonly excalidraw: "application/vnd.excalidraw+json";
|
|
204
|
+
readonly excalidrawClipboard: "application/vnd.excalidraw.clipboard+json";
|
|
201
205
|
readonly excalidrawlib: "application/vnd.excalidrawlib+json";
|
|
202
206
|
readonly excalidrawlibIds: "application/vnd.excalidrawlib.ids+json";
|
|
203
207
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { GlobalCoord } from "@excalidraw/math";
|
|
1
2
|
import type { FontFamilyValues, FontString } from "@excalidraw/element/types";
|
|
2
3
|
import type { ActiveTool, AppState, ToolType, UnsubscribeCallback, Zoom } from "@excalidraw/excalidraw/types";
|
|
3
4
|
import type { MaybePromise, ResolutionType } from "./utility-types";
|
|
@@ -24,9 +25,7 @@ export declare const debounce: <T extends any[]>(fn: (...args: T) => void, timeo
|
|
|
24
25
|
flush(): void;
|
|
25
26
|
cancel(): void;
|
|
26
27
|
};
|
|
27
|
-
export declare const throttleRAF: <T extends any[]>(fn: (...args: T) => void
|
|
28
|
-
trailing?: boolean;
|
|
29
|
-
}) => {
|
|
28
|
+
export declare const throttleRAF: <T extends any[]>(fn: (...args: T) => void) => {
|
|
30
29
|
(...args: T): void;
|
|
31
30
|
flush(): void;
|
|
32
31
|
cancel(): void;
|
|
@@ -108,10 +107,7 @@ export declare const viewportCoordsToSceneCoords: ({ clientX, clientY }: {
|
|
|
108
107
|
offsetTop: number;
|
|
109
108
|
scrollX: number;
|
|
110
109
|
scrollY: number;
|
|
111
|
-
}) =>
|
|
112
|
-
x: number;
|
|
113
|
-
y: number;
|
|
114
|
-
};
|
|
110
|
+
}) => GlobalCoord;
|
|
115
111
|
export declare const sceneCoordsToViewportCoords: ({ sceneX, sceneY }: {
|
|
116
112
|
sceneX: number;
|
|
117
113
|
sceneY: number;
|
|
@@ -279,4 +275,5 @@ type FEATURE_FLAGS = {
|
|
|
279
275
|
};
|
|
280
276
|
export declare const getFeatureFlag: <F extends keyof FEATURE_FLAGS>(flag: F) => FEATURE_FLAGS[F];
|
|
281
277
|
export declare const setFeatureFlag: <F extends keyof FEATURE_FLAGS>(flag: F, value: FEATURE_FLAGS[F]) => void;
|
|
278
|
+
export declare const oneOf: <N extends string | number | symbol | null, H extends N>(needle: N, haystack: readonly H[]) => needle is H;
|
|
282
279
|
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type VersionedSnapshot<T> = Readonly<{
|
|
2
|
+
version: number;
|
|
3
|
+
value: T;
|
|
4
|
+
}>;
|
|
5
|
+
export declare class VersionedSnapshotStore<T> {
|
|
6
|
+
private readonly isEqual;
|
|
7
|
+
private version;
|
|
8
|
+
private value;
|
|
9
|
+
private readonly waiters;
|
|
10
|
+
private readonly subscribers;
|
|
11
|
+
constructor(initialValue: T, isEqual?: (prev: T, next: T) => boolean);
|
|
12
|
+
getSnapshot(): VersionedSnapshot<T>;
|
|
13
|
+
set(nextValue: T): boolean;
|
|
14
|
+
update(updater: (prev: T) => T): boolean;
|
|
15
|
+
subscribe(subscriber: (snapshot: VersionedSnapshot<T>) => void): () => void;
|
|
16
|
+
pull(sinceVersion?: number): Promise<VersionedSnapshot<T>>;
|
|
17
|
+
}
|
|
@@ -75,6 +75,8 @@ export declare class Scene {
|
|
|
75
75
|
mutateElement<TElement extends Mutable<ExcalidrawElement>>(element: TElement, updates: ElementUpdate<TElement>, options?: {
|
|
76
76
|
informMutation: boolean;
|
|
77
77
|
isDragging: boolean;
|
|
78
|
+
isBindingEnabled?: boolean;
|
|
79
|
+
isMidpointSnappingEnabled?: boolean;
|
|
78
80
|
}): TElement;
|
|
79
81
|
}
|
|
80
82
|
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Arrowhead, AnyArrowhead } from "./types";
|
|
2
|
+
export declare const normalizeArrowhead: (arrowhead: AnyArrowhead | null | undefined) => Arrowhead | null;
|
|
3
|
+
export declare const getArrowheadForPicker: (arrowhead: AnyArrowhead | null | undefined) => Arrowhead | null;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type GlobalPoint } from "@excalidraw/math";
|
|
2
|
+
import type { AppState, NullableGridSize } from "@excalidraw/excalidraw/types";
|
|
3
|
+
import { LinearElementEditor } from "../linearElementEditor";
|
|
4
|
+
import type { ElementsMap, ExcalidrawArrowElement, ExcalidrawBindableElement, NonDeletedSceneElementsMap } from "../types";
|
|
5
|
+
import type { Scene } from "../Scene";
|
|
6
|
+
export declare const isFocusPointVisible: (focusPoint: GlobalPoint, arrow: ExcalidrawArrowElement, bindableElement: ExcalidrawBindableElement, elementsMap: ElementsMap, appState: {
|
|
7
|
+
isBindingEnabled: AppState["isBindingEnabled"];
|
|
8
|
+
zoom: AppState["zoom"];
|
|
9
|
+
}, startOrEnd: "start" | "end", ignoreOverlap?: boolean) => boolean;
|
|
10
|
+
export declare const handleFocusPointDrag: (linearElementEditor: LinearElementEditor, elementsMap: NonDeletedSceneElementsMap, pointerCoords: {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
}, scene: Scene, appState: AppState, gridSize: NullableGridSize, switchToInsideBinding: boolean) => void;
|
|
14
|
+
export declare const handleFocusPointPointerDown: (arrow: ExcalidrawArrowElement, pointerDownState: {
|
|
15
|
+
origin: {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
};
|
|
19
|
+
}, elementsMap: NonDeletedSceneElementsMap, appState: AppState) => {
|
|
20
|
+
hitFocusPoint: "start" | "end" | null;
|
|
21
|
+
pointerOffset: {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export declare const handleFocusPointPointerUp: (linearElementEditor: LinearElementEditor, scene: Scene) => void;
|
|
27
|
+
export declare const handleFocusPointHover: (arrow: ExcalidrawArrowElement, scenePointerX: number, scenePointerY: number, scene: Scene, appState: AppState) => "start" | "end" | null;
|