@excalidraw/common 0.18.0-9036812b6 → 0.18.0-a8acc82
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 +61 -5
- package/dist/dev/index.js.map +2 -2
- package/dist/prod/index.js +3 -3
- package/dist/types/common/src/constants.d.ts +19 -4
- package/dist/types/common/src/utils.d.ts +1 -0
- package/dist/types/element/src/Scene.d.ts +6 -2
- package/dist/types/element/src/bounds.d.ts +1 -1
- package/dist/types/element/src/delta.d.ts +6 -3
- package/dist/types/element/src/index.d.ts +1 -0
- package/dist/types/element/src/positionElementsOnGrid.d.ts +2 -0
- package/dist/types/element/src/renderElement.d.ts +4 -1
- package/dist/types/element/src/store.d.ts +6 -1
- package/dist/types/element/src/textElement.d.ts +1 -1
- package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +6 -3
- package/dist/types/excalidraw/actions/actionBoundText.d.ts +4 -2
- package/dist/types/excalidraw/actions/actionCanvas.d.ts +29 -15
- package/dist/types/excalidraw/actions/actionClipboard.d.ts +12 -6
- package/dist/types/excalidraw/actions/actionCropEditor.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +6 -3
- package/dist/types/excalidraw/actions/actionElementLink.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionElementLock.d.ts +4 -2
- package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionExport.d.ts +18 -9
- package/dist/types/excalidraw/actions/actionFinalize.d.ts +4 -2
- package/dist/types/excalidraw/actions/actionFrame.d.ts +8 -4
- package/dist/types/excalidraw/actions/actionGroup.d.ts +4 -2
- package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +3 -2
- package/dist/types/excalidraw/actions/actionLink.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionMenu.d.ts +6 -3
- package/dist/types/excalidraw/actions/actionNavigate.d.ts +4 -2
- package/dist/types/excalidraw/actions/actionProperties.d.ts +48 -24
- package/dist/types/excalidraw/actions/actionSelectAll.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionStyles.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionToggleStats.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +2 -1
- package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +2 -1
- package/dist/types/excalidraw/actions/index.d.ts +1 -1
- package/dist/types/excalidraw/actions/types.d.ts +1 -1
- package/dist/types/excalidraw/appState.d.ts +1 -0
- package/dist/types/excalidraw/clipboard.d.ts +64 -1
- package/dist/types/excalidraw/components/Actions.d.ts +8 -1
- package/dist/types/excalidraw/components/App.d.ts +11 -8
- package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +2 -1
- package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +2 -1
- package/dist/types/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +2 -1
- package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -0
- package/dist/types/excalidraw/components/icons.d.ts +6 -0
- package/dist/types/excalidraw/components/shapes.d.ts +129 -1
- package/dist/types/excalidraw/data/blob.d.ts +3 -7
- package/dist/types/excalidraw/data/restore.d.ts +6 -1
- package/dist/types/excalidraw/data/types.d.ts +4 -1
- package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +14 -0
- package/dist/types/excalidraw/index.d.ts +1 -1
- package/dist/types/excalidraw/types.d.ts +6 -1
- package/dist/types/math/src/segment.d.ts +1 -0
- package/package.json +1 -1
package/dist/prod/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var he=Object.create;var Y=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var Le=Object.getPrototypeOf,Se=Object.prototype.hasOwnProperty;var Re=(e,t)=>()=>(e&&(t=e(e=0)),t);var V=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Oe=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ge(t))!Se.call(e,s)&&s!==n&&Y(e,s,{get:()=>t[s],enumerable:!(r=ye(t,s))||r.enumerable});return e};var X=(e,t,n)=>(n=e!=null?he(Le(e)):{},Oe(t||!e||!e.__esModule?Y(n,"default",{value:e,enumerable:!0}):n,e));var f,c=Re(()=>{f={PROD:!0}});var le=V((G,ae)=>{c();(function(e,t){typeof define=="function"&&define.amd?define([],t):typeof G=="object"?ae.exports=t():(e.PromisePool=t(),e.promisePool=e.PromisePool)})(G,function(){"use strict";var e=function(){this._listeners={}};e.prototype.addEventListener=function(o,a){this._listeners[o]=this._listeners[o]||[],this._listeners[o].indexOf(a)<0&&this._listeners[o].push(a)},e.prototype.removeEventListener=function(o,a){if(this._listeners[o]){var p=this._listeners[o].indexOf(a);p>=0&&this._listeners[o].splice(p,1)}},e.prototype.dispatchEvent=function(o){if(this._listeners[o.type]&&this._listeners[o.type].length)for(var a=this._listeners[o.type].slice(),p=0,m=a.length;p<m;++p)a[p].call(this,o)};var t=function(o){return typeof o.constructor=="function"&&o.constructor.name==="GeneratorFunction"},n=function(o){return{next:function(){var a=o();return a?{value:a}:{done:!0}}}},r=function(o){var a=!1;return{next:function(){return a?{done:!0}:(a=!0,{value:o})}}},s=function(o,a){var p=typeof o;if(p==="object"){if(typeof o.next=="function")return o;if(typeof o.then=="function")return r(o)}return p==="function"?t(o)?o():n(o):r(a.resolve(o))},l=function(o,a,p){this.target=o,this.type=a,this.data=p},i=function(o,a,p){if(e.call(this),typeof a!="number"||Math.floor(a)!==a||a<1)throw new Error("Invalid concurrency");this._concurrency=a,this._options=p||{},this._options.promise=this._options.promise||Promise,this._iterator=s(o,this._options.promise),this._done=!1,this._size=0,this._promise=null,this._callbacks=null};return i.prototype=new e,i.prototype.constructor=i,i.prototype.concurrency=function(o){return typeof o<"u"&&(this._concurrency=o,this.active()&&this._proceed()),this._concurrency},i.prototype.size=function(){return this._size},i.prototype.active=function(){return!!this._promise},i.prototype.promise=function(){return this._promise},i.prototype.start=function(){var o=this,a=this._options.promise;return this._promise=new a(function(p,m){o._callbacks={reject:m,resolve:p},o._proceed()}),this._promise},i.prototype._fireEvent=function(o,a){this.dispatchEvent(new l(this,o,a))},i.prototype._settle=function(o){o?this._callbacks.reject(o):this._callbacks.resolve(),this._promise=null,this._callbacks=null},i.prototype._onPooledPromiseFulfilled=function(o,a){this._size--,this.active()&&(this._fireEvent("fulfilled",{promise:o,result:a}),this._proceed())},i.prototype._onPooledPromiseRejected=function(o,a){this._size--,this.active()&&(this._fireEvent("rejected",{promise:o,error:a}),this._settle(a||new Error("Unknown error")))},i.prototype._trackPromise=function(o){var a=this;o.then(function(p){a._onPooledPromiseFulfilled(o,p)},function(p){a._onPooledPromiseRejected(o,p)}).catch(function(p){a._settle(new Error("Promise processing failed: "+p))})},i.prototype._proceed=function(){if(!this._done){for(var o={done:!1};this._size<this._concurrency&&!(o=this._iterator.next()).done;)this._size++,this._trackPromise(o.value);this._done=o===null||!!o.done}this._done&&this._size===0&&this._settle()},i.PromisePoolEvent=l,i.PromisePool=i,i})});var be=V(U=>{"use strict";c();Object.defineProperty(U,"__esModule",{value:!0});U.sanitizeUrl=void 0;var tt=/^([^\w]*)(javascript|data|vbscript)/im,nt=/&#(\w+)(^\w|;)?/g,rt=/&(newline|tab);/gi,ot=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,st=/^.+(:|:)/gim,it=[".","/"];function at(e){return it.indexOf(e[0])>-1}function lt(e){return e.replace(nt,function(t,n){return String.fromCharCode(n)})}function ct(e){var t=lt(e||"").replace(rt,"").replace(ot,"").trim();if(!t)return"about:blank";if(at(t))return t;var n=t.match(st);if(!n)return t;var r=n[0];return tt.test(r)?"about:blank":t}U.sanitizeUrl=ct});c();c();var $=class{constructor(t){this.scoreFunction=t}content=[];sinkDown(t){let n=this.content[t];for(;t>0;){let r=(t+1>>1)-1,s=this.content[r];if(this.scoreFunction(n)<this.scoreFunction(s))this.content[r]=n,this.content[t]=s,t=r;else break}}bubbleUp(t){let n=this.content.length,r=this.content[t],s=this.scoreFunction(r);for(;;){let l=t+1<<1,i=l-1,o=null,a=0;if(i<n){let p=this.content[i];a=this.scoreFunction(p),a<s&&(o=i)}if(l<n){let p=this.content[l];this.scoreFunction(p)<(o===null?s:a)&&(o=l)}if(o!==null)this.content[t]=this.content[o],this.content[o]=r,t=o;else break}}push(t){this.content.push(t),this.sinkDown(this.content.length-1)}pop(){if(this.content.length===0)return null;let t=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.bubbleUp(0)),t}remove(t){if(this.content.length===0)return;let n=this.content.indexOf(t),r=this.content.pop();n<this.content.length&&(this.content[n]=r,this.scoreFunction(r)<this.scoreFunction(t)?this.sinkDown(n):this.bubbleUp(n))}size(){return this.content.length}rescoreElement(t){this.sinkDown(this.content.indexOf(t))}};c();var z={white:"#ffffff",black:"#000000",gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]};var xt=240,Fe=(e,t)=>t.reduce((n,r)=>(r in e&&(n[r]=e[r]),n),{}),bt=5,_t=5,At=4,C=4,F=1,E=[0,2,4,6,8],ht=[0,1,2,3,4],x=(e,t)=>t.map(n=>z[e][n]),u={transparent:"transparent",black:"#1e1e1e",white:"#ffffff",gray:x("gray",E),red:x("red",E),pink:x("pink",E),grape:x("grape",E),violet:x("violet",E),blue:x("blue",E),cyan:x("cyan",E),teal:x("teal",E),green:x("green",E),yellow:x("yellow",E),orange:x("orange",E),bronze:["#f8f1ee","#eaddd7","#d2bab0","#a18072","#846358"]},j=Fe(u,["cyan","blue","violet","grape","pink","green","teal","yellow","orange","red"]),yt=[u.black,u.red[C],u.green[C],u.blue[C],u.yellow[C]],gt=[u.transparent,u.red[F],u.green[F],u.blue[F],u.yellow[F]],Lt=[u.white,"#f8f9fa","#f5faff","#fffce8","#fdf8f6"],St={transparent:u.transparent,white:u.white,gray:u.gray,black:u.black,bronze:u.bronze,...j},Rt={transparent:u.transparent,white:u.white,gray:u.gray,black:u.black,bronze:u.bronze,...j},Ot=e=>[u.cyan[e],u.blue[e],u.violet[e],u.grape[e],u.pink[e],u.green[e],u.teal[e],u.yellow[e],u.orange[e],u.red[e]],vt=(e,t,n)=>`#${((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1)}`;c();var w=/Mac|iPod|iPhone|iPad/.test(navigator.platform),It=/^Win/.test(navigator.platform),Mt=/\b(android)\b/i.test(navigator.userAgent),Pt=typeof window<"u"&&"netscape"in window&&navigator.userAgent.indexOf("rv:")>1&&navigator.userAgent.indexOf("Gecko")>1,we=navigator.userAgent.indexOf("Chrome")!==-1,Dt=!we&&navigator.userAgent.indexOf("Safari")!==-1,Ut=/iPad|iPhone/.test(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,Nt=()=>navigator.brave?.isBrave?.name==="isBrave",kt=typeof window<"u"&&"ResizeObserver"in window,Ht="Excalidraw",Kt=36,Bt=10,Gt=20,Wt=8,Yt=5,Vt=1,Xt=30,$t=Math.PI/12,zt="red",jt={TEXT:"text",CROSSHAIR:"crosshair",GRABBING:"grabbing",GRAB:"grab",POINTER:"pointer",MOVE:"move",AUTO:""},Zt={MAIN:0,WHEEL:1,SECONDARY:2,TOUCH:-1,ERASER:5},qt={enabled:"all",disabled:"none",inheritFromUI:"var(--ui-pointerEvents)"},Ie=(d=>(d.COPY="copy",d.PASTE="paste",d.CUT="cut",d.KEYDOWN="keydown",d.KEYUP="keyup",d.MOUSE_MOVE="mousemove",d.RESIZE="resize",d.UNLOAD="unload",d.FOCUS="focus",d.BLUR="blur",d.DRAG_OVER="dragover",d.DROP="drop",d.GESTURE_END="gestureend",d.BEFORE_UNLOAD="beforeunload",d.GESTURE_START="gesturestart",d.GESTURE_CHANGE="gesturechange",d.POINTER_MOVE="pointermove",d.POINTER_DOWN="pointerdown",d.POINTER_UP="pointerup",d.STATE_CHANGE="statechange",d.WHEEL="wheel",d.TOUCH_START="touchstart",d.TOUCH_END="touchend",d.HASHCHANGE="hashchange",d.VISIBILITY_CHANGE="visibilitychange",d.SCROLL="scroll",d.EXCALIDRAW_LINK="excalidraw-link",d.MENU_ITEM_SELECT="menu.itemSelect",d.MESSAGE="message",d.FULLSCREENCHANGE="fullscreenchange",d))(Ie||{}),Qt={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},I={TEST:"test",DEVELOPMENT:"development",PRODUCTION:"production"},Jt={SHAPE_ACTIONS_MENU:"App-menu__left",ZOOM_ACTIONS:"zoom-actions",SEARCH_MENU_INPUT_WRAPPER:"layer-ui__search-inputWrapper",CONVERT_ELEMENT_TYPE_POPUP:"ConvertElementTypePopup"},q="Xiaolai",L="Segoe UI Emoji",T={Virgil:1,Helvetica:2,Cascadia:3,Excalifont:5,Nunito:6,"Lilita One":7,"Comic Shanns":8,"Liberation Sans":9,Assistant:10},Q="sans-serif",J="monospace",Me={[Q]:998,[J]:999},B={[q]:100,...Me,[L]:1e3};function Pe(e){switch(e){case T.Cascadia:case T["Comic Shanns"]:return J;default:return Q}}var ee=e=>{let t=Pe(e);switch(e){case T.Excalifont:return[q,t,L];default:return[t,L]}},en={LIGHT:"light",DARK:"dark"},tn={strokeColor:"#bbb",strokeWidth:2,strokeStyle:"solid",fillStyle:"solid",roughness:0,roundness:null,backgroundColor:"transparent",radius:8,nameOffsetY:3,nameColorLightTheme:"#999999",nameColorDarkTheme:"#7a7a7a",nameFontSize:14,nameLineHeight:1.25},nn=1,rn=20,on=T.Excalifont,sn="left",an="top",te="{version}",De=2,Ue=2*De,Ne=1e-5,ln=2*Ue-Ne,cn="#ffffff",un="#1e1e1e",pn="#a2f1a6",dn=["selectAll"],fn=20,Tn=5,ne={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",gif:"image/gif",webp:"image/webp",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif",jfif:"image/jfif"},Z={text:"text/plain",html:"text/html",json:"application/json",excalidraw:"application/vnd.excalidraw+json",excalidrawlib:"application/vnd.excalidrawlib+json","excalidraw.svg":"image/svg+xml","excalidraw.png":"image/png",binary:"application/octet-stream",...ne},mn=[Z.text,Z.html,...Object.values(ne)],En={png:"png",svg:"svg",clipboard:"clipboard"},xn={excalidraw:"excalidraw",excalidrawClipboard:"excalidraw/clipboard",excalidrawLibrary:"excalidrawlib",excalidrawClipboardWithAPI:"excalidraw-api/clipboard"},bn=()=>window.EXCALIDRAW_EXPORT_SOURCE||window.location.origin,_n=500,An=300,hn=500,yn=1e4,gn=3e4,Ln=100,Sn=.1,Rn=.1,On=30,vn=300,Cn=6e4,Fn=3e3,wn="invert(93%) hue-rotate(180deg)",In={addLibrary:"addLibrary"},Mn={addLibrary:"addLibrary"},Pn={canvasActions:{changeViewBackgroundColor:!0,clearCanvas:!0,export:{saveFileToDisk:!0},loadScene:!0,saveToActiveFile:!0,toggleTheme:null,saveAsImage:!0},tools:{image:!0}},Dn=730,Un=1e3,Nn=500,kn=1229,Hn=2,Kn=[1,2,3],Bn=10,Gn=1440,Wn=4*1024*1024,Yn="http://www.w3.org/2000/svg",Vn=`<?xml version="1.0" standalone="no"?>
|
|
1
|
+
var ge=Object.create;var V=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var Le=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var ve=(e,t)=>()=>(e&&(t=e(e=0)),t);var X=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ce=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Le(t))!Re.call(e,o)&&o!==n&&V(e,o,{get:()=>t[o],enumerable:!(r=Se(t,o))||r.enumerable});return e};var $=(e,t,n)=>(n=e!=null?ge(Oe(e)):{},Ce(t||!e||!e.__esModule?V(n,"default",{value:e,enumerable:!0}):n,e));var f,c=ve(()=>{f={PROD:!0}});var ue=X((W,ce)=>{c();(function(e,t){typeof define=="function"&&define.amd?define([],t):typeof W=="object"?ce.exports=t():(e.PromisePool=t(),e.promisePool=e.PromisePool)})(W,function(){"use strict";var e=function(){this._listeners={}};e.prototype.addEventListener=function(s,a){this._listeners[s]=this._listeners[s]||[],this._listeners[s].indexOf(a)<0&&this._listeners[s].push(a)},e.prototype.removeEventListener=function(s,a){if(this._listeners[s]){var p=this._listeners[s].indexOf(a);p>=0&&this._listeners[s].splice(p,1)}},e.prototype.dispatchEvent=function(s){if(this._listeners[s.type]&&this._listeners[s.type].length)for(var a=this._listeners[s.type].slice(),p=0,m=a.length;p<m;++p)a[p].call(this,s)};var t=function(s){return typeof s.constructor=="function"&&s.constructor.name==="GeneratorFunction"},n=function(s){return{next:function(){var a=s();return a?{value:a}:{done:!0}}}},r=function(s){var a=!1;return{next:function(){return a?{done:!0}:(a=!0,{value:s})}}},o=function(s,a){var p=typeof s;if(p==="object"){if(typeof s.next=="function")return s;if(typeof s.then=="function")return r(s)}return p==="function"?t(s)?s():n(s):r(a.resolve(s))},l=function(s,a,p){this.target=s,this.type=a,this.data=p},i=function(s,a,p){if(e.call(this),typeof a!="number"||Math.floor(a)!==a||a<1)throw new Error("Invalid concurrency");this._concurrency=a,this._options=p||{},this._options.promise=this._options.promise||Promise,this._iterator=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,a=this._options.promise;return this._promise=new a(function(p,m){s._callbacks={reject:m,resolve:p},s._proceed()}),this._promise},i.prototype._fireEvent=function(s,a){this.dispatchEvent(new l(this,s,a))},i.prototype._settle=function(s){s?this._callbacks.reject(s):this._callbacks.resolve(),this._promise=null,this._callbacks=null},i.prototype._onPooledPromiseFulfilled=function(s,a){this._size--,this.active()&&(this._fireEvent("fulfilled",{promise:s,result:a}),this._proceed())},i.prototype._onPooledPromiseRejected=function(s,a){this._size--,this.active()&&(this._fireEvent("rejected",{promise:s,error:a}),this._settle(a||new Error("Unknown error")))},i.prototype._trackPromise=function(s){var a=this;s.then(function(p){a._onPooledPromiseFulfilled(s,p)},function(p){a._onPooledPromiseRejected(s,p)}).catch(function(p){a._settle(new Error("Promise processing failed: "+p))})},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=l,i.PromisePool=i,i})});var he=X(U=>{"use strict";c();Object.defineProperty(U,"__esModule",{value:!0});U.sanitizeUrl=void 0;var st=/^([^\w]*)(javascript|data|vbscript)/im,it=/&#(\w+)(^\w|;)?/g,at=/&(newline|tab);/gi,lt=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,ct=/^.+(:|:)/gim,ut=[".","/"];function pt(e){return ut.indexOf(e[0])>-1}function dt(e){return e.replace(it,function(t,n){return String.fromCharCode(n)})}function ft(e){var t=dt(e||"").replace(at,"").replace(lt,"").trim();if(!t)return"about:blank";if(pt(t))return t;var n=t.match(ct);if(!n)return t;var r=n[0];return st.test(r)?"about:blank":t}U.sanitizeUrl=ft});c();c();var z=class{constructor(t){this.scoreFunction=t}content=[];sinkDown(t){let n=this.content[t];for(;t>0;){let r=(t+1>>1)-1,o=this.content[r];if(this.scoreFunction(n)<this.scoreFunction(o))this.content[r]=n,this.content[t]=o,t=r;else break}}bubbleUp(t){let n=this.content.length,r=this.content[t],o=this.scoreFunction(r);for(;;){let l=t+1<<1,i=l-1,s=null,a=0;if(i<n){let p=this.content[i];a=this.scoreFunction(p),a<o&&(s=i)}if(l<n){let p=this.content[l];this.scoreFunction(p)<(s===null?o:a)&&(s=l)}if(s!==null)this.content[t]=this.content[s],this.content[s]=r,t=s;else break}}push(t){this.content.push(t),this.sinkDown(this.content.length-1)}pop(){if(this.content.length===0)return null;let t=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.bubbleUp(0)),t}remove(t){if(this.content.length===0)return;let n=this.content.indexOf(t),r=this.content.pop();n<this.content.length&&(this.content[n]=r,this.scoreFunction(r)<this.scoreFunction(t)?this.sinkDown(n):this.bubbleUp(n))}size(){return this.content.length}rescoreElement(t){this.sinkDown(this.content.indexOf(t))}};c();var j={white:"#ffffff",black:"#000000",gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]};var At=240,Me=(e,t)=>t.reduce((n,r)=>(r in e&&(n[r]=e[r]),n),{}),yt=5,gt=5,St=4,C=4,w=1,E=[0,2,4,6,8],Lt=[0,1,2,3,4],x=(e,t)=>t.map(n=>j[e][n]),u={transparent:"transparent",black:"#1e1e1e",white:"#ffffff",gray:x("gray",E),red:x("red",E),pink:x("pink",E),grape:x("grape",E),violet:x("violet",E),blue:x("blue",E),cyan:x("cyan",E),teal:x("teal",E),green:x("green",E),yellow:x("yellow",E),orange:x("orange",E),bronze:["#f8f1ee","#eaddd7","#d2bab0","#a18072","#846358"]},Z=Me(u,["cyan","blue","violet","grape","pink","green","teal","yellow","orange","red"]),Ot=[u.black,u.red[C],u.green[C],u.blue[C],u.yellow[C]],Rt=[u.transparent,u.red[w],u.green[w],u.blue[w],u.yellow[w]],vt=[u.white,"#f8f9fa","#f5faff","#fffce8","#fdf8f6"],Ct={transparent:u.transparent,white:u.white,gray:u.gray,black:u.black,bronze:u.bronze,...Z},wt={transparent:u.transparent,white:u.white,gray:u.gray,black:u.black,bronze:u.bronze,...Z},Ft=e=>[u.cyan[e],u.blue[e],u.violet[e],u.grape[e],u.pink[e],u.green[e],u.teal[e],u.yellow[e],u.orange[e],u.red[e]],Mt=(e,t,n)=>`#${((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1)}`;c();var F=/Mac|iPod|iPhone|iPad/.test(navigator.platform),Ut=/^Win/.test(navigator.platform),Q=/\b(android)\b/i.test(navigator.userAgent),Nt=typeof window<"u"&&"netscape"in window&&navigator.userAgent.indexOf("rv:")>1&&navigator.userAgent.indexOf("Gecko")>1,Ie=navigator.userAgent.indexOf("Chrome")!==-1,kt=!Ie&&navigator.userAgent.indexOf("Safari")!==-1,B=/iPad|iPhone/i.test(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,Ht=()=>navigator.brave?.isBrave?.name==="isBrave",Kt=B||/android|webos|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent)||/android|ios|ipod|blackberry|windows phone/i.test(navigator.platform),Bt=typeof window<"u"&&"ResizeObserver"in window,Gt="Excalidraw",Wt=36,Yt=10,Vt=20,Xt=8,$t=5,zt=1,jt=30,Zt=Math.PI/12,qt="red",Qt={TEXT:"text",CROSSHAIR:"crosshair",GRABBING:"grabbing",GRAB:"grab",POINTER:"pointer",MOVE:"move",AUTO:""},Jt={MAIN:0,WHEEL:1,SECONDARY:2,TOUCH:-1,ERASER:5},en={enabled:"all",disabled:"none",inheritFromUI:"var(--ui-pointerEvents)"},Pe=(d=>(d.COPY="copy",d.PASTE="paste",d.CUT="cut",d.KEYDOWN="keydown",d.KEYUP="keyup",d.MOUSE_MOVE="mousemove",d.RESIZE="resize",d.UNLOAD="unload",d.FOCUS="focus",d.BLUR="blur",d.DRAG_OVER="dragover",d.DROP="drop",d.GESTURE_END="gestureend",d.BEFORE_UNLOAD="beforeunload",d.GESTURE_START="gesturestart",d.GESTURE_CHANGE="gesturechange",d.POINTER_MOVE="pointermove",d.POINTER_DOWN="pointerdown",d.POINTER_UP="pointerup",d.STATE_CHANGE="statechange",d.WHEEL="wheel",d.TOUCH_START="touchstart",d.TOUCH_END="touchend",d.HASHCHANGE="hashchange",d.VISIBILITY_CHANGE="visibilitychange",d.SCROLL="scroll",d.EXCALIDRAW_LINK="excalidraw-link",d.MENU_ITEM_SELECT="menu.itemSelect",d.MESSAGE="message",d.FULLSCREENCHANGE="fullscreenchange",d))(Pe||{}),tn={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},M={TEST:"test",DEVELOPMENT:"development",PRODUCTION:"production"},nn={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"},J="Xiaolai",S="Segoe UI Emoji",T={Virgil:1,Helvetica:2,Cascadia:3,Excalifont:5,Nunito:6,"Lilita One":7,"Comic Shanns":8,"Liberation Sans":9,Assistant:10},ee="sans-serif",te="monospace",De={[ee]:998,[te]:999},G={[J]:100,...De,[S]:1e3};function Ue(e){switch(e){case T.Cascadia:case T["Comic Shanns"]:return te;default:return ee}}var ne=e=>{let t=Ue(e);switch(e){case T.Excalifont:return[J,t,S];default:return[t,S]}},rn={LIGHT:"light",DARK:"dark"},on={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},sn=1,an=20,ln=T.Excalifont,cn="left",un="top",re="{version}",Ne=2,ke=2*Ne,He=1e-5,pn=2*ke-He,dn="#ffffff",fn="#1e1e1e",Tn="#a2f1a6",mn=["selectAll"],En=20,xn=5,oe={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"},Ke={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"},q={...Ke,"excalidraw.svg":"image/svg+xml","excalidraw.png":"image/png",binary:"application/octet-stream",...oe},bn=[q.text,q.html,...Object.values(oe)],_n={png:"png",svg:"svg",clipboard:"clipboard"},hn={excalidraw:"excalidraw",excalidrawClipboard:"excalidraw/clipboard",excalidrawLibrary:"excalidrawlib",excalidrawClipboardWithAPI:"excalidraw-api/clipboard"},An=()=>window.EXCALIDRAW_EXPORT_SOURCE||window.location.origin,yn=500,gn=300,Sn=500,Ln=1e4,On=3e4,Rn=100,vn=.1,Cn=.1,wn=30,Fn=300,Mn=6e4,In=3e3,Pn="invert(93%) hue-rotate(180deg)",Dn={addLibrary:"addLibrary"},Un={addLibrary:"addLibrary"},Nn={canvasActions:{changeViewBackgroundColor:!0,clearCanvas:!0,export:{saveFileToDisk:!0},loadScene:!0,saveToActiveFile:!0,toggleTheme:null,saveAsImage:!0},tools:{image:!0}},Be=599,kn=1e3,Hn=500,Kn=Be+1,Bn=1400,Gn=1440,Wn=1229,Yn=2,Vn=[1,2,3],Xn=10,$n=1440,zn=4*1024*1024,jn="http://www.w3.org/2000/svg",Zn=`<?xml version="1.0" standalone="no"?>
|
|
2
2
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
-
`,Xn=128,$n={excalidraw:2,excalidrawLibrary:2},zn=5,jn=.7,Zn=11,qn={TOP:"top",MIDDLE:"middle",BOTTOM:"bottom"},Qn={LEFT:"left",CENTER:"center",RIGHT:"right"},Jn=20,er=.25,tr=32,nr={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},ke={architect:0,artist:1,cartoonist:2},rr={thin:1,bold:2,extraBold:4},or={strokeColor:u.black,backgroundColor:u.transparent,fillStyle:"solid",strokeWidth:2,strokeStyle:"solid",roughness:ke.artist,opacity:100,locked:!1},He="library",sr="search",ir={name:"default",defaultTab:He},ar=new Set(["iframe","embeddable","image"]),lr={selection:"selection",lasso:"lasso",rectangle:"rectangle",diamond:"diamond",ellipse:"ellipse",arrow:"arrow",line:"line",freedraw:"freedraw",text:"text",image:"image",eraser:"eraser",hand:"hand",frame:"frame",magicframe:"magicframe",embeddable:"embeddable",laser:"laser"},cr={OAI_API_KEY:"excalidraw-oai-api-key",MERMAID_TO_EXCALIDRAW:"mermaid-to-excalidraw",PUBLISH_LIBRARY:"publish-library-data"},ur="Untitled",pr={generalStats:1,elementProperties:2},dr=1,fr={sharp:"sharp",round:"round",elbow:"elbow"},Tr=.3,mr="element",Er=Symbol.for("__test__originalId__"),Ke=(r=>(r.ACTIVE="active",r.AWAY="away",r.IDLE="idle",r))(Ke||{}),xr=20;c();var M={[T.Excalifont]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25}},[T.Nunito]:{metrics:{unitsPerEm:1e3,ascender:1011,descender:-353,lineHeight:1.25}},[T["Lilita One"]]:{metrics:{unitsPerEm:1e3,ascender:923,descender:-220,lineHeight:1.15}},[T["Comic Shanns"]]:{metrics:{unitsPerEm:1e3,ascender:750,descender:-250,lineHeight:1.25}},[T.Virgil]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},deprecated:!0},[T.Helvetica]:{metrics:{unitsPerEm:2048,ascender:1577,descender:-471,lineHeight:1.15},deprecated:!0,local:!0},[T.Cascadia]:{metrics:{unitsPerEm:2048,ascender:1900,descender:-480,lineHeight:1.2},deprecated:!0},[T["Liberation Sans"]]:{metrics:{unitsPerEm:2048,ascender:1854,descender:-434,lineHeight:1.15},private:!0},[T.Assistant]:{metrics:{unitsPerEm:2048,ascender:1021,descender:-287,lineHeight:1.25},private:!0},[B.Xiaolai]:{metrics:{unitsPerEm:1e3,ascender:880,descender:-144,lineHeight:1.25},fallback:!0},[B["Segoe UI Emoji"]]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},local:!0,fallback:!0}},hr={LATIN:"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD",LATIN_EXT:"U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF",CYRILIC_EXT:"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F",CYRILIC:"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116",VIETNAMESE:"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB"},yr="local:",gr=(e,t,n)=>{let{unitsPerEm:r,ascender:s,descender:l}=M[e]?.metrics||M[T.Excalifont].metrics,i=t/r,o=(n-i*s+i*l)/2;return i*s+o},Lr=e=>{let{lineHeight:t}=M[e]?.metrics||M[T.Excalifont].metrics;return t};c();var re=class{jobs=[];running=!1;tick(){if(this.running)return;let t=this.jobs.shift();t?(this.running=!0,t.promise.resolve(se(t.jobFactory,...t.args).finally(()=>{this.running=!1,this.tick()}))):this.running=!1}push(t,...n){let r=oe();return this.jobs.push({jobFactory:t,promise:r,args:n}),this.tick(),r}};c();var ie={EQUAL:"Equal",MINUS:"Minus",NUM_ADD:"NumpadAdd",NUM_SUBTRACT:"NumpadSubtract",NUM_ZERO:"Numpad0",BRACKET_RIGHT:"BracketRight",BRACKET_LEFT:"BracketLeft",ONE:"Digit1",TWO:"Digit2",THREE:"Digit3",NINE:"Digit9",QUOTE:"Quote",ZERO:"Digit0",SLASH:"Slash",C:"KeyC",D:"KeyD",H:"KeyH",V:"KeyV",Z:"KeyZ",Y:"KeyY",R:"KeyR",S:"KeyS"},y={ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",PAGE_UP:"PageUp",PAGE_DOWN:"PageDown",BACKSPACE:"Backspace",ALT:"Alt",CTRL_OR_CMD:w?"metaKey":"ctrlKey",DELETE:"Delete",ENTER:"Enter",ESCAPE:"Escape",QUESTION_MARK:"?",SPACE:" ",TAB:"Tab",CHEVRON_LEFT:"<",CHEVRON_RIGHT:">",PERIOD:".",COMMA:",",SUBTRACT:"-",SLASH:"/",A:"a",C:"c",D:"d",E:"e",F:"f",G:"g",H:"h",I:"i",L:"l",O:"o",P:"p",Q:"q",R:"r",S:"s",T:"t",V:"v",X:"x",Y:"y",Z:"z",K:"k",W:"w",0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9"},Be=new Map([[y.Z,ie.Z],[y.Y,ie.Y]]),Ge=e=>/^[a-z]$/.test(e.toLowerCase()),wr=(e,t)=>{if(t===e.key.toLowerCase())return!0;let n=Be.get(t);return!!(n&&!Ge(e.key)&&e.code===n)},Ir=e=>e===y.ARROW_LEFT||e===y.ARROW_RIGHT||e===y.ARROW_DOWN||e===y.ARROW_UP,Mr=e=>e.altKey,Pr=e=>e.shiftKey,Dr=e=>e.shiftKey;c();import{pointFromPair as We}from"@excalidraw/math";var Hr=e=>{let t=e.map(r=>r[0]),n=e.map(r=>r[1]);return{width:Math.max(...t)-Math.min(...t),height:Math.max(...n)-Math.min(...n)}},Kr=(e,t,n,r)=>{let s=n.map(b=>b[e]),l=Math.max(...s),i=Math.min(...s),o=l-i,a=o===0?1:t/o,p=1/0,m=n.map(b=>{let _=b[e]*a,A=[...b];return A[e]=_,_<p&&(p=_),A});if(!r||m.length===2)return m;let R=i-p;return m.map(b=>We(b.map((_,A)=>A===e?_+R:_)))},Br=(e,t,n)=>n?[Math.round(e/n)*n,Math.round(t/n)*n]:[e,t];c();var ue=X(le(),1),ce=class{pool;entries={};constructor(t,n){this.pool=new ue.default(t,n)}all(){let t=n=>{if(n.data.result){let[r,s]=n.data.result;this.entries[r]=s}};return this.pool.addEventListener("fulfilled",t),this.pool.start().then(()=>(setTimeout(()=>{this.pool.removeEventListener("fulfilled",t)}),Object.values(this.entries)))}};c();c();c();var pe=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,n)=>(n&=63,n<36?t+=n.toString(36):n<62?t+=(n-26).toString(36).toUpperCase():n>62?t+="-":t+="_",t),"");c();var S=class{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}};c();import{average as P}from"@excalidraw/math";var W=null,oo=e=>{W=e},so=()=>{if(W)return W;let e=new Date,t=e.getFullYear(),n=`${e.getMonth()+1}`.padStart(2,"0"),r=`${e.getDate()}`.padStart(2,"0"),s=`${e.getHours()}`.padStart(2,"0"),l=`${e.getMinutes()}`.padStart(2,"0");return`${t}-${n}-${r}-${s}${l}`},io=e=>e.charAt(0).toUpperCase()+e.slice(1),ao=e=>e instanceof HTMLElement&&e.className.includes("ToolIcon"),Ye=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,lo=e=>Ye(e)||e instanceof Element&&!!e.closest("label, button"),co=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&(e.type==="text"||e.type==="number"||e.type==="password"),Ve=({fontFamily:e})=>{for(let[t,n]of Object.entries(T))if(n===e)return`${t}${ee(n).map(r=>`, ${r}`).join("")}`;return L},uo=({fontSize:e,fontFamily:t})=>`${e}px ${Ve({fontFamily:t})}`,po=(e,t)=>{let n=0,r=null,s=(...l)=>{r=l,clearTimeout(n),n=window.setTimeout(()=>{r=null,e(...l)},t)};return s.flush=()=>{if(clearTimeout(n),r){let l=r;r=null,e(...l)}},s.cancel=()=>{r=null,clearTimeout(n)},s},fo=(e,t)=>{let n=null,r=null,s=null,l=o=>{n=window.requestAnimationFrame(()=>{n=null,e(...o),r=null,s&&(r=s,s=null,l(r))})},i=(...o)=>{if(D()){e(...o);return}r=o,n===null?l(r):t?.trailing&&(s=o)};return i.flush=()=>{n!==null&&(cancelAnimationFrame(n),n=null),r&&(e(...s||r),r=s=null)},i.cancel=()=>{r=s=null,n!==null&&(cancelAnimationFrame(n),n=null)},i},Te=e=>1-Math.pow(1-e,4),de=(e,t,n)=>(t-e)*Te(n)+e,To=({fromValues:e,toValues:t,onStep:n,duration:r=250,interpolateValue:s,onStart:l,onEnd:i,onCancel:o})=>{let a=!1,p=0,m;function R(N){if(a)return;m===void 0&&(m=N,l?.());let b=Math.min(N-m,r),_=Te(b/r),A={};if(Object.keys(e).forEach(g=>{let h=g,k=(t[h]-e[h])*_+e[h];A[h]=k}),n(A),b<r){let g=b/r,h={};Object.keys(e).forEach(k=>{let O=k,H=e[O],K=t[O],v;v=s?s(H,K,g,O):de(H,K,g),v==null&&(v=de(H,K,g)),h[O]=v}),n(h),p=window.requestAnimationFrame(R)}else n(t),i?.()}return p=window.requestAnimationFrame(R),()=>{o?.(),a=!0,window.cancelAnimationFrame(p)}},mo=(e,t)=>{if(!e.length||t<1)return[];let n=0,r=0,s=Array(Math.ceil(e.length/t));for(;n<e.length;)s[r++]=e.slice(n,n+=t);return s},Eo=e=>{let t=window.getSelection();if(t){let n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}},xo=()=>{let e=window.getSelection();e&&e.removeAllRanges()},bo=(e,t)=>Math.abs(e-t),_o=(e,t)=>t.type==="custom"?{...e.activeTool,type:"custom",customType:t.customType,locked:t.locked??e.activeTool.locked}:{...e.activeTool,lastActiveTool:t.lastActiveToolBeforeEraser===void 0?e.activeTool.lastActiveTool:t.lastActiveToolBeforeEraser,type:t.type,customType:null,locked:t.locked??e.activeTool.locked,fromSelection:t.fromSelection??!1},Ao=()=>document.fullscreenElement?.nodeName==="HTML",ho=()=>document.documentElement.requestFullscreen(),yo=()=>document.exitFullscreen(),go=e=>(e=e.replace(/\bAlt\b/i,"Alt").replace(/\bShift\b/i,"Shift").replace(/\b(Enter|Return)\b/i,"Enter"),w?e.replace(/\bCtrlOrCmd\b/gi,"Cmd").replace(/\bAlt\b/i,"Option"):e.replace(/\bCtrlOrCmd\b/gi,"Ctrl")),Lo=({clientX:e,clientY:t},{zoom:n,offsetLeft:r,offsetTop:s,scrollX:l,scrollY:i})=>{let o=(e-r)/n.value-l,a=(t-s)/n.value-i;return{x:o,y:a}},So=({sceneX:e,sceneY:t},{zoom:n,offsetLeft:r,offsetTop:s,scrollX:l,scrollY:i})=>{let o=(e+l)*n.value+r,a=(t+i)*n.value+s;return{x:o,y:a}},Ro=e=>getComputedStyle(document.documentElement).getPropertyValue(`--${e}`),Xe="A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF",$e="\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC",ze=new RegExp(`^[^${Xe}]*[${$e}]`),Oo=e=>ze.test(e),vo=e=>{let[t,n]=e;return{x:t,y:n}},Co=e=>{if(e?.name==="AbortError"){console.warn(e);return}throw e},Fo=(e,t,n=0)=>{n<0&&(n=e.length+n),n=Math.min(e.length,Math.max(n,0));let r=n-1;for(;++r<e.length;)if(t(e[r],r,e))return r;return-1},wo=(e,t,n=e.length-1)=>{n<0&&(n=e.length+n),n=Math.min(e.length-1,Math.max(n,0));let r=n+1;for(;--r>-1;)if(t(e[r],r,e))return r;return-1},Io=(e,t)=>{for(let n=0;n<e.length;n++){let r=t(e[n],n);if(r!=null)return r}},je=e=>{let t=e.length===5&&e.substr(4,1)==="0",n=e.length===9&&e.substr(7,2)==="00";return t||n||e===u.transparent},Mo=e=>e.fillStyle!=="solid"||je(e.backgroundColor),oe=()=>{let e,t,n=new Promise((r,s)=>{e=r,t=s});return n.resolve=e,n.reject=t,n},Po=(e,t)=>{let n=[{value:1,symbol:"b"},{value:1e3,symbol:"k"},{value:1e6,symbol:"M"},{value:1e9,symbol:"G"}],r=/\.0+$|(\.[0-9]*[1-9])0+$/,s;for(s=n.length-1;s>0&&!(e>=n[s].value);s--);return(e/n[s].value).toFixed(t).replace(r,"$1")+n[s].symbol},Do=()=>document.querySelector('meta[name="version"]')?.content||te,Uo=()=>{let t=document.createElement("canvas").getContext("2d");if(!t)return!1;let n=12;return t.fillStyle="#f00",t.textBaseline="top",t.font="32px Arial",t.fillText("\u{1F600}",0,0),t.getImageData(n,n,1,1).data[0]!==0},No=e=>{let t=e.parentElement;for(;t;){if(t===document.body)return document;let{overflowY:n}=window.getComputedStyle(t);if(t.scrollHeight>t.clientHeight&&(n==="auto"||n==="scroll"||n==="overlay"))return t;t=t.parentElement}return document},ko=e=>{let t=e.parentElement;for(;t;){if(t.tabIndex>-1){t.focus();return}t=t.parentElement}},Ho=e=>{e.preventDefault(),e.returnValue=""},Ko=e=>Array.from(e).map(t=>`0${t.toString(16)}`.slice(-2)).join(""),Bo=()=>D()?1:Date.now(),Go=e=>e instanceof Map?e:e.reduce((t,n)=>(t.set(typeof n=="string"?n:n.id,n),t),new Map),Wo=e=>e.reduce((t,n,r)=>(t.set(n.id,[n,r]),t),new Map),Yo=(e,t)=>e.reduce((n,r,s)=>(n[t?t(r):s]=r,n),{}),Vo=e=>e.reduce((t,n,r)=>{let s={...n,prev:null,next:null};if(r!==0){let l=t[r-1];if(s.prev=l,l.next=s,r===e.length-1){let i=t[0];s.next=i,i.prev=s}}return t.push(s),t},[]),Ze=e=>Array.isArray(e)?e:e.values(),Xo=e=>Array.isArray(e)?e:Array.from(Ze(e)),D=()=>f.MODE===I.TEST,$o=()=>f.MODE===I.DEVELOPMENT,zo=()=>f.MODE===I.PRODUCTION,jo=()=>typeof process<"u"&&!0,Zo=(e,t)=>new CustomEvent(e,{detail:{nativeEvent:t},cancelable:!0}),qo=(e,t)=>{let n=!1;for(let r in t){let s=t[r];if(typeof s<"u"){if(e[r]===s&&(typeof s!="object"||s===null))continue;n=!0}}return n?{...e,...t}:e},Qo=e=>{let t=typeof e;return e==null||t!=="object"&&t!=="function"},qe=()=>{try{return window.self===window.top?"top":"iframe"}catch{return"iframe"}},Jo=()=>qe()==="iframe",es=e=>!!e&&typeof e=="object"&&"then"in e&&"catch"in e&&"finally"in e,ts=e=>{let t=e?.querySelectorAll("button, a, input, select, textarea, div[tabindex], label[tabindex]");return t?Array.from(t).filter(n=>n.tabIndex>-1&&!n.disabled):[]},fe=(e,t)=>Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t,Qe=(e,t,n,r=!1)=>{let s=Object.keys(e),l=Object.keys(t);if(s.length!==l.length)return r&&console.warn("%cisShallowEqual: objects don't have same properties ->","color: #8B4000",e,t),!1;if(n&&Array.isArray(n)){for(let i of n)if(!(e[i]===t[i]||fe(e[i],t[i])))return r&&console.warn(`%cisShallowEqual: ${i} not equal ->`,"color: #8B4000",e[i],t[i]),!1;return!0}return s.every(i=>{let o=n?.[i],a=o?o(e[i],t[i]):e[i]===t[i]||fe(e[i],t[i]);return!a&&r&&console.warn(`%cisShallowEqual: ${i} not equal ->`,"color: #8B4000",e[i],t[i]),a})},ns=(e,t,{checkForDefaultPrevented:n=!0}={})=>function(s){if(e?.(s),!n||!s?.defaultPrevented)return t?.(s)},rs=(e,t,n)=>{if(!t)return e;if(n)return console.error(t),e;throw new Error(t)};function os(e,t){if(!e)throw new Error(t)}var ss=e=>{let t,n,r=function(s){let l=Object.entries(s);if(t){let o=!0;for(let[a,p]of l)if(t.get(a)!==p){o=!1;break}if(o)return n}let i=e(s);return t=new Map(l),n=i,i};return r.clear=()=>{t=void 0,n=void 0},r},is=(e,t)=>e instanceof Set||e instanceof Map?e.has(t):"includes"in e?e.includes(t):e.hasOwnProperty(t),as=e=>JSON.parse(JSON.stringify(e)),ls=(e,t)=>Qe(e,t)?e:t;function cs(e,t,n,r){return e?(e?.addEventListener?.(t,n,r),()=>{e?.removeEventListener?.(t,n,r)}):()=>{}}function us(e,t=!0){let n=e.length;if(n<4)return"";let r=e[0],s=e[1],l=e[2],i=`M${r[0].toFixed(2)},${r[1].toFixed(2)} Q${s[0].toFixed(2)},${s[1].toFixed(2)} ${P(s[0],l[0]).toFixed(2)},${P(s[1],l[1]).toFixed(2)} T`;for(let o=2,a=n-1;o<a;o++)r=e[o],s=e[o+1],i+=`${P(r[0],s[0]).toFixed(2)},${P(r[1],s[1]).toFixed(2)} `;return t&&(i+="Z"),i}var ps=e=>e.replace(/\r?\n|\r/g,`
|
|
4
|
-
`),
|
|
3
|
+
`,qn=128,Qn={excalidraw:2,excalidrawLibrary:2},Jn=5,er=.7,tr=11,nr={TOP:"top",MIDDLE:"middle",BOTTOM:"bottom"},rr={LEFT:"left",CENTER:"center",RIGHT:"right"},or=20,sr=.25,ir=32,ar={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},Ge={architect:0,artist:1,cartoonist:2},lr={thin:1,bold:2,extraBold:4},cr={strokeColor:u.black,backgroundColor:u.transparent,fillStyle:"solid",strokeWidth:2,strokeStyle:"solid",roughness:Ge.artist,opacity:100,locked:!1},We="library",ur="search",pr={name:"default",defaultTab:We},dr=new Set(["iframe","embeddable","image"]),fr={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"},Tr={OAI_API_KEY:"excalidraw-oai-api-key",MERMAID_TO_EXCALIDRAW:"mermaid-to-excalidraw",PUBLISH_LIBRARY:"publish-library-data"},mr="Untitled",Er={generalStats:1,elementProperties:2},xr=1,br={sharp:"sharp",round:"round",elbow:"elbow"},_r=.3,hr="element",Ar=Symbol.for("__test__originalId__"),Ye=(r=>(r.ACTIVE="active",r.AWAY="away",r.IDLE="idle",r))(Ye||{}),yr=20,gr=35;c();var I={[T.Excalifont]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25}},[T.Nunito]:{metrics:{unitsPerEm:1e3,ascender:1011,descender:-353,lineHeight:1.25}},[T["Lilita One"]]:{metrics:{unitsPerEm:1e3,ascender:923,descender:-220,lineHeight:1.15}},[T["Comic Shanns"]]:{metrics:{unitsPerEm:1e3,ascender:750,descender:-250,lineHeight:1.25}},[T.Virgil]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},deprecated:!0},[T.Helvetica]:{metrics:{unitsPerEm:2048,ascender:1577,descender:-471,lineHeight:1.15},deprecated:!0,local:!0},[T.Cascadia]:{metrics:{unitsPerEm:2048,ascender:1900,descender:-480,lineHeight:1.2},deprecated:!0},[T["Liberation Sans"]]:{metrics:{unitsPerEm:2048,ascender:1854,descender:-434,lineHeight:1.15},private:!0},[T.Assistant]:{metrics:{unitsPerEm:2048,ascender:1021,descender:-287,lineHeight:1.25},private:!0},[G.Xiaolai]:{metrics:{unitsPerEm:1e3,ascender:880,descender:-144,lineHeight:1.25},fallback:!0},[G["Segoe UI Emoji"]]:{metrics:{unitsPerEm:1e3,ascender:886,descender:-374,lineHeight:1.25},local:!0,fallback:!0}},Rr={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"},vr="local:",Cr=(e,t,n)=>{let{unitsPerEm:r,ascender:o,descender:l}=I[e]?.metrics||I[T.Excalifont].metrics,i=t/r,s=(n-i*o+i*l)/2;return i*o+s},wr=e=>{let{lineHeight:t}=I[e]?.metrics||I[T.Excalifont].metrics;return t};c();var se=class{jobs=[];running=!1;tick(){if(this.running)return;let t=this.jobs.shift();t?(this.running=!0,t.promise.resolve(ae(t.jobFactory,...t.args).finally(()=>{this.running=!1,this.tick()}))):this.running=!1}push(t,...n){let r=ie();return this.jobs.push({jobFactory:t,promise:r,args:n}),this.tick(),r}};c();var le={EQUAL:"Equal",MINUS:"Minus",NUM_ADD:"NumpadAdd",NUM_SUBTRACT:"NumpadSubtract",NUM_ZERO:"Numpad0",BRACKET_RIGHT:"BracketRight",BRACKET_LEFT:"BracketLeft",ONE:"Digit1",TWO:"Digit2",THREE:"Digit3",NINE:"Digit9",QUOTE:"Quote",ZERO:"Digit0",SLASH:"Slash",C:"KeyC",D:"KeyD",H:"KeyH",V:"KeyV",Z:"KeyZ",Y:"KeyY",R:"KeyR",S:"KeyS"},y={ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",PAGE_UP:"PageUp",PAGE_DOWN:"PageDown",BACKSPACE:"Backspace",ALT:"Alt",CTRL_OR_CMD:F?"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"},Ve=new Map([[y.Z,le.Z],[y.Y,le.Y]]),Xe=e=>/^[a-z]$/.test(e.toLowerCase()),Nr=(e,t)=>{if(t===e.key.toLowerCase())return!0;let n=Ve.get(t);return!!(n&&!Xe(e.key)&&e.code===n)},kr=e=>e===y.ARROW_LEFT||e===y.ARROW_RIGHT||e===y.ARROW_DOWN||e===y.ARROW_UP,Hr=e=>e.altKey,Kr=e=>e.shiftKey,Br=e=>e.shiftKey;c();import{pointFromPair as $e}from"@excalidraw/math";var Vr=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)}},Xr=(e,t,n,r)=>{let o=n.map(b=>b[e]),l=Math.max(...o),i=Math.min(...o),s=l-i,a=s===0?1:t/s,p=1/0,m=n.map(b=>{let _=b[e]*a,h=[...b];return h[e]=_,_<p&&(p=_),h});if(!r||m.length===2)return m;let O=i-p;return m.map(b=>$e(b.map((_,h)=>h===e?_+O:_)))},$r=(e,t,n)=>n?[Math.round(e/n)*n,Math.round(t/n)*n]:[e,t];c();var de=$(ue(),1),pe=class{pool;entries={};constructor(t,n){this.pool=new de.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)))}};c();c();c();var fe=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,n)=>(n&=63,n<36?t+=n.toString(36):n<62?t+=(n-26).toString(36).toUpperCase():n>62?t+="-":t+="_",t),"");c();var L=class{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}};c();import{average as P}from"@excalidraw/math";var Y=null,uo=e=>{Y=e},po=()=>{if(Y)return Y;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"),l=`${e.getMinutes()}`.padStart(2,"0");return`${t}-${n}-${r}-${o}${l}`},fo=e=>e.charAt(0).toUpperCase()+e.slice(1),To=e=>e instanceof HTMLElement&&e.className.includes("ToolIcon"),ze=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,mo=e=>ze(e)||e instanceof Element&&!!e.closest("label, button"),Eo=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"),je=({fontFamily:e})=>{for(let[t,n]of Object.entries(T))if(n===e)return`${t}${ne(n).map(r=>`, ${r}`).join("")}`;return S},xo=({fontSize:e,fontFamily:t})=>`${e}px ${je({fontFamily:t})}`,bo=(e,t)=>{let n=0,r=null,o=(...l)=>{r=l,clearTimeout(n),n=window.setTimeout(()=>{r=null,e(...l)},t)};return o.flush=()=>{if(clearTimeout(n),r){let l=r;r=null,e(...l)}},o.cancel=()=>{r=null,clearTimeout(n)},o},_o=(e,t)=>{let n=null,r=null,o=null,l=s=>{n=window.requestAnimationFrame(()=>{n=null,e(...s),r=null,o&&(r=o,o=null,l(r))})},i=(...s)=>{if(D()){e(...s);return}r=s,n===null?l(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},Ee=e=>1-Math.pow(1-e,4),Te=(e,t,n)=>(t-e)*Ee(n)+e,ho=({fromValues:e,toValues:t,onStep:n,duration:r=250,interpolateValue:o,onStart:l,onEnd:i,onCancel:s})=>{let a=!1,p=0,m;function O(N){if(a)return;m===void 0&&(m=N,l?.());let b=Math.min(N-m,r),_=Ee(b/r),h={};if(Object.keys(e).forEach(g=>{let A=g,k=(t[A]-e[A])*_+e[A];h[A]=k}),n(h),b<r){let g=b/r,A={};Object.keys(e).forEach(k=>{let R=k,H=e[R],K=t[R],v;v=o?o(H,K,g,R):Te(H,K,g),v==null&&(v=Te(H,K,g)),A[R]=v}),n(A),p=window.requestAnimationFrame(O)}else n(t),i?.()}return p=window.requestAnimationFrame(O),()=>{s?.(),a=!0,window.cancelAnimationFrame(p)}},Ao=(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},yo=e=>{let t=window.getSelection();if(t){let n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}},go=()=>{let e=window.getSelection();e&&e.removeAllRanges()},So=(e,t)=>Math.abs(e-t),Lo=(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},Oo=()=>document.fullscreenElement?.nodeName==="HTML",Ro=()=>document.documentElement.requestFullscreen(),vo=()=>document.exitFullscreen(),Co=e=>(e=e.replace(/\bAlt\b/i,"Alt").replace(/\bShift\b/i,"Shift").replace(/\b(Enter|Return)\b/i,"Enter"),F?e.replace(/\bCtrlOrCmd\b/gi,"Cmd").replace(/\bAlt\b/i,"Option"):e.replace(/\bCtrlOrCmd\b/gi,"Ctrl")),wo=({clientX:e,clientY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:l,scrollY:i})=>{let s=(e-r)/n.value-l,a=(t-o)/n.value-i;return{x:s,y:a}},Fo=({sceneX:e,sceneY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:l,scrollY:i})=>{let s=(e+l)*n.value+r,a=(t+i)*n.value+o;return{x:s,y:a}},Mo=e=>getComputedStyle(document.documentElement).getPropertyValue(`--${e}`),Ze="A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF",qe="\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC",Qe=new RegExp(`^[^${Ze}]*[${qe}]`),Io=e=>Qe.test(e),Po=e=>{let[t,n]=e;return{x:t,y:n}},Do=e=>{if(e?.name==="AbortError"){console.warn(e);return}throw e},Uo=(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},No=(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},ko=(e,t)=>{for(let n=0;n<e.length;n++){let r=t(e[n],n);if(r!=null)return r}},Je=e=>{let t=e.length===5&&e.substr(4,1)==="0",n=e.length===9&&e.substr(7,2)==="00";return t||n||e===u.transparent},Ho=e=>e.fillStyle!=="solid"||Je(e.backgroundColor),ie=()=>{let e,t,n=new Promise((r,o)=>{e=r,t=o});return n.resolve=e,n.reject=t,n},Ko=(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},Bo=()=>document.querySelector('meta[name="version"]')?.content||re,Go=()=>{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},Wo=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},Yo=e=>{let t=e.parentElement;for(;t;){if(t.tabIndex>-1){t.focus();return}t=t.parentElement}},Vo=e=>{e.preventDefault(),e.returnValue=""},Xo=e=>Array.from(e).map(t=>`0${t.toString(16)}`.slice(-2)).join(""),$o=()=>D()?1:Date.now(),zo=e=>e instanceof Map?e:e.reduce((t,n)=>(t.set(typeof n=="string"?n:n.id,n),t),new Map),jo=e=>e.reduce((t,n,r)=>(t.set(n.id,[n,r]),t),new Map),Zo=(e,t)=>e.reduce((n,r,o)=>(n[t?t(r):o]=r,n),{}),qo=e=>e.reduce((t,n,r)=>{let o={...n,prev:null,next:null};if(r!==0){let l=t[r-1];if(o.prev=l,l.next=o,r===e.length-1){let i=t[0];o.next=i,i.prev=o}}return t.push(o),t},[]),et=e=>Array.isArray(e)?e:e.values(),Qo=e=>Array.isArray(e)?e:Array.from(et(e)),D=()=>f.MODE===M.TEST,Jo=()=>f.MODE===M.DEVELOPMENT,es=()=>f.MODE===M.PRODUCTION,ts=()=>typeof process<"u"&&!0,ns=(e,t)=>new CustomEvent(e,{detail:{nativeEvent:t},cancelable:!0}),rs=(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},os=e=>{let t=typeof e;return e==null||t!=="object"&&t!=="function"},tt=()=>{try{return window.self===window.top?"top":"iframe"}catch{return"iframe"}},ss=()=>tt()==="iframe",is=e=>!!e&&typeof e=="object"&&"then"in e&&"catch"in e&&"finally"in e,as=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):[]},me=(e,t)=>Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t,nt=(e,t,n,r=!1)=>{let o=Object.keys(e),l=Object.keys(t);if(o.length!==l.length)return r&&console.warn("%cisShallowEqual: objects don't have same properties ->","color: #8B4000",e,t),!1;if(n&&Array.isArray(n)){for(let i of n)if(!(e[i]===t[i]||me(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],a=s?s(e[i],t[i]):e[i]===t[i]||me(e[i],t[i]);return!a&&r&&console.warn(`%cisShallowEqual: ${i} not equal ->`,"color: #8B4000",e[i],t[i]),a})},ls=(e,t,{checkForDefaultPrevented:n=!0}={})=>function(o){if(e?.(o),!n||!o?.defaultPrevented)return t?.(o)},cs=(e,t,n)=>{if(!t)return e;if(n)return console.error(t),e;throw new Error(t)};function us(e,t){if(!e)throw new Error(t)}var ps=e=>{let t,n,r=function(o){let l=Object.entries(o);if(t){let s=!0;for(let[a,p]of l)if(t.get(a)!==p){s=!1;break}if(s)return n}let i=e(o);return t=new Map(l),n=i,i};return r.clear=()=>{t=void 0,n=void 0},r},ds=(e,t)=>e instanceof Set||e instanceof Map?e.has(t):"includes"in e?e.includes(t):e.hasOwnProperty(t),fs=e=>JSON.parse(JSON.stringify(e)),Ts=(e,t)=>nt(e,t)?e:t;function ms(e,t,n,r){return e?(e?.addEventListener?.(t,n,r),()=>{e?.removeEventListener?.(t,n,r)}):()=>{}}function Es(e,t=!0){let n=e.length;if(n<4)return"";let r=e[0],o=e[1],l=e[2],i=`M${r[0].toFixed(2)},${r[1].toFixed(2)} Q${o[0].toFixed(2)},${o[1].toFixed(2)} ${P(o[0],l[0]).toFixed(2)},${P(o[1],l[1]).toFixed(2)} T`;for(let s=2,a=n-1;s<a;s++)r=e[s],o=e[s+1],i+=`${P(r[0],o[0]).toFixed(2)},${P(r[1],o[1]).toFixed(2)} `;return t&&(i+="Z"),i}var xs=e=>e.replace(/\r?\n|\r/g,`
|
|
4
|
+
`),bs=e=>e,ae=async(e,...t)=>new Promise(n=>{n(e(...t))}),_s=(...e)=>Math.max(...e.map(t=>t?1:0))>0,hs=e=>{try{return JSON.parse(e)}catch{return null}},xe=e=>e.replace(/"/g,"""),As=e=>Array.isArray(e)?e:[e],rt=e=>Array.isArray(e),ot=e=>rt(e)?e.length:e instanceof Map||e instanceof Set?e.size:Object.keys(e).length,ys=(e,t)=>{if(ot(e)===0)return null;let n=t||(o=>o),r=null;for(let o of e){let l=n(o);if((r===null||r===l)&&l!=null)r=l;else return null}return r},gs=()=>{let e=navigator.userAgent||"",t=navigator.platform||"",n=navigator.userAgentData;if(n){let o=(n.platform||"").toLowerCase(),l=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(l)return!1}if(B)return!0;if(Q){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};var be=new L(Date.now()),_e=0,Cs=()=>Math.floor(be.next()*2**31),ws=e=>{be=new L(e),_e=0},Fs=()=>D()?`id${_e++}`:fe();c();var Ae=$(he(),1);var Tt=e=>(e=e.trim(),e&&(0,Ae.sanitizeUrl)(xe(e))),Ns=e=>!!(e?.includes(location.origin)||e?.startsWith("/")),ks=e=>{if(e=Tt(e),e.startsWith("/"))return`${location.origin}${e}`;try{new URL(e)}catch{return"about:blank"}return e};c();var ye=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{In as ACTIVE_THRESHOLD,bn as ALLOWED_PASTE_MIME_TYPES,Gt as APP_NAME,tr as ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO,er as ARROW_LABEL_WIDTH_FRACTION,br as ARROW_TYPE,Jn as BOUND_TEXT_PADDING,z as BinaryHeap,mn as CANVAS_ONLY_ACTIONS,Lt as CANVAS_PALETTE_SHADE_INDEXES,ur as CANVAS_SEARCH_TAB,J as CJK_HAND_DRAWN_FALLBACK_FONT,nn as CLASSES,le as CODES,gt as COLORS_PER_ROW,fn as COLOR_CHARCOAL_BLACK,At as COLOR_OUTLINE_CONTRAST_THRESHOLD,u as COLOR_PALETTE,Tn as COLOR_VOICE_CALL,dn as COLOR_WHITE,Qt as CURSOR_TYPE,ir as DEFAULT_ADAPTIVE_RADIUS,vt as DEFAULT_CANVAS_BACKGROUND_PICKS,St as DEFAULT_CHART_COLOR_INDEX,pn as DEFAULT_COLLISION_THRESHOLD,w as DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX,wt as DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE,Rt as DEFAULT_ELEMENT_BACKGROUND_PICKS,cr as DEFAULT_ELEMENT_PROPS,C as DEFAULT_ELEMENT_STROKE_COLOR_INDEX,Ct as DEFAULT_ELEMENT_STROKE_COLOR_PALETTE,Ot as DEFAULT_ELEMENT_STROKE_PICKS,Xn as DEFAULT_EXPORT_PADDING,mr as DEFAULT_FILENAME,ln as DEFAULT_FONT_FAMILY,an as DEFAULT_FONT_SIZE,En as DEFAULT_GRID_SIZE,xn as DEFAULT_GRID_STEP,qt as DEFAULT_LASER_COLOR,$n as DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT,sr as DEFAULT_PROPORTIONAL_RADIUS,_r as DEFAULT_REDUCED_GLOBAL_ALPHA,pr as DEFAULT_SIDEBAR,cn as DEFAULT_TEXT_ALIGN,Ne as DEFAULT_TRANSFORM_HANDLE_SPACING,Nn as DEFAULT_UI_OPTIONS,re as DEFAULT_VERSION,un as DEFAULT_VERTICAL_ALIGN,gr as DOUBLE_TAP_POSITION_THRESHOLD,Yt as DRAGGING_THRESHOLD,Tr as EDITOR_LS_KEYS,E as ELEMENTS_PALETTE_SHADE_INDEXES,hr as ELEMENT_LINK_KEY,or as ELEMENT_READY_TO_ERASE_OPACITY,$t as ELEMENT_SHIFT_TRANSLATE_AMOUNT,zt as ELEMENT_TRANSLATE_AMOUNT,qn as ENCRYPTION_KEY_BITS,M as ENV,He as EPSILON,Pe as EVENT,hn as EXPORT_DATA_TYPES,_n as EXPORT_IMAGE_TYPES,Vn as EXPORT_SCALES,ye as Emitter,T as FONT_FAMILY,G as FONT_FAMILY_FALLBACKS,De as FONT_FAMILY_GENERIC_FALLBACKS,I as FONT_METADATA,on as FRAME_STYLE,Rr as GOOGLE_FONTS_RANGES,Fn as HYPERLINK_TOOLTIP_DELAY,Mn as IDLE_THRESHOLD,oe as IMAGE_MIME_TYPES,yn as IMAGE_RENDER_TIMEOUT,y as KEYS,Ve as KeyCodeMap,dr as LIBRARY_DISABLED_TYPES,We as LIBRARY_SIDEBAR_TAB,Xt as LINE_CONFIRM_THRESHOLD,yr as LINE_POLYGON_POINT_MERGE_DISTANCE,vr as LOCAL_FONT_PROTOCOL,zn as MAX_ALLOWED_FILE_BYTES,yt as MAX_CUSTOM_COLORS_USED_IN_CANVAS,Yn as MAX_DECIMALS_FOR_SVG_EXPORT,wn as MAX_ZOOM,q as MIME_TYPES,Vt as MINIMUM_ARROW_SIZE,sn as MIN_FONT_SIZE,xr as MIN_WIDTH_OR_HEIGHT,Cn as MIN_ZOOM,te as MONOSPACE_GENERIC_FONT,Hn as MQ_MAX_HEIGHT_LANDSCAPE,Be as MQ_MAX_MOBILE,Bn as MQ_MAX_TABLET,kn as MQ_MAX_WIDTH_LANDSCAPE,Kn as MQ_MIN_TABLET,Gn as MQ_MIN_WIDTH_DESKTOP,Wn as MQ_RIGHT_SIDEBAR_MIN_WIDTH,Ar as ORIG_ID,Jt as POINTER_BUTTON,en as POINTER_EVENTS,pe as PromisePool,se as Queue,Ge as ROUGHNESS,ar as ROUNDNESS,ee as SANS_SERIF_GENERIC_FONT,Rn as SCROLL_TIMEOUT,Zt as SHIFT_LOCKING_ANGLE,ke as SIDE_RESIZING_THRESHOLD,Er as STATS_PANELS,Ke as STRING_MIME_TYPES,lr as STROKE_WIDTH,Zn as SVG_DOCUMENT_PREAMBLE,jn as SVG_NS,gn as TAP_TWICE_TIMEOUT,rr as TEXT_ALIGN,Wt as TEXT_AUTOWRAP_THRESHOLD,jt as TEXT_TO_CENTER_SNAP_THRESHOLD,rn as THEME,Pn as THEME_FILTER,Ln as TITLE_TIMEOUT,fr as TOOL_TYPE,Sn as TOUCH_CTX_MENU_TIMEOUT,Un as URL_HASH_KEYS,Dn as URL_QUERY_KEYS,Ye as UserIdleState,Qn as VERSIONS,On as VERSION_TIMEOUT,nr as VERTICAL_ALIGN,S as WINDOWS_EMOJI_FALLBACK_FONT,tn as YOUTUBE_STATES,vn as ZOOM_STEP,ms as addEventListener,Ro as allowFullScreen,qo as arrayToList,zo as arrayToMap,jo as arrayToMapWithIndex,Zo as arrayToObject,cs as assertNever,Xo as bytesToHexString,fo as capitalizeString,As as castArray,Ao as chunk,fs as cloneJSON,ls as composeEventHandlers,bo as debounce,So as distance,Ee as easeOut,ho as easeToValuesRAF,xe as escapeDoubleQuotes,vo as exitFullScreen,Uo as findIndex,No as findLastIndex,Yo as focusNearestParent,Ft as getAllColorsSpecificShade,po as getDateTime,An as getExportSource,ne as getFontFamilyFallbacks,je as getFontFamilyString,xo as getFontString,tt as getFrame,Ue as getGenericFontFamilyFallback,Mo as getGlobalCSSVariable,$r as getGridPoint,wr as getLineHeight,Wo as getNearestScrollableContainer,Co as getShortcutKey,Vr as getSizeFromPoints,x as getSpecificColorShades,Es as getSvgPathFromStroke,$o as getUpdatedTimestamp,Bo as getVersion,Cr as getVerticalOffset,us as invariant,Q as isAndroid,_s as isAnyTrue,kr as isArrowKey,Ho as isBindingFallthroughEnabled,Ht as isBrave,Ie as isChrome,F as isDarwin,Jo as isDevEnv,Nt as isFirefox,Oo as isFullScreen,B as isIOS,ze as isInputLike,mo as isInteractive,Xe as isLatinChar,Ns as isLocalLink,ds as isMemberOf,Kt as isMobile,gs as isMobileOrTablet,os as isPrimitive,es as isProdEnv,is as isPromiseLike,Io as isRTL,rt as isReadonlyArray,ss as isRunningInIframe,kt as isSafari,ts as isServerEnv,nt as isShallowEqual,D as isTestEnv,To as isToolIcon,Je as isTransparent,Ut as isWindows,Eo as isWritableElement,ko as mapFind,Nr as matchKey,ps as memoize,Do as muteFSAbortError,Ko as nFormatter,xs as normalizeEOL,Tt as normalizeLink,Vo as preventUnload,ae as promiseTry,as as queryFocusableElements,Fs as randomId,Cs as randomInteger,ys as reduceToCommonValue,go as removeSelection,Xr as rescalePoints,ws as reseed,ie as resolvablePromise,Mt as rgbToHex,hs as safelyParseJSON,Fo as sceneCoordsToViewportCoords,yo as selectNode,uo as setDateTimeForTests,Kr as shouldMaintainAspectRatio,Hr as shouldResizeFromCenter,Br as shouldRotateWithDiscreteAngle,ot as sizeOf,Go as supportsEmoji,Bt as supportsResizeObserver,_o as throttleRAF,Qo as toArray,bs as toBrandedType,et as toIterable,ks as toValidURL,Po as tupleToCoors,Lo as updateActiveTool,rs as updateObject,Ts as updateStable,wo as viewportCoordsToSceneCoords,ns as wrapEvent};
|
|
@@ -8,6 +8,7 @@ export declare const isChrome: boolean;
|
|
|
8
8
|
export declare const isSafari: boolean;
|
|
9
9
|
export declare const isIOS: boolean;
|
|
10
10
|
export declare const isBrave: () => boolean;
|
|
11
|
+
export declare const isMobile: boolean;
|
|
11
12
|
export declare const supportsResizeObserver: boolean;
|
|
12
13
|
export declare const APP_NAME = "Excalidraw";
|
|
13
14
|
export declare const TEXT_AUTOWRAP_THRESHOLD = 36;
|
|
@@ -90,6 +91,7 @@ export declare const CLASSES: {
|
|
|
90
91
|
ZOOM_ACTIONS: string;
|
|
91
92
|
SEARCH_MENU_INPUT_WRAPPER: string;
|
|
92
93
|
CONVERT_ELEMENT_TYPE_POPUP: string;
|
|
94
|
+
SHAPE_ACTIONS_THEME_SCOPE: string;
|
|
93
95
|
};
|
|
94
96
|
export declare const CJK_HAND_DRAWN_FALLBACK_FONT = "Xiaolai";
|
|
95
97
|
export declare const WINDOWS_EMOJI_FALLBACK_FONT = "Segoe UI Emoji";
|
|
@@ -175,6 +177,14 @@ export declare const IMAGE_MIME_TYPES: {
|
|
|
175
177
|
readonly avif: "image/avif";
|
|
176
178
|
readonly jfif: "image/jfif";
|
|
177
179
|
};
|
|
180
|
+
export declare const STRING_MIME_TYPES: {
|
|
181
|
+
readonly text: "text/plain";
|
|
182
|
+
readonly html: "text/html";
|
|
183
|
+
readonly json: "application/json";
|
|
184
|
+
readonly excalidraw: "application/vnd.excalidraw+json";
|
|
185
|
+
readonly excalidrawlib: "application/vnd.excalidrawlib+json";
|
|
186
|
+
readonly excalidrawlibIds: "application/vnd.excalidrawlib.ids+json";
|
|
187
|
+
};
|
|
178
188
|
export declare const MIME_TYPES: {
|
|
179
189
|
readonly svg: "image/svg+xml";
|
|
180
190
|
readonly png: "image/png";
|
|
@@ -185,14 +195,15 @@ export declare const MIME_TYPES: {
|
|
|
185
195
|
readonly ico: "image/x-icon";
|
|
186
196
|
readonly avif: "image/avif";
|
|
187
197
|
readonly jfif: "image/jfif";
|
|
198
|
+
readonly "excalidraw.svg": "image/svg+xml";
|
|
199
|
+
readonly "excalidraw.png": "image/png";
|
|
200
|
+
readonly binary: "application/octet-stream";
|
|
188
201
|
readonly text: "text/plain";
|
|
189
202
|
readonly html: "text/html";
|
|
190
203
|
readonly json: "application/json";
|
|
191
204
|
readonly excalidraw: "application/vnd.excalidraw+json";
|
|
192
205
|
readonly excalidrawlib: "application/vnd.excalidrawlib+json";
|
|
193
|
-
readonly
|
|
194
|
-
readonly "excalidraw.png": "image/png";
|
|
195
|
-
readonly binary: "application/octet-stream";
|
|
206
|
+
readonly excalidrawlibIds: "application/vnd.excalidrawlib.ids+json";
|
|
196
207
|
};
|
|
197
208
|
export declare const ALLOWED_PASTE_MIME_TYPES: readonly ["text/plain", "text/html", ...("image/svg+xml" | "image/png" | "image/jpeg" | "image/gif" | "image/webp" | "image/bmp" | "image/x-icon" | "image/avif" | "image/jfif")[]];
|
|
198
209
|
export declare const EXPORT_IMAGE_TYPES: {
|
|
@@ -227,9 +238,12 @@ export declare const URL_HASH_KEYS: {
|
|
|
227
238
|
readonly addLibrary: "addLibrary";
|
|
228
239
|
};
|
|
229
240
|
export declare const DEFAULT_UI_OPTIONS: AppProps["UIOptions"];
|
|
230
|
-
export declare const
|
|
241
|
+
export declare const MQ_MAX_MOBILE = 599;
|
|
231
242
|
export declare const MQ_MAX_WIDTH_LANDSCAPE = 1000;
|
|
232
243
|
export declare const MQ_MAX_HEIGHT_LANDSCAPE = 500;
|
|
244
|
+
export declare const MQ_MIN_TABLET: number;
|
|
245
|
+
export declare const MQ_MAX_TABLET = 1400;
|
|
246
|
+
export declare const MQ_MIN_WIDTH_DESKTOP = 1440;
|
|
233
247
|
export declare const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229;
|
|
234
248
|
export declare const MAX_DECIMALS_FOR_SVG_EXPORT = 2;
|
|
235
249
|
export declare const EXPORT_SCALES: number[];
|
|
@@ -342,3 +356,4 @@ export declare enum UserIdleState {
|
|
|
342
356
|
* the start and end points)
|
|
343
357
|
*/
|
|
344
358
|
export declare const LINE_POLYGON_POINT_MERGE_DISTANCE = 20;
|
|
359
|
+
export declare const DOUBLE_TAP_POSITION_THRESHOLD = 35;
|
|
@@ -264,4 +264,5 @@ export declare const castArray: <T>(value: T | T[]) => T[];
|
|
|
264
264
|
export declare const isReadonlyArray: (value?: any) => value is readonly any[];
|
|
265
265
|
export declare const sizeOf: (value: readonly unknown[] | Readonly<Map<string, unknown>> | Readonly<Record<string, unknown>> | ReadonlySet<unknown>) => number;
|
|
266
266
|
export declare const reduceToCommonValue: <T, R = T>(collection: ReadonlySet<T> | readonly T[], getValue?: ((item: T) => R) | undefined) => R | null;
|
|
267
|
+
export declare const isMobileOrTablet: () => boolean;
|
|
267
268
|
export {};
|
|
@@ -27,7 +27,9 @@ export declare class Scene {
|
|
|
27
27
|
getElementsMapIncludingDeleted(): Map<string, Ordered<ExcalidrawElement>> & import("@excalidraw/common/utility-types").MakeBrand<"SceneElementsMap">;
|
|
28
28
|
getNonDeletedElements(): readonly Ordered<NonDeletedExcalidrawElement>[];
|
|
29
29
|
getFramesIncludingDeleted(): readonly ExcalidrawFrameLikeElement[];
|
|
30
|
-
constructor(elements?: ElementsMapOrArray | null
|
|
30
|
+
constructor(elements?: ElementsMapOrArray | null, options?: {
|
|
31
|
+
skipValidation?: true;
|
|
32
|
+
});
|
|
31
33
|
getSelectedElements(opts: {
|
|
32
34
|
selectedElementIds: AppState["selectedElementIds"];
|
|
33
35
|
/**
|
|
@@ -55,7 +57,9 @@ export declare class Scene {
|
|
|
55
57
|
* @returns whether a change was made
|
|
56
58
|
*/
|
|
57
59
|
mapElements(iteratee: (element: ExcalidrawElement) => ExcalidrawElement): boolean;
|
|
58
|
-
replaceAllElements(nextElements: ElementsMapOrArray
|
|
60
|
+
replaceAllElements(nextElements: ElementsMapOrArray, options?: {
|
|
61
|
+
skipValidation?: true;
|
|
62
|
+
}): void;
|
|
59
63
|
triggerUpdate(): void;
|
|
60
64
|
onUpdate(cb: SceneStateCallback): SceneStateCallbackRemover;
|
|
61
65
|
destroy(): void;
|
|
@@ -74,7 +74,7 @@ export interface BoundingBox {
|
|
|
74
74
|
width: number;
|
|
75
75
|
height: number;
|
|
76
76
|
}
|
|
77
|
-
export declare const getCommonBoundingBox: (elements: ExcalidrawElement[] | readonly NonDeleted<ExcalidrawElement>[]) => BoundingBox;
|
|
77
|
+
export declare const getCommonBoundingBox: (elements: readonly ExcalidrawElement[] | readonly NonDeleted<ExcalidrawElement>[]) => BoundingBox;
|
|
78
78
|
/**
|
|
79
79
|
* returns scene coords of user's editor viewport (visible canvas area) bounds
|
|
80
80
|
*/
|
|
@@ -32,13 +32,13 @@ export declare class Delta<T> {
|
|
|
32
32
|
/**
|
|
33
33
|
* Merges two deltas into a new one.
|
|
34
34
|
*/
|
|
35
|
-
static merge<T>(delta1: Delta<T>, delta2: Delta<T>): Delta<T>;
|
|
35
|
+
static merge<T>(delta1: Delta<T>, delta2: Delta<T>, delta3?: Delta<T>): Delta<T>;
|
|
36
36
|
/**
|
|
37
37
|
* Merges deleted and inserted object partials.
|
|
38
38
|
*/
|
|
39
39
|
static mergeObjects<T extends {
|
|
40
40
|
[key: string]: unknown;
|
|
41
|
-
}>(prev: T, added: T, removed
|
|
41
|
+
}>(prev: T, added: T, removed?: T): T;
|
|
42
42
|
/**
|
|
43
43
|
* Merges deleted and inserted array partials.
|
|
44
44
|
*/
|
|
@@ -118,6 +118,7 @@ export interface DeltaContainer<T> {
|
|
|
118
118
|
export declare class AppStateDelta implements DeltaContainer<AppState> {
|
|
119
119
|
delta: Delta<ObservedAppState>;
|
|
120
120
|
private constructor();
|
|
121
|
+
static create(delta: Delta<ObservedAppState>): AppStateDelta;
|
|
121
122
|
static calculate<T extends ObservedAppState>(prevAppState: T, nextAppState: T): AppStateDelta;
|
|
122
123
|
static restore(appStateDeltaDTO: DTO<AppStateDelta>): AppStateDelta;
|
|
123
124
|
static empty(): AppStateDelta;
|
|
@@ -144,7 +145,7 @@ export declare class AppStateDelta implements DeltaContainer<AppState> {
|
|
|
144
145
|
}
|
|
145
146
|
type ElementPartial<TElement extends ExcalidrawElement = ExcalidrawElement> = Omit<Partial<Ordered<TElement>>, "id" | "updated" | "seed">;
|
|
146
147
|
export type ApplyToOptions = {
|
|
147
|
-
excludedProperties
|
|
148
|
+
excludedProperties?: Set<keyof ElementPartial>;
|
|
148
149
|
};
|
|
149
150
|
/**
|
|
150
151
|
* Elements change is a low level primitive to capture a change between two sets of elements.
|
|
@@ -163,6 +164,7 @@ export declare class ElementsDelta implements DeltaContainer<SceneElementsMap> {
|
|
|
163
164
|
private static satisfiesRemoval;
|
|
164
165
|
private static satisfiesUpdate;
|
|
165
166
|
private static satisfiesCommmonInvariants;
|
|
167
|
+
private static satisfiesUniqueInvariants;
|
|
166
168
|
private static validate;
|
|
167
169
|
/**
|
|
168
170
|
* Calculates the `Delta`s between the previous and next set of elements.
|
|
@@ -212,6 +214,7 @@ export declare class ElementsDelta implements DeltaContainer<SceneElementsMap> {
|
|
|
212
214
|
* should be rebound (if possible) with the current element ~ bindings should be bidirectional.
|
|
213
215
|
*/
|
|
214
216
|
private static rebindAffected;
|
|
217
|
+
static redrawElements(nextElements: SceneElementsMap, changedElements: Map<string, OrderedExcalidrawElement>): SceneElementsMap;
|
|
215
218
|
private static redrawTextBoundingBoxes;
|
|
216
219
|
private static redrawBoundArrows;
|
|
217
220
|
private static reorderElements;
|
|
@@ -38,6 +38,7 @@ export * from "./image";
|
|
|
38
38
|
export * from "./linearElementEditor";
|
|
39
39
|
export * from "./mutateElement";
|
|
40
40
|
export * from "./newElement";
|
|
41
|
+
export * from "./positionElementsOnGrid";
|
|
41
42
|
export * from "./renderElement";
|
|
42
43
|
export * from "./resizeElements";
|
|
43
44
|
export * from "./resizeTest";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { type GlobalPoint } from "@excalidraw/math";
|
|
1
2
|
import type { AppState, StaticCanvasAppState, InteractiveCanvasAppState, ElementsPendingErasure, PendingExcalidrawElements } from "@excalidraw/excalidraw/types";
|
|
2
3
|
import type { StaticCanvasRenderConfig, RenderableElementsMap, InteractiveCanvasRenderConfig } from "@excalidraw/excalidraw/scene/types";
|
|
3
|
-
import type { ExcalidrawElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, ExcalidrawFreeDrawElement, ExcalidrawImageElement, ExcalidrawFrameLikeElement, NonDeletedSceneElementsMap } from "./types";
|
|
4
|
+
import type { ExcalidrawElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, ExcalidrawFreeDrawElement, ExcalidrawImageElement, ExcalidrawFrameLikeElement, NonDeletedSceneElementsMap, ElementsMap } from "./types";
|
|
4
5
|
import type { RoughCanvas } from "roughjs/bin/canvas";
|
|
5
6
|
export declare const IMAGE_INVERT_FILTER = "invert(100%) hue-rotate(180deg) saturate(1.25)";
|
|
6
7
|
export declare const getRenderOpacity: (element: ExcalidrawElement, containingFrame: ExcalidrawFrameLikeElement | null, elementsPendingErasure: ElementsPendingErasure, pendingNodes: Readonly<PendingExcalidrawElements> | null, globalAlpha?: number) => number;
|
|
@@ -26,3 +27,5 @@ export declare const pathsCache: WeakMap<ExcalidrawFreeDrawElement, Path2D>;
|
|
|
26
27
|
export declare function generateFreeDrawShape(element: ExcalidrawFreeDrawElement): Path2D;
|
|
27
28
|
export declare function getFreeDrawPath2D(element: ExcalidrawFreeDrawElement): Path2D | undefined;
|
|
28
29
|
export declare function getFreeDrawSvgPath(element: ExcalidrawFreeDrawElement): string;
|
|
30
|
+
export declare function getFreedrawOutlineAsSegments(element: ExcalidrawFreeDrawElement, points: [number, number][], elementsMap: ElementsMap): import("@excalidraw/math").LineSegment<GlobalPoint>[];
|
|
31
|
+
export declare function getFreedrawOutlinePoints(element: ExcalidrawFreeDrawElement): [number, number][];
|
|
@@ -169,7 +169,11 @@ export declare class StoreDelta {
|
|
|
169
169
|
/**
|
|
170
170
|
* Parse and load the delta from the remote payload.
|
|
171
171
|
*/
|
|
172
|
-
static load({ id, elements: { added, removed, updated }, }: DTO<StoreDelta>): StoreDelta;
|
|
172
|
+
static load({ id, elements: { added, removed, updated }, appState: { delta: appStateDelta }, }: DTO<StoreDelta>): StoreDelta;
|
|
173
|
+
/**
|
|
174
|
+
* Squash the passed deltas into the aggregated delta instance.
|
|
175
|
+
*/
|
|
176
|
+
static squash(...deltas: StoreDelta[]): StoreDelta;
|
|
173
177
|
/**
|
|
174
178
|
* Inverse store delta, creates new instance of `StoreDelta`.
|
|
175
179
|
*/
|
|
@@ -182,6 +186,7 @@ export declare class StoreDelta {
|
|
|
182
186
|
* Apply latest (remote) changes to the delta, creates new instance of `StoreDelta`.
|
|
183
187
|
*/
|
|
184
188
|
static applyLatestChanges(delta: StoreDelta, prevElements: SceneElementsMap, nextElements: SceneElementsMap, modifierOptions?: "deleted" | "inserted"): StoreDelta;
|
|
189
|
+
static empty(): StoreDelta;
|
|
185
190
|
isEmpty(): boolean;
|
|
186
191
|
}
|
|
187
192
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { type Radians } from "@excalidraw/math";
|
|
1
2
|
import type { AppState } from "@excalidraw/excalidraw/types";
|
|
2
3
|
import type { ExtractSetType } from "@excalidraw/common/utility-types";
|
|
3
|
-
import type { Radians } from "@excalidraw/math";
|
|
4
4
|
import type { Scene } from "./Scene";
|
|
5
5
|
import type { MaybeTransformHandleType } from "./transformHandles";
|
|
6
6
|
import type { ElementsMap, ExcalidrawElement, ExcalidrawElementType, ExcalidrawTextContainer, ExcalidrawTextElement, ExcalidrawTextElementWithContainer, NonDeletedExcalidrawElement } from "./types";
|
|
@@ -77,7 +77,7 @@ export declare const actionAddToLibrary: {
|
|
|
77
77
|
value: import("../types").NormalizedZoomValue;
|
|
78
78
|
}>;
|
|
79
79
|
openMenu: "canvas" | "shape" | null;
|
|
80
|
-
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | null;
|
|
80
|
+
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
|
|
81
81
|
openSidebar: {
|
|
82
82
|
name: string;
|
|
83
83
|
tab?: string | undefined;
|
|
@@ -173,6 +173,7 @@ export declare const actionAddToLibrary: {
|
|
|
173
173
|
lockedMultiSelections: {
|
|
174
174
|
[groupId: string]: true;
|
|
175
175
|
};
|
|
176
|
+
stylesPanelMode: "compact" | "full";
|
|
176
177
|
};
|
|
177
178
|
} | {
|
|
178
179
|
captureUpdate: "EVENTUALLY";
|
|
@@ -244,7 +245,7 @@ export declare const actionAddToLibrary: {
|
|
|
244
245
|
value: import("../types").NormalizedZoomValue;
|
|
245
246
|
}>;
|
|
246
247
|
openMenu: "canvas" | "shape" | null;
|
|
247
|
-
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | null;
|
|
248
|
+
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
|
|
248
249
|
openSidebar: {
|
|
249
250
|
name: string;
|
|
250
251
|
tab?: string | undefined;
|
|
@@ -345,6 +346,7 @@ export declare const actionAddToLibrary: {
|
|
|
345
346
|
lockedMultiSelections: {
|
|
346
347
|
[groupId: string]: true;
|
|
347
348
|
};
|
|
349
|
+
stylesPanelMode: "compact" | "full";
|
|
348
350
|
};
|
|
349
351
|
}> | {
|
|
350
352
|
captureUpdate: "EVENTUALLY";
|
|
@@ -416,7 +418,7 @@ export declare const actionAddToLibrary: {
|
|
|
416
418
|
value: import("../types").NormalizedZoomValue;
|
|
417
419
|
}>;
|
|
418
420
|
openMenu: "canvas" | "shape" | null;
|
|
419
|
-
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | null;
|
|
421
|
+
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
|
|
420
422
|
openSidebar: {
|
|
421
423
|
name: string;
|
|
422
424
|
tab?: string | undefined;
|
|
@@ -517,6 +519,7 @@ export declare const actionAddToLibrary: {
|
|
|
517
519
|
lockedMultiSelections: {
|
|
518
520
|
[groupId: string]: true;
|
|
519
521
|
};
|
|
522
|
+
stylesPanelMode: "compact" | "full";
|
|
520
523
|
};
|
|
521
524
|
};
|
|
522
525
|
label: string;
|
|
@@ -97,7 +97,7 @@ export declare const actionBindText: {
|
|
|
97
97
|
value: import("../types").NormalizedZoomValue;
|
|
98
98
|
}>;
|
|
99
99
|
openMenu: "canvas" | "shape" | null;
|
|
100
|
-
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | null;
|
|
100
|
+
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
|
|
101
101
|
openSidebar: {
|
|
102
102
|
name: string;
|
|
103
103
|
tab?: string | undefined;
|
|
@@ -195,6 +195,7 @@ export declare const actionBindText: {
|
|
|
195
195
|
lockedMultiSelections: {
|
|
196
196
|
[groupId: string]: true;
|
|
197
197
|
};
|
|
198
|
+
stylesPanelMode: "compact" | "full";
|
|
198
199
|
};
|
|
199
200
|
captureUpdate: "IMMEDIATELY";
|
|
200
201
|
};
|
|
@@ -281,7 +282,7 @@ export declare const actionWrapTextInContainer: {
|
|
|
281
282
|
value: import("../types").NormalizedZoomValue;
|
|
282
283
|
}>;
|
|
283
284
|
openMenu: "canvas" | "shape" | null;
|
|
284
|
-
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | null;
|
|
285
|
+
openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | "compactTextProperties" | "compactStrokeStyles" | "compactOtherProperties" | "compactArrowProperties" | null;
|
|
285
286
|
openSidebar: {
|
|
286
287
|
name: string;
|
|
287
288
|
tab?: string | undefined;
|
|
@@ -379,6 +380,7 @@ export declare const actionWrapTextInContainer: {
|
|
|
379
380
|
lockedMultiSelections: {
|
|
380
381
|
[groupId: string]: true;
|
|
381
382
|
};
|
|
383
|
+
stylesPanelMode: "compact" | "full";
|
|
382
384
|
};
|
|
383
385
|
captureUpdate: "IMMEDIATELY";
|
|
384
386
|
};
|