2026-01-05 13:03:55 +08:00
"use strict" ; var obsidian_module = require ( "obsidian" ), view = require ( "@codemirror/view" ), commands = require ( "@codemirror/commands" ), lr = require ( "@lezer/lr" ), language = require ( "@codemirror/language" ), state = require ( "@codemirror/state" );; const INITIAL_TIMESTAMP = Date . now (); var LZString = function (){ var r = String . fromCharCode , o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" , n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$" , e = {}; function t ( r , o ){ if ( ! e [ r ]){ e [ r ] = {}; for ( var n = 0 ; n < r . length ; n ++ ) e [ r ][ r . charAt ( n )] = n } return e [ r ][ o ]} var i = { compressToBase64 : function ( r ){ if ( null == r ) return "" ; var n = i . _compress ( r , 6 , function ( r ){ return o . charAt ( r )}); switch ( n . length % 4 ){ default : case 0 : return n ; case 1 : return n + "===" ; case 2 : return n + "==" ; case 3 : return n + "=" }}, decompressFromBase64 : function ( r ){ return null == r ? "" : "" == r ? null : i . _decompress ( r . length , 32 , function ( n ){ return t ( o , r . charAt ( n ))})}, compressToUTF16 : function ( o ){ return null == o ? "" : i . _compress ( o , 15 , function ( o ){ return r ( o + 32 )}) + " " }, decompressFromUTF16 : function ( r ){ return null == r ? "" : "" == r ? null : i . _decompress ( r . length , 16384 , function ( o ){ return r . charCodeAt ( o ) - 32 })}, compressToUint8Array : function ( r ){ for ( var o = i . compress ( r ), n = new Uint8Array ( 2 * o . length ), e = 0 , t = o . length ; e < t ; e ++ ){ var s = o . charCodeAt ( e ); n [ 2 * e ] = s >>> 8 , n [ 2 * e + 1 ] = s % 256 } return n }, decompressFromUint8Array : function ( o ){ if ( null == o ) return i . decompress ( o ); for ( var n = new Array ( o . length / 2 ), e = 0 , t = n . length ; e < t ; e ++ ) n [ e ] = 256 * o [ 2 * e ] + o [ 2 * e + 1 ]; var s = []; return n . forEach ( function ( o ){ s . push ( r ( o ))}), i . decompress ( s . join ( "" ))}, compressToEncodedURIComponent : function ( r ){ return null == r ? "" : i . _compress ( r , 6 , function ( r ){ return n . charAt ( r )})}, decompressFromEncodedURIComponent : function ( r ){ return null == r ? "" : "" == r ? null : ( r = r . replace ( / /g , "+" ), i . _decompress ( r . length , 32 , function ( o ){ return t ( n , r . charAt ( o ))}))}, compress : function ( o ){ return i . _compress ( o , 16 , function ( o ){ return r ( o )})}, _compress : function ( r , o , n ){ if ( null == r ) return "" ; var e , t , i , s = {}, u = {}, a = "" , p = "" , c = "" , l = 2 , f = 3 , h = 2 , d = [], m = 0 , v = 0 ; for ( i = 0 ; i < r . length ; i += 1 ) if ( a = r . charAt ( i ), Object . prototype . hasOwnProperty . call ( s , a ) || ( s [ a ] = f ++ , u [ a ] =! 0 ), p = c + a , Object . prototype . hasOwnProperty . call ( s , p )) c = p ; else { if ( Object . prototype . hasOwnProperty . call ( u , c )){ if ( c . charCodeAt ( 0 ) < 256 ){ for ( e = 0 ; e < h ; e ++ ) m <<= 1 , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ ; for ( t = c . charCodeAt ( 0 ), e = 0 ; e < 8 ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ , t >>= 1 } else { for ( t = 1 , e = 0 ; e < h ; e ++ ) m = m << 1 | t , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ , t = 0 ; for ( t = c . charCodeAt ( 0 ), e = 0 ; e < 16 ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ , t >>= 1 } 0 ==-- l && ( l = Math . pow ( 2 , h ), h ++ ), delete u [ c ]} else for ( t = s [ c ], e = 0 ; e < h ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ , t >>= 1 ; 0 ==-- l && ( l = Math . pow ( 2 , h ), h ++ ), s [ p ] = f ++ , c = String ( a )} if ( "" !== c ){ if ( Object . prototype . hasOwnProperty . call ( u , c )){ if ( c . charCodeAt ( 0 ) < 256 ){ for ( e = 0 ; e < h ; e ++ ) m <<= 1 , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ ; for ( t = c . charCodeAt ( 0 ), e = 0 ; e < 8 ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ , t >>= 1 } else { for ( t = 1 , e = 0 ; e < h ; e ++ ) m = m << 1 | t , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ , t = 0 ; for ( t = c . charCodeAt ( 0 ), e = 0 ; e < 16 ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ , t >>= 1 } 0 ==-- l && ( l = Math . pow ( 2 , h ), h ++ ), delete u [ c ]} else for ( t = s [ c ], e = 0 ; e < h ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ , t >>= 1 ; 0 ==-- l && ( l = Math . pow ( 2 , h ), h ++ )} for ( t = 2 , e = 0 ; e < h ; e ++ ) m = m << 1 | 1 & t , v == o - 1 ? ( v = 0 , d . push ( n ( m )), m = 0 ) : v ++ , t >>= 1 ; for (;;){ if ( m <<= 1 , v == o - 1 ){ d . push ( n ( m )); break } v ++ } return d . join ( "" )}, decompress : function ( r ){ return null == r ? "" : "" == r ? null : i . _decompress ( r . length , 32768 , function ( o ){ return r . charCodeAt ( o )})}, _decompress : function ( o , n , e ){ var t , i , s , u , a , p , c , l = [], f = 4 , h = 4 , d = 3 , m = "" , v = [], g = { val : e ( 0 ), position : n , index : 1 }; for ( t = 0 ; t < 3 ; t += 1 ) l [ t ] = t ; for ( s = 0 , a = Math . pow ( 2 , 2 ), p = 1 ; p != a ;) u = g . val & g . position , g . position >>= 1 , 0 == g . position && ( g . position = n , g . val = e ( g . index ++ )), s |= ( u > 0 ? 1 : 0 ) * p , p <<= 1 ; switch ( s ){ case 0 : for ( s = 0 , a = Math . pow ( 2 , 8 ), p = 1 ; p != a ;) u = g . val & g . position , g . position >>= 1 , 0 == g . position && ( g . position = n , g . val = e ( g . index ++ )), s |= ( u > 0 ? 1 : 0 ) * p , p <<= 1 ; c = r ( s ); break ; case 1 : for ( s = 0 , a = Math . pow ( 2 , 16 ), p = 1 ; p != a ;) u = g . val & g . position , g . position >>= 1 , 0 == g . position && ( g . position = n , g . val = e ( g . index ++ )), s |= ( u > 0 ? 1 : 0 ) * p , p <<= 1 ; c = r ( s ); break ; case 2 : return "" } for ( l [ 3 ] = c , i = c , v
let REACT_PACKAGES = `!function(){var e,t;e=this,t=function(e){function M(e){return null!==e&&"object"==typeof e&&"function"==typeof(e=te&&e[te]||e["@@iterator"])?e:null}function t(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function n(){}function r(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function o(e,t,n){var r,o={},u=null,a=null;if(null!=t)for(r in void 0!==t.ref&&(a=t.ref),void 0!==t.key&&(u=""+t.key),t)ae.call(t,r)&&!ie.hasOwnProperty(r)&&(o[r]=t[r]);var i=arguments.length-2;if(1===i)o.children=n;else if(1<i){for(var l=Array(i),c=0;c<i;c++)l[c]=arguments[c+2];o.children=l}if(e&&e.defaultProps)for(r in i=e.defaultProps)void 0===o[r]&&(o[r]=i[r]);return{$$typeof:g,type:e,key:u,ref:a,props:o,_owner:w.current}}function D(e,t){return{$$typeof:g,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function c(e){return"object"==typeof e&&null!==e&&e.$$typeof===g}function U(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(e){return t[e]})}function f(e,t){return"object"==typeof e&&null!==e&&null!=e.key?U(""+e.key):t.toString(36)}function s(e,t,n,r,o){var u=!1;if(null===(e="undefined"!==(i=typeof e)&&"boolean"!==i?e:null))u=!0;else switch(i){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case g:case H:u=!0}}if(u)return o=o(u=e),e=""===r?"."+f(u,0):r,ue(o)?(n="",s(o,t,n=null!=e?e.replace(le,"$&/")+"/":n,"",function(e){return e})):null!=o&&(c(o)&&(o=D(o,n+(!o.key||u&&u.key===o.key?"":(""+o.key).replace(le,"$&/")+"/")+e)),t.push(o)),1;if(u=0,r=""===r?".":r+":",ue(e))for(var a=0;a<e.length;a++){var i,l=r+f(i=e[a],a);u+=s(i,t,n,l,o)}else if("function"==typeof(l=M(e)))for(e=l.call(e),a=0;!(i=e.next()).done;)u+=s(i=i.value,t,n,l=r+f(i,a++),o);else if("object"===i)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return u}function u(e,t,n){var r;return null==e||(r=0,s(e,e=[],"","",function(e){return t.call(n,e,r++)})),e}function V(t){var e;if(-1===t._status&&((e=(e=t._result)()).then(function(e){0!==t._status&&-1!==t._status||(t._status=1,t._result=e)},function(e){0!==t._status&&-1!==t._status||(t._status=2,t._result=e)}),-1===t._status)&&(t._status=0,t._result=e),1===t._status)return t._result.default;throw t._result}function a(e,t){var n=e.length;for(e.push(t);0<n;){var r=n-1>>>1,o=e[r];if(!(0<p(o,t)))break;e[r]=t,e[n]=o,n=r}}function i(e){return 0===e.length?null:e[0]}function l(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;for(var r=0,o=e.length,u=o>>>1;r<u;){var a=2*(r+1)-1,i=e[a],l=a+1,c=e[l];if(p(i,n)<0)r=l<o&&p(c,i)<0?(e[r]=c,e[l]=n,l):(e[r]=i,e[a]=n,a);else{if(!(l<o&&p(c,n)<0))break;e[r]=c,e[l]=n,r=l}}}return t}function p(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}function y(e){for(var t=i(E);null!==t;){if(null===t.callback)l(E);else{if(!(t.startTime<=e))break;l(E),t.sortIndex=t.expirationTime,a(C,t)}t=i(E)}}function d(e){var t;j=!1,y(e),I||(null!==i(C)?(I=!0,m(b)):null!==(t=i(E))&&_(d,t.startTime-e))}function b(e,t){I=!1,j&&(j=!1,se(L),L=-1),$=!0;var n=P;try{for(y(t),R=i(C);null!==R&&(!(R.expirationTime>t)||e&&!q());){var r,o=R.callback;"function"==typeof o?(R.callback=null,P=R.priorityLevel,r=o(R.expirationTime<=t),t=v(),"function"==typeof r?R.callback=r:R===i(C)&&l(C),y(t)):l(C),R=i(C)}var u,a=null!==R||(null!==(u=i(E))&&_(d,u.startTime-t),!1);return a}finally{R=null,P=n,$=!1}}function q(){return!(v()-de<ye)}function m(e){O=e,T||(T=!0,be())}function _(e,t){L=fe(function(){e(v())},t)}function A(e){throw Error("act(...) is not supported in production builds of React.")}var N,h,B,v,z,g=Symbol.for("react.element"),H=Symbol.for("react.portal"),W=Symbol.for("react.fragment"),Y=Symbol.for("react.strict_mode"),G=Symbol.for("react.profiler"),J=Symbol.for("react.provider"),K=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),X=Symbol.for("react.suspense"),Z=Symbol.for("react.memo"),ee=Symbol.for("react.lazy"),te=S
2026-02-24 07:55:02 +08:00
const unpackExcalidraw = () => LZString.decompressFromBase64("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
2026-01-05 13:03:55 +08:00
let {react, reactDOM } = new Function( ` $ { REACT_PACKAGES }; return { react : React , reactDOM : ReactDOM }; `)();
let excalidrawLib = {};
const loadMathjaxToSVG = () => new Function(` $ { LZString . decompressFromBase64 ( "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
2026-02-24 07:55:02 +08:00
const PLUGIN_LANGUAGES = {" ru ": " B4Xg3gwg8gcgagUQEoBUD6BVJAZNKpoBiAktggFwBEghCCB8IIKIggAiCAMIILwggHCCBCIIDIgABO4HYQWoEYQFoDYQQKwgHCfwG8s2XoCYQXoG4QWoC4QZqu6tA0iCBOEF6AREGYHVlADQYYALWIAFNBCxIEMdCTJVABCDNAgiCA / CDMGrRKzDy8nBIagMIggJIg7Eam5rwIwADGAIYANgCWACYATlkA7lb2Ti5Ibh5EpBQ0YhF80XGJyWaqaZm5hSXllg4YAELYxADKABJoE3AA4s5TCBAA0lRQAEYAzoV5WQB2vA4Arpv52wAW5LyA + CC07P4avLH + nMyMEkqAEiDs9LyAWRANEFaIxOOxGGE2Pp / nN5vxjjB5gBaFLqJRWBAAWRGCAAIniAIJjBBoBxIKAOZAoYgICZUahKWgGN7hZRvFjscISQA8IHp / gDVLypJwwpicfiiSS0G5sISaYg0LYoFAsVRADggAW + 72 EEKh0mUelE0P57M4nO5fIFQp5IrCvEALCC0XgARgADG6AKS8WicVi0fxcCQ6f1RGIJCSAZhBnTytTrmLx6LRVG9mFZKe40MQsYT5qSJlAsBBGoA8EE4GkYekigHEQCRgiRiHrZfLFMpWYgwCYoQnYXATCBIRwoKiAYhBU / 6 lEHeE9GOxApwrBgHESUPmB0OqIAUEADnFigVDIgnQoNyN4rGYYh5U4dqkA8iAvcdhDTsKwQZZrDuLfuDhzDyi3SElDrLQzwTc9VHYat2BkCdmWUOtA3YXhT0AXBALyvaJHTvXhAjrCRXneCdn0XGBiTIfA3xWVZZnXX8qAAsJgITQ8wmPdh71YGRYgdbQAj4VD0KDSxeGrUVhD0HC8IItgwi4bhF1 / KAVzXH8 / 2 oCs504H1hCPKRkN4NDL2vbDcM + aSiJfSwMxgNBCQmNAEAADQgHtiDxJBCQAdSoMsKyrPgtGeWd / Fif1nnSZt + jbSx8HmeYyDQLElMaW48I0VRADkQWsDVtMQHViXhPjEdhYyvJs + lbUoESxLIigAawKAB7UoDlfWBEFQNAYCgVc8AIJyXPGdyvKoQAsEFoVggLBPVwkiARmFtcsCpUYxQVjTCavqpqWuUcqWwGXg8QGPIDgAcza + BqQc5zXOG7z / 0 + EQWCEcIDTRe0ACoADoAFNen2spdrRCTvoAWwKV83HlUkYAQe66AEHjIgnQwRLraIxAujrPAaNBVgQBAnCcv9vr + yLKt4EAAD5eFJ / 6 otKL7waxq6vFJNwHDlYtrpJ376Yp6naaZgpeAACn8MJbTeEqdz4fxeGwRrTu2H6AEcAEorDxKBPJgbAoEJPE0HGEYPKQABNKhAFoQYFAlBLTdWECDfRiJDzWYUxPlFFQVq6IWyYqgZ8k2dMqRspzJhpJEurhslCVhnzy0rSIQviCRWViDKOjR + tG1PQAkEAMkt85LQBMEDuQAEEBQwBUEEAbBBAAwQUPMwjrtP1siAFVJBx49LJP / OnCMM6zpIc4x / TC8AIhBq9GkdAEoQavy4r0aJ / r / OULLyua4bqwUA8zsIGwDA8UafPU0nGt0YbHe9 / 7 Q / j8SqAuxlFZ3D / U / 3 iUEC7f8IUHU46MfTmgkDxDQ4JALQloAA4KoUtA7ygHFBKZBCAoCmPHY + RskrH3omlTKUFIhCiZG8UEE0OBGCKiVOBCD8yczslMb8BMYD0U0MwAQehZp8HmmfOIu0Ub / FrLnZg9ArCEHGE4bMuZe5 + UiKtFGPJCqPFCpoWgcilBGhYKwf0MhBBPQvFIdivAA4A0GLDTyWYbImLjgnGgtBEYtDPGEVG0Cwrj14NQEs1Bq6bhruqXgJZRo1ysBYjsMdTHdhGAyGxSM + AozIQo5xBci4l3LhPCugBEEAboAMhBq6BNjsEwkHdiCKm7lYhGUT7GqNiSFeJvBJ7TzntXHxS8V5rxLD4vxATLBBJsg4SkhZ0CeQ7NreGkS7ExPkVUzQLiSwT1Gj4QA1CD5wroAOhB57qmoIAehBfH + OyZ03J5jY7FNJNiXEeIIm2INLBKBcSQIJLcR4rxDStk130khJQXCEwqBCOCJQ + gjBOjiLaVgC5dmmOCRYsJDkJSnOsbY5GDijD8LHgk9eSTeApPSfXLJLyzTMHPnwT5oCuS / MdJoWIgLgVdPbp3SxRyoVnLKWMpxkyElTxnqs3gTTV7rzads7FbyP5yV2l8olqN / lkpFDk0F3TekYH6YMnWkKTn0tGfC8ZijngJOmbMhZyzVkbKedXPlZ9BUEu + cSsV5LKHxVJPrNY2DPjpSynomQbQiFMgAYKYUQKEy5XyoVBsJUFpIU + CAsB + p9EeU8mLYQEg5A6OEL6Z86sETkgQHAWkUbRaBEhP4HkvpGCa0sMfcipI2ajh4hBSIqjjQaNoFooQxpJAGnYBBEwftNoNWakcQQvAti7AKPsI4TA2AtvYPENMlhoAOHNg5MgWJX7Gw7OsGgoRAgzTsQAbQ3f4fwehVBxAALoHqwveat6j / QeptCKZgoswiFqnTOu6bdxgwGXepWga7wGRAAIRbp3Xu7h54cWf1iEek9gJRRXKqbAywHYJhXRfdRfAs7sSv3IAAA3Gp + 8 NMg / 27 v3cwMDN5T1qIgZer17xdrCFiMYOs2lAXMC + rwAAJGAHIWRNg / RyB3HAot1YAF8ADUB9iBrHA6u9dHB7z / v3UhAA5KdIojUTgAAcQByaY6x9jnGcjTGIMgvjQmRNieI7wCT4CpPTnw8 + Xgcnao / SyOpr66HYOdgQ0uvqKH511HmBSJcDJzOxAMJhBTSnVPqd4L + 7 d1nCPHtM2esjzpPXko + bwajtHGD0akIx9sbnOqIc8wgOdC7CRQwCx + 9 dkQ7NFAcxFqLMmtBEewgl2t5GUtUZo3RkQDGvq5fg / ljzyGiuobqIQDy87yvYfYbZgAZiUUGP06t4YA7F8DLWL1Javd6jrGWsvnl665 / r6ACtDeK6N8bpIRMOCpNC99U27FyYyPkFTKmfoFDm1kBbS3osraayRmtG3ARbcoyodLXXhA9b6 + 519 hWzvoG6kgHM2BJuVb4Mtgjf3DQA8gZtijqWweZe69lg7cHodIf6nDhyNQoBICoPnI0oJAEOmDLoHHQO8e7X8IAMRApASChwNmHp2RvoChniS2NAYu8EAMgg0zi4VwRE6N4e4gOg8658PbE7ScC + Xe / XFgqGsFSA2ifn6BoBYhzDAaFuu8VmeUWwP1fa9iHF2loWsrIZANcslr9A4i8x0 + NZEbRjbnX8FbUy8K / MDo9vCN8KMzph0cAguO9sWIemdThFQeuPI7Zgl4HCVEXRUuTmZ7wbUs4kwqAioHQGWbaAOmZ4wMQIE4Q + kjOoyC2XhKrkcigHhARRS3jTjIJQnweQcRkHbevdZirck4P4W8hbsxp / QHCZwsBu8oG8xgeij1jQvRHTIFvKgy9 / CQqeeWkD2 / ZXYleE3iUrfvLbeYBMoNaqdp2j2hPo7k + HausuQg / uAqkQ /+ BeqQn + 7 eSeE6NghSyAEwPYtkBI9Q3glA1uIEtcSyqSJYMuT + qgmueWpupW0K24wgeuKc / oTwlk0Al0nULkSARsyGZa / 4 eEUs4IZBAY3Cvs5gmI1OSAeAFstk8whIHYTCzQqgQWqYwkds2aIgQWmEEgachULCB23cXYl2yUYwUAdqKBAefATskyoQPEd + co3eGG1u3AmEq0jAPIsQYhCsWQKAP0jkYs542aJUdYwkAAOh4QABAnSNSgxgAHD8ZgB1T8aUy8BeEAAwJQGQgR36wRdU36osBwyIdU6s8R6szmlgr8yAxs0MjkdOQEDoU42aeuIYdaho4gIe2A9hjhVgouz8ZAdkMMPUdIO + tAeCdi38v8Bo80i0NmzoqigQrwGgfOlgSANgaAmhtOlA0xOEyYgOiKDYzANwgA6CCCKzRhjAiUY9pzY / RvYHSCayA6JNr6Kq67ZE5AZIRNQZBfQqZKYqbbD1HICTHTFMJKCiiMDErzTDFPDzGqCLGXzNC9oDhrEbERBbGpiyC8B7EHGAxHFB5VGWbnHg4MYIg3F3EPFPHjGvEDheavz0izED
const PLUGIN_VERSION = "2.20.5" ; function _interopNamespace ( e ){ if ( e && e . __esModule ) return e ; var t = Object . create ( null ); return e && Object . keys ( e ). forEach (( function ( i ){ if ( "default" !== i ){ var a = Object . getOwnPropertyDescriptor ( e , i ); Object . defineProperty ( t , i , a . get ? a : { enumerable :! 0 , get : function (){ return e [ i ]}})}})), t . default = e , Object . freeze ( t )} var obsidian_module__namespace = _interopNamespace ( obsidian_module ), React__namespace = _interopNamespace ( React ); let random$3 = e => crypto . getRandomValues ( new Uint8Array ( e )), customRandom = ( e , t , i )=>{ let a = ( 2 << Math . log ( e . length - 1 ) / Math . LN2 ) - 1 , n =-~ ( 1.6 * a * t / e . length ); return ( s = t )=>{ let r = "" ; for (;;){ let t = i ( n ), o = n ; for (; o -- ;) if ( r += e [ t [ o ] & a ] || "" , r . length === s ) return r }}}, customAlphabet = ( e , t = 21 )=> customRandom ( e , t , random$3 ), nanoid$1 = ( e = 21 )=> crypto . getRandomValues ( new Uint8Array ( e )). reduce ((( e , t )=> e + (( t &= 63 ) < 36 ? t . toString ( 36 ) : t < 62 ? ( t - 26 ). toString ( 36 ). toUpperCase () : t > 62 ? "-" : "_" )), "" ); const durationTreshold = 0 ; function setDebugging ( e ){ DEBUGGING =! 1 } let DEBUGGING =! 1 ; const log$2 = console . log . bind ( window . console ), debug = ( e , t ,... i )=>{ console . log ( t ,... i )}; class CustomMutationObserver { originalCallback ; observer ; name ; constructor ( e , t ){ this . originalCallback = e , this . observer = null , this . name = t } observe ( e , t ){ this . observer = new MutationObserver (( async ( e , t )=>{ const i = performance . now (); await this . originalCallback ( e , t ); const a = performance . now () - i ; a > durationTreshold && console . log ( `Excalidraw ${ this . name } MutationObserver callback took ${ a } ms to execute` , t )})), this . observer . observe ( e , t )} disconnect (){ this . observer && ( this . observer . disconnect (), this . observer = null )}} class ErrorHandler { static instance ; errorLog = []; errorNoticeTimeout = 1e4 ; maxLogEntries = 100 ; constructor (){} static getInstance (){ return ErrorHandler . instance || ( ErrorHandler . instance = new ErrorHandler ), ErrorHandler . instance } handleError ( e , t , i =! 0 , a ){ const n = "string" == typeof e ? new Error ( e ) : e ; if ( console . error ( `[Excalidraw Error] in ${ t } :` , n ), this . errorLog . push ({ error : n , context : t , timestamp : Date . now ()}), this . errorLog . length > this . maxLogEntries && ( this . errorLog = this . errorLog . slice ( this . errorLog . length - this . maxLogEntries )), i ){ const e = this . formatErrorForUser ( n , t ); new obsidian_module . Notice ( e , a || this . errorNoticeTimeout )}} safeEval ( e , t , i , a ){ try { return i . eval . call ( i , e )} catch ( e ){ if ( this . handleError ( e , `SafeEval in ${ t } ` ), void 0 !== a ) return a ; throw e }} wrapWithTryCatch ( e , t , i ){ try { return e ()} catch ( e ){ if ( this . handleError ( e , t ), void 0 !== i ) return i ; throw e }} formatErrorForUser ( e , t ){ let i = e . message ; return i . includes ( "Cannot read properties of undefined" ) ? i = "A required object was not available. This might be due to a plugin loading issue." : i . includes ( "is not a function" ) ? i = "A required function was not available. This might be due to a plugin version mismatch." : i . length > 100 && ( i = i . substring ( 0 , 100 ) + "..." ), `Excalidraw Error: ${ i } (in ${ t } )` } getErrorLog (){ return [... this . errorLog ]} clearErrorLog (){ this . errorLog = []}} const errorHandler = ErrorHandler . getInstance (); let EXCALIDRAW_PLUGIN = null ; const setExcalidrawPlugin = e =>{ EXCALIDRAW_PLUGIN = e }, THEME = { LIGHT : "light" , DARK : "dark" }, MD_EXCALIDRAW = "# Excalidraw Data" , MD_TEXTELEMENTS = "## Text Elements" , MD_ELEMENTLINKS = "## Element Links" , MD_EMBEDFILES = "## Embedded Files" , MD_DRAWING = "## Drawing" , MD_EX_SECTIONS = [ MD_EXCALIDRAW , MD_TEXTELEMENTS , MD_ELEMENTLINKS , MD_EMBEDFILES , MD_DRAWING ], ERROR_IFRAME_CONVERSION_CANCELED = "iframe conversion canceled" , LOCALE = localStorage . getItem ( "language" ) ? . toLowerCase () || "en" , CJK_FONTS = "CJK Fonts" , obsidianToExcalidrawMap = { en : "en-US" , af : "af-ZA" , am : "am-ET" , ar : "ar-SA" , eu : "eu-ES" , be : "be-BY" , bg : "bg-BG" , bn : "bn-BD" , ca : "ca-ES" , cs : "cs-CZ" , da : "da-DK" , de : "de-DE" , el : "el-GR" , eo : "eo-EO" , es : "es-ES" , fa : "fa-IR" , "fi-fi" : "fi-FI" , fr : "fr-FR" , gl : "gl-ES" , he : "he-IL" , hi : "hi-IN" , hu : "hu-HU" , id : "id-ID" , it : "it-IT" , ja : "ja-JP" , ko : "ko-KR" , lv : "lv-LV" , ml : "ml-IN" , ms : "ms-MY" , nl : "nl-NL" , no : "nb-NO" , oc : "oc-FR" , pl : "pl-PL" , pt : "pt-PT" , "pt-BR" : "pt-BR" , ro : "ro-RO" , ru : "ru-RU" , sr : "sr-RS" , se : "sv-SE" , sk : "sk-SK" , sq : "sq-AL" , ta : "ta-IN" , te : "te-IN" , th : "th-TH" , tr : "tr-TR" , uk : "uk-UA" , ur : "ur-PK" , vi : "vi-VN" , zh : "zh-CN" , "zh-tw" : "zh-TW" }; let { sceneCoordsToViewportCoords : sceneCoordsToViewportCoords , viewportCoordsToSceneCoords : vie
2026-01-05 13:03:55 +08:00
/* nosourcemap */