@mrakomor/core 0.0.4 → 0.0.6

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.
@@ -1,5 +1,5 @@
1
- var On=class{next(...e){}error(...e){}complete(...e){}},qe=class{#t=new Set;pipe(...e){return e.reduce((t,n)=>n(t),this)}next(...e){Array.from(this.#t).forEach(t=>{typeof t=="function"?t(...e):t.next(...e)})}error(...e){Array.from(this.#t).forEach(t=>{t?.error?.(...e),this.unsubscribe(t)})}complete(...e){Array.from(this.#t).forEach(t=>{t?.complete?.(...e),this.unsubscribe(t)})}subscribe(e){return this.#t.add(e),{unsubscribe:()=>{this.unsubscribe(e)}}}unsubscribe(e){this.#t.delete(e)}};var ge=Symbol("@esmj/signals:type"),Yt=Symbol("@esmj/signals:name"),Wt=null;var O=null,ar=0,cr=new Set,Ye=!1,We=[];function M(e){let t=O;O=null;let n=e();return O=t,n}function ur(){Ye=!1;let e=jn();for(let n of e)n.get();let t=We;We=[];for(let n of t)n()}function Dn(){Ye||(Ye=!0,queueMicrotask(ur))}function Xe(e){We.push(e),Dn()}var Hn=Symbol("@esmj/signals:internal observable"),Q=Symbol("@esmj/signals:original function"),pr=class extends qe{#t=new Set;#n=null;constructor(e){super(),this.#n=e,this.pipe(t=>{let n=t.subscribe.bind(t),o=t.unsubscribe.bind(t);return t.subscribe=r=>{n(r),this.#t.add(r)},t.unsubscribe=r=>{o(r),this.#t.delete(r)},t})}watch(e){if(typeof e.next!="function"&&(e.next=()=>M(()=>{this.#t.add(e),this.#n()}),e.next[Q]=void 0),e instanceof Fn&&e.next[Q]===void 0){let t=e.next.bind(e);e.next=()=>M(()=>{this.#t.add(e),t(),this.#n()}),e.next[Q]=t}return this.subscribe(e)}getPending(){let e=[];for(let t of this.#t){if(!t.get[Q]){let n=t.get,o=n.bind(t);t.get=()=>M(()=>(this.#t.delete(t),o())),t.get[Q]=n}e.push(t)}return e}unwatch(e){return e.next=e.next[Q]?e.next[Q]:e.next,e.get=e.get[Q]?e.get[Q]:e.get,this.#t.delete(e),this.unsubscribe(e)}},he=null;function $n(e){he=new pr(e)}$n(()=>{Dn()});function jn(){return he.getPending()}function Kn(e){return he.watch(e)}function Un(e){return he.unwatch(e)}var Z=Symbol("@esmj/signals:no error"),Fn=class Vn extends On{#t=!0;#n=!1;#e=null;#o=this.#m();#s=null;#l=null;#a=0;#i=new Map;#r=Z;constructor(t,n){super(),this.#s=t,this.#l=n,this.debug=n?.debug,this[ge]="computed",this[Yt]=n?.debug??null,this.get=this.get.bind(this),Wt?.onComputedCreate?.(this)}#c(){for(let{unsubscribe:t}of this.#o.dependencies.values())t();this.#o.dependencies.clear()}#m(){return{dependencies:new Map,sourceRevisions:new Map,observer:this}}getRevision(){return this.#a}getDebugInfo(){return{name:this[Yt],dirty:this.#t,revision:this.#a,sourceDependencies:[...this.#i.keys()]}}#p(){for(let[t,n]of this.#i)if(t instanceof Vn&&M(()=>t.get()),t.getRevision()!==n)return!0;return!1}next(){this.#t=!0,this.#e[Hn].next()}get(){if(this.#n)throw new Error("Cycle detected in computed signal");if(this.#e||(this.#e=S(this.#u(),this.#l)),(this.#t||this.#r!==Z)&&(this.#i.size===0||this.#p()?this.#u():this.#t=!1),O&&O.sourceRevisions.set(this,this.#a),this.#r!==Z)throw this.#r;return this.#e.get()}peek(){if(this.#e||(this.#e=S(this.#u(),this.#l)),(this.#t||this.#r!==Z)&&(this.#i.size===0||this.#p()?this.#u():this.#t=!1),this.#r!==Z)throw this.#r;return this.#e.peek()}#u(){this.#n=!0,this.#t=!1,this.#r=Z,Wt?.onComputedRun?.(this),this.#c(),this.#o.sourceRevisions.clear();let t=O;O=this.#o;let n;try{n=this.#s()}catch(o){this.#r=o}return O=t,this.#i=this.#o.sourceRevisions,this.#o.sourceRevisions=new Map,this.#n=!1,n instanceof Promise&&(n=n.then(o=>{this.#r=Z,this.#e.set(o)}).catch(o=>{this.#r=o})),this.#r===Z&&this.#e&&this.#e.set(n),this.#a++,n}destroy(){this.#c(),this.#i.clear(),this.#t=!0,this.#r=Z}};function D(e,t){return new Fn(e,t)}function tt(e,t){let n,{debug:o,...r}=t??{},s=D(()=>{n?.(),n=e()},{equals:()=>!1,...r});s.get(),Kn(s);let i=()=>{n?.(),s.destroy(),Un(s)};return i[Symbol.dispose]=i,i[ge]="effect",i[Yt]=o??null,i.__RX_COMPUTED__=s,Wt?.onEffectCreate?.(i),i}function S(e,t={}){let n=t?.equals??Object.is,o=0,r=new qe;function s(){return O&&(O.dependencies.set(r,r.subscribe(O.observer)),O.sourceRevisions.set(c,o)),e}function i(){return e}function l(u){if(!n(e,u)){let p=e;e=u,o++,Wt?.onSignalSet?.(c,p,u),ar>0?cr.add(r):r.next()}return e}function a(){return o}let c={get:s,set:l,peek:i,getRevision:a,[Hn]:r,[ge]:"signal",[Yt]:t?.debug??null};return Wt?.onSignalCreate?.(c),c}function Ee(){return Date.now().toString(32).substring(5)+Math.random().toString(32).substring(2)}var St=class{constructor(e){this.props=e}},Xn=Symbol("node-component"),ye=Symbol("node-internal"),Jn=Symbol("keep-literal");function Qn(e){let t=()=>e;return t[Jn]=!0,t}function V(e){let t=null,n=()=>t,o=s=>(t=s??null,typeof e=="function"&&e(t),t),r={get:n,set:o,[Symbol.toPrimitive](){return t?String(t):""}};return Object.defineProperty(r,"current",{get(){return t},set(s){o(s)},enumerable:!0,configurable:!1}),new Proxy(r,{get(s,i,l){if(Reflect.has(s,i))return Reflect.get(s,i,l);if(!t)return;let a=t[i];return typeof a=="function"?a.bind(t):a},set(s,i,l,a){return Reflect.has(s,i)||!t?Reflect.set(s,i,l,a):(t[i]=l,!0)},has(s,i){return Reflect.has(s,i)||!!t&&i in t}})}var Zn=null;function et(){return Zn}function Ce(e){Zn=e}function Qt(e){return e[Xn]||null}function mr(e,t){e[Xn]=t}function Qe(e,t={disposers:[],id:Ee()}){return e?.[ye]?e[ye]:(e&&(e[ye]=t),t)}function fr(e){return e[ye]}function gt(e,t){let n=fr(e);n||(n=Qe(e)),n.disposers.push(t)}function Xt(e,t,n){e.has(t)||e.set(t,[]),e.get(t).push(n)}function xt(e,t){let n=et();Ce(e);try{return t()}finally{Ce(n)}}var xe=new Map,Jt=new Map,Gn=new Map;function dr(e){let t=Object.create(null);for(let n of Object.keys(e)){let o=e[n];n==="children"?t[n]=o:o?.[Jn]?t[n]=o():o!=null&&typeof o.get=="function"?t[n]=o:typeof o=="function"?t[n]=D(o):t[n]=S(o)}return t}function to(e,t){if(e===t)return!0;if(e==null||t==null||typeof e!="object"||typeof t!="object")return!1;let n=Object.keys(e),o=Object.keys(t);return n.length!==o.length?!1:n.every(r=>{let s=Object.getOwnPropertyDescriptor(e,r),i=Object.getOwnPropertyDescriptor(t,r);if(!s||!i)return!1;let l="value"in s?s.value:s.get?.call(e),a="value"in i?i.value:i.get?.call(t);return to(l,a)})}function eo(e){return{id:Symbol("context-id"),defaultValue:e}}function no(e,t){let n=et();n&&n.contexts.set(e.id,t)}function Se(e){let t=et();return t?.contexts?.has(e.id)?t.contexts.get(e.id):e.defaultValue}function Zt(e){let t=et();if(!t){console.warn("onMount called outside of a component context");return}Xt(xe,t.id,e)}function Ze(e){let t=et();if(!t){console.warn("onUnmount called outside of a component context");return}Xt(Jt,t.id,e)}function x(e){Xe(()=>{setTimeout(e,0)})}function ke(e){let t=e.componentId,n=xe.get(t);if(n){xe.delete(t);for(let o of n){let r=o();typeof r=="function"&&Xt(Jt,t,r)}}}function gr(e){let t=Jt.get(e);if(t){Jt.delete(e);for(let n of t)n()}}function hr(e){let t=Gn.get(e);if(t){Gn.delete(e);for(let n of t)n()}}function te(e){if(!e)return;let t=Qe(e);if(t?.disposers?.length){for(let o of t.disposers)try{o()}catch(r){console.error("[esmj-dom] cleanupTree: disposer threw, cleanup continues",r)}t.disposers=[]}let n=Qt(e);if(n&&(gr(n.componentId),hr(n.componentId)),e.childNodes){let o=e.firstChild;for(;o;){let r=o.nextSibling;te(o),o=r}}}function kt(e){return e!=null&&typeof e=="object"&&typeof e.$constructor=="function"}function Er(e){return typeof e=="function"&&typeof e.prototype?.render=="function"}function yr(e,t,n){let o=Ee(),r={componentId:o,$children:n,element:null,classInstance:null,$constructor(){let s={...dr(t??{}),children:n},i=et(),l={disposers:[],id:o,contexts:new Map(i?.contexts)};Ce(l);let a;if(Er(e)){r.ClassConstructor=e;let u=new e(s);r.classInstance=u,typeof u.onMount=="function"&&Xt(xe,o,()=>{u.onMount?.()}),typeof u.onUnmount=="function"&&Xt(Jt,o,()=>{u.onUnmount?.()}),a=u.render()}else a=e(s);Ce(i);let c=br(a);return r.element=c,Qe(c,l),c instanceof Node&&mr(c,r),c}};return r}function oo(e,t){let n=t.$constructor();n instanceof Node&&e.appendChild(n),queueMicrotask(()=>{ke(t)})}function br(e){return e instanceof Node?e:kt(e)?e.$constructor():typeof e=="string"||typeof e=="number"?document.createTextNode(String(e)):document.createTextNode("")}var zn={className:"class",htmlFor:"for"},qn=new Set(["value","defaultValue","checked","selected","indeterminate"]),Cr=new Set(["srcdoc"]),xr=new Set(["href","src","action","formaction","xlink:href"]),Sr=new Set(["securitypolicyviolation"]),kr=new Set(["contenteditable","draggable","spellcheck"]);function be(e){return e!=null&&typeof e=="object"&&typeof e.get=="function"&&!(e instanceof Node)}function d(e,t,n){if(typeof e=="function")return yr(e,t||{},n);typeof e!="string"&&(n=t,t=e,e="div"),t=t||{};let o=document.createElement(e);return t.id&&o.setAttribute("id",t.id),Rr(o,t),so(o,vr(n)),o}function Je(e,t){t instanceof DocumentFragment?e.replaceChildren(t):e.innerHTML=t??""}function Ar(e){return typeof e!="string"?!1:e.replace(/[\p{White_Space}\p{Cc}]+/gu,"").toLowerCase().startsWith("javascript:")}function _r(e,t){if(typeof e!="string")return!1;let n=e.toLowerCase();return Cr.has(n)?!0:xr.has(n)&&t!==null&&t!==void 0&&Ar(String(t))}function ro(e){return typeof e!="string"?e:zn[e]?zn[e]:e}function Nr(e,t){let n=ro(e),o=typeof n=="string"?n.toLowerCase():String(n).toLowerCase();return kr.has(o)&&(t===!0||t===!1||t==="true"||t==="false")?String(t):t==null||t===!1?null:t}function Yn(e,t,n){let o=Nr(t,n);if(o===null){e.removeAttribute(t);return}if(_r(t,o)){e.removeAttribute(t),console.warn(`[esmj-dom] Blocked unsafe attribute "${String(t)}" on <${e.tagName.toLowerCase()}>`);return}e.setAttribute(t,o)}function Rr(e,t){let n=et();for(let[o,r]of Reflect.ownKeys(t).map(s=>[s,t[s]]))if(o!=="id"){if(o=ro(o),o==="$ref"){typeof r=="function"?r(e):typeof r=="object"&&r!==null&&(r.current=e);continue}if(o==="$dangerouslySetInnerHTML"){if(be(r)){let s=tt(()=>{xt(n,()=>{Je(e,r.get())})});gt(e,s)}else if(typeof r=="function"){let s=tt(()=>{xt(n,()=>{Je(e,r())})});gt(e,s)}else Je(e,r);continue}if(o==="style"){if(be(r)){let s=tt(()=>{xt(n,()=>{Object.assign(e.style,r.get())})});gt(e,s)}else typeof r=="object"&&r!==null?Object.assign(e.style,r):e.setAttribute("style",r);continue}if(typeof o=="string"&&o.startsWith("on")&&typeof r=="function"){let s=o.slice(2).toLowerCase();if(Sr.has(s)){console.warn(`[esmj-dom] Blocked unsafe event binding "${o}" on <${e.tagName.toLowerCase()}>`);continue}e.addEventListener(s,r);continue}if(be(r)||typeof r=="function"){let s=o,i=tt(()=>{xt(n,()=>{let l=typeof r=="function"?r():r.get();qn.has(s)?e[s]=l??"":Yn(e,s,l)})});gt(e,i);continue}qn.has(o)||typeof o=="symbol"?e[o]=r??"":Yn(e,o,r)}}function vr(e){return e==null?[]:Array.isArray(e)?e.flat(Number.POSITIVE_INFINITY):[e]}function so(e,t){for(let n of t)Ir(e,n)}function Ir(e,t){if(!(t==null||t===!1||t===!0)){if(t instanceof Node){e.appendChild(t);return}if(typeof t=="string"||typeof t=="number"){e.appendChild(document.createTextNode(String(t)));return}if(typeof t=="function"){Wn(e,t);return}if(kt(t)){oo(e,t);return}if(be(t)){Wn(e,()=>t.get());return}if(Array.isArray(t)){so(e,t);return}e.appendChild(document.createTextNode(String(t)))}}function Wn(e,t){let n=et(),o=document.createComment("");e.appendChild(o);let r=null,s=tt(()=>{xt(n,()=>{let i=t(),l,a=null;i instanceof Node?l=i:kt(i)?(l=i.$constructor(),a=i,l instanceof Node||(l=null)):i==null||i===!1||i===!0?l=null:l=document.createTextNode(String(i)),r&&(te(r),r.remove()),l&&(o.after(l),a&&queueMicrotask(()=>ke(a))),r=l??null})});gt(e,s)}function Ae(e,t,n){let o=document.createElement("span");o.style.display="contents",o.setAttribute("data-each",Ee());let r=et(),s=[],i=new Map,l=D(()=>e()),a=tt(()=>{let c=l.get(),u=[],p=[],f=new Set;for(let b=0;b<c.length;b++){let C=c[b],A=t(C,b);if(f.has(A)){console.error(`Each: duplicate key "${String(A)}" detected; ignoring later item at index ${b}`);continue}f.add(A),u.push(C),p.push(A)}let h=new Map(s.map(b=>[b.key,b])),E=[];for(let b=0;b<u.length;b++){let C=p[b],A=u[b],F=h.get(C);if(F)i.get(C).set(A),E.push(F),h.delete(C);else{let zt=S(A,{equals:to});i.set(C,zt);let Ct={...zt,set(){}},it={key:C,element:null},z;xt(r,()=>{if(z=n(Ct,b),z instanceof Node)it.element=z;else if(kt(z)){let L=z.$constructor();it.element=L instanceof Node?L:null,queueMicrotask(()=>ke(z))}}),E.push(it)}}for(let[b,C]of h)C.element&&(te(C.element),C.element.remove()),i.delete(b);let y=o.childNodes;for(let b=0;b<E.length;b++){let C=E[b];if(!C.element)continue;let A=y[b];A!==C.element&&o.insertBefore(C.element,A||null)}s=E});return gt(o,a),o}function B(e,t){if(typeof e=="string"&&(e=document.querySelector(e)),!e)throw new Error("mount: container not found");e instanceof DocumentFragment||(te(e),e.innerHTML=""),kt(t)?oo(e,t):t instanceof Node?e.appendChild(t):e.appendChild(document.createTextNode(String(t)))}function io(e){if(typeof e=="string"&&(e=document.querySelector(e)),!e)throw new Error("unmount: container not found");te(e),e.innerHTML=""}function At(e,t){let n=null;if(kt(t)?(n=t.$constructor(),queueMicrotask(()=>ke(t))):t instanceof Node?n=t:n=document.createTextNode(String(t)),n instanceof HTMLElement){let o=D(()=>!!e()),r=tt(()=>{n.style.display=o.get()?"":"none"});gt(n,r)}return n}var Lr=".molecule__figure{padding:12px 6px;background-color:#f0f0f0}.molecule__figure .image{aspect-ratio:16/9;background-color:#d3d3d3}.namespace-unknown-unknowncomponent{background-color:#f0f0f0;padding:12px 0;margin-bottom:8px}.mrakomor-editor:focus-visible{outline:none}.dialog[open]{background-color:#fff;border:1px solid black;border-radius:8px;box-shadow:0 0 5px #0000001a;padding:12px;display:flex;flex-flow:row wrap;justify-content:space-between;.dialog-controls{text-align:right;width:100%;.dialog-button-close{background-color:#f0f0f0;border:1px solid black;border-radius:4px;color:#000;cursor:pointer;display:inline-block;font-size:14px;margin-right:1px;padding:4px 8px;text-align:center}}.dialog-container{width:100%}}.mrakomor-tooltip{position:absolute;z-index:9100;display:flex;flex-direction:row;align-items:center;gap:2px;background:#1a1a1a;border-radius:6px;padding:4px 6px;box-shadow:0 3px 10px #00000040;pointer-events:all;white-space:nowrap}.mrakomor-tooltip__btn{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;min-width:28px;min-height:28px;padding:0 6px;transition:background .1s}.mrakomor-tooltip__btn:hover{background:#ffffff26}.mrakomor-tooltip__btn--active{background:#ffffff40;color:#7dd3fc}.mrakomor-tooltip__separator{width:1px;height:18px;background:#fff3;margin:0 4px;flex-shrink:0}.mrakomor-tools-container,.mrakomor-content{position:relative}.mrakomor-content h1,.mrakomor-content h2,.mrakomor-content h3,.mrakomor-content h4,.mrakomor-content h5,.mrakomor-content p{margin-top:0}.molecule-list-list{margin:0 0 1em;padding-inline-start:1.5em}.molecule-list-list li{margin:.25em 0;outline:none}.molecule-list-list li:focus{outline:none}.molecule-list-list li[data-depth=\"1\"]{margin-inline-start:1.5em}.molecule-list-list li[data-depth=\"2\"]{margin-inline-start:3em}.molecule-list-list li[data-depth=\"3\"]{margin-inline-start:4.5em}.mrakomor-block-element{position:relative;padding-left:52px;margin-bottom:12px}.mrakomor-block-gutter{position:absolute;left:0;top:2px;display:flex;align-items:center;gap:2px;opacity:0;transition:opacity .15s ease;pointer-events:all;user-select:none;z-index:1}.mrakomor-block-element:hover .mrakomor-block-gutter,.mrakomor-block-element--active .mrakomor-block-gutter,.mrakomor-block-drag-active .mrakomor-block-gutter{opacity:1}.mrakomor-block-add,.mrakomor-block-drag{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:4px;background:transparent;color:#9ca3af;cursor:pointer;font-size:18px;line-height:1;transition:background .1s,color .1s}.mrakomor-block-add:hover,.mrakomor-block-drag:hover{background:#0000000f;color:#374151}.mrakomor-block-drag{cursor:grab}.mrakomor-block-element--dragging .mrakomor-block-drag,.mrakomor-block-drag-active .mrakomor-block-drag{cursor:grabbing}.mrakomor-block-element--dragging{opacity:.5}.mrakomor-block-body{min-width:0}.mrakomor-block-drop-indicator{position:absolute;left:52px;right:0;height:2px;background:#3b82f6;border-radius:1px;pointer-events:none;z-index:2}.mrakomor-block-insert-menu{position:absolute;z-index:9200;display:flex;flex-direction:column;gap:2px;min-width:120px;background:#1a1a1a;border-radius:6px;padding:4px;box-shadow:0 3px 10px #00000040;pointer-events:all}.mrakomor-block-insert-menu__item{display:flex;align-items:center;width:100%;padding:6px 10px;border:none;border-radius:4px;background:transparent;color:#fff;cursor:pointer;font-size:13px;font-weight:600;text-align:left;transition:background .1s}.mrakomor-block-insert-menu__item:hover{background:#ffffff26}.link-toolbar{display:flex;flex-direction:column;gap:6px}.link-toolbar__row{display:flex;align-items:center;gap:4px;min-width:0}.link-toolbar__href{flex:1;min-width:0;font-size:13px;color:#1a73e8;text-decoration:underline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.link-toolbar__sep{width:1px;height:18px;background:#e0e0e0;flex-shrink:0;margin:0 2px}.link-toolbar__btn{display:flex;align-items:center;justify-content:center;flex-shrink:0;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#555;&:hover{background:#f0f0f0;color:#222}}.link-toolbar__btn--danger{&:hover{color:#d32f2f;background:#fdecea}}.link-toolbar__input{flex:1;min-width:0;border:1px solid #dadce0;border-radius:4px;padding:4px 8px;font-size:13px;outline:none;&:focus{border-color:#1a73e8;box-shadow:0 0 0 2px #1a73e833}}.link-toolbar__select{flex-shrink:0;border:1px solid #dadce0;border-radius:4px;padding:4px 6px;font-size:13px;background:#fff;cursor:pointer}.atom-tts-voice{position:relative;border-radius:2px;display:inline-block}.atom-tts-voice:before{content:attr(data-voice-label);position:absolute;top:-1.1em;left:0;font-size:10px;line-height:1;white-space:nowrap;padding:1px 4px;border-radius:3px;pointer-events:none;font-weight:600}.tts-voice--man{background:#e8f0fe;color:#174ea6}.tts-voice--man:before{background:#1a73e8;color:#fff}.tts-voice--woman{background:#f3e8fd;color:#5e35b1}.tts-voice--woman:before{background:#7b1fa2;color:#fff}.tts-voice-toolbar{display:flex;flex-direction:column;gap:6px}.tts-voice-toolbar__row{display:flex;align-items:center;flex-wrap:wrap;gap:4px;min-width:0}.tts-voice-toolbar__voice{flex-shrink:0;border:1px solid #dadce0;border-radius:4px;padding:4px 8px;font-size:12px;background:#fff;color:#333}.tts-voice-toolbar__voice--man{border-color:#1a73e8;color:#174ea6}.tts-voice-toolbar__voice--woman{border-color:#7b1fa2;color:#5e35b1}.tts-voice-toolbar__voice--active{font-weight:600}.tts-voice-toolbar__voice--man.tts-voice-toolbar__voice--active{background:#e8f0fe}.tts-voice-toolbar__voice--woman.tts-voice-toolbar__voice--active{background:#f3e8fd}.tts-voice-toolbar__sep{width:1px;height:18px;background:#e0e0e0;flex-shrink:0;margin:0 2px}.tts-voice-toolbar__btn{display:flex;align-items:center;justify-content:center;flex-shrink:0;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#555}.tts-voice-toolbar__btn:hover{background:#f0f0f0;color:#222}.tts-voice-toolbar__btn--danger:hover{color:#d32f2f;background:#fdecea} ",lo=Lr;var Mr={abortEarly:!0};function on(e,t){if(t===void 0)return e;let n=e?.cause?.key?`${t}.${e.cause.key}`:`${t}`;return{message:`Error parsing key "${n}": ${e.message}`,cause:{key:n}}}function Br(e,t,n){if(e.errors?.length)for(let o=0;o<e.errors.length;o++)t.push(on(e.errors[o],n))}function uo(e,t,n,o){if(n!==!1){let r=on(e.error,t);return{success:!1,error:r,errors:[r]}}Br(e,o,t)}function _e(e){return e?.abortEarly!==void 0?e:Mr}function tn(e,t){H(e,"_parse",(n,o,r)=>{let s=n(o,r);return!s.success&&t(o)?{success:!0,data:o}:s})}var ee=e=>typeof e=="string"||e instanceof String,en=e=>(typeof e=="number"||e instanceof Number)&&!Number.isNaN(e),nn=e=>e===!0||e===!1,Pr=e=>e instanceof Date&&!Number.isNaN(e.getTime()),wr=e=>typeof e=="function",Tr=e=>Array.isArray(e),po=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function mo(e,t){let n=G(po,{...t,type:"object"});return n._getDescription=()=>`object({ ${Object.entries(e).map(([o,r])=>`${o}: ${r._getDescription()}`).join(", ")} })`,H(n,"_parse",(o,r,s)=>{let i=o(r,s),{abortEarly:l}=_e(s);if(i.success===!1)return i;let a={},c=[];for(let u in e){let p=e[u]._parse(i.data[u],s);if(p.success)a[u]=p.data;else{let f=uo(p,u,l,c);if(f)return f}}return c.length>0?{success:!1,error:c[0],errors:c}:{success:!0,data:a}}),n}function rn(e){return G(ee,{...e,type:"string"})}function sn(e){return G(en,{...e,type:"number"})}function ln(e){return G(nn,{...e,type:"boolean"})}function an(e){return G(Pr,{...e,type:"date"})}function fo(e){return G(wr,{...e,type:"function"})}function go(e,t){let n=i=>e.includes(i),o=i=>`Invalid ${r} value. Expected ${e.map(l=>`"${l}"`).join(" | ")}, received "${i}".`,r="enum",s=G(n,{message:o,...t,type:r});return s._getDescription=()=>`enum(${e.map(i=>`"${i}"`).join(" | ")})`,s}function ho(e,t){let n=G(Tr,{...t,type:"array"});return n._getDescription=()=>`array(${e._getDescription()})`,H(n,"_parse",(o,r,s)=>{let i=o(r,s),{abortEarly:l}=_e(s);if(i.success===!1)return i;let a=[],c=[];for(let u=0;u<i.data.length;u++){let p=e._parse(i.data[u],s);if(p.success)a.push(p.data);else{let f=uo(p,u,l,c);if(f)return f}}return c.length>0?{success:!1,error:c[0],errors:c}:{success:!0,data:a}}),n}function Eo(){return G(()=>!0)}function _t(e,t){return H(t,"_parse",(n,o,r)=>(o=e(o),n(o,r))),t}function yo(e,t){let n=r=>`Invalid union value. Expected the value to match one of the schemas:${e.map((s,i)=>` ${i+1}. ${s._getDescription()}`).join(",")} but received "${typeof r}" with value: ${po(r)?JSON.stringify(r):`"${r}"`}`,o=G(()=>!1,{message:n,...t,type:"union"});return H(o,"_parse",(r,s,i)=>{let l=i,a=[];for(let f=0;f<e.length;f++){let h=e[f]._parse(s,l);if(h.success)return h;a.push(h)}let{abortEarly:c}=_e(l),u={message:typeof n=="function"?n(s):n};if(c!==!1)return{success:!1,error:u,errors:[u]};let p=[];for(let f=0;f<a.length;f++){let h=a[f].errors;if(h?.length)for(let E=0;E<h.length;E++)h[E].cause?.key&&p.push(on(h[E],`branch ${f}`))}return p.length===0&&p.push(u),{success:!1,error:p[0],errors:p}}),o}function bo(e,t){let n=G(o=>o===e,{message:o=>t?.message?typeof t.message=="function"?t.message(o):t.message:`Expected literal value "${e}", received "${o}"`,name:t?.name,type:"literal"});return n._getDescription=()=>`literal("${e}")`,n}var Co={boolean(e){let t=e?.message??(n=>`Cannot cast "${n}" to boolean. Accepted: true/false, 1/0, yes/no, on/off.`);return _t(n=>{let o;return ee(n)&&(o=n.toLowerCase()),o==="true"||o==="yes"||o==="on"||o==="1"||n===1?!0:o==="false"||o==="no"||o==="off"||o==="0"||n===0?!1:n},ln({...e,message:t}))},number(e){let t=e?.message??(n=>`Cannot cast "${n}" to a number. Expected a numeric string or number.`);return _t(n=>{if(nn(n))return Number(n);if(ee(n)){let o=n.trim();if(o==="")return n;let r=Number(o);if(Number.isFinite(r))return r}return n},sn({...e,message:t}))},string(e){let t=e?.message??(n=>`Cannot cast "${n}" to string. Expected a string, number, or boolean.`);return _t(n=>nn(n)||en(n)&&Number.isFinite(n)?String(n):n,rn({...e,message:t}))},date(e){let t=e?.message??(n=>`Cannot cast "${n}" to a valid date.`);return _t(n=>{let o;return ee(n)&&(o=n.trim()),en(n)&&Number.isFinite(n)||o?new Date(o??n):n},an({...e,message:t}))},json(e,t){let n=t?.message??(o=>`Cannot parse "${o}" as JSON.`);return H(e,"_parse",(o,r,s)=>{if(ee(r))try{r=JSON.parse(r)}catch{let i={message:typeof n=="function"?n(r):n};return{success:!1,error:i,errors:[i]}}return o(r,s)}),e}},xo={},m={object:mo,string:rn,number:sn,boolean:ln,date:an,function:fo,enum:go,array:ho,any:Eo,preprocess:_t,union:yo,literal:bo,coerce:xo,cast:Co};function ao(e){return t=>`The value "${t}" must be type of ${e} but is type of "${typeof t}".`}function H(e,t,n){let o=e[t];e[t]=(...r)=>n(o,...r)}function G(e,{type:t="any",name:n,message:o}={}){o=o||ao(t);let r={name:n,message:o,type:t},s={_getName(){return n},_getType(){return t},_getDescription(){return this._getName()??this._getType()},_parse(i,l){let a=e(i);if(a===!0)return{success:!0,data:i};if(typeof a=="object"&&a?.success===!0)return a;let c={message:typeof o=="function"?o(i):o};return{success:!1,error:c,errors:[c]}},parse(i,l){let a=this._parse(i,l);if(!a.success)throw a=a,new Error(a.error.message,{cause:a.error.cause});return a.data},safeParse(i,l){return this._parse(i,l)},transform(i){return H(this,"_parse",(l,a,c)=>{let u=l(a,c);return u.success&&(u.data=i(u.data)),u}),this},optional(){return tn(this,i=>i===void 0),this},nullable(){return tn(this,i=>i===null),this},nullish(){return tn(this,i=>i==null),this},default(i){return H(this,"_parse",(l,a,c)=>(a===void 0&&(a=typeof i=="function"?i():i),l(a,c))),this},catch(i){return H(this,"_parse",(l,a,c)=>{let u=l(a,c);return u.success?u:{success:!0,data:typeof i=="function"?i({input:a,error:u.error}):i}}),this},pipe(i){return H(this,"_parse",(l,a,c)=>{let u=l(a,c);return u.success?i._parse(u.data,c):u}),this},refine(i,{message:l,type:a}={}){return a&&(l=l||ao(a),t=a),H(this,"_parse",(c,u,p)=>{let f=c(u,p),{abortEarly:h}=_e(p);if(!f.success)return f;let E=i(f.data);if(E===!0||typeof E=="object"&&E?.success===!0)return f;let y={message:typeof l=="function"?l(u):l};return{success:!1,error:y,errors:[y]}}),this},clone(){return{...this}}};return co.length>0?co.reduce((i,l)=>l(i,e,r)??i,s):s}var co=[];var cn=mn(),un=mn(),So=mn(),Or=Array.from({length:256},(e,t)=>(t<=15?"0":"")+t.toString(16));function mn(){return Math.floor(Math.random()*16777215)}function Dr(){return un=(un+1)%16777215,un}function k(){let e=Math.floor(Date.now()/1e3);e=parseInt(e,10)%4294967295;let t=Dr(),n=String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,e&255,cn>>16&255,cn>>8&255,cn&255,So>>8&255,So&255,t>>16&255,t>>8&255,t&255),o="";for(let r=0;r<n.length;r++)o+=Or[n.charCodeAt(r)];return o}var ne=Symbol("block-element"),fn=Symbol("block-element-body"),Y=Symbol("selectable-element");function Ne(e,t){let n=e;for(n?.nodeType===Node.TEXT_NODE&&(n=n.parentElement);n&&n[t]===void 0;)n=n.parentElement;return n??null}function P(e){return e?Ne(e.startContainer,ne):null}function $(e){return Ne(e,ne)}function Ao(e){return e?Ne(e.startContainer,Y):null}function ko(e){return Ne(e,Y)}function dn(){return window.getSelection()}function v(){let e=dn();return e.rangeCount>0?e.getRangeAt(0).cloneRange():null}function Re(){let e=v();if(!e)return 0;e.collapse(!0);let t=Ao(e),n=P(e),o=t??_(n);return q(o,e.startContainer,e.startOffset)}var ct=null;function oe(){ct=re()}function gn(){ct&&hn(ct)}function _o(){ct&&(ct={start:ct.end,end:ct.end,element:ct.element},gn())}function Hr(e,t){let n=Ao(t);return n||(_(e)??e?.childNodes?.[0]??null)}function q(e,t,n){if(!e)return 0;if(t===e){if(t.nodeType===Node.TEXT_NODE)return n;let i=0,l=e.childNodes,a=Math.min(n,l.length);for(let c=0;c<a;c++)i+=l[c].textContent.length;return i}if(t.nodeType===Node.ELEMENT_NODE&&!e.contains(t))return 0;let o=0,r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),s=r.nextNode();for(;s;){if(s===t)return o+n;o+=s.textContent.length,s=r.nextNode()}return o}function re(){let e=v();if(!e)return null;let t=P(e),n=Hr(t,e);return{start:q(n,e.startContainer,e.startOffset),end:q(n,e.endContainer,e.endOffset),element:t,selectableElement:n}}function ve(e=v()){if(!e||e.collapsed)return null;let t=$(e.startContainer),n=$(e.endContainer);if(!t||!n)return null;let o=ko(e.startContainer)??_(t),r=ko(e.endContainer)??_(n);return{startBlock:t,endBlock:n,startOffset:q(o,e.startContainer,e.startOffset),endOffset:q(r,e.endContainer,e.endOffset)}}function hn(e){if(!e)return;let{start:t,end:n,element:o,selectableElement:r}=e,s=r?.isConnected&&r||_(o)||o?.childNodes?.[0];if(!s)return;let i=pn(s,t),l=pn(s,n),a=document.createRange();a.setStart(i.startContainer,i.startOffset),a.setEnd(l.endContainer,l.endOffset);let c=dn();c.removeAllRanges(),c.addRange(a)}function pn(e,t){let n=document.createRange();if(!e)return n;if(t<=0)return n.setStart(e,0),n.collapse(!0),n;let o=0,r=[e];for(;r.length>0;){let s=r.pop();if(s.nodeType===Node.TEXT_NODE){let i=s.textContent.length;if(o+i>=t)return n.setEnd(s,t-o),n.setStart(s,t-o),n;o+=i}else if(s.childNodes&&s.childNodes.length>0)for(let i=s.childNodes.length-1;i>=0;i--)r.push(s.childNodes[i])}return n.setEnd(e,e.childNodes.length),n.setStart(e,e.childNodes.length),n}function w(e,t){let n=pn(e,t),o=dn();o.removeAllRanges(),o.addRange(n)}function _(e){if(!e)return null;let t=Ie(e);return t?.firstElementChild??t?.firstChild}function nt(e){return!e||!e[ne]?null:Qt(_(e))?.classInstance}function Ie(e){if(!e)return null;for(let t of e.children)if(t[fn])return t;return null}function Nt(e,t,n,o=12){let r=e.getBoundingClientRect(),s=typeof t?.getBoundingClientRect=="function"?t.getBoundingClientRect():t??{left:0,top:0},i=n?.offsetHeight??40;return{x:s.left-r.left,y:s.top-r.top-i-o}}var R="molecule.paragraph.Paragraph",No="molecule.list.List",Ro="molecule.external.ExternalComponent",vo="namespace.unknown.UnknownComponent",Rt="molecule.headline.H1",vt="molecule.headline.H2",It="molecule.headline.H3",Lt="molecule.headline.H4",Mt="molecule.headline.H5",Io="molecule.headline.";var Bt=eo();var Le=class extends St{state;element;mrakomor;constructor(t){super(t);let{state:n,observeDOMChanges:o=!0}=t??{};this.state=n,this.element=null,this.mrakomor=Se(Bt),this._stale=!1,this._observer=null,this._observeDOMChanges=o}static get NAMESPACE(){return"namespace.AbstractComponent"}static getStateSchema(){return m.object({component:m.string().default(this.NAMESPACE),properties:m.object().default({}),settings:m.object().default({})}).default({})}static getPropsSchema(){return m.object({state:this.getStateSchema(),observeDOMChanges:m.boolean().default(!0)}).default({})}parseFromHTML(t){return this.constructor.getStateSchema(t).parse()}getState(){if(this._stale){let t=this.element;return this.parseFromHTML(t)}return this.state.peek()}onMount(){this.element&&this._observeDOMChanges&&(this._observer=new MutationObserver(()=>{this._stale=!0}),this._observer.observe(this.element,{subtree:!0,characterData:!0,characterDataOldValue:!0,childList:!0,attributes:!0,attributeOldValue:!0}))}onUnmount(){this._observer&&(this._observer.disconnect(),this._observer=null,this._stale=!1)}};var W=class extends Le{static get NAMESPACE(){return"namespace.block.BlockComponent"}static get LABEL(){return""}onKeydown(t){}getFormattingTarget(t){return null}};function N(e){return e===`
1
+ var jn=class{next(...e){}error(...e){}complete(...e){}},Xe=class{#t=new Set;pipe(...e){return e.reduce((t,n)=>n(t),this)}next(...e){Array.from(this.#t).forEach(t=>{typeof t=="function"?t(...e):t.next(...e)})}error(...e){Array.from(this.#t).forEach(t=>{t?.error?.(...e),this.unsubscribe(t)})}complete(...e){Array.from(this.#t).forEach(t=>{t?.complete?.(...e),this.unsubscribe(t)})}subscribe(e){return this.#t.add(e),{unsubscribe:()=>{this.unsubscribe(e)}}}unsubscribe(e){this.#t.delete(e)}};var be=Symbol("@esmj/signals:type"),Xt=Symbol("@esmj/signals:name"),Jt=null;var D=null,mr=0,fr=new Set,Je=!1,Qe=[];function B(e){let t=D;D=null;let n=e();return D=t,n}function dr(){Je=!1;let e=Fn();for(let n of e)n.get();let t=Qe;Qe=[];for(let n of t)n()}function $n(){Je||(Je=!0,queueMicrotask(dr))}function Ze(e){Qe.push(e),$n()}var Un=Symbol("@esmj/signals:internal observable"),rt=Symbol("@esmj/signals:original function"),gr=class extends Xe{#t=new Set;#n=null;constructor(e){super(),this.#n=e,this.pipe(t=>{let n=t.subscribe.bind(t),o=t.unsubscribe.bind(t);return t.subscribe=r=>{n(r),this.#t.add(r)},t.unsubscribe=r=>{o(r),this.#t.delete(r)},t})}watch(e){if(typeof e.next!="function"&&(e.next=()=>B(()=>{this.#t.add(e),this.#n()}),e.next[rt]=void 0),e instanceof zn&&e.next[rt]===void 0){let t=e.next.bind(e);e.next=()=>B(()=>{this.#t.add(e),t(),this.#n()}),e.next[rt]=t}return this.subscribe(e)}getPending(){let e=[];for(let t of this.#t){if(!t.get[rt]){let n=t.get,o=n.bind(t);t.get=()=>B(()=>(this.#t.delete(t),o())),t.get[rt]=n}e.push(t)}return e}unwatch(e){return e.next=e.next[rt]?e.next[rt]:e.next,e.get=e.get[rt]?e.get[rt]:e.get,this.#t.delete(e),this.unsubscribe(e)}},Ce=null;function Kn(e){Ce=new gr(e)}Kn(()=>{$n()});function Fn(){return Ce.getPending()}function Vn(e){return Ce.watch(e)}function Gn(e){return Ce.unwatch(e)}var st=Symbol("@esmj/signals:no error"),zn=class qn extends jn{#t=!0;#n=!1;#e=null;#o=this.#m();#s=null;#l=null;#a=0;#i=new Map;#r=st;constructor(t,n){super(),this.#s=t,this.#l=n,this.debug=n?.debug,this[be]="computed",this[Xt]=n?.debug??null,this.get=this.get.bind(this),Jt?.onComputedCreate?.(this)}#c(){for(let{unsubscribe:t}of this.#o.dependencies.values())t();this.#o.dependencies.clear()}#m(){return{dependencies:new Map,sourceRevisions:new Map,observer:this}}getRevision(){return this.#a}getDebugInfo(){return{name:this[Xt],dirty:this.#t,revision:this.#a,sourceDependencies:[...this.#i.keys()]}}#p(){for(let[t,n]of this.#i)if(t instanceof qn&&B(()=>t.get()),t.getRevision()!==n)return!0;return!1}next(){this.#t=!0,this.#e[Un].next()}get(){if(this.#n)throw new Error("Cycle detected in computed signal");if(this.#e||(this.#e=A(this.#u(),this.#l)),(this.#t||this.#r!==st)&&(this.#i.size===0||this.#p()?this.#u():this.#t=!1),D&&D.sourceRevisions.set(this,this.#a),this.#r!==st)throw this.#r;return this.#e.get()}peek(){if(this.#e||(this.#e=A(this.#u(),this.#l)),(this.#t||this.#r!==st)&&(this.#i.size===0||this.#p()?this.#u():this.#t=!1),this.#r!==st)throw this.#r;return this.#e.peek()}#u(){this.#n=!0,this.#t=!1,this.#r=st,Jt?.onComputedRun?.(this),this.#c(),this.#o.sourceRevisions.clear();let t=D;D=this.#o;let n;try{n=this.#s()}catch(o){this.#r=o}return D=t,this.#i=this.#o.sourceRevisions,this.#o.sourceRevisions=new Map,this.#n=!1,n instanceof Promise&&(n=n.then(o=>{this.#r=st,this.#e.set(o)}).catch(o=>{this.#r=o})),this.#r===st&&this.#e&&this.#e.set(n),this.#a++,n}destroy(){this.#c(),this.#i.clear(),this.#t=!0,this.#r=st}};function H(e,t){return new zn(e,t)}function it(e,t){let n,{debug:o,...r}=t??{},s=H(()=>{n?.(),n=e()},{equals:()=>!1,...r});s.get(),Vn(s);let i=()=>{n?.(),s.destroy(),Gn(s)};return i[Symbol.dispose]=i,i[be]="effect",i[Xt]=o??null,i.__RX_COMPUTED__=s,Jt?.onEffectCreate?.(i),i}function A(e,t={}){let n=t?.equals??Object.is,o=0,r=new Xe;function s(){return D&&(D.dependencies.set(r,r.subscribe(D.observer)),D.sourceRevisions.set(c,o)),e}function i(){return e}function l(u){if(!n(e,u)){let p=e;e=u,o++,Jt?.onSignalSet?.(c,p,u),mr>0?fr.add(r):r.next()}return e}function a(){return o}let c={get:s,set:l,peek:i,getRevision:a,[Un]:r,[be]:"signal",[Xt]:t?.debug??null};return Jt?.onSignalCreate?.(c),c}function xe(){return Date.now().toString(32).substring(5)+Math.random().toString(32).substring(2)}var _t=class{constructor(e){this.props=e}},Zn=Symbol("node-component"),Se=Symbol("node-internal"),to=Symbol("keep-literal");function eo(e){let t=()=>e;return t[to]=!0,t}function V(e){let t=null,n=()=>t,o=s=>(t=s??null,typeof e=="function"&&e(t),t),r={get:n,set:o,[Symbol.toPrimitive](){return t?String(t):""}};return Object.defineProperty(r,"current",{get(){return t},set(s){o(s)},enumerable:!0,configurable:!1}),new Proxy(r,{get(s,i,l){if(Reflect.has(s,i))return Reflect.get(s,i,l);if(!t)return;let a=t[i];return typeof a=="function"?a.bind(t):a},set(s,i,l,a){return Reflect.has(s,i)||!t?Reflect.set(s,i,l,a):(t[i]=l,!0)},has(s,i){return Reflect.has(s,i)||!!t&&i in t}})}var no=null;function lt(){return no}function Ae(e){no=e}function te(e){return e[Zn]||null}function hr(e,t){e[Zn]=t}function en(e,t={disposers:[],id:xe()}){return e?.[Se]?e[Se]:(e&&(e[Se]=t),t)}function Er(e){return e[Se]}function Ct(e,t){let n=Er(e);n||(n=en(e)),n.disposers.push(t)}function Qt(e,t,n){e.has(t)||e.set(t,[]),e.get(t).push(n)}function At(e,t){let n=lt();Ae(e);try{return t()}finally{Ae(n)}}var _e=new Map,Zt=new Map,Yn=new Map;function yr(e){let t=Object.create(null);for(let n of Object.keys(e)){let o=e[n];n==="children"?t[n]=o:o?.[to]?t[n]=o():o!=null&&typeof o.get=="function"?t[n]=o:typeof o=="function"?t[n]=H(o):t[n]=A(o)}return t}function oo(e,t){if(e===t)return!0;if(e==null||t==null||typeof e!="object"||typeof t!="object")return!1;let n=Object.keys(e),o=Object.keys(t);return n.length!==o.length?!1:n.every(r=>{let s=Object.getOwnPropertyDescriptor(e,r),i=Object.getOwnPropertyDescriptor(t,r);if(!s||!i)return!1;let l="value"in s?s.value:s.get?.call(e),a="value"in i?i.value:i.get?.call(t);return oo(l,a)})}function ro(e){return{id:Symbol("context-id"),defaultValue:e}}function so(e,t){let n=lt();n&&n.contexts.set(e.id,t)}function Ne(e){let t=lt();return t?.contexts?.has(e.id)?t.contexts.get(e.id):e.defaultValue}function ee(e){let t=lt();if(!t){console.warn("onMount called outside of a component context");return}Qt(_e,t.id,e)}function nn(e){let t=lt();if(!t){console.warn("onUnmount called outside of a component context");return}Qt(Zt,t.id,e)}function x(e){Ze(()=>{setTimeout(e,0)})}function Re(e){let t=e.componentId,n=_e.get(t);if(n){_e.delete(t);for(let o of n){let r=o();typeof r=="function"&&Qt(Zt,t,r)}}}function br(e){let t=Zt.get(e);if(t){Zt.delete(e);for(let n of t)n()}}function Cr(e){let t=Yn.get(e);if(t){Yn.delete(e);for(let n of t)n()}}function ne(e){if(!e)return;let t=en(e);if(t?.disposers?.length){for(let o of t.disposers)try{o()}catch(r){console.error("[esmj-dom] cleanupTree: disposer threw, cleanup continues",r)}t.disposers=[]}let n=te(e);if(n&&(br(n.componentId),Cr(n.componentId)),e.childNodes){let o=e.firstChild;for(;o;){let r=o.nextSibling;ne(o),o=r}}}function Nt(e){return e!=null&&typeof e=="object"&&typeof e.$constructor=="function"}function xr(e){return typeof e=="function"&&typeof e.prototype?.render=="function"}function Sr(e,t,n){let o=xe(),r={componentId:o,$children:n,element:null,classInstance:null,$constructor(){let s={...yr(t??{}),children:n},i=lt(),l={disposers:[],id:o,contexts:new Map(i?.contexts)};Ae(l);let a;if(xr(e)){r.ClassConstructor=e;let u=new e(s);r.classInstance=u,typeof u.onMount=="function"&&Qt(_e,o,()=>{u.onMount?.()}),typeof u.onUnmount=="function"&&Qt(Zt,o,()=>{u.onUnmount?.()}),a=u.render()}else a=e(s);Ae(i);let c=kr(a);return r.element=c,en(c,l),c instanceof Node&&hr(c,r),c}};return r}function io(e,t){let n=t.$constructor();n instanceof Node&&e.appendChild(n),queueMicrotask(()=>{Re(t)})}function kr(e){return e instanceof Node?e:Nt(e)?e.$constructor():typeof e=="string"||typeof e=="number"?document.createTextNode(String(e)):document.createTextNode("")}var Wn={className:"class",htmlFor:"for"},Xn=new Set(["value","defaultValue","checked","selected","indeterminate"]),Ar=new Set(["srcdoc"]),_r=new Set(["href","src","action","formaction","xlink:href"]),Nr=new Set(["securitypolicyviolation"]),Rr=new Set(["contenteditable","draggable","spellcheck"]);function ke(e){return e!=null&&typeof e=="object"&&typeof e.get=="function"&&!(e instanceof Node)}function d(e,t,n){if(typeof e=="function")return Sr(e,t||{},n);typeof e!="string"&&(n=t,t=e,e="div"),t=t||{};let o=document.createElement(e);return t.id&&o.setAttribute("id",t.id),Mr(o,t),ao(o,Br(n)),o}function tn(e,t){t instanceof DocumentFragment?e.replaceChildren(t):e.innerHTML=t??""}function vr(e){return typeof e!="string"?!1:e.replace(/[\p{White_Space}\p{Cc}]+/gu,"").toLowerCase().startsWith("javascript:")}function Ir(e,t){if(typeof e!="string")return!1;let n=e.toLowerCase();return Ar.has(n)?!0:_r.has(n)&&t!==null&&t!==void 0&&vr(String(t))}function lo(e){return typeof e!="string"?e:Wn[e]?Wn[e]:e}function Lr(e,t){let n=lo(e),o=typeof n=="string"?n.toLowerCase():String(n).toLowerCase();return Rr.has(o)&&(t===!0||t===!1||t==="true"||t==="false")?String(t):t==null||t===!1?null:t}function Jn(e,t,n){let o=Lr(t,n);if(o===null){e.removeAttribute(t);return}if(Ir(t,o)){e.removeAttribute(t),console.warn(`[esmj-dom] Blocked unsafe attribute "${String(t)}" on <${e.tagName.toLowerCase()}>`);return}e.setAttribute(t,o)}function Mr(e,t){let n=lt();for(let[o,r]of Reflect.ownKeys(t).map(s=>[s,t[s]]))if(o!=="id"){if(o=lo(o),o==="$ref"){typeof r=="function"?r(e):typeof r=="object"&&r!==null&&(r.current=e);continue}if(o==="$dangerouslySetInnerHTML"){if(ke(r)){let s=it(()=>{At(n,()=>{tn(e,r.get())})});Ct(e,s)}else if(typeof r=="function"){let s=it(()=>{At(n,()=>{tn(e,r())})});Ct(e,s)}else tn(e,r);continue}if(o==="style"){if(ke(r)){let s=it(()=>{At(n,()=>{Object.assign(e.style,r.get())})});Ct(e,s)}else typeof r=="object"&&r!==null?Object.assign(e.style,r):e.setAttribute("style",r);continue}if(typeof o=="string"&&o.startsWith("on")&&typeof r=="function"){let s=o.slice(2).toLowerCase();if(Nr.has(s)){console.warn(`[esmj-dom] Blocked unsafe event binding "${o}" on <${e.tagName.toLowerCase()}>`);continue}e.addEventListener(s,r);continue}if(ke(r)||typeof r=="function"){let s=o,i=it(()=>{At(n,()=>{let l=typeof r=="function"?r():r.get();Xn.has(s)?e[s]=l??"":Jn(e,s,l)})});Ct(e,i);continue}Xn.has(o)||typeof o=="symbol"?e[o]=r??"":Jn(e,o,r)}}function Br(e){return e==null?[]:Array.isArray(e)?e.flat(Number.POSITIVE_INFINITY):[e]}function ao(e,t){for(let n of t)Pr(e,n)}function Pr(e,t){if(!(t==null||t===!1||t===!0)){if(t instanceof Node){e.appendChild(t);return}if(typeof t=="string"||typeof t=="number"){e.appendChild(document.createTextNode(String(t)));return}if(typeof t=="function"){Qn(e,t);return}if(Nt(t)){io(e,t);return}if(ke(t)){Qn(e,()=>t.get());return}if(Array.isArray(t)){ao(e,t);return}e.appendChild(document.createTextNode(String(t)))}}function Qn(e,t){let n=lt(),o=document.createComment("");e.appendChild(o);let r=null,s=it(()=>{At(n,()=>{let i=t(),l,a=null;i instanceof Node?l=i:Nt(i)?(l=i.$constructor(),a=i,l instanceof Node||(l=null)):i==null||i===!1||i===!0?l=null:l=document.createTextNode(String(i)),r&&(ne(r),r.remove()),l&&(o.after(l),a&&queueMicrotask(()=>Re(a))),r=l??null})});Ct(e,s)}function ve(e,t,n){let o=document.createElement("span");o.style.display="contents",o.setAttribute("data-each",xe());let r=lt(),s=[],i=new Map,l=H(()=>e()),a=it(()=>{let c=l.get(),u=[],p=[],f=new Set;for(let y=0;y<c.length;y++){let C=c[y],k=t(C,y);if(f.has(k)){console.error(`Each: duplicate key "${String(k)}" detected; ignoring later item at index ${y}`);continue}f.add(k),u.push(C),p.push(k)}let h=new Map(s.map(y=>[y.key,y])),E=[];for(let y=0;y<u.length;y++){let C=p[y],k=u[y],w=h.get(C);if(w)i.get(C).set(k),E.push(w),h.delete(C);else{let nt=A(k,{equals:oo});i.set(C,nt);let pt={...nt,set(){}},ot={key:C,element:null},q;At(r,()=>{if(q=n(pt,y),q instanceof Node)ot.element=q;else if(Nt(q)){let O=q.$constructor();ot.element=O instanceof Node?O:null,queueMicrotask(()=>Re(q))}}),E.push(ot)}}for(let[y,C]of h)C.element&&(ne(C.element),C.element.remove()),i.delete(y);let b=o.childNodes;for(let y=0;y<E.length;y++){let C=E[y];if(!C.element)continue;let k=b[y];k!==C.element&&o.insertBefore(C.element,k||null)}s=E});return Ct(o,a),o}function P(e,t){if(typeof e=="string"&&(e=document.querySelector(e)),!e)throw new Error("mount: container not found");e instanceof DocumentFragment||(ne(e),e.innerHTML=""),Nt(t)?io(e,t):t instanceof Node?e.appendChild(t):e.appendChild(document.createTextNode(String(t)))}function co(e){if(typeof e=="string"&&(e=document.querySelector(e)),!e)throw new Error("unmount: container not found");ne(e),e.innerHTML=""}function Rt(e,t){let n=null;if(Nt(t)?(n=t.$constructor(),queueMicrotask(()=>Re(t))):t instanceof Node?n=t:n=document.createTextNode(String(t)),n instanceof HTMLElement){let o=H(()=>!!e()),r=it(()=>{n.style.display=o.get()?"":"none"});Ct(n,r)}return n}var Tr=".molecule__figure{padding:12px 6px;background-color:#f0f0f0}.molecule__figure .image{aspect-ratio:16/9;background-color:#d3d3d3}.namespace-unknown-unknowncomponent{background-color:#f0f0f0;padding:12px 0;margin-bottom:8px}.mrakomor-editor:focus-visible{outline:none}.dialog[open]{background-color:#fff;border:1px solid black;border-radius:8px;box-shadow:0 0 5px #0000001a;padding:12px;display:flex;flex-flow:row wrap;justify-content:space-between;.dialog-controls{text-align:right;width:100%;.dialog-button-close{background-color:#f0f0f0;border:1px solid black;border-radius:4px;color:#000;cursor:pointer;display:inline-block;font-size:14px;margin-right:1px;padding:4px 8px;text-align:center}}.dialog-container{width:100%}}.mrakomor-tooltip{position:absolute;z-index:9100;display:flex;flex-direction:row;align-items:center;gap:2px;background:#1a1a1a;border-radius:6px;padding:4px 6px;box-shadow:0 3px 10px #00000040;pointer-events:all;white-space:nowrap}.mrakomor-tooltip__btn{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;min-width:28px;min-height:28px;padding:0 6px;transition:background .1s}.mrakomor-tooltip__btn:hover{background:#ffffff26}.mrakomor-tooltip__btn--active{background:#ffffff40;color:#7dd3fc}.mrakomor-tooltip__separator{width:1px;height:18px;background:#fff3;margin:0 4px;flex-shrink:0}.mrakomor-tools-container,.mrakomor-content{position:relative}.mrakomor-content h1,.mrakomor-content h2,.mrakomor-content h3,.mrakomor-content h4,.mrakomor-content h5,.mrakomor-content p{margin-top:0}.molecule-list-list{margin:0 0 1em;padding-inline-start:1.5em}.molecule-list-list li{margin:.25em 0;outline:none}.molecule-list-list li:focus{outline:none}.molecule-list-list li[data-depth=\"1\"]{margin-inline-start:1.5em}.molecule-list-list li[data-depth=\"2\"]{margin-inline-start:3em}.molecule-list-list li[data-depth=\"3\"]{margin-inline-start:4.5em}.mrakomor-block-element{position:relative;padding-left:52px;margin-bottom:12px}.mrakomor-block-gutter{position:absolute;left:0;top:2px;display:flex;align-items:center;gap:2px;opacity:0;transition:opacity .15s ease;pointer-events:all;user-select:none;z-index:1}.mrakomor-block-element:hover .mrakomor-block-gutter,.mrakomor-block-element--active .mrakomor-block-gutter,.mrakomor-block-drag-active .mrakomor-block-gutter{opacity:1}.mrakomor-block-add,.mrakomor-block-drag{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:4px;background:transparent;color:#9ca3af;cursor:pointer;font-size:18px;line-height:1;transition:background .1s,color .1s}.mrakomor-block-add:hover,.mrakomor-block-drag:hover{background:#0000000f;color:#374151}.mrakomor-block-drag{cursor:grab}.mrakomor-block-element--dragging .mrakomor-block-drag,.mrakomor-block-drag-active .mrakomor-block-drag{cursor:grabbing}.mrakomor-block-element--dragging{opacity:.5}.mrakomor-block-body{min-width:0}.mrakomor-block-drop-indicator{position:absolute;left:52px;right:0;height:2px;background:#3b82f6;border-radius:1px;pointer-events:none;z-index:2}.mrakomor-block-insert-menu{position:absolute;z-index:9200;display:flex;flex-direction:column;gap:2px;min-width:120px;background:#1a1a1a;border-radius:6px;padding:4px;box-shadow:0 3px 10px #00000040;pointer-events:all}.mrakomor-block-insert-menu__item{display:flex;align-items:center;width:100%;padding:6px 10px;border:none;border-radius:4px;background:transparent;color:#fff;cursor:pointer;font-size:13px;font-weight:600;text-align:left;transition:background .1s}.mrakomor-block-insert-menu__item:hover{background:#ffffff26}.link-toolbar{display:flex;flex-direction:column;gap:6px}.link-toolbar__row{display:flex;align-items:center;gap:4px;min-width:0}.link-toolbar__href{flex:1;min-width:0;font-size:13px;color:#1a73e8;text-decoration:underline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.link-toolbar__sep{width:1px;height:18px;background:#e0e0e0;flex-shrink:0;margin:0 2px}.link-toolbar__btn{display:flex;align-items:center;justify-content:center;flex-shrink:0;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#555;&:hover{background:#f0f0f0;color:#222}}.link-toolbar__btn--danger{&:hover{color:#d32f2f;background:#fdecea}}.link-toolbar__input{flex:1;min-width:0;border:1px solid #dadce0;border-radius:4px;padding:4px 8px;font-size:13px;outline:none;&:focus{border-color:#1a73e8;box-shadow:0 0 0 2px #1a73e833}}.link-toolbar__select{flex-shrink:0;border:1px solid #dadce0;border-radius:4px;padding:4px 6px;font-size:13px;background:#fff;cursor:pointer}.atom-tts-voice{position:relative;border-radius:2px;display:inline-block}.atom-tts-voice:before{content:attr(data-voice-label);position:absolute;top:-1.1em;left:0;font-size:10px;line-height:1;white-space:nowrap;padding:1px 4px;border-radius:3px;pointer-events:none;font-weight:600}.tts-voice--man{background:#e8f0fe;color:#174ea6}.tts-voice--man:before{background:#1a73e8;color:#fff}.tts-voice--woman{background:#f3e8fd;color:#5e35b1}.tts-voice--woman:before{background:#7b1fa2;color:#fff}.tts-voice-toolbar{display:flex;flex-direction:column;gap:6px}.tts-voice-toolbar__row{display:flex;align-items:center;flex-wrap:wrap;gap:4px;min-width:0}.tts-voice-toolbar__voice{flex-shrink:0;border:1px solid #dadce0;border-radius:4px;padding:4px 8px;font-size:12px;background:#fff;color:#333}.tts-voice-toolbar__voice--man{border-color:#1a73e8;color:#174ea6}.tts-voice-toolbar__voice--woman{border-color:#7b1fa2;color:#5e35b1}.tts-voice-toolbar__voice--active{font-weight:600}.tts-voice-toolbar__voice--man.tts-voice-toolbar__voice--active{background:#e8f0fe}.tts-voice-toolbar__voice--woman.tts-voice-toolbar__voice--active{background:#f3e8fd}.tts-voice-toolbar__sep{width:1px;height:18px;background:#e0e0e0;flex-shrink:0;margin:0 2px}.tts-voice-toolbar__btn{display:flex;align-items:center;justify-content:center;flex-shrink:0;background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#555}.tts-voice-toolbar__btn:hover{background:#f0f0f0;color:#222}.tts-voice-toolbar__btn--danger:hover{color:#d32f2f;background:#fdecea} ",uo=Tr;var wr={abortEarly:!0};function ln(e,t){if(t===void 0)return e;let n=e?.cause?.key?`${t}.${e.cause.key}`:`${t}`;return{message:`Error parsing key "${n}": ${e.message}`,cause:{key:n}}}function Or(e,t,n){if(e.errors?.length)for(let o=0;o<e.errors.length;o++)t.push(ln(e.errors[o],n))}function fo(e,t,n,o){if(n!==!1){let r=ln(e.error,t);return{success:!1,error:r,errors:[r]}}Or(e,o,t)}function Ie(e){return e?.abortEarly!==void 0?e:wr}function on(e,t){j(e,"_parse",(n,o,r)=>{let s=n(o,r);return!s.success&&t(o)?{success:!0,data:o}:s})}var oe=e=>typeof e=="string"||e instanceof String,rn=e=>(typeof e=="number"||e instanceof Number)&&!Number.isNaN(e),sn=e=>e===!0||e===!1,Dr=e=>e instanceof Date&&!Number.isNaN(e.getTime()),Hr=e=>typeof e=="function",jr=e=>Array.isArray(e),go=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function ho(e,t){let n=G(go,{...t,type:"object"});return n._getDescription=()=>`object({ ${Object.entries(e).map(([o,r])=>`${o}: ${r._getDescription()}`).join(", ")} })`,j(n,"_parse",(o,r,s)=>{let i=o(r,s),{abortEarly:l}=Ie(s);if(i.success===!1)return i;let a={},c=[];for(let u in e){let p=e[u]._parse(i.data[u],s);if(p.success)a[u]=p.data;else{let f=fo(p,u,l,c);if(f)return f}}return c.length>0?{success:!1,error:c[0],errors:c}:{success:!0,data:a}}),n}function an(e){return G(oe,{...e,type:"string"})}function cn(e){return G(rn,{...e,type:"number"})}function un(e){return G(sn,{...e,type:"boolean"})}function pn(e){return G(Dr,{...e,type:"date"})}function Eo(e){return G(Hr,{...e,type:"function"})}function yo(e,t){let n=i=>e.includes(i),o=i=>`Invalid ${r} value. Expected ${e.map(l=>`"${l}"`).join(" | ")}, received "${i}".`,r="enum",s=G(n,{message:o,...t,type:r});return s._getDescription=()=>`enum(${e.map(i=>`"${i}"`).join(" | ")})`,s}function bo(e,t){let n=G(jr,{...t,type:"array"});return n._getDescription=()=>`array(${e._getDescription()})`,j(n,"_parse",(o,r,s)=>{let i=o(r,s),{abortEarly:l}=Ie(s);if(i.success===!1)return i;let a=[],c=[];for(let u=0;u<i.data.length;u++){let p=e._parse(i.data[u],s);if(p.success)a.push(p.data);else{let f=fo(p,u,l,c);if(f)return f}}return c.length>0?{success:!1,error:c[0],errors:c}:{success:!0,data:a}}),n}function Co(){return G(()=>!0)}function vt(e,t){return j(t,"_parse",(n,o,r)=>(o=e(o),n(o,r))),t}function xo(e,t){let n=r=>`Invalid union value. Expected the value to match one of the schemas:${e.map((s,i)=>` ${i+1}. ${s._getDescription()}`).join(",")} but received "${typeof r}" with value: ${go(r)?JSON.stringify(r):`"${r}"`}`,o=G(()=>!1,{message:n,...t,type:"union"});return j(o,"_parse",(r,s,i)=>{let l=i,a=[];for(let f=0;f<e.length;f++){let h=e[f]._parse(s,l);if(h.success)return h;a.push(h)}let{abortEarly:c}=Ie(l),u={message:typeof n=="function"?n(s):n};if(c!==!1)return{success:!1,error:u,errors:[u]};let p=[];for(let f=0;f<a.length;f++){let h=a[f].errors;if(h?.length)for(let E=0;E<h.length;E++)h[E].cause?.key&&p.push(ln(h[E],`branch ${f}`))}return p.length===0&&p.push(u),{success:!1,error:p[0],errors:p}}),o}function So(e,t){let n=G(o=>o===e,{message:o=>t?.message?typeof t.message=="function"?t.message(o):t.message:`Expected literal value "${e}", received "${o}"`,name:t?.name,type:"literal"});return n._getDescription=()=>`literal("${e}")`,n}var ko={boolean(e){let t=e?.message??(n=>`Cannot cast "${n}" to boolean. Accepted: true/false, 1/0, yes/no, on/off.`);return vt(n=>{let o;return oe(n)&&(o=n.toLowerCase()),o==="true"||o==="yes"||o==="on"||o==="1"||n===1?!0:o==="false"||o==="no"||o==="off"||o==="0"||n===0?!1:n},un({...e,message:t}))},number(e){let t=e?.message??(n=>`Cannot cast "${n}" to a number. Expected a numeric string or number.`);return vt(n=>{if(sn(n))return Number(n);if(oe(n)){let o=n.trim();if(o==="")return n;let r=Number(o);if(Number.isFinite(r))return r}return n},cn({...e,message:t}))},string(e){let t=e?.message??(n=>`Cannot cast "${n}" to string. Expected a string, number, or boolean.`);return vt(n=>sn(n)||rn(n)&&Number.isFinite(n)?String(n):n,an({...e,message:t}))},date(e){let t=e?.message??(n=>`Cannot cast "${n}" to a valid date.`);return vt(n=>{let o;return oe(n)&&(o=n.trim()),rn(n)&&Number.isFinite(n)||o?new Date(o??n):n},pn({...e,message:t}))},json(e,t){let n=t?.message??(o=>`Cannot parse "${o}" as JSON.`);return j(e,"_parse",(o,r,s)=>{if(oe(r))try{r=JSON.parse(r)}catch{let i={message:typeof n=="function"?n(r):n};return{success:!1,error:i,errors:[i]}}return o(r,s)}),e}},Ao={},m={object:ho,string:an,number:cn,boolean:un,date:pn,function:Eo,enum:yo,array:bo,any:Co,preprocess:vt,union:xo,literal:So,coerce:Ao,cast:ko};function po(e){return t=>`The value "${t}" must be type of ${e} but is type of "${typeof t}".`}function j(e,t,n){let o=e[t];e[t]=(...r)=>n(o,...r)}function G(e,{type:t="any",name:n,message:o}={}){o=o||po(t);let r={name:n,message:o,type:t},s={_getName(){return n},_getType(){return t},_getDescription(){return this._getName()??this._getType()},_parse(i,l){let a=e(i);if(a===!0)return{success:!0,data:i};if(typeof a=="object"&&a?.success===!0)return a;let c={message:typeof o=="function"?o(i):o};return{success:!1,error:c,errors:[c]}},parse(i,l){let a=this._parse(i,l);if(!a.success)throw a=a,new Error(a.error.message,{cause:a.error.cause});return a.data},safeParse(i,l){return this._parse(i,l)},transform(i){return j(this,"_parse",(l,a,c)=>{let u=l(a,c);return u.success&&(u.data=i(u.data)),u}),this},optional(){return on(this,i=>i===void 0),this},nullable(){return on(this,i=>i===null),this},nullish(){return on(this,i=>i==null),this},default(i){return j(this,"_parse",(l,a,c)=>(a===void 0&&(a=typeof i=="function"?i():i),l(a,c))),this},catch(i){return j(this,"_parse",(l,a,c)=>{let u=l(a,c);return u.success?u:{success:!0,data:typeof i=="function"?i({input:a,error:u.error}):i}}),this},pipe(i){return j(this,"_parse",(l,a,c)=>{let u=l(a,c);return u.success?i._parse(u.data,c):u}),this},refine(i,{message:l,type:a}={}){return a&&(l=l||po(a),t=a),j(this,"_parse",(c,u,p)=>{let f=c(u,p),{abortEarly:h}=Ie(p);if(!f.success)return f;let E=i(f.data);if(E===!0||typeof E=="object"&&E?.success===!0)return f;let b={message:typeof l=="function"?l(u):l};return{success:!1,error:b,errors:[b]}}),this},clone(){return{...this}}};return mo.length>0?mo.reduce((i,l)=>l(i,e,r)??i,s):s}var mo=[];var mn=gn(),fn=gn(),_o=gn(),$r=Array.from({length:256},(e,t)=>(t<=15?"0":"")+t.toString(16));function gn(){return Math.floor(Math.random()*16777215)}function Ur(){return fn=(fn+1)%16777215,fn}function S(){let e=Math.floor(Date.now()/1e3);e=parseInt(e,10)%4294967295;let t=Ur(),n=String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,e&255,mn>>16&255,mn>>8&255,mn&255,_o>>8&255,_o&255,t>>16&255,t>>8&255,t&255),o="";for(let r=0;r<n.length;r++)o+=$r[n.charCodeAt(r)];return o}var re=Symbol("block-element"),hn=Symbol("block-element-body"),J=Symbol("selectable-element");function Le(e,t){let n=e;for(n?.nodeType===Node.TEXT_NODE&&(n=n.parentElement);n&&n[t]===void 0;)n=n.parentElement;return n??null}function T(e){return e?Le(e.startContainer,re):null}function $(e){return Le(e,re)}function Ro(e){return e?Le(e.startContainer,J):null}function No(e){return Le(e,J)}function En(){return window.getSelection()}function v(){let e=En();return e.rangeCount>0?e.getRangeAt(0).cloneRange():null}function Me(){let e=v();if(!e)return 0;e.collapse(!0);let t=Ro(e),n=T(e),o=t??N(n);return X(o,e.startContainer,e.startOffset)}var dt=null;function se(){dt=ie()}function yn(){dt&&bn(dt)}function vo(){dt&&(dt={start:dt.end,end:dt.end,element:dt.element},yn())}function Kr(e,t){let n=Ro(t);return n||(N(e)??e?.childNodes?.[0]??null)}function X(e,t,n){if(!e)return 0;if(t===e){if(t.nodeType===Node.TEXT_NODE)return n;let i=0,l=e.childNodes,a=Math.min(n,l.length);for(let c=0;c<a;c++)i+=l[c].textContent.length;return i}if(t.nodeType===Node.ELEMENT_NODE&&!e.contains(t))return 0;let o=0,r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),s=r.nextNode();for(;s;){if(s===t)return o+n;o+=s.textContent.length,s=r.nextNode()}return o}function ie(){let e=v();if(!e)return null;let t=T(e),n=Kr(t,e);return{start:X(n,e.startContainer,e.startOffset),end:X(n,e.endContainer,e.endOffset),element:t,selectableElement:n}}function Be(e=v()){if(!e||e.collapsed)return null;let t=$(e.startContainer),n=$(e.endContainer);if(!t||!n)return null;let o=No(e.startContainer)??N(t),r=No(e.endContainer)??N(n);return{startBlock:t,endBlock:n,startOffset:X(o,e.startContainer,e.startOffset),endOffset:X(r,e.endContainer,e.endOffset)}}function bn(e){if(!e)return;let{start:t,end:n,element:o,selectableElement:r}=e,s=r?.isConnected&&r||N(o)||o?.childNodes?.[0];if(!s)return;let i=dn(s,t),l=dn(s,n),a=document.createRange();a.setStart(i.startContainer,i.startOffset),a.setEnd(l.endContainer,l.endOffset);let c=En();c.removeAllRanges(),c.addRange(a)}function dn(e,t){let n=document.createRange();if(!e)return n;if(t<=0)return n.setStart(e,0),n.collapse(!0),n;let o=0,r=[e];for(;r.length>0;){let s=r.pop();if(s.nodeType===Node.TEXT_NODE){let i=s.textContent.length;if(o+i>=t)return n.setEnd(s,t-o),n.setStart(s,t-o),n;o+=i}else if(s.childNodes&&s.childNodes.length>0)for(let i=s.childNodes.length-1;i>=0;i--)r.push(s.childNodes[i])}return n.setEnd(e,e.childNodes.length),n.setStart(e,e.childNodes.length),n}function L(e,t){let n=dn(e,t),o=En();o.removeAllRanges(),o.addRange(n)}function N(e){if(!e)return null;let t=Pe(e);return t?.firstElementChild??t?.firstChild}function z(e){return!e||!e[re]?null:te(N(e))?.classInstance}function Pe(e){if(!e)return null;for(let t of e.children)if(t[hn])return t;return null}function It(e,t,n,o=12){let r=e.getBoundingClientRect(),s=typeof t?.getBoundingClientRect=="function"?t.getBoundingClientRect():t??{left:0,top:0},i=n?.offsetHeight??40;return{x:s.left-r.left,y:s.top-r.top-i-o}}var R="molecule.paragraph.Paragraph",Io="molecule.list.List",Lo="molecule.external.ExternalComponent",Mo="namespace.unknown.UnknownComponent",Lt="molecule.headline.H1",Mt="molecule.headline.H2",Bt="molecule.headline.H3",Pt="molecule.headline.H4",Tt="molecule.headline.H5",Bo="molecule.headline.";var wt=ro();var Te=class extends _t{state;element;mrakomor;constructor(t){super(t);let{state:n,observeDOMChanges:o=!0}=t??{};this.state=n,this.element=null,this.mrakomor=Ne(wt),this._stale=!1,this._observer=null,this._observeDOMChanges=o}static get NAMESPACE(){return"namespace.AbstractComponent"}static getStateSchema(){return m.object({component:m.string().default(this.NAMESPACE),properties:m.object().default({}),settings:m.object().default({})}).default({})}static getPropsSchema(){return m.object({state:this.getStateSchema(),observeDOMChanges:m.boolean().default(!0)}).default({})}parseFromHTML(t){return this.constructor.getStateSchema(t).parse()}getState(){if(this._stale){let t=this.element;return this.parseFromHTML(t)}return this.state.peek()}onMount(){this.element&&this._observeDOMChanges&&(this._observer=new MutationObserver(()=>{this._stale=!0}),this._observer.observe(this.element,{subtree:!0,characterData:!0,characterDataOldValue:!0,childList:!0,attributes:!0,attributeOldValue:!0}))}onUnmount(){this._observer&&(this._observer.disconnect(),this._observer=null,this._stale=!1)}};function _(e){return e===`
2
2
  `||e===`\r
3
- `?"":e??""}function $r(e,t){let n=new Set([0,t]);for(let o of e)n.add(o.offset),n.add(o.offset+o.length);return[...n].sort((o,r)=>o-r)}function Lo(e,t,n){return e.filter(o=>o.offset<=t&&o.offset+o.length>=n)}function jr(e,t,n,{inlineStyleComponents:o,entityRangeComponents:r}){let s=e;for(let i of t){let l=o.find(a=>a.match(i));l&&(s=d(l,{},s))}for(let i of n){let l=r.find(a=>a.match(i));l&&(s=d(l,i,s))}return s}function wt(e,{inlineStyleComponents:t,entityRangeComponents:n}){let o=document.createDocumentFragment(),r=N(e.properties.text),s=e.properties.inlineStyleRanges??[],i=e.properties.entityRanges??[];if(!r)return o;let l=$r([...s,...i],r.length);for(let a=0;a<l.length-1;a+=1){let c=l[a],u=l[a+1];if(c>=u)continue;let p=r.slice(c,u),f=jr(p,Lo(s,c,u),Lo(i,c,u),{inlineStyleComponents:t,entityRangeComponents:n});B(o,f)}return o}function Pt(e,t,n,{inlineStyleComponents:o,entityRangeComponents:r}){let s=n;for(let i of e){if(i.nodeType===Node.TEXT_NODE){s+=i.textContent.length;continue}if(i.nodeType!==Node.ELEMENT_NODE||i.nodeName==="BR")continue;let l=o.find(c=>c.match(i));if(l){let c=i.textContent.length;t.properties.inlineStyleRanges.push({style:l.style,offset:s,length:c}),s=Pt(i.childNodes,t,s,{inlineStyleComponents:o,entityRangeComponents:r});continue}let a=r.find(c=>c.match(i));if(a){let c=i.textContent.length;t.properties.entityRanges.push({...a.getStateSchema(i).parse(),offset:s,length:c}),s=Pt(i.childNodes,t,s,{inlineStyleComponents:o,entityRangeComponents:r});continue}s=Pt(i.childNodes,t,s,{inlineStyleComponents:o,entityRangeComponents:r})}return s}function j(e,t){let n=N(e.properties.text),o=N(t.properties.text);return{state:{...e,properties:{...t.properties,...e.properties,text:n+o,inlineStyleRanges:[...e.properties.inlineStyleRanges??[],...(t.properties.inlineStyleRanges??[]).map(r=>({...r,offset:r.offset+n.length}))],entityRanges:[...e.properties.entityRanges??[],...(t.properties.entityRanges??[]).map(r=>({...r,offset:r.offset+n.length}))]},settings:{...t.settings,...e.settings}},cursor:n.length}}function Me(e,{startIndex:t,endIndex:n,startOffset:o,endOffset:r}){let s=[...e],i=s[t],l=s[n],{originalLineState:a}=I(i,o),{newLineState:c}=I(l,r),{state:u,cursor:p}=j(a,c);return s.splice(t,n-t+1,u),{content:s,cursor:p,resultIndex:t}}function I(e,t){let n=structuredClone(e),o=structuredClone(e);return n.properties.text=e.properties.text.slice(0,t),o.properties.text=e.properties.text.slice(t),n.properties.inlineStyleRanges=(e.properties.inlineStyleRanges??[]).filter(r=>r.offset<t).map(r=>({...r,length:Math.min(r.length,t-r.offset)})),o.properties.inlineStyleRanges=(e.properties.inlineStyleRanges??[]).filter(r=>r.offset+r.length>t).map(r=>({...r,offset:Math.max(0,r.offset-t),length:r.offset+r.length-Math.max(r.offset,t)})),n.properties.entityRanges=(e.properties.entityRanges??[]).filter(r=>r.offset<t).map(r=>({...r,length:Math.min(r.length,t-r.offset)})),o.properties.entityRanges=(e.properties.entityRanges??[]).filter(r=>r.offset+r.length>t).map(r=>({...r,offset:Math.max(0,r.offset-t),length:r.offset+r.length-Math.max(r.offset,t)})),o.componentId=k(),{originalLineState:n,newLineState:o}}function Be(e,t,{namespace:n=e.constructor.NAMESPACE}={}){if(t.key!=="Enter")return!1;t.preventDefault();let{originalLineState:o,newLineState:r}=I(e.getState(),Re(e.element));return e.mrakomor.command.insertBlockElement({range:v(),cursor:0,newLineState:r,originalLineState:o,namespace:n}),!0}function Mo(e,t){if(t.key!=="Enter")return!1;t.preventDefault();let n=R,o=e.mrakomor.resolveComponentConstructor(n);return e.mrakomor.command.insertBlockElement({range:v(),cursor:0,newLineState:e.mrakomor.normalizeComponentState(o.getStateSchema().parse({})),namespace:n}),!0}function Pe(e,t){let n=e.constructor;if(!t)return n.getStateSchema(t).parse();let o=structuredClone(n.getStateSchema(t).parse());return Pt(t.childNodes,o,0,{inlineStyleComponents:e.getInlineStyleComponents(),entityRangeComponents:e.getEntityRangeComponents()}),o.properties.text=N(o.properties.text),o}function we(e){return e?{element:e,read(t){return{inlineStyleRanges:t.properties?.inlineStyleRanges,entityRanges:t.properties?.entityRanges}},write(t,{inlineStyleRanges:n,entityRanges:o}){n!==void 0&&(t.properties.inlineStyleRanges=n),o!==void 0&&(t.properties.entityRanges=o)}}:null}function Te(e,t){let n=q(e,t.startContainer,t.startOffset),o=q(e,t.endContainer,t.endOffset);return{offset:n,length:Math.max(0,o-n)}}function Kr(e,{style:t,offset:n,length:o}){let r=e??[],s=n+o,i=r.find(l=>l.style===t&&l.offset<=n&&l.offset+l.length>=s);return i?r.filter(l=>l!==i):[...r,{style:t,offset:n,length:o}]}function Ur(e,t){let n=e??[],o=t?.length??0,r=t?.offset??0,s=t?.entity?.type,i=r+o,l=n.find(a=>{let c=a.offset,u=a.offset+a.length;return r>=c&&i<=u});return l?l.entity?.type===s?n.filter(a=>a!==l):null:o===0?null:[...n,t]}function Bo(e,t,{style:n,range:o}){if(!e||!t?.element||!o)return null;let r=t.read(e);if(r?.inlineStyleRanges===void 0)return null;let{offset:s,length:i}=Te(t.element,o);return i===0?null:(t.write(e,{inlineStyleRanges:Kr(r.inlineStyleRanges??[],{style:n,offset:s,length:i})}),e)}function Po(e,t,{state:n,namespace:o,range:r}){if(!e||!t?.element||!r)return null;let s=t.read(e);if(s?.entityRanges===void 0)return null;let i={...n,entity:{type:o,...n?.entity},...Te(t.element,r)},l=Ur(s.entityRanges??[],i);return l===null?null:(t.write(e,{entityRanges:l}),e)}var ot=class extends W{static get NAMESPACE(){return Ro}static getStateSchema(t){return m.object({component:m.string().default(this.NAMESPACE),componentId:m.string().default(t?.getAttribute("data-componentid")||k()),properties:m.object({}).default({}),settings:m.object({}).default({})}).default({})}constructor(t){super(t),this.root=null}getState(){return this.state.peek()}onMount(){}onUnmount(){}render(){let t=this.constructor.NAMESPACE.toLowerCase().replaceAll(".","-");return d("div",{className:t,contentEditable:!1,style:"position: relative;",$ref:this.element,"data-state":()=>JSON.stringify(this.state.get()),"data-componentid":this.state.peek().componentId},[d("div",{$ref:o=>{this.root=o},style:"display: block;",contentEditable:!1}),d("span",{style:"position: absolute; bottom: 0; right: 0; width: 10px; height: 100%; outline: none;",contentEditable:!0,[Y]:!0},document.createTextNode("\xA0"))])}onKeydown(t){t.key!=="Backspace"&&t.key!=="ArrowUp"&&t.key!=="ArrowDown"&&t.preventDefault(),Mo(this,t)}};var Tt=class extends ot{static get NAMESPACE(){return"molecule.figure.Figure"}static get LABEL(){return"Figure"}static getStateSchema(t){return m.object({component:m.string().default(this.NAMESPACE),componentId:m.string().default(t?.getAttribute("data-componentid")||k()),properties:m.object({media:m.string().default(""),text:m.string().default("")}).default({}),settings:m.object({trim:m.string().default("original")}).default({})}).default({})}onMount(){let t=d("img",{src:this.state.peek().properties.media,alt:this.state.peek().properties.text,style:"max-width: 100%; height: auto;"});B(this.root,t)}onUnmount(){this.root.innerHTML=""}};function En(){return{resolveConfig:e=>(e.blockComponents.push(Tt),e),resolveComponent:e=>{if(e===Tt.NAMESPACE)return Tt}}}function Fr(e){return e!=null&&typeof e=="object"&&(typeof Element>"u"?e.nodeType===1:e instanceof Element)}function wo(){return m.object({root:m.any().refine(Fr,{message:"root must be a DOM Element"}),id:m.string().optional(),debug:m.boolean().optional(),content:m.array(m.any()).optional(),plugins:m.array(m.function()).optional(),blockComponents:m.array(m.function()).optional(),inlineStyles:m.array(m.function()).optional(),entityRanges:m.array(m.function()).optional(),insertableBlocks:m.array(m.string()).optional(),blockInsertVariants:m.array(m.object({namespace:m.string(),label:m.string(),settings:m.object({}).optional()})).optional(),tooltip:m.any().optional()})}function Oe(){return m.object({length:m.number(),offset:m.number(),style:m.string()})}function rt({type:e,data:t=m.any(),length:n,offset:o}={}){let r=e!=null,s=m.object({type:r?m.string().default(e):m.string(),data:t}),i=n??(r?0:void 0),l=o??(r?0:void 0);return m.object({entity:r?s.default({}):s,length:i==null?m.number():m.number().default(i),offset:l==null?m.number():m.number().default(l)})}function De(){return m.array(rt()).transform(e=>e.filter(t=>t.entity.type==="atom.tts.Voice")).default([])}function ut(e,{component:t,properties:n,settings:o=m.object({}).default({})}){return m.object({component:m.string().default(t),componentId:m.string().default(e?.getAttribute("data-componentid")||k()),properties:m.object(n).default({}),settings:o}).default({})}var X=class extends W{constructor(t){super(t),this._level=1}static getStateSchema(t){return ut(t,{component:this.NAMESPACE,properties:{text:m.string().default(t?.textContent??t?.innerText??"")}})}parseFromHTML(t){if(!t)return this.constructor.getStateSchema(t).parse();let n=structuredClone(this.constructor.getStateSchema(t).parse());return n.properties.text=N(n.properties.text),n}_buildContent(t){return t.properties?.text??""}render(){let t=this.constructor.NAMESPACE.toLowerCase().replaceAll(".","-");return d(`h${this._level}`,{className:t,"data-componentid":this.state.peek().componentId,contentEditable:!0,[Y]:!0,$ref:n=>{this.element=n},$dangerouslySetInnerHTML:()=>{let n=this.state.get(),o=n.properties?.text??"";return N(o)?M(()=>this._buildContent(n)):"<br>"}})}onKeydown(t){if(t.key==="Backspace"){this.#t(t);return}Be(this,t,{namespace:R})}#t(t){if(!v()?.collapsed)return;let o=$(this.element);if(o?.previousElementSibling||N(this.getState()?.properties?.text))return;t.preventDefault(),this.mrakomor.command.transformBlockElement({blockElement:o,namespace:R});let r=()=>{let s=this.mrakomor.getRoot()?.querySelector(".mrakomor-content .mrakomor-block-element"),i=_(s);i?.isConnected&&w(i,0)};r(),x(r)}},se=class extends X{static get NAMESPACE(){return Rt}static get LABEL(){return"H1"}constructor(t){super(t),this._level=1}},ie=class extends X{static get NAMESPACE(){return vt}static get LABEL(){return"H2"}constructor(t){super(t),this._level=2}},le=class extends X{static get NAMESPACE(){return It}static get LABEL(){return"H3"}constructor(t){super(t),this._level=3}},ae=class extends X{static get NAMESPACE(){return Lt}static get LABEL(){return"H4"}constructor(t){super(t),this._level=4}},ce=class extends X{static get NAMESPACE(){return Mt}static get LABEL(){return"H5"}constructor(t){super(t),this._level=5}};function yn(){return{resolveConfig:e=>(e.blockComponents.push(se,ie,le,ae,ce),e),resolveComponent:e=>{if(e===se.NAMESPACE)return se;if(e===ie.NAMESPACE)return ie;if(e===le.NAMESPACE)return le;if(e===ae.NAMESPACE)return ae;if(e===ce.NAMESPACE)return ce}}}var pt=class extends W{static get NAMESPACE(){return R}static get LABEL(){return"P"}constructor(t){super(t)}getInlineStyleComponents(){return this.props?.inlineStyles?.get()??this.mrakomor.getConfig()?.inlineStyles??[]}getEntityRangeComponents(){return this.props?.entityRanges?.get()??this.mrakomor.getConfig()?.entityRanges??[]}static getStateSchema(t){return ut(t,{component:this.NAMESPACE,properties:{entityRanges:m.array(rt()).default([]),inlineStyleRanges:m.array(Oe()).default([]),text:m.string().default(t?.innerText??t?.textContent??"")}})}parseFromHTML(t){return Pe(this,t)}_buildContent(t){return wt(t,{inlineStyleComponents:this.getInlineStyleComponents(),entityRangeComponents:this.getEntityRangeComponents()})}render(){let t=this.constructor.NAMESPACE.toLowerCase().replaceAll(".","-");return d("p",{className:t,"data-componentid":this.state.peek().componentId,contentEditable:!0,[Y]:!0,$ref:n=>{this.element=n},$dangerouslySetInnerHTML:()=>{let n=this.state.get(),o=n.properties?.text??"";return N(o)?M(()=>this._buildContent(n)):"<br>"}})}getFormattingTarget(t){return we(this.element)}onKeydown(t){Be(this,t)}};function bn(){return{resolveConfig:e=>(e.blockComponents.push(pt),e),resolveComponent:e=>{if(e===pt.NAMESPACE)return pt}}}var Ot=class extends ot{static get NAMESPACE(){return vo}onMount(){let t=d("div",{style:"user-select: none;",contentEditable:!1},()=>`Unknown component: ${this.state.get().component}`);B(this.root,t)}onUnmount(){this.root.innerHTML=""}};function To({mrakomor:e}){let t=e.get();return no(Bt,t),Zt(()=>{t._onMount()}),Ze(()=>{t._onUnmount()}),d("div",{id:t._id,className:"mrakomor-editor",contentEditable:!0},[d("div",{className:"mrakomor-tools-container",style:{width:"100%",height:"100%"}}),d("div",{className:"mrakomor-content",style:{spellcheck:!0,outline:"none"}},[Ae(()=>t._getContentState(),n=>n.componentId,(n,o)=>d(()=>{let r;Zt(()=>{r.getNodeComponent=()=>Qt(_(r)),t._setBlockElement(r,o)}),Ze(()=>{t._removeBlockElement(r)});let s=t.resolveComponent(n.get().component,n),i=t.wrapBlockElement(s);return d("div",{className:"mrakomor-block-element",[ne]:!0,$ref:l=>{r=l}},i)}))])])}var Dt=class extends St{static get nodeName(){return"span"}static get NAMESPACE(){return"namespace.EntityRangeElement"}static match(t){return t?.nodeName===this.nodeName.toUpperCase()||t?.entity?.type===this.NAMESPACE}static getStateSchema(t){return m.any()}constructor(t){super(t),this.mrakomor=Se(Bt),this.element=V(null)}render(){return d(this.constructor.nodeName,{},this.props.children)}};var Vr='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>';var Gr='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/></svg>';var ht=class extends Dt{static get nodeName(){return"a"}static get NAMESPACE(){return"atom.link.Link"}static getStateSchema(t){let n;if(t&&t.getAttribute("data-state"))try{n=JSON.parse(t.getAttribute("data-state"))}catch{}return rt({type:this.NAMESPACE,data:m.object({href:m.string().default(n?.entity?.data?.href??t?.href??""),target:m.string().default(n?.entity?.data?.target??t?.target??"")}).default({}),length:n?.length??0,offset:n?.offset??0}).default({})}constructor(t){super(t),this.input=V(n=>x(()=>{n.focus()}))}#t({entity:t,length:n,offset:o}){return d("div",{className:"link-toolbar"},[d("div",{className:"link-toolbar__row",style:{display:"flex"}},[d("button",{className:"link-toolbar__btn",title:"Copy URL",$dangerouslySetInnerHTML:Vr,onClick:()=>navigator.clipboard?.writeText(t.peek()?.data?.href??"")}),d("input",{type:"text",$ref:this.input,value:t.peek()?.data?.href??"",defaultValue:t.peek()?.data?.href??"",onKeyDown:r=>{r.key==="Enter"&&(r.preventDefault(),r.stopPropagation(),this.mrakomor.command.closeDialog())},onInput:r=>{let s=r.currentTarget.value;t.set({...t.peek(),data:{...t.peek()?.data,href:s}})}}),d("select",{value:t.peek()?.data?.target??"",onChange:r=>{t.set({...t.peek(),data:{...t.peek()?.data,target:r.currentTarget.value}})}},[d("option",{value:"",selected:t.peek()?.data?.target===""},""),d("option",{value:"_self",selected:t.peek()?.data?.target==="_self"},"_self"),d("option",{value:"_blank",selected:t.peek()?.data?.target==="_blank"},"_blank"),d("option",{value:"_parent",selected:t.peek()?.data?.target==="_parent"},"_parent"),d("option",{value:"_top",selected:t.peek()?.data?.target==="_top"},"_top")]),d("span",{className:"link-toolbar__sep"}),d("button",{className:"link-toolbar__btn link-toolbar__btn--danger",title:"Remove link",$dangerouslySetInnerHTML:Gr,onClick:()=>{this.mrakomor.command.removeEntityRange?.({state:{entity:t.peek(),length:n.peek(),offset:o.peek()},blockElement:$(this.element)})}})])])}onMount(){let{entity:t}=this.props;t.peek()?.data?.href||this.mrakomor.command.openDialog({element:this.element,children:this.#t(this.props)})}render(){let{entity:t,length:n,offset:o,children:r}=this.props;return d("a",{href:()=>t.get()?.data?.href??"",target:()=>t.get()?.data?.target||null,$ref:this.element,onClick:s=>{s.ctrlKey||s.metaKey||x(()=>{oe(),this.mrakomor.command.openDialog({element:this.element,children:this.#t({entity:t,length:n,offset:o})})})},"data-state":()=>JSON.stringify({entity:t.get(),length:n.get(),offset:o.get()})},r)}};function Cn({mrakomor:e}){return{resolveConfig:t=>(t.entityRanges.push(ht),t),resolveComponent:t=>{if(t===ht.NAMESPACE)return ht},onKeyDown(t){t.key==="k"&&(t.metaKey||t.ctrlKey)&&(t.preventDefault(),e.command.insertEntityRange({namespace:ht.NAMESPACE}))}}}var mt=class extends X{static getStateSchema(t){return ut(t,{component:this.NAMESPACE,properties:{text:m.string().default(t?.textContent??t?.innerText??""),entityRanges:De()}})}getInlineStyleComponents(){return[]}getEntityRangeComponents(){return this.props?.entityRanges?.get()??this.mrakomor.getConfig()?.entityRanges??[]}parseFromHTML(t){return Pe(this,t)}_buildContent(t){return wt(t,{inlineStyleComponents:this.getInlineStyleComponents(),entityRangeComponents:this.getEntityRangeComponents()})}getFormattingTarget(t){return we(this.element)}},ue=class extends mt{static get NAMESPACE(){return Rt}static get LABEL(){return"H1"}constructor(t){super(t),this._level=1}},pe=class extends mt{static get NAMESPACE(){return vt}static get LABEL(){return"H2"}constructor(t){super(t),this._level=2}},me=class extends mt{static get NAMESPACE(){return It}static get LABEL(){return"H3"}constructor(t){super(t),this._level=3}},fe=class extends mt{static get NAMESPACE(){return Lt}static get LABEL(){return"H4"}constructor(t){super(t),this._level=4}},de=class extends mt{static get NAMESPACE(){return Mt}static get LABEL(){return"H5"}constructor(t){super(t),this._level=5}};function zr(){return{resolveConfig:e=>(e.blockComponents.push(ue,pe,me,fe,de),e),resolveComponent:e=>{if(e===ue.NAMESPACE)return ue;if(e===pe.NAMESPACE)return pe;if(e===me.NAMESPACE)return me;if(e===fe.NAMESPACE)return fe;if(e===de.NAMESPACE)return de}}}var Ht=class extends pt{static getStateSchema(t){return ut(t,{component:this.NAMESPACE,properties:{entityRanges:De(),inlineStyleRanges:m.preprocess(()=>[],m.array()).default([]),text:m.string().default(t?.innerText??t?.textContent??"")}})}getInlineStyleComponents(){return[]}};function qr(){return{resolveConfig:e=>(e.blockComponents.push(Ht),e),resolveComponent:e=>{if(e===Ht.NAMESPACE)return Ht}}}var xn=[{id:"Jarda",label:"Voice Jarda",gender:"man"},{id:"Pavel",label:"Voice Pavel",gender:"man"},{id:"Radek",label:"Voice Radek",gender:"man"},{id:"Magda",label:"Voice Magda",gender:"woman"},{id:"Marketa",label:"Voice Marketa",gender:"woman"},{id:"Silva",label:"Voice Silva",gender:"woman"}],Yr='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/></svg>';function Oo(e){return xn.find(t=>t.id===e)??xn[0]}var $t=class extends Dt{static get NAMESPACE(){return"atom.tts.Voice"}static get LABEL(){return"VOICE"}static match(t){return t?.entity?.type===this.NAMESPACE||t?.nodeName==="SPAN"&&t?.getAttribute?.("data-entity-type")===this.NAMESPACE}static getStateSchema(t){let n;if(t?.getAttribute?.("data-state"))try{n=JSON.parse(t.getAttribute("data-state"))}catch{}let o=n?.entity?.data?.voice??t?.getAttribute?.("data-voice")??"";return rt({type:this.NAMESPACE,data:m.object({voice:m.string().default(o)}).default({}),length:n?.length??0,offset:n?.offset??0}).default({})}#t({entity:t,length:n,offset:o}){let r=t.peek()?.data?.voice??"";return d("div",{className:"tts-voice-toolbar"},[d("div",{className:"tts-voice-toolbar__row"},[...xn.map(s=>d("button",{type:"button",className:`tts-voice-toolbar__voice tts-voice-toolbar__voice--${s.gender}${r===s.id?" tts-voice-toolbar__voice--active":""}`,title:s.label,onClick:()=>{t.set({...t.peek(),data:{voice:s.id}}),this.mrakomor.command.closeDialog()}},s.label)),d("span",{className:"tts-voice-toolbar__sep"}),d("button",{type:"button",className:"tts-voice-toolbar__btn tts-voice-toolbar__btn--danger",title:"Remove TTS voice",$dangerouslySetInnerHTML:Yr,onClick:()=>{this.mrakomor.command.removeEntityRange?.({state:{entity:t.peek(),length:n.peek(),offset:o.peek()},blockElement:$(this.element)})}})])])}#n(t){this.mrakomor.command.openDialog({element:this.element,children:this.#t(t)})}onMount(){let{entity:t}=this.props;t.peek()?.data?.voice||this.#n(this.props)}render(){let{entity:t,length:n,offset:o,children:r}=this.props;return d("span",{className:()=>{let s=t.get()?.data?.voice??"";return`atom-tts-voice tts-voice--${Oo(s||"man1").gender}`},"data-entity-type":this.constructor.NAMESPACE,"data-voice":()=>t.get()?.data?.voice??"","data-voice-label":()=>{let s=t.get()?.data?.voice??"";return s?Oo(s).label:""},$ref:this.element,onClick:s=>{s.preventDefault(),this.#n({entity:t,length:n,offset:o})},"data-state":()=>JSON.stringify({entity:t.get(),length:n.get(),offset:o.get()})},r)}};function Sn(){return{resolveConfig:e=>(e.entityRanges.push($t),e),resolveComponent:e=>{if(e===$t.NAMESPACE)return $t}}}var J=Symbol("result-key"),He=Symbol("stopped-event");function Do(e,t){let n=!!t.name,o=t[J]||"result",r=o.includes("."),s={error:null,context:{},[J]:o,...t,[o]:n?void 0:Et(t,o),name:e,[He]:!1,defaultPrevented:!1};return r&&(Wr(s,o),s[o]=n?void 0:Et(t,o)),s.stopPropagation=()=>{s[He]=!0},s.preventDefault=()=>{s.defaultPrevented=!0},s}function Et(e,t){return t===""?e:t.split(".").reduce((o,r)=>o?.[r]??void 0,e)}function kn(e,t,n){let o=t.split("."),r=o.pop(),s=Et(e,o.join("."));return s[r]=n}function Wr(e,t){let n=t.split(".");n.pop(),n.reduce((o,r)=>o[r]=o[r]??{},e)}var $e=class{constructor({logger:t,debug:n}={}){this._logger=t??console,this._debug=n??!1,this._events=new Map,this.addListener=this.on,this.removeListener=this.off}emit(t,n={}){let o=this.listeners(t),r=Do(t,n),s=null,i=null;this._debug&&(typeof this._debug=="function"?this._debug(t,r):this._logger.debug(`Event name: ${t}, event: ${r}`));for(let l of o){if(s&&(s=s.then(a=>(kn(r,r[J],a??Et(r,r[J])),r[He]?Et(r,r[J]):l(r)))),!s){if(r[He])return r;i=l(r)}i instanceof Promise&&!s?s=i:kn(r,r[J],i??Et(r,r[J]))}return s?s.then(l=>(kn(r,r[J],l??Et(r,r[J])),r)):r}emitParallel(t,n={}){let o=this.listeners(t),r=Do(t,n);return Promise.all(o.map(async s=>await s(r))).then(s=>(r[r[J]]=s,r)).catch(s=>{throw r.error=s,s})}listeners(t){return this._events.has(t)?[...this._events.get(t)]:[]}removeAllListeners(t){return t?this.listeners(t).forEach(n=>this.off(t,n)):Array.from(this._events.keys()).forEach(n=>this.removeAllListeners(n))}_addListener(t,n,o){return this._events.has(t)||this._events.set(t,[]),this._events.get(t)[o](n),()=>{this.off(t,n)}}on(t,n){if(typeof n!="function")throw new TypeError("The listener must be a function");return this._addListener(t,n,"push")}prependListener(t,n){return this._addListener(t,n,"unshift")}_addListenerOnce(t,n,o){let r=this[o](t,s=>(r(),n(s)))}once(t,n){return this._addListenerOnce(t,n,"on")}prependOnceListener(t,n){return this._addListenerOnce(t,n,"prependListener")}off(t,n){if(this._events.has(t)){let o=this._events.get(t),r=o.indexOf(n);o.splice(r,1)}}};var g={INSERT_BLOCK_ELEMENT:"mrakomor:insert-block-component",REPLACE_BLOCK_ELEMENT:"mrakomor:replace-block-component",REMOVE_BLOCK_ELEMENT:"mrakomor:remove-block-component",MERGE_BLOCK_ELEMENT:"mrakomor:merge-block-component",INSERT_ENTITY_RANGE:"mrakomor:insert-entity-range",REMOVE_ENTITY_RANGE:"mrakomor:remove-entity-range",INSERT_INLINE_STYLE_RANGE:"mrakomor:insert-inline-style-range",KEYDOWN:"mrakomor:keydown",CLICK:"mrakomor:click",FOCUSIN:"mrakomor:focusin",FOCUSOUT:"mrakomor:focusout",SELECTION_CHANGE:"mrakomor:selection-change",CONTENT_CHANGE:"mrakomor:content-change",TRANSFORM_BLOCK_ELEMENT:"mrakomor:transform-block-element",MOVE_BLOCK_ELEMENT:"mrakomor:move-block-element"};function K(e){return t=>{if(!t.defaultPrevented)return e(t)}}function Ho({mrakomor:e}={}){let t=e?.emitter??new $e;function n(o,r={}){return typeof e?.emit=="function"?e.emit(o,r):t.emit(o,{...r,mrakomor:e})}return{emitter:t,command:{insertBlockElement(o,r){n(g.INSERT_BLOCK_ELEMENT,{...o,options:r})},replaceBlockElement(o,r){n(g.REPLACE_BLOCK_ELEMENT,{...o,options:r})},removeBlockElement(o,r){n(g.REMOVE_BLOCK_ELEMENT,{...o,options:r})},mergeBlockElement(o,r){n(g.MERGE_BLOCK_ELEMENT,{...o,options:r})},insertEntityRange(o,r){n(g.INSERT_ENTITY_RANGE,{...o,options:r})},removeEntityRange(o,r){n(g.REMOVE_ENTITY_RANGE,{...o,options:r})},insertInlineStyleRange(o,r){n(g.INSERT_INLINE_STYLE_RANGE,{...o,options:r})},transformBlockElement(o,r){n(g.TRANSFORM_BLOCK_ELEMENT,{...o,options:r})},moveBlockElement(o,r){n(g.MOVE_BLOCK_ELEMENT,{...o,options:r})}}}}function je(e,t,n){let o=e._getBlockElementIndex(t);if(o===-1)return!1;let r=e.getContent();return r.splice(o,1,e.normalizeComponentState(n)),e._setContentState(r),!0}function $o(e,{customHook:t,applyFn:n,applyArgs:o,resolveRange:r=!0}){let{mrakomor:s}=e,{blockElement:i,range:l}=e;r&&(l=l??v(),i=i??P(l));let a=nt(i),c=a?.[t]?.(e);if(e.defaultPrevented){c&&je(s,i,c);return}let u=a?.getFormattingTarget?.(l);if(!u)return;let p=s._getBlockElementIndex(i);if(p===-1)return;let f=s.getContent(),h=n(structuredClone(f[p]),u,{...o,range:l});h&&je(s,i,h)}function Xr(e){let{mrakomor:t}=e,{blockElement:n,range:o,newLineState:r,originalLineState:s,namespace:i,position:l,cursor:a}=e,c,u;if(l||(n?c=t._getBlockElementIndex(n):o&&(c=t._getBlockElementIndex(P(o))),c===void 0||c===-1))return;u=c+1;let p=t.getContent();s&&p.splice(c,1,t.normalizeComponentState(s)),r&&(r.component=i,p.splice(u,0,t.normalizeComponentState(r))),t._setContentState(p),x(()=>{if(typeof a=="number"&&a===0){let f=_(t._getBlockElements()[u]);f?.isConnected&&w(f,a)}})}function Jr(e){let{mrakomor:t}=e,{blockElement:n,range:o,blocks:r,cursor:s,cursorBlockIndex:i=0}=e;if(!Array.isArray(r)||r.length===0)return;let l=n??(o?P(o):null),a=t._getBlockElementIndex(l);if(a===-1)return;let c=t.getContent();c.splice(a,1,...r.map(u=>t.normalizeComponentState(u))),t._setContentState(c),x(()=>{if(typeof s!="number")return;t._syncBlockElementsFromDom();let u=_(t._getBlockElements()[a+i]);u?.isConnected&&w(u,s)})}function Qr(e){let{mrakomor:t,blockElement:n,namespace:o}=e,r=t._getBlockElementIndex(n);if(r===-1)return;let s=t.getContent()[r];je(t,n,{...s,component:o,componentId:k()})}function Zr(e){let{mrakomor:t,blockElement:n,targetIndex:o}=e,r=t._getBlockElementIndex(n);if(r===-1||typeof o!="number")return;let s=o>r?o-1:o;if(s===r)return;let i=[...t._getContentState()],[l]=i.splice(r,1);i.splice(s,0,l),t._setContentState(i)}function ts(e){let{mrakomor:t,blockElement:n,range:o}=e,r=t._getBlockElementIndex(n);if(r!==-1){let s=t.getContent();s.splice(r,1),t._setContentState(s)}x(()=>{let s=P(o);w(_(s),0)})}function es(e){let{mrakomor:t,state:n,blockElement:o}=e,r=t._getBlockElementIndex(o);if(r===-1)return;let s=structuredClone(t.getContent()[r]),i=n?.offset,l=n?.length,a=n?.entity?.type;s.properties.entityRanges=(s.properties.entityRanges??[]).filter(c=>!(c?.offset===i&&c?.length===l&&c?.entity?.type===a)),je(t,o,s),t.command.closeDialog?.()}function ns(e){$o(e,{customHook:"insertEntityRange",applyFn:Po,applyArgs:{state:e.state,namespace:e.namespace}})}function os(e){$o(e,{customHook:"insertInlineStyleRange",applyFn:Bo,applyArgs:{style:e.style}})}function rs(e){let{mrakomor:t,blockElement:n,previousBlockElement:o}=e,r=t._getBlockElementIndex(o),s=t._getBlockElementIndex(n);if(r===-1||s===-1)return;let i=t.getContent(),l=i[s],a=i[r],c=j(a,l);i.splice(s,1),i.splice(r,1,t.normalizeComponentState(c.state)),t._setContentState(i);let u=()=>{if(typeof c.cursor!="number")return;let p=t._getBlockElements()[r]??o,f=_(p);f?.isConnected&&w(f,c.cursor)};u(),x(u)}function ss(e){let{mrakomor:t}=e,n=t.getRoot();if(e.relatedTarget instanceof Node&&n.contains(e.relatedTarget))return;let[r,s]=M(()=>[t.getContent(),t._getContentState()]);r.length===s.length&&r.every((l,a)=>l===s[a])||t.setContent(r)}function is(e){let t=v();return P(t)?.getNodeComponent?.()?.classInstance?.onKeydown?.(e)}function ls(e){if(e.key!=="Backspace")return;let{mrakomor:t}=e,n=v();if(!n)return;let o=P(n);if(!o)return;let r=Ie(o),s=o?.previousSibling,l=Ie(s)?.childNodes?.[0]?.contentEditable==="true",a=r?.childNodes?.[0]?.contentEditable==="true",c=_(o),u=!N(c?.textContent),p=n.collapsed&&(n.startOffset===0||Re()===0||u),f=l&&p;if(!n.collapsed){let h=ve(n);if(h&&h.startBlock!==h.endBlock){let E=t._getBlockElements(),y=E.indexOf(h.startBlock),b=E.indexOf(h.endBlock),C=t.getContent(),A=C[y],F=C[b];if(y>=0&&b>y&&typeof A?.properties?.text=="string"&&typeof F?.properties?.text=="string"){e.preventDefault();let{content:Ct,cursor:it,resultIndex:z}=Me(C,{startIndex:y,endIndex:b,startOffset:h.startOffset,endOffset:h.endOffset});t._setContentState(Ct.map(L=>t.normalizeComponentState(L))),x(()=>{let L=t._getBlockElements()[z];L&&typeof it=="number"&&w(_(L),it)})}}return}if(!l&&n.startOffset===0||o?.textContent==="\xA0"&&!a){e.preventDefault(),t.command.removeBlockElement({blockElement:s,range:n});return}p&&(e.preventDefault(),f&&t.command.mergeBlockElement({blockElement:o,previousBlockElement:s,range:n}))}function Ke(e){return{resolveComponent:t=>t===ot.NAMESPACE?ot:Ot,registerCommands(t){t.emitter.on(g.INSERT_BLOCK_ELEMENT,K(Xr)),t.emitter.on(g.REPLACE_BLOCK_ELEMENT,K(Jr)),t.emitter.on(g.TRANSFORM_BLOCK_ELEMENT,K(Qr)),t.emitter.on(g.MOVE_BLOCK_ELEMENT,K(Zr)),t.emitter.on(g.REMOVE_BLOCK_ELEMENT,K(ts)),t.emitter.on(g.REMOVE_ENTITY_RANGE,K(es)),t.emitter.on(g.INSERT_ENTITY_RANGE,K(ns)),t.emitter.on(g.INSERT_INLINE_STYLE_RANGE,K(os)),t.emitter.on(g.MERGE_BLOCK_ELEMENT,K(rs))},registerHandlers(t){t.emitter.on(g.FOCUSOUT,ss),t.emitter.on(g.KEYDOWN,K(is)),t.emitter.on(g.KEYDOWN,K(ls))},registerListeners(t){let n=t.getRoot(),{signal:o}=t.listenerAbortController;n.addEventListener("keydown",r=>t.emitDomEvent(g.KEYDOWN,r),{signal:o}),n.addEventListener("focusin",r=>t.emitDomEvent(g.FOCUSIN,r),{signal:o}),n.addEventListener("focusout",r=>t.emitDomEvent(g.FOCUSOUT,r),{signal:o}),n.addEventListener("click",r=>t.emitDomEvent(g.CLICK,r),{signal:o}),document.addEventListener("selectionchange",r=>t.emitDomEvent(g.SELECTION_CHANGE,r),{signal:o})}}}var U=class extends St{static get nodeName(){return"span"}static get style(){return"SPAN"}static match(t){return t.nodeName===this.nodeName.toUpperCase()||t.style===this.style}getState(){return{style:this.constructor.style}}render(){return d(this.constructor.nodeName,{},this.props.children)}};var jt=class extends U{static get nodeName(){return"b"}static get style(){return"BOLD"}static get LABEL(){return d("b",{},"B")}static match(t){return t.nodeName==="strong"?!0:super.match(t)}};var Kt=class extends U{static get nodeName(){return"i"}static get style(){return"ITALIC"}static get LABEL(){return d("i",{},"I")}};var Ut=class extends U{static get nodeName(){return"u"}static get style(){return"UNDERLINE"}static get LABEL(){return d("u",{},"U")}};var Ft=class extends U{static get nodeName(){return"sup"}static get style(){return"SUPERSCRIPT"}static get LABEL(){return d("sup",{},"Sup")}};var Vt=class extends U{static get nodeName(){return"sub"}static get style(){return"SUBSCRIPT"}static get LABEL(){return d("sub",{},"Sub")}};var jo="mrakomor.dialog.Dialog";function Ue({open:e,positionX:t,positionY:n,block:o,dialogRef:r}){let s=D(()=>({position:"absolute",zIndex:"9000",top:`${n.get()}px`,left:`${t.get()}px`,background:"#fff",border:"1px solid #ccc",borderRadius:"4px",padding:"8px 10px",boxShadow:"0 2px 8px rgba(0,0,0,.15)",minWidth:"220px"}));return At(()=>e.get(),d("div",{className:"mrakomor-dialog-container",contenteditable:!1,style:s,$ref:r},()=>o.get()))}Ue.NAMESPACE=jo;function An({mrakomor:e}){let t=null,n=S(!1),o=S(!1),r=S(0),s=S(0),i=S(null),l=V(null),a=V(null);function c(){o.set(!1),_o(),l.set(null),x(()=>{n.set(!1)})}return{resolveComponent(u){if(u===jo)return Ue},registerEvents(){g.OPEN_DIALOG="mrakomor:open-dialog",g.CLOSE_DIALOG="mrakomor:close-dialog"},registerCommands(u){u.command.openDialog=(p,f)=>{u.emit(g.OPEN_DIALOG,{...p,options:f})},u.command.closeDialog=()=>{u.emit(g.CLOSE_DIALOG)}},registerHandlers(){e.emitter.on(g.OPEN_DIALOG,({children:u,element:p})=>{i.set(u??d("div",{},"Empty dialog")),o.set(!0),l.set(p),x(()=>{let{x:f,y:h}=Nt(e.getRoot(),p??{left:0,top:0},a);r.set(f),s.set(h),n.set(!0)})}),e.emitter.on(g.CLOSE_DIALOG,c),e.emitter.on(g.KEYDOWN,u=>{u.key==="Escape"&&o.peek()===!0&&e.command.closeDialog()}),e.emitter.on(g.CLICK,u=>{o.peek()===!0&&n.peek()===!0&&a&&!a.contains(u.target)&&l&&!l.contains(u.target)&&e.command.closeDialog()})},onMount(){let u=e.getRoot()?.querySelector(".mrakomor-tools-container");if(!u)return;let p=document.createElement("div");p.className="mrakomor-dialog-plugin-container",u.append(p),t=B(p,d(Ue,{open:o,positionX:r,positionY:s,block:i,dialogRef:a}))},onUnmount(){t?.(),t=null}}}function Ko({mrakomor:e,open:t,tooltipElement:n}){let o=S(0),r=S(0),s=S([]),i=null,l=null;function a(){t.set(!1),i=null,l=null}Zt(()=>{let u=e.emitter.on(g.OPEN_TOOLTIP,({element:E,actions:y})=>{i=E,l=re(),s.set(y??[]),t.set(!0),x(()=>{let{x:b,y:C}=Nt(e.getRoot(),E,n);o.set(b),r.set(C)})}),p=e.emitter.on(g.CLOSE_TOOLTIP,a),f=e.emitter.on(g.KEYDOWN,()=>{t.peek()===!0&&a()}),h=e.emitter.on(g.CLICK,E=>{t.peek()===!0&&n.current&&!n.current.contains(E.target)&&i&&!i.contains(E.target)&&a()});return()=>{u(),p(),f(),h()}});let c=D(()=>({left:`${o.get()}px`,top:`${r.get()}px`}));return At(()=>t.get(),d("div",{className:"mrakomor-tooltip",contenteditable:!1,style:c,$ref:n},()=>as(s.get(),e,l)))}function as(e,t,n){if(!e.length)return null;let o=null,r=[];for(let s of e){o!==null&&s.group!==o&&r.push(d("span",{className:"mrakomor-tooltip__separator"})),o=s.group;let i=s.label,l=typeof i=="string"?i:typeof i=="function"?d(i,{}):i;r.push(d("button",{type:"button",className:["mrakomor-tooltip__btn",s.active?.()?"mrakomor-tooltip__btn--active":""].filter(Boolean).join(" "),title:s.title??"",onClick:a=>{a.preventDefault(),hn(n),s.onAction(t)}},l))}return d("span",{style:"display: contents"},r)}function _n({mrakomor:e}){let t=null,n=!1,o=S(!1),r=V(null);function s(){let u=e.getConfig();return{inlineStyles:u.inlineStyles,entityRanges:u.entityRanges,blockTransforms:u.blockComponents}}function i(u,p,f,h,E){let y=[],b=e.getConfig()?.inlineStyles??[],C=e.getConfig()?.entityRanges??[],A=E?.read?.(p)??{inlineStyleRanges:p?.properties?.inlineStyleRanges,entityRanges:p?.properties?.entityRanges},F=E?.element??f,zt=A?.inlineStyleRanges??[],{offset:Ct,length:it}=Te(F,h),z=Ct+it;for(let L of u.inlineStyles){let dt=typeof L=="string"?L:L.style,lt=b.find(at=>at.style===dt);if(!lt)continue;let qt=zt.some(at=>at.style===dt&&at.offset<z&&at.offset+at.length>Ct);y.push({label:lt.LABEL??dt,title:dt.charAt(0)+dt.slice(1).toLowerCase(),group:"inline",active:()=>qt,onAction:at=>{oe(),at.command.insertInlineStyleRange({style:lt.style}),x(()=>{gn()})}})}for(let L of u.entityRanges){let dt=typeof L=="string"?L:L.NAMESPACE,lt=C.find(qt=>qt.NAMESPACE===dt);lt&&y.push({label:lt.LABEL??"\u{1F517}",title:lt.NAMESPACE,group:"inline",active:()=>!1,onAction:qt=>{oe(),qt.command.insertEntityRange({namespace:lt.NAMESPACE,blockElement:f})}})}return y}function l(u){return{label:u.LABEL??u.NAMESPACE,title:u.LABEL??u.NAMESPACE,group:"transform",active:()=>!0,onAction:()=>{}}}function a(u,p,f){let h=[];for(let E of u.blockTransforms){let y=typeof E=="string"?E:E.NAMESPACE;if(y===f.NAMESPACE)continue;let b=e.resolveComponentConstructor(y);b&&h.push({label:b.LABEL??y,title:`Convert to ${b.LABEL??y}`,group:"transform",active:()=>!1,onAction:C=>{C.command.transformBlockElement({blockElement:p,namespace:y})}})}return h}function c(){if(n)return;let u=window.getSelection(),p=e.getRoot();if(!u||u.rangeCount===0){e.command.closeTooltip();return}let f=u.getRangeAt(0);if(!p.contains(f.commonAncestorContainer)){e.command.closeTooltip();return}if(f.startContainer===r.current&&o.peek()===!0)return;let h=P(f);if(!h){e.command.closeTooltip();return}let E=nt(h);if(!E){e.command.closeTooltip();return}let y=E.constructor,b=s(),C=E.getState(),A=E.getFormattingTarget?.(f)??null,F;if(!f.collapsed){if(F=[l(y),...a(b,h,y),...i(b,C,h,f,A)],F.length===0){e.command.closeTooltip();return}e.command.openTooltip({element:h,actions:F})}}return{registerEvents(){g.OPEN_TOOLTIP="mrakomor:open-tooltip",g.CLOSE_TOOLTIP="mrakomor:close-tooltip"},registerCommands(u){u.command.openTooltip=(p,f)=>{u.emit(g.OPEN_TOOLTIP,{...p,options:f})},u.command.closeTooltip=p=>{u.emit(g.CLOSE_TOOLTIP,{options:p})}},registerListeners(){e.emitter.on(g.SELECTION_CHANGE,c),g.OPEN_DIALOG&&e.emitter.on(g.OPEN_DIALOG,()=>{n=!0,o.peek()===!0&&e.command.closeTooltip()}),g.CLOSE_DIALOG&&e.emitter.on(g.CLOSE_DIALOG,()=>{n=!1})},onMount(){let u=e.getRoot().querySelector(".mrakomor-tools-container");if(!u)return;let p=document.createElement("div");p.className="mrakomor-tooltip-plugin-container",u.append(p),B(p,d(Ko,{mrakomor:Qn(e),tooltipElement:r,open:o}))}}}var cs='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="currentColor" aria-hidden="true"><circle cx="4" cy="3" r="1.2"/><circle cx="10" cy="3" r="1.2"/><circle cx="4" cy="7" r="1.2"/><circle cx="10" cy="7" r="1.2"/><circle cx="4" cy="11" r="1.2"/><circle cx="10" cy="11" r="1.2"/></svg>';function us(e,t){for(let n=0;n<t.length;n++){let o=t[n].getBoundingClientRect();if(e<o.top+o.height/2)return n}return t.length}function ps(e,t,n,o){if(!e||!t)return;if(n>=o.length){let l=o[o.length-1];if(!l){e.style.display="none";return}let a=t.getBoundingClientRect(),c=l.getBoundingClientRect();e.style.display="block",e.style.top=`${c.bottom-a.top}px`;return}let r=o[n],s=t.getBoundingClientRect(),i=r.getBoundingClientRect();e.style.display="block",e.style.top=`${i.top-s.top}px`}function Uo(){return d("div",{className:"mrakomor-block-gutter",contentEditable:!1},[d("button",{type:"button",className:"mrakomor-block-add","aria-label":"Insert block",contentEditable:!1},"+"),d("button",{type:"button",className:"mrakomor-block-drag","aria-label":"Drag to reorder",contentEditable:!1,$dangerouslySetInnerHTML:cs})])}function Nn({mrakomor:e}){let t=null,n=null;function o(){n?.blockElement&&n.blockElement.classList.remove("mrakomor-block-element--active","mrakomor-block-element--dragging"),n?.handle&&n.handle.releasePointerCapture?.(n.pointerId),t&&(t.style.display="none"),document.body.classList.remove("mrakomor-block-drag-active"),n=null}function r(c){if(!n||c.pointerId!==n.pointerId)return;let u=e.getRoot()?.querySelector(".mrakomor-content");if(!u)return;let p=[...u.querySelectorAll(".mrakomor-block-element")],f=us(c.clientY,p);n.targetIndex=f,ps(t,u,f,p)}function s(c){if(!n||c.pointerId!==n.pointerId)return;let{blockElement:u,targetIndex:p}=n;o(),e.command.moveBlockElement({blockElement:u,targetIndex:p})}function i(c){let u=c.target.closest?.(".mrakomor-block-drag");if(!u)return;c.preventDefault(),c.stopPropagation();let p=u.closest(".mrakomor-block-element");if(!p)return;n&&o();let f=e._getBlockElementIndex(p);if(f===-1)return;let h=c.pointerId??1;u.setPointerCapture?.(h),p.classList.add("mrakomor-block-element--active","mrakomor-block-element--dragging"),document.body.classList.add("mrakomor-block-drag-active"),n={blockElement:p,pointerId:h,handle:u,fromIndex:f,targetIndex:f}}function l(c){r({pointerId:n?.pointerId??1,clientY:c.clientY})}function a(c){s({pointerId:n?.pointerId??1})}return{wrapBlockElement(c){return[d(Uo),d("div",{className:"mrakomor-block-body",[fn]:!0},c)]},registerHandlers(){e.emitter.on(g.CLICK,c=>{let u=c.target?.closest?.(".mrakomor-block-add");if(!u)return;c.preventDefault?.(),c.stopPropagation?.();let p=u.closest(".mrakomor-block-element");p&&e.command.openBlockInsertMenu({blockElement:p,anchorRect:u.getBoundingClientRect()})}),e.emitter.on(g.KEYDOWN,c=>{c.key==="Escape"&&n&&o()})},onMount(){let{signal:c}=e.listenerAbortController;document.addEventListener("pointerdown",i,{capture:!0,signal:c}),document.addEventListener("mousedown",i,{capture:!0,signal:c});let u=e.getRoot()?.querySelector(".mrakomor-content");u&&(t=document.createElement("div"),t.className="mrakomor-block-drop-indicator",t.style.display="none",u.append(t)),document.addEventListener("pointermove",r,{signal:c}),document.addEventListener("pointerup",s,{signal:c}),document.addEventListener("pointercancel",s,{signal:c}),document.addEventListener("mousemove",l,{signal:c}),document.addEventListener("mouseup",a,{signal:c})},onUnmount(){o(),t?.remove(),t=null}}}var ms=[R,Rt,vt,It,Lt,Mt,"molecule.figure.Figure"];function fs(e){let t=e.getConfig()?.insertableBlocks??[],n=(e.getConfig()?.blockComponents??[]).map(l=>l.NAMESPACE),o=e.getConfig()?.blockInsertVariants??[],r=new Set(o.map(l=>l.namespace)),s=new Set,i=[];for(let l of o)i.push({namespace:l.namespace,label:l.label,settings:l.settings});for(let l of[...t,...n]){if(s.has(l)||r.has(l))continue;s.add(l);let a=e.resolveComponentConstructor(l);a&&i.push({namespace:l,label:a.LABEL??l})}return i}function ds(e){if(!e.length)return null;let t=e.map(n=>d("button",{type:"button",className:"mrakomor-block-insert-menu__item",title:n.label,"data-namespace":n.namespace,"data-settings":n.settings?JSON.stringify(n.settings):void 0},n.label));return d("span",{style:"display: contents"},t)}function Fo({open:e,positionX:t,positionY:n,items:o,menuRef:r}){let s=D(()=>({left:`${t.get()}px`,top:`${n.get()}px`}));return At(()=>e.get(),d("div",{className:"mrakomor-block-insert-menu",contenteditable:!1,style:s,$ref:r},()=>ds(o.get())))}function Rn({mrakomor:e}){let t=null,n=V(null),o=null,r=S(!1),s=S(!1),i=S(0),l=S(0),a=S([]);function c(){s.set(!1),o&&o.classList.remove("mrakomor-block-element--active"),o=null,x(()=>{r.set(!1)})}function u(p){let f=p.dataset.namespace;if(f)return f;let h=p.textContent.trim();return(e.getConfig()?.insertableBlocks??[]).find(y=>(e.resolveComponentConstructor(y)?.LABEL??y)===h)}return{resolveConfig(p){return{...p,insertableBlocks:p.insertableBlocks??ms}},registerEvents(){g.OPEN_BLOCK_INSERT_MENU="mrakomor:open-block-insert-menu",g.CLOSE_BLOCK_INSERT_MENU="mrakomor:close-block-insert-menu"},registerCommands(p){p.command.openBlockInsertMenu=({blockElement:f,anchorRect:h})=>{p.emit(g.OPEN_BLOCK_INSERT_MENU,{blockElement:f,anchorRect:h})},p.command.closeBlockInsertMenu=()=>{p.emit(g.CLOSE_BLOCK_INSERT_MENU)}},registerHandlers(){e.emitter.on(g.OPEN_BLOCK_INSERT_MENU,({blockElement:p,anchorRect:f})=>{o&&o.classList.remove("mrakomor-block-element--active"),o=p,p?.classList.add("mrakomor-block-element--active"),a.set(fs(e)),s.set(!0),x(()=>{let h=e.getRoot(),E=n?.offsetHeight??200,y=h.getBoundingClientRect();if(f.top-y.top>E+8){let{x:C,y:A}=Nt(h,f,{offsetHeight:E},4);i.set(C),l.set(A)}else i.set(f.left-y.left),l.set(f.bottom-y.top+4);r.set(!0)})}),e.emitter.on(g.CLOSE_BLOCK_INSERT_MENU,c),e.emitter.on(g.KEYDOWN,p=>{p.key==="Escape"&&s.peek()===!0&&c()}),e.emitter.on(g.CLICK,p=>{s.peek()===!0&&r.peek()===!0&&n&&!n.contains(p.target)&&c()}),e.emitter.on(g.CLICK,p=>{let f=p.target?.closest?.(".mrakomor-block-insert-menu__item");if(!f||!o)return;p.preventDefault?.(),p.stopPropagation?.();let h=u(f);if(!h)return;let E=e.resolveComponentConstructor(h);if(!E)return;let y;if(f.dataset.settings)try{y=JSON.parse(f.dataset.settings)}catch{y=void 0}let b=E.getStateSchema().parse({componentId:k(),component:h,...y?{settings:y}:{}});e.command.insertBlockElement({blockElement:o,namespace:h,newLineState:b,cursor:0}),e.command.closeBlockInsertMenu()})},onMount(){let p=e.getRoot()?.querySelector(".mrakomor-tools-container");if(!p)return;let f=document.createElement("div");f.className="mrakomor-block-insert-menu-container",p.append(f),t=B(f,d(Fo,{open:s,positionX:i,positionY:l,items:a,menuRef:n}))},onUnmount(){t?.(),t=null,n.current=null,o=null}}}function yt(e,t){if(!e||!t)return null;let n=t.startContainer;for(n.nodeType===Node.TEXT_NODE&&(n=n.parentElement);n&&n!==e;){if(n.nodeName==="LI"&&e.contains(n))return n;n=n.parentElement}return null}function Gt(e,t){if(!t)return-1;let n=t.getAttribute?.("data-item-index");if(n!=null&&n!==""){let o=Number(n);if(!Number.isNaN(o))return o}return[...e.querySelectorAll("li")].indexOf(t)}function vn(e,t){return!e||!t?0:q(e,t.startContainer,t.startOffset)}function Vo(e,t){let n={properties:{text:e.text??"",inlineStyleRanges:e.inlineStyleRanges??[],entityRanges:e.entityRanges??[]}},{originalLineState:o,newLineState:r}=I(n,t);return{before:{componentId:e.componentId,depth:e.depth??0,text:o.properties.text,inlineStyleRanges:o.properties.inlineStyleRanges??[],entityRanges:o.properties.entityRanges??[]},after:{componentId:k(),depth:e.depth??0,text:r.properties.text,inlineStyleRanges:r.properties.inlineStyleRanges??[],entityRanges:r.properties.entityRanges??[]}}}function Go(e,t){let n=e.properties?.items??[],o=n[t];if(!o)return{blocks:[e],paragraphIndex:0};let r=n.slice(0,t),s=n.slice(t+1),i={component:R,componentId:k(),properties:{text:o.text??"",inlineStyleRanges:o.inlineStyleRanges??[],entityRanges:o.entityRanges??[]},settings:{}},l=[];return r.length&&l.push({...e,properties:{...e.properties,items:r}}),l.push(i),s.length&&l.push({...e,componentId:r.length?k():e.componentId,properties:{...e.properties,items:s}}),{blocks:l,paragraphIndex:r.length?1:0}}function zo(e,t){return wt({properties:{text:e?.text??"",inlineStyleRanges:e?.inlineStyleRanges??[],entityRanges:e?.entityRanges??[]}},t)}function qo(e,t){let n=Number(e.getAttribute("data-depth")??0)||0,o={properties:{text:N(e.innerText??e.textContent??""),inlineStyleRanges:[],entityRanges:[]}};return Pt(e.childNodes,o,0,t),{componentId:e.getAttribute("data-componentid")||void 0,depth:n,text:N(o.properties.text),inlineStyleRanges:o.properties.inlineStyleRanges,entityRanges:o.properties.entityRanges}}var Fe=e=>m.object({componentId:m.string().default(()=>e?.getAttribute?.("data-componentid")||k()),depth:m.number().default(0),text:m.string().default(""),inlineStyleRanges:m.array(Oe()).default([]),entityRanges:m.array(rt()).default([])}).default({});function gs(e=[]){let t=new Set;return e.map(n=>{if(n?.componentId&&!t.has(n.componentId))return t.add(n.componentId),n;let o=k();return t.add(o),{...n,componentId:o}})}var ft=class extends W{static get NAMESPACE(){return No}static get LABEL(){return"List"}getInlineStyleComponents(){return this.props?.inlineStyles?.get()??this.mrakomor.getConfig()?.inlineStyles??[]}getEntityRangeComponents(){return this.props?.entityRanges?.get()??this.mrakomor.getConfig()?.entityRanges??[]}static getStateSchema(t){let n=t?.nodeName==="OL"?"ORDERED":t?.nodeName==="UL"?"UNORDERED":void 0;return m.object({component:m.string().default(this.NAMESPACE),componentId:m.string().default(t?.getAttribute("data-componentid")||k()),properties:m.object({items:m.array(Fe()).default([Fe().parse()]).transform(gs)}).default({}),settings:m.object({style:m.enum(["ORDERED","UNORDERED"]).default(n??"UNORDERED")}).default({})}).default({})}parseFromHTML(t){if(!t)return this.constructor.getStateSchema(t).parse();let n=structuredClone(this.constructor.getStateSchema(t).parse()),o={inlineStyleComponents:this.getInlineStyleComponents(),entityRangeComponents:this.getEntityRangeComponents()},r=[...t.querySelectorAll("li")];return n.properties.items=r.length?r.map(s=>Fe(s).parse(qo(s,o))):[Fe().parse()],n.settings={...n.settings,style:t.nodeName==="OL"?"ORDERED":t.nodeName==="UL"?"UNORDERED":this.state?.peek()?.settings?.style??n.settings?.style??"UNORDERED"},n}getFormattingTarget(t){let n=t??v(),o=yt(this.element,n);if(!o)return null;let r=Gt(this.element,o);return r<0?null:{element:o,read(s){let i=s.properties?.items?.[r];return{inlineStyleRanges:i?.inlineStyleRanges,entityRanges:i?.entityRanges}},write(s,{inlineStyleRanges:i,entityRanges:l}){let a=s.properties?.items?.[r];a&&(i!==void 0&&(a.inlineStyleRanges=i),l!==void 0&&(a.entityRanges=l))}}}_commitState(t){let n=this.mrakomor.getContent(),o=n.findIndex(r=>r.componentId===t.componentId);o!==-1&&(n.splice(o,1,t),this.mrakomor.setContent(n))}_buildItemContent(t){return zo(t,{inlineStyleComponents:this.getInlineStyleComponents(),entityRangeComponents:this.getEntityRangeComponents()})}render(){let t=this.constructor.NAMESPACE.toLowerCase().replaceAll(".","-"),n=this.state.peek(),o=n.settings?.style==="ORDERED"?"ol":"ul";return d(o,{className:t,"data-componentid":n.componentId,$ref:r=>{this.element=r}},Ae(()=>this.state.get().properties?.items??[],(r,s)=>r.componentId??String(s),(r,s)=>d("li",{contentEditable:!0,[Y]:!0,"data-componentid":()=>r.get().componentId,"data-item-index":()=>{let i=r.get()?.componentId,a=(this.state.get().properties?.items??[]).findIndex(c=>c.componentId===i);return String(a>=0?a:s)},"data-depth":()=>String(r.get()?.depth??0),$dangerouslySetInnerHTML:()=>{let i=r.get(),l=i?.text??"";return N(l)?M(()=>this._buildItemContent(i)):"<br>"}})))}onKeydown(t){if(t.key==="Enter"){this.#t(t);return}t.key==="Backspace"&&this.#n(t)}#t(t){t.preventDefault();let n=v(),o=yt(this.element,n);if(!o)return;let r=Gt(this.element,o),s=vn(o,n),i=this.getState(),l=[...i.properties.items??[]],a=l[r];if(!a)return;let{before:c,after:u}=Vo(a,s);l.splice(r,1,c,u),this._commitState({...i,properties:{...i.properties,items:l}}),x(()=>{let p=this.element?.querySelector(`li[data-item-index="${r+1}"]`);p&&w(p,0)})}#n(t){let n=v(),o=yt(this.element,n);if(!o||!n.collapsed)return;let r=Gt(this.element,o);if(vn(o,n)!==0)return;t.preventDefault();let i=this.getState(),l=[...i.properties.items??[]],a=l[r];if(!a)return;if((a.depth??0)>0){l[r]={...a,depth:a.depth-1},this._commitState({...i,properties:{...i.properties,items:l}});let p=()=>{let f=this.element?.querySelector(`li[data-item-index="${r}"]`);f?.isConnected&&w(f,0)};p(),x(p);return}let{blocks:c,paragraphIndex:u}=Go(i,r);this.mrakomor.command.replaceBlockElement({blockElement:$(this.element),blocks:c,cursor:0,cursorBlockIndex:u})}};function In(){return{resolveConfig:e=>(e.blockComponents.push(ft),e.blockInsertVariants=[...e.blockInsertVariants??[],{label:"UL",namespace:ft.NAMESPACE,settings:{style:"UNORDERED"}},{label:"OL",namespace:ft.NAMESPACE,settings:{style:"ORDERED"}}],e),resolveComponent:e=>{if(e===ft.NAMESPACE)return ft}}}var Xo="application/x-mrakomor-blocks+json",Jo=1;function T(e){let t=e?.component??"";return t===R||t.startsWith(Io)}function bt(e){return Array.isArray(e?.properties?.items)}function Ve(e,t){return T(e)&&T(t)&&e.component===t.component}function st(e){return T(e)?N(e.properties?.text).length:0}function Ge(e,t,n){let o=e?.properties?.text??"",r=Math.max(0,Math.min(t,o.length)),s=Math.max(r,Math.min(n,o.length)),{originalLineState:i}=I(e,s),{newLineState:l}=I(i,r);return l}function hs(e,t,n){let o={component:R,properties:{text:e?.text??"",inlineStyleRanges:e?.inlineStyleRanges??[],entityRanges:e?.entityRanges??[]},settings:{}};return Ge(o,t,n)}function Ln(e,t){let{startIndex:n,endIndex:o,startOffset:r,endOffset:s,listItemIndex:i=-1}=t;if(n<0||o<0||n>o)return[];if(n===o){let a=e[n];if(bt(a)&&i>=0){let c=a.properties.items[i];return c?[hs(c,r,s)]:[structuredClone(a)]}return T(a)?[Ge(a,r,s)]:[structuredClone(a)]}let l=[];for(let a=n;a<=o;a+=1){let c=e[a];a===n&&T(c)?l.push(Ge(c,r,st(c))):a===o&&T(c)?l.push(Ge(c,0,s)):l.push(structuredClone(c))}return l}function Es(e,t,n,o){let r=structuredClone(e),s=r.properties?.items?.[t];if(!s)return r;let i={properties:{text:s.text??"",inlineStyleRanges:s.inlineStyleRanges??[],entityRanges:s.entityRanges??[]}},{originalLineState:l}=I(i,n),{newLineState:a}=I(i,o),{state:c}=j(l,a);return r.properties.items[t]={...s,text:c.properties.text,inlineStyleRanges:c.properties.inlineStyleRanges,entityRanges:c.properties.entityRanges},r}function Mn(e,t){let{startIndex:n,endIndex:o,startOffset:r,endOffset:s,listItemIndex:i=-1}=t,l=[...e];if(n===o){let p=l[n];if(bt(p)&&i>=0)return l[n]=Es(p,i,r,s),{content:l,resultIndex:n,cursor:r};if(T(p)){let{originalLineState:h}=I(p,r),{newLineState:E}=I(p,s),{state:y,cursor:b}=j(h,E);return l[n]=y,{content:l,resultIndex:n,cursor:b}}l.splice(n,1);let f=Math.min(n,Math.max(0,l.length-1));return{content:l,resultIndex:f,cursor:0}}if(T(l[n])&&T(l[o]))return Me(l,{startIndex:n,endIndex:o,startOffset:r,endOffset:s});let a=[];T(l[n])&&a.push(I(l[n],r).originalLineState),T(l[o])&&a.push(I(l[o],s).newLineState);let c=a,u=0;if(a.length===2){let p=j(a[0],a[1]);c=[p.state],u=p.cursor}else a.length===1&&(u=st(a[0]));return l.splice(n,o-n+1,...c),{content:l,resultIndex:c.length?n:Math.max(0,n-1),cursor:u}}function Qo(e,t,n){let o=[...e];o.splice(t+1,0,...n);let r=n[n.length-1];return{content:o,resultIndex:t+n.length,cursor:st(r),listItemIndex:-1}}function ys(e,{listIndex:t,itemIndex:n,offset:o,blocks:r}){let s=structuredClone(e[t]),i=s.properties?.items?.[n],l=r.length===1&&r[0]?.component===R;if(!i||!l)return Qo(e,t,r);let a={properties:{text:i.text??"",inlineStyleRanges:i.inlineStyleRanges??[],entityRanges:i.entityRanges??[]}},c={properties:{text:r[0].properties?.text??"",inlineStyleRanges:r[0].properties?.inlineStyleRanges??[],entityRanges:r[0].properties?.entityRanges??[]}},{originalLineState:u,newLineState:p}=I(a,o),{state:f}=j(u,c),{state:h,cursor:E}=j(f,p);s.properties.items[n]={...i,text:h.properties.text,inlineStyleRanges:h.properties.inlineStyleRanges,entityRanges:h.properties.entityRanges};let y=[...e];return y[t]=s,{content:y,resultIndex:t,cursor:E,listItemIndex:n}}function Zo(e,{index:t,offset:n,blocks:o,listItemIndex:r=-1}){let s=[...e];if(!o?.length)return{content:s,resultIndex:Math.max(0,t),cursor:n??0};if(t<0||t>=s.length){s.push(...o);let E=o[o.length-1];return{content:s,resultIndex:s.length-1,cursor:st(E)}}let i=s[t];if(bt(i)&&r>=0)return ys(s,{listIndex:t,itemIndex:r,offset:n??0,blocks:o});if(!T(i))return Qo(s,t,o);let{originalLineState:l,newLineState:a}=I(i,n??0),c=o[0],u=o[o.length-1],p=[];if(Ve(l,c)?p.push(j(l,c).state):(st(l)>0&&p.push(l),p.push(c)),o.length>1)p.push(...o.slice(1,-1)),Ve(u,a)?p.push(j(u,a).state):(p.push(u),st(a)>0&&p.push(a));else{let E=p[p.length-1];if(Ve(E,a)){let{state:y,cursor:b}=j(E,a);return p[p.length-1]=y,s.splice(t,1,...p),{content:s,resultIndex:t+p.length-1,cursor:b}}st(a)>0&&p.push(a)}s.splice(t,1,...p);let f=o.length>1&&Ve(u,a),h=t+p.length-1-(f||st(a)===0?0:1);return{content:s,resultIndex:Math.max(t,h),cursor:st(u)}}function Yo(e){if(!e)return null;try{let t=JSON.parse(e);if(t&&t.v===Jo&&Array.isArray(t.blocks))return t.blocks}catch{return null}return null}function bs(e){return new DOMParser().parseFromString(e,"text/html").body?.textContent??""}function Wo(e,t=R){return String(e).split(/\r\n|\n|\r/).map(o=>({component:t,properties:{text:o,inlineStyleRanges:[],entityRanges:[]},settings:{}}))}function Cs(e){return bt(e)?(e.properties.items??[]).map(t=>t.text??"").join(`
4
- `):T(e)?N(e.properties?.text):""}function xs(e){return e.map(Cs).join(`
5
- `)}function Ss(e){return{v:Jo,blocks:e.map(t=>structuredClone(t))}}function Bn(e,t){let n=Ss(t);e.setData(Xo,JSON.stringify(n)),e.setData("text/plain",xs(t))}function tr(e,t=R){if(!e)return[];let n=Yo(e.getData(Xo));if(n)return n;let o=e.getData("text/plain")??"",r=Yo(o);if(r)return r;if(o)return Wo(o,t);let s=e.getData("text/html")??"";return s?Wo(bs(s),t):[]}function er(e){let t=structuredClone(e);return t.componentId=k(),Array.isArray(t.properties?.items)&&(t.properties.items=t.properties.items.map(n=>({...n,componentId:k()}))),t}function Pn(e){return!!e.target?.closest?.(".mrakomor-content")}function nr(e,t){if(!t)return-1;let n=e._getBlockElementIndex?.(t);if(typeof n=="number"&&n>=0)return n;let o=nt(t)?.getState?.()?.componentId;return o?e.getContent().findIndex(r=>r.componentId===o):-1}function or(e){return e?.nodeName==="UL"||e?.nodeName==="OL"}function sr(e){let t=nt(e)?.element;if(or(t))return t;let n=_(e);return or(n)?n:n?.querySelector?.("ul, ol")??t??n}function rr(e,t){let n=sr(e),o=yt(n,t),r=yt(n,{startContainer:t.endContainer});return!o||o!==r?-1:Gt(n,o)}function wn(e){let t=v();if(!t)return null;let n=$(t.startContainer)??P(t);if(!n)return null;let o=nr(e,n);if(o<0)return null;let r=e.getContent();if(t.collapsed){let a=re();return{collapsed:!0,startIndex:o,endIndex:o,startOffset:a?.start??0,endOffset:a?.start??0,listItemIndex:bt(r[o])?rr(n,t):-1}}let s=ve(t),i=nr(e,s.endBlock),l=-1;return o===i&&bt(r[o])&&(l=rr(n,t)),{collapsed:!1,startIndex:o,endIndex:i,startOffset:s.startOffset,endOffset:s.endOffset,listItemIndex:l}}function ks(e,t,n,o=-1){x(()=>{let s=e.getRoot()?.querySelectorAll?.(".mrakomor-content .mrakomor-block-element")?.[t],i=_(s);if(o>=0){let l=sr(s);i=l?.querySelector?.(`li[data-item-index="${o}"]`)??l?.querySelectorAll?.("li")?.[o]??i}i?.isConnected&&w(i,n)})}function As(e,t){return t.map(n=>{try{return e.normalizeComponentState(er(n))}catch{return null}}).filter(Boolean)}function ir(e,t,n,o,r=-1){let s=t.map(i=>{try{return e.normalizeComponentState(i)}catch{return null}}).filter(Boolean);e.setContent(s),ks(e,n,o,r)}function _s(e){let t=e.mrakomor;if(!t||!Pn(e)||!e.clipboardData)return;let n=wn(t);if(!n||n.collapsed)return;let o=Ln(t.getContent(),n);o.length&&(e.preventDefault(),Bn(e.clipboardData,o))}function Ns(e){let t=e.mrakomor;if(!t||!Pn(e)||!e.clipboardData)return;let n=wn(t);if(!n||n.collapsed)return;let o=t.getContent(),r=Ln(o,n);if(!r.length)return;e.preventDefault(),Bn(e.clipboardData,r);let s=Mn(o,n);ir(t,s.content,s.resultIndex,s.cursor,n.listItemIndex)}function Rs(e){let t=e.mrakomor;if(!t||e.target&&!Pn(e))return;e.preventDefault();let n=As(t,tr(e.clipboardData,R));if(!n.length)return;let o=t.getContent(),r=wn(t);if(!r)return;let s=o,i=r.startIndex,l=r.startOffset;if(!r.collapsed){let c=Mn(s,r);s=c.content,i=c.resultIndex,l=c.cursor}let a=Zo(s,{index:i,offset:l,blocks:n,listItemIndex:r.listItemIndex});ir(t,a.content,a.resultIndex,a.cursor,a.listItemIndex??r.listItemIndex)}function Tn({root:e,mrakomor:t}){return{registerEvents(){g.COPY="mrakomor:copy",g.CUT="mrakomor:cut",g.PASTE="mrakomor:paste"},registerCommands(n){n.command.copy=(o={})=>{n.emitDomEvent(g.COPY,o)},n.command.cut=(o={})=>{n.emitDomEvent(g.CUT,o)},n.command.paste=(o={})=>{n.emitDomEvent(g.PASTE,o)}},registerListeners(){let{signal:n}=t.listenerAbortController,o=e??t.getRoot();o.addEventListener("copy",r=>t.emitDomEvent(g.COPY,r),{signal:n}),o.addEventListener("cut",r=>t.emitDomEvent(g.CUT,r),{signal:n}),o.addEventListener("paste",r=>t.emitDomEvent(g.PASTE,r),{signal:n}),t.emitter.on(g.COPY,_s),t.emitter.on(g.CUT,Ns),t.emitter.on(g.PASTE,Rs)}}}function lr(e){return[...e.filter(t=>t!==Ke),Ke]}function vs(e){wo().parse(e);let t={debug:!1,content:[],plugins:[Sn,bn,yn,En,In,An,_n,Cn,Nn,Rn,Tn],blockComponents:[],inlineStyles:[jt,Kt,Ut,Vt,Ft],entityRanges:[],tooltip:{}},n={...t,...e,plugins:lr(e.plugins??t.plugins)},o=new ze(n);if(o._init(),!document.head.querySelector("style[data-mrakomor-css]")){let r=d("style",{},`${lo}`);r.setAttribute("data-mrakomor-css",""),document.head.appendChild(r)}return o}var ze=class{#t=k();#n;#e=[];#o=[];#s;#l=!1;#a=null;listenerAbortController=new AbortController;#i=S([],{debug:"content"});#r=[];command;emitter;constructor(t){let{root:n,id:o,content:r}=t;this.#t=o||this.#t,this.#n=n,this.#r=r,this.#o=[],this.#s={...t,plugins:lr(t.plugins??[])};let{emitter:s,command:i}=Ho({mrakomor:this});this.command=i,this.emitter=s}_init(){this.#c(),this.#i=S(this._normalizeContentState(this.#r),{debug:"content"})}#c(){this.#e=this.#s.plugins.map(t=>t?.({config:this.#s,root:this.#n,mrakomor:this}))??[],this.#s=this.#e.reduce((t,n)=>n?.resolveConfig?.(t)??t,this.#s),this.#e.forEach(t=>{t?.registerEvents?.(this)}),this.#e.forEach(t=>{t?.registerCommands?.(this)}),this.#e.forEach(t=>{this.emitter.on(g.KEYDOWN,n=>t?.onKeyDown?.(n))}),this.#e.forEach(t=>{t?.registerHandlers?.(this)}),this.#e.forEach(t=>{t?.registerListeners?.(this)})}emit(t,n={}){return this.emitter.emit(t,{...n,mrakomor:this})}on(t,n){return this.emitter.on(t,n)}onChangeContent(t){return this.on(g.CONTENT_CHANGE,t)}emitDomEvent(t,n){let{clipboardData:o,metaKey:r,altKey:s,code:i,ctrlKey:l,key:a,isComposing:c,repeat:u,button:p,shiftKey:f,which:h,detail:E,isTrusted:y,target:b,relatedTarget:C}=n??{},{defaultPrevented:A}=this.emit(t,{clipboardData:o,metaKey:r,altKey:s,code:i,ctrlKey:l,key:a,isComposing:c,repeat:u,button:p,shiftKey:f,which:h,detail:E,isTrusted:y,target:b,relatedTarget:C});return A&&n?.preventDefault?.(),A}getConfig(){return this.#s}wrapBlockElement(t){for(let n of this.#e){let o=n.wrapBlockElement?.(t);if(o)return o}return t}getRoot(){return this.#n}get _id(){return this.#t}getContent(){return this.#o.map(n=>nt(n)?.getState())}setContent(t=[]){this._setContentState(this._normalizeContentState(t))}_syncBlockElementsFromDom(){let t=this.#n?.querySelector?.(".mrakomor-content");t&&(this.#o=[...t.querySelectorAll(".mrakomor-block-element")])}_getBlockElements(){return this.#o}_getContentState(){return this.#i.get()}_setContentState(t=[]){this.#i.set(t),this.emit(g.CONTENT_CHANGE,{content:t}),x(()=>{this._syncBlockElementsFromDom()})}_normalizeContentState(t=[]){return t.map(n=>structuredClone(this.normalizeComponentState(n)))??[]}_setBlockElement(t,n=this.#o.length){this.#o.splice(n,0,t)}_removeBlockElement(t){this.#o=this.#o.filter(n=>n!==t)}_getBlockElementIndex(t){return this.#o.indexOf(t)}mount(){let t=B(this.#n,d(To,{mrakomor:this}));return this.#l=!0,t}unmount(){this.#l&&(this.#l=!1,io(this.#n))}_onUnmount(){this.listenerAbortController.abort(),this.#e.forEach(t=>{t?.onUnmount?.(this)}),this.emitter.removeAllListeners()}_onMount(){this.#e.forEach(t=>{t?.onMount?.(this)}),x(()=>{this._syncBlockElementsFromDom()})}resolveComponent(t,n){let o=this.resolveComponentConstructor(t);return o?d(o,{state:n}):d(Ot,{state:n})}resolveComponentConstructor(t){let n=this.#s.blockComponents.find(o=>o.NAMESPACE===t);if(!n){for(let o of this.#e)if(n=o?.resolveComponent?.(t),n)break}return n}normalizeComponentState(t){let n="component"in t?t.component:t.entity.type;return this.resolveComponentConstructor(n)?.getStateSchema()?.parse(t)}};export{Uo as BlockChrome,Fo as BlockInsertMenu,jt as Bold,Ue as Dialog,g as EVENT,Tt as Figure,X as HeadlineComponent,Kt as Italic,ht as LinkEntity,ft as List,ze as Mrakomor,pt as Paragraph,Vt as Subscript,Ft as Superscript,Ko as Tooltip,mt as TtsHeadlineComponent,Ht as TtsParagraph,$t as TtsVoice,Ut as Underline,Nn as blockChromePlugin,Rn as blockInsertMenuPlugin,Tn as clipboardPlugin,vs as createMrakomor,Ke as defaultMrakomorPlugin,An as dialogPlugin,En as figurePlugin,yn as headlinePlugin,Cn as linkEntityPlugin,In as listPlugin,bn as paragraphPlugin,_n as tooltipPlugin,zr as ttsHeadlinePlugin,qr as ttsParagraphPlugin,Sn as ttsVoicePlugin};
3
+ `?"":e??""}function I(e){let t=e?.component??"";return t===R||t.startsWith(Bo)}function gt(e){return Array.isArray(e?.properties?.items)}function le(e,t){return I(e)&&I(t)&&e.component===t.component}function Fr(e,t){let n=new Set([0,t]);for(let o of e)n.add(o.offset),n.add(o.offset+o.length);return[...n].sort((o,r)=>o-r)}function Po(e,t,n){return e.filter(o=>o.offset<=t&&o.offset+o.length>=n)}function Vr(e,t,n,{inlineStyleComponents:o,entityRangeComponents:r}){let s=e;for(let i of t){let l=o.find(a=>a.match(i));l&&(s=d(l,{},s))}for(let i of n){let l=r.find(a=>a.match(i));l&&(s=d(l,i,s))}return s}function Dt(e,{inlineStyleComponents:t,entityRangeComponents:n}){let o=document.createDocumentFragment(),r=_(e.properties.text),s=e.properties.inlineStyleRanges??[],i=e.properties.entityRanges??[];if(!r)return o;let l=Fr([...s,...i],r.length);for(let a=0;a<l.length-1;a+=1){let c=l[a],u=l[a+1];if(c>=u)continue;let p=r.slice(c,u),f=Vr(p,Po(s,c,u),Po(i,c,u),{inlineStyleComponents:t,entityRangeComponents:n});P(o,f)}return o}function Ot(e,t,n,{inlineStyleComponents:o,entityRangeComponents:r}){let s=n;for(let i of e){if(i.nodeType===Node.TEXT_NODE){s+=i.textContent.length;continue}if(i.nodeType!==Node.ELEMENT_NODE||i.nodeName==="BR")continue;let l=o.find(c=>c.match(i));if(l){let c=i.textContent.length;t.properties.inlineStyleRanges.push({style:l.style,offset:s,length:c}),s=Ot(i.childNodes,t,s,{inlineStyleComponents:o,entityRangeComponents:r});continue}let a=r.find(c=>c.match(i));if(a){let c=i.textContent.length;t.properties.entityRanges.push({...a.getStateSchema(i).parse(),offset:s,length:c}),s=Ot(i.childNodes,t,s,{inlineStyleComponents:o,entityRangeComponents:r});continue}s=Ot(i.childNodes,t,s,{inlineStyleComponents:o,entityRangeComponents:r})}return s}function U(e,t){let n=_(e.properties.text),o=_(t.properties.text);return{state:{...e,properties:{...t.properties,...e.properties,text:n+o,inlineStyleRanges:[...e.properties.inlineStyleRanges??[],...(t.properties.inlineStyleRanges??[]).map(r=>({...r,offset:r.offset+n.length}))],entityRanges:[...e.properties.entityRanges??[],...(t.properties.entityRanges??[]).map(r=>({...r,offset:r.offset+n.length}))]},settings:{...t.settings,...e.settings}},cursor:n.length}}function we(e,{startIndex:t,endIndex:n,startOffset:o,endOffset:r}){let s=[...e],i=s[t],l=s[n],{originalLineState:a}=M(i,o),{newLineState:c}=M(l,r),{state:u,cursor:p}=U(a,c);return s.splice(t,n-t+1,u),{content:s,cursor:p,resultIndex:t}}function M(e,t){let n=structuredClone(e),o=structuredClone(e);return n.properties.text=e.properties.text.slice(0,t),o.properties.text=e.properties.text.slice(t),n.properties.inlineStyleRanges=(e.properties.inlineStyleRanges??[]).filter(r=>r.offset<t).map(r=>({...r,length:Math.min(r.length,t-r.offset)})),o.properties.inlineStyleRanges=(e.properties.inlineStyleRanges??[]).filter(r=>r.offset+r.length>t).map(r=>({...r,offset:Math.max(0,r.offset-t),length:r.offset+r.length-Math.max(r.offset,t)})),n.properties.entityRanges=(e.properties.entityRanges??[]).filter(r=>r.offset<t).map(r=>({...r,length:Math.min(r.length,t-r.offset)})),o.properties.entityRanges=(e.properties.entityRanges??[]).filter(r=>r.offset+r.length>t).map(r=>({...r,offset:Math.max(0,r.offset-t),length:r.offset+r.length-Math.max(r.offset,t)})),o.componentId=S(),{originalLineState:n,newLineState:o}}function Oe(e,t,{namespace:n=e.constructor.NAMESPACE}={}){if(t.key!=="Enter")return!1;t.preventDefault();let{originalLineState:o,newLineState:r}=M(e.getState(),Me(e.element));return e.mrakomor.command.insertBlockElement({range:v(),cursor:0,newLineState:r,originalLineState:o,namespace:n}),!0}function To(e,t){if(t.key!=="Enter")return!1;t.preventDefault();let n=R,o=e.mrakomor.resolveComponentConstructor(n);return e.mrakomor.command.insertBlockElement({range:v(),cursor:0,newLineState:e.mrakomor.normalizeComponentState(o.getStateSchema().parse({})),namespace:n}),!0}function De(e,t){let n=e.constructor;if(!t)return n.getStateSchema(t).parse();let o=structuredClone(n.getStateSchema(t).parse());return Ot(t.childNodes,o,0,{inlineStyleComponents:e.getInlineStyleComponents(),entityRangeComponents:e.getEntityRangeComponents()}),o.properties.text=_(o.properties.text),o}function He(e){return e?{element:e,read(t){return{inlineStyleRanges:t.properties?.inlineStyleRanges,entityRanges:t.properties?.entityRanges}},write(t,{inlineStyleRanges:n,entityRanges:o}){n!==void 0&&(t.properties.inlineStyleRanges=n),o!==void 0&&(t.properties.entityRanges=o)}}:null}function je(e,t){let n=X(e,t.startContainer,t.startOffset),o=X(e,t.endContainer,t.endOffset);return{offset:n,length:Math.max(0,o-n)}}function Gr(e,{style:t,offset:n,length:o}){let r=e??[],s=n+o,i=r.find(l=>l.style===t&&l.offset<=n&&l.offset+l.length>=s);return i?r.filter(l=>l!==i):[...r,{style:t,offset:n,length:o}]}function zr(e,t){let n=e??[],o=t?.length??0,r=t?.offset??0,s=t?.entity?.type,i=r+o,l=n.find(a=>{let c=a.offset,u=a.offset+a.length;return r>=c&&i<=u});return l?l.entity?.type===s?n.filter(a=>a!==l):null:o===0?null:[...n,t]}function wo(e,t,{style:n,range:o}){if(!e||!t?.element||!o)return null;let r=t.read(e);if(r?.inlineStyleRanges===void 0)return null;let{offset:s,length:i}=je(t.element,o);return i===0?null:(t.write(e,{inlineStyleRanges:Gr(r.inlineStyleRanges??[],{style:n,offset:s,length:i})}),e)}function Oo(e,t,{state:n,namespace:o,range:r}){if(!e||!t?.element||!r)return null;let s=t.read(e);if(s?.entityRanges===void 0)return null;let i={...n,entity:{type:o,...n?.entity},...je(t.element,r)},l=zr(s.entityRanges??[],i);return l===null?null:(t.write(e,{entityRanges:l}),e)}var Q=class extends Te{static get NAMESPACE(){return"namespace.block.BlockComponent"}static get LABEL(){return""}isAtomic(){return!1}setCursor(t){let n=()=>{if(!this.element?.isConnected)return;let o=typeof t=="number"?t:_(this.getState()?.properties?.text).length;L(this.element,o)};n(),x(n)}onKeydown(t){}getFormattingTarget(t){return null}};var at=class extends Q{static get NAMESPACE(){return Lo}static getStateSchema(t){return m.object({component:m.string().default(this.NAMESPACE),componentId:m.string().default(t?.getAttribute("data-componentid")||S()),properties:m.object({}).default({}),settings:m.object({}).default({})}).default({})}constructor(t){super(t),this.root=null}getState(){return this.state.peek()}isAtomic(){return!0}onMount(){}onUnmount(){}render(){let t=this.constructor.NAMESPACE.toLowerCase().replaceAll(".","-");return d("div",{className:t,contentEditable:!1,style:"position: relative;",$ref:this.element,"data-state":()=>JSON.stringify(this.state.get()),"data-componentid":this.state.peek().componentId},[d("div",{$ref:o=>{this.root=o},style:"display: block;",contentEditable:!1}),d("span",{style:"position: absolute; bottom: 0; right: 0; width: 10px; height: 100%; outline: none;",contentEditable:!0,[J]:!0},document.createTextNode("\xA0"))])}onKeydown(t){t.key!=="Backspace"&&t.key!=="ArrowUp"&&t.key!=="ArrowDown"&&t.preventDefault(),To(this,t)}};var Ht=class extends at{static get NAMESPACE(){return"molecule.figure.Figure"}static get LABEL(){return"Figure"}static getStateSchema(t){return m.object({component:m.string().default(this.NAMESPACE),componentId:m.string().default(t?.getAttribute("data-componentid")||S()),properties:m.object({media:m.string().default(""),text:m.string().default("")}).default({}),settings:m.object({trim:m.string().default("original")}).default({})}).default({})}onMount(){let t=d("img",{src:this.state.peek().properties.media,alt:this.state.peek().properties.text,style:"max-width: 100%; height: auto;"});P(this.root,t)}onUnmount(){this.root.innerHTML=""}};function Cn(){return{resolveConfig:e=>(e.blockComponents.push(Ht),e),resolveComponent:e=>{if(e===Ht.NAMESPACE)return Ht}}}function qr(e){return e!=null&&typeof e=="object"&&(typeof Element>"u"?e.nodeType===1:e instanceof Element)}function Do(){return m.object({root:m.any().refine(qr,{message:"root must be a DOM Element"}),id:m.string().optional(),debug:m.boolean().optional(),content:m.array(m.any()).optional(),plugins:m.array(m.function()).optional(),blockComponents:m.array(m.function()).optional(),inlineStyles:m.array(m.function()).optional(),entityRanges:m.array(m.function()).optional(),insertableBlocks:m.array(m.string()).optional(),blockInsertVariants:m.array(m.object({namespace:m.string(),label:m.string(),settings:m.object({}).optional()})).optional(),tooltip:m.any().optional()})}function $e(){return m.object({length:m.number(),offset:m.number(),style:m.string()})}function ct({type:e,data:t=m.any(),length:n,offset:o}={}){let r=e!=null,s=m.object({type:r?m.string().default(e):m.string(),data:t}),i=n??(r?0:void 0),l=o??(r?0:void 0);return m.object({entity:r?s.default({}):s,length:i==null?m.number():m.number().default(i),offset:l==null?m.number():m.number().default(l)})}function jt(){return m.array(ct()).transform(e=>e.filter(t=>t.entity.type==="atom.tts.Voice")).default([])}function ht(e,{component:t,properties:n,settings:o=m.object({}).default({})}){return m.object({component:m.string().default(t),componentId:m.string().default(e?.getAttribute("data-componentid")||S()),properties:m.object(n).default({}),settings:o}).default({})}var Z=class extends Q{constructor(t){super(t),this._level=1}static getStateSchema(t){return ht(t,{component:this.NAMESPACE,properties:{text:m.string().default(t?.textContent??t?.innerText??"")}})}parseFromHTML(t){if(!t)return this.constructor.getStateSchema(t).parse();let n=structuredClone(this.constructor.getStateSchema(t).parse());return n.properties.text=_(n.properties.text),n}_buildContent(t){return t.properties?.text??""}render(){let t=this.constructor.NAMESPACE.toLowerCase().replaceAll(".","-");return d(`h${this._level}`,{className:t,"data-componentid":this.state.peek().componentId,contentEditable:!0,[J]:!0,$ref:n=>{this.element=n},$dangerouslySetInnerHTML:()=>{let n=this.state.get(),o=n.properties?.text??"";return _(o)?B(()=>this._buildContent(n)):"<br>"}})}onKeydown(t){if(t.key==="Backspace"){this.#t(t);return}Oe(this,t,{namespace:R})}#t(t){if(!v()?.collapsed)return;let o=$(this.element);if(o?.previousElementSibling||_(this.getState()?.properties?.text))return;t.preventDefault(),this.mrakomor.command.transformBlockElement({blockElement:o,namespace:R});let r=()=>{let s=this.mrakomor.getRoot()?.querySelector(".mrakomor-content .mrakomor-block-element"),i=N(s);i?.isConnected&&L(i,0)};r(),x(r)}},ae=class extends Z{static get NAMESPACE(){return Lt}static get LABEL(){return"H1"}constructor(t){super(t),this._level=1}},ce=class extends Z{static get NAMESPACE(){return Mt}static get LABEL(){return"H2"}constructor(t){super(t),this._level=2}},ue=class extends Z{static get NAMESPACE(){return Bt}static get LABEL(){return"H3"}constructor(t){super(t),this._level=3}},pe=class extends Z{static get NAMESPACE(){return Pt}static get LABEL(){return"H4"}constructor(t){super(t),this._level=4}},me=class extends Z{static get NAMESPACE(){return Tt}static get LABEL(){return"H5"}constructor(t){super(t),this._level=5}};function xn(){return{resolveConfig:e=>(e.blockComponents.push(ae,ce,ue,pe,me),e),resolveComponent:e=>{if(e===ae.NAMESPACE)return ae;if(e===ce.NAMESPACE)return ce;if(e===ue.NAMESPACE)return ue;if(e===pe.NAMESPACE)return pe;if(e===me.NAMESPACE)return me}}}var Et=class extends Q{static get NAMESPACE(){return R}static get LABEL(){return"P"}constructor(t){super(t)}getInlineStyleComponents(){return this.props?.inlineStyles?.get()??this.mrakomor.getConfig()?.inlineStyles??[]}getEntityRangeComponents(){return this.props?.entityRanges?.get()??this.mrakomor.getConfig()?.entityRanges??[]}static getStateSchema(t){return ht(t,{component:this.NAMESPACE,properties:{entityRanges:m.array(ct()).default([]),inlineStyleRanges:m.array($e()).default([]),text:m.string().default(t?.innerText??t?.textContent??"")}})}parseFromHTML(t){return De(this,t)}_buildContent(t){return Dt(t,{inlineStyleComponents:this.getInlineStyleComponents(),entityRangeComponents:this.getEntityRangeComponents()})}render(){let t=this.constructor.NAMESPACE.toLowerCase().replaceAll(".","-");return d("p",{className:t,"data-componentid":this.state.peek().componentId,contentEditable:!0,[J]:!0,$ref:n=>{this.element=n},$dangerouslySetInnerHTML:()=>{let n=this.state.get(),o=n.properties?.text??"";return _(o)?B(()=>this._buildContent(n)):"<br>"}})}getFormattingTarget(t){return He(this.element)}onKeydown(t){Oe(this,t)}};function Sn(){return{resolveConfig:e=>(e.blockComponents.push(Et),e),resolveComponent:e=>{if(e===Et.NAMESPACE)return Et}}}var $t=class extends at{static get NAMESPACE(){return Mo}onMount(){let t=d("div",{style:"user-select: none;",contentEditable:!1},()=>`Unknown component: ${this.state.get().component}`);P(this.root,t)}onUnmount(){this.root.innerHTML=""}};function Ho({mrakomor:e}){let t=e.get();return so(wt,t),ee(()=>{t._onMount()}),nn(()=>{t._onUnmount()}),d("div",{id:t._id,className:"mrakomor-editor",contentEditable:!0},[d("div",{className:"mrakomor-tools-container",style:{width:"100%",height:"100%"}}),d("div",{className:"mrakomor-content",style:{spellcheck:!0,outline:"none"}},[ve(()=>t._getContentState(),n=>n.componentId,(n,o)=>d(()=>{let r;ee(()=>{r.getNodeComponent=()=>te(N(r)),t._setBlockElement(r,o)}),nn(()=>{t._removeBlockElement(r)});let s=t.resolveComponent(n.get().component,n),i=t.wrapBlockElement(s);return d("div",{className:"mrakomor-block-element",[re]:!0,$ref:l=>{r=l}},i)}))])])}var Ut=class extends _t{static get nodeName(){return"span"}static get NAMESPACE(){return"namespace.EntityRangeElement"}static match(t){return t?.nodeName===this.nodeName.toUpperCase()||t?.entity?.type===this.NAMESPACE}static getStateSchema(t){return m.any()}constructor(t){super(t),this.mrakomor=Ne(wt),this.element=V(null)}render(){return d(this.constructor.nodeName,{},this.props.children)}};var Yr='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>';var Wr='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/></svg>';var xt=class extends Ut{static get nodeName(){return"a"}static get NAMESPACE(){return"atom.link.Link"}static getStateSchema(t){let n;if(t&&t.getAttribute("data-state"))try{n=JSON.parse(t.getAttribute("data-state"))}catch{}return ct({type:this.NAMESPACE,data:m.object({href:m.string().default(n?.entity?.data?.href??t?.href??""),target:m.string().default(n?.entity?.data?.target??t?.target??"")}).default({}),length:n?.length??0,offset:n?.offset??0}).default({})}constructor(t){super(t),this.input=V(n=>x(()=>{n.focus()}))}#t({entity:t,length:n,offset:o}){return d("div",{className:"link-toolbar"},[d("div",{className:"link-toolbar__row",style:{display:"flex"}},[d("button",{className:"link-toolbar__btn",title:"Copy URL",$dangerouslySetInnerHTML:Yr,onClick:()=>navigator.clipboard?.writeText(t.peek()?.data?.href??"")}),d("input",{type:"text",$ref:this.input,value:t.peek()?.data?.href??"",defaultValue:t.peek()?.data?.href??"",onKeyDown:r=>{r.key==="Enter"&&(r.preventDefault(),r.stopPropagation(),this.mrakomor.command.closeDialog())},onInput:r=>{let s=r.currentTarget.value;t.set({...t.peek(),data:{...t.peek()?.data,href:s}})}}),d("select",{value:t.peek()?.data?.target??"",onChange:r=>{t.set({...t.peek(),data:{...t.peek()?.data,target:r.currentTarget.value}})}},[d("option",{value:"",selected:t.peek()?.data?.target===""},""),d("option",{value:"_self",selected:t.peek()?.data?.target==="_self"},"_self"),d("option",{value:"_blank",selected:t.peek()?.data?.target==="_blank"},"_blank"),d("option",{value:"_parent",selected:t.peek()?.data?.target==="_parent"},"_parent"),d("option",{value:"_top",selected:t.peek()?.data?.target==="_top"},"_top")]),d("span",{className:"link-toolbar__sep"}),d("button",{className:"link-toolbar__btn link-toolbar__btn--danger",title:"Remove link",$dangerouslySetInnerHTML:Wr,onClick:()=>{this.mrakomor.command.removeEntityRange?.({state:{entity:t.peek(),length:n.peek(),offset:o.peek()},blockElement:$(this.element)})}})])])}onMount(){let{entity:t}=this.props;t.peek()?.data?.href||this.mrakomor.command.openDialog({element:this.element,children:this.#t(this.props)})}render(){let{entity:t,length:n,offset:o,children:r}=this.props;return d("a",{href:()=>t.get()?.data?.href??"",target:()=>t.get()?.data?.target||null,$ref:this.element,onClick:s=>{s.ctrlKey||s.metaKey||x(()=>{se(),this.mrakomor.command.openDialog({element:this.element,children:this.#t({entity:t,length:n,offset:o})})})},"data-state":()=>JSON.stringify({entity:t.get(),length:n.get(),offset:o.get()})},r)}};function kn({mrakomor:e}){return{resolveConfig:t=>(t.entityRanges.push(xt),t),resolveComponent:t=>{if(t===xt.NAMESPACE)return xt},onKeyDown(t){t.key==="k"&&(t.metaKey||t.ctrlKey)&&(t.preventDefault(),e.command.insertEntityRange({namespace:xt.NAMESPACE}))}}}var yt=class extends Z{static getStateSchema(t){return ht(t,{component:this.NAMESPACE,properties:{text:m.string().default(t?.textContent??t?.innerText??""),entityRanges:jt()}})}getInlineStyleComponents(){return[]}getEntityRangeComponents(){return this.props?.entityRanges?.get()??this.mrakomor.getConfig()?.entityRanges??[]}parseFromHTML(t){return De(this,t)}_buildContent(t){return Dt(t,{inlineStyleComponents:this.getInlineStyleComponents(),entityRangeComponents:this.getEntityRangeComponents()})}getFormattingTarget(t){return He(this.element)}},fe=class extends yt{static get NAMESPACE(){return Lt}static get LABEL(){return"H1"}constructor(t){super(t),this._level=1}},de=class extends yt{static get NAMESPACE(){return Mt}static get LABEL(){return"H2"}constructor(t){super(t),this._level=2}},ge=class extends yt{static get NAMESPACE(){return Bt}static get LABEL(){return"H3"}constructor(t){super(t),this._level=3}},he=class extends yt{static get NAMESPACE(){return Pt}static get LABEL(){return"H4"}constructor(t){super(t),this._level=4}},Ee=class extends yt{static get NAMESPACE(){return Tt}static get LABEL(){return"H5"}constructor(t){super(t),this._level=5}};function Xr(){return{resolveConfig:e=>(e.blockComponents.push(fe,de,ge,he,Ee),e),resolveComponent:e=>{if(e===fe.NAMESPACE)return fe;if(e===de.NAMESPACE)return de;if(e===ge.NAMESPACE)return ge;if(e===he.NAMESPACE)return he;if(e===Ee.NAMESPACE)return Ee}}}var Kt=class extends Et{static getStateSchema(t){return ht(t,{component:this.NAMESPACE,properties:{entityRanges:jt(),text:m.string().default(t?.innerText??t?.textContent??"")}})}getInlineStyleComponents(){return[]}};function Jr(){return{resolveConfig:e=>(e.blockComponents.push(Kt),e),resolveComponent:e=>{if(e===Kt.NAMESPACE)return Kt}}}var An=[{id:"Jarda",label:"Voice Jarda",gender:"man"},{id:"Pavel",label:"Voice Pavel",gender:"man"},{id:"Radek",label:"Voice Radek",gender:"man"},{id:"Magda",label:"Voice Magda",gender:"woman"},{id:"Marketa",label:"Voice Marketa",gender:"woman"},{id:"Silva",label:"Voice Silva",gender:"woman"}],Qr='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/></svg>';function jo(e){return An.find(t=>t.id===e)??An[0]}var Ft=class extends Ut{static get NAMESPACE(){return"atom.tts.Voice"}static get LABEL(){return"VOICE"}static match(t){return t?.entity?.type===this.NAMESPACE||t?.nodeName==="SPAN"&&t?.getAttribute?.("data-entity-type")===this.NAMESPACE}static getStateSchema(t){let n;if(t?.getAttribute?.("data-state"))try{n=JSON.parse(t.getAttribute("data-state"))}catch{}let o=n?.entity?.data?.voice??t?.getAttribute?.("data-voice")??"";return ct({type:this.NAMESPACE,data:m.object({voice:m.string().default(o)}).default({}),length:n?.length??0,offset:n?.offset??0}).default({})}#t({entity:t,length:n,offset:o}){let r=t.peek()?.data?.voice??"";return d("div",{className:"tts-voice-toolbar"},[d("div",{className:"tts-voice-toolbar__row"},[...An.map(s=>d("button",{type:"button",className:`tts-voice-toolbar__voice tts-voice-toolbar__voice--${s.gender}${r===s.id?" tts-voice-toolbar__voice--active":""}`,title:s.label,onClick:()=>{t.set({...t.peek(),data:{voice:s.id}}),this.mrakomor.command.closeDialog()}},s.label)),d("span",{className:"tts-voice-toolbar__sep"}),d("button",{type:"button",className:"tts-voice-toolbar__btn tts-voice-toolbar__btn--danger",title:"Remove TTS voice",$dangerouslySetInnerHTML:Qr,onClick:()=>{this.mrakomor.command.removeEntityRange?.({state:{entity:t.peek(),length:n.peek(),offset:o.peek()},blockElement:$(this.element)})}})])])}#n(t){this.mrakomor.command.openDialog({element:this.element,children:this.#t(t)})}onMount(){let{entity:t}=this.props;t.peek()?.data?.voice||this.#n(this.props)}render(){let{entity:t,length:n,offset:o,children:r}=this.props;return d("span",{className:()=>{let s=t.get()?.data?.voice??"";return`atom-tts-voice tts-voice--${jo(s||"man1").gender}`},"data-entity-type":this.constructor.NAMESPACE,"data-voice":()=>t.get()?.data?.voice??"","data-voice-label":()=>{let s=t.get()?.data?.voice??"";return s?jo(s).label:""},$ref:this.element,onClick:s=>{s.preventDefault(),this.#n({entity:t,length:n,offset:o})},"data-state":()=>JSON.stringify({entity:t.get(),length:n.get(),offset:o.get()})},r)}};function _n(){return{resolveConfig:e=>(e.entityRanges.push(Ft),e),resolveComponent:e=>{if(e===Ft.NAMESPACE)return Ft}}}var tt=Symbol("result-key"),Ue=Symbol("stopped-event");function $o(e,t){let n=!!t.name,o=t[tt]||"result",r=o.includes("."),s={error:null,context:{},[tt]:o,...t,[o]:n?void 0:St(t,o),name:e,[Ue]:!1,defaultPrevented:!1};return r&&(Zr(s,o),s[o]=n?void 0:St(t,o)),s.stopPropagation=()=>{s[Ue]=!0},s.preventDefault=()=>{s.defaultPrevented=!0},s}function St(e,t){return t===""?e:t.split(".").reduce((o,r)=>o?.[r]??void 0,e)}function Nn(e,t,n){let o=t.split("."),r=o.pop(),s=St(e,o.join("."));return s[r]=n}function Zr(e,t){let n=t.split(".");n.pop(),n.reduce((o,r)=>o[r]=o[r]??{},e)}var Ke=class{constructor({logger:t,debug:n}={}){this._logger=t??console,this._debug=n??!1,this._events=new Map,this.addListener=this.on,this.removeListener=this.off}emit(t,n={}){let o=this.listeners(t),r=$o(t,n),s=null,i=null;this._debug&&(typeof this._debug=="function"?this._debug(t,r):this._logger.debug(`Event name: ${t}, event: ${r}`));for(let l of o){if(s&&(s=s.then(a=>(Nn(r,r[tt],a??St(r,r[tt])),r[Ue]?St(r,r[tt]):l(r)))),!s){if(r[Ue])return r;i=l(r)}i instanceof Promise&&!s?s=i:Nn(r,r[tt],i??St(r,r[tt]))}return s?s.then(l=>(Nn(r,r[tt],l??St(r,r[tt])),r)):r}emitParallel(t,n={}){let o=this.listeners(t),r=$o(t,n);return Promise.all(o.map(async s=>await s(r))).then(s=>(r[r[tt]]=s,r)).catch(s=>{throw r.error=s,s})}listeners(t){return this._events.has(t)?[...this._events.get(t)]:[]}removeAllListeners(t){return t?this.listeners(t).forEach(n=>this.off(t,n)):Array.from(this._events.keys()).forEach(n=>this.removeAllListeners(n))}_addListener(t,n,o){return this._events.has(t)||this._events.set(t,[]),this._events.get(t)[o](n),()=>{this.off(t,n)}}on(t,n){if(typeof n!="function")throw new TypeError("The listener must be a function");return this._addListener(t,n,"push")}prependListener(t,n){return this._addListener(t,n,"unshift")}_addListenerOnce(t,n,o){let r=this[o](t,s=>(r(),n(s)))}once(t,n){return this._addListenerOnce(t,n,"on")}prependOnceListener(t,n){return this._addListenerOnce(t,n,"prependListener")}off(t,n){if(this._events.has(t)){let o=this._events.get(t),r=o.indexOf(n);o.splice(r,1)}}};var g={INSERT_BLOCK_ELEMENT:"mrakomor:insert-block-component",REPLACE_BLOCK_ELEMENT:"mrakomor:replace-block-component",REMOVE_BLOCK_ELEMENT:"mrakomor:remove-block-component",MERGE_BLOCK_ELEMENT:"mrakomor:merge-block-component",INSERT_ENTITY_RANGE:"mrakomor:insert-entity-range",REMOVE_ENTITY_RANGE:"mrakomor:remove-entity-range",INSERT_INLINE_STYLE_RANGE:"mrakomor:insert-inline-style-range",KEYDOWN:"mrakomor:keydown",CLICK:"mrakomor:click",FOCUSIN:"mrakomor:focusin",FOCUSOUT:"mrakomor:focusout",SELECTION_CHANGE:"mrakomor:selection-change",CONTENT_CHANGE:"mrakomor:content-change",TRANSFORM_BLOCK_ELEMENT:"mrakomor:transform-block-element",MOVE_BLOCK_ELEMENT:"mrakomor:move-block-element"};function K(e){return t=>{if(!t.defaultPrevented)return e(t)}}function Uo({mrakomor:e}={}){let t=e?.emitter??new Ke;function n(o,r={}){return typeof e?.emit=="function"?e.emit(o,r):t.emit(o,{...r,mrakomor:e})}return{emitter:t,command:{insertBlockElement(o,r){n(g.INSERT_BLOCK_ELEMENT,{...o,options:r})},replaceBlockElement(o,r){n(g.REPLACE_BLOCK_ELEMENT,{...o,options:r})},removeBlockElement(o,r){n(g.REMOVE_BLOCK_ELEMENT,{...o,options:r})},mergeBlockElement(o,r){n(g.MERGE_BLOCK_ELEMENT,{...o,options:r})},insertEntityRange(o,r){n(g.INSERT_ENTITY_RANGE,{...o,options:r})},removeEntityRange(o,r){n(g.REMOVE_ENTITY_RANGE,{...o,options:r})},insertInlineStyleRange(o,r){n(g.INSERT_INLINE_STYLE_RANGE,{...o,options:r})},transformBlockElement(o,r){n(g.TRANSFORM_BLOCK_ELEMENT,{...o,options:r})},moveBlockElement(o,r){n(g.MOVE_BLOCK_ELEMENT,{...o,options:r})}}}}function Fe(e,t,n){let o=e._getBlockElementIndex(t);if(o===-1)return!1;let r=e.getContent();return r.splice(o,1,e.normalizeComponentState(n)),e._setContentState(r),!0}function Ko(e,{customHook:t,applyFn:n,applyArgs:o,resolveRange:r=!0}){let{mrakomor:s}=e,{blockElement:i,range:l}=e;r&&(l=l??v(),i=i??T(l));let a=z(i),c=a?.[t]?.(e);if(e.defaultPrevented){c&&Fe(s,i,c);return}let u=a?.getFormattingTarget?.(l);if(!u)return;let p=s._getBlockElementIndex(i);if(p===-1)return;let f=s.getContent(),h=n(structuredClone(f[p]),u,{...o,range:l});h&&Fe(s,i,h)}function ts(e){let{mrakomor:t}=e,{blockElement:n,range:o,newLineState:r,originalLineState:s,namespace:i,position:l,cursor:a}=e,c,u;if(l||(n?c=t._getBlockElementIndex(n):o&&(c=t._getBlockElementIndex(T(o))),c===void 0||c===-1))return;u=c+1;let p=t.getContent();s&&p.splice(c,1,t.normalizeComponentState(s)),r&&(r.component=i,p.splice(u,0,t.normalizeComponentState(r))),t._setContentState(p),x(()=>{if(typeof a=="number"&&a===0){let f=N(t._getBlockElements()[u]);f?.isConnected&&L(f,a)}})}function es(e){let{mrakomor:t}=e,{blockElement:n,range:o,blocks:r,cursor:s,cursorBlockIndex:i=0}=e;if(!Array.isArray(r)||r.length===0)return;let l=n??(o?T(o):null),a=t._getBlockElementIndex(l);if(a===-1)return;let c=t.getContent();c.splice(a,1,...r.map(u=>t.normalizeComponentState(u))),t._setContentState(c),x(()=>{if(typeof s!="number")return;t._syncBlockElementsFromDom();let u=N(t._getBlockElements()[a+i]);u?.isConnected&&L(u,s)})}function ns(e){let{mrakomor:t,blockElement:n,namespace:o}=e,r=t._getBlockElementIndex(n);if(r===-1)return;let s=t.getContent()[r];Fe(t,n,{...s,component:o,componentId:S()})}function os(e){let{mrakomor:t,blockElement:n,targetIndex:o}=e,r=t._getBlockElementIndex(n);if(r===-1||typeof o!="number")return;let s=o>r?o-1:o;if(s===r)return;let i=[...t._getContentState()],[l]=i.splice(r,1);i.splice(s,0,l),t._setContentState(i)}function rs(e){let{mrakomor:t,blockElement:n,range:o}=e,r=t._getBlockElementIndex(n);if(r!==-1){let s=t.getContent();s.splice(r,1),t._setContentState(s)}x(()=>{let s=T(o);L(N(s),0)})}function ss(e){let{mrakomor:t,state:n,blockElement:o}=e,r=t._getBlockElementIndex(o);if(r===-1)return;let s=structuredClone(t.getContent()[r]),i=n?.offset,l=n?.length,a=n?.entity?.type;s.properties.entityRanges=(s.properties.entityRanges??[]).filter(c=>!(c?.offset===i&&c?.length===l&&c?.entity?.type===a)),Fe(t,o,s),t.command.closeDialog?.()}function is(e){Ko(e,{customHook:"insertEntityRange",applyFn:Oo,applyArgs:{state:e.state,namespace:e.namespace}})}function ls(e){Ko(e,{customHook:"insertInlineStyleRange",applyFn:wo,applyArgs:{style:e.style}})}function as(e){let{mrakomor:t,blockElement:n,previousBlockElement:o}=e,r=t._getBlockElementIndex(o),s=t._getBlockElementIndex(n);if(r===-1||s===-1)return;let i=t.getContent(),l=i[s],a=i[r],c=U(a,l);i.splice(s,1),i.splice(r,1,t.normalizeComponentState(c.state)),t._setContentState(i);let u=()=>{if(typeof c.cursor!="number")return;let p=t._getBlockElements()[r]??o,f=N(p);f?.isConnected&&L(f,c.cursor)};u(),x(u)}function cs(e){let{mrakomor:t}=e,n=t.getRoot();if(e.relatedTarget instanceof Node&&n.contains(e.relatedTarget))return;let[r,s]=B(()=>[t.getContent(),t._getContentState()]);r.length===s.length&&r.every((l,a)=>l===s[a])||t.setContent(r)}function us(e){let t=v();return T(t)?.getNodeComponent?.()?.classInstance?.onKeydown?.(e)}function ps(e){z(e)?.setCursor?.()}function ms(e){if(e.key!=="Backspace")return;let{mrakomor:t}=e,n=v();if(!n)return;let o=T(n);if(!o)return;let r=Pe(o),s=o?.previousSibling,l=Pe(s)?.childNodes?.[0]?.contentEditable==="true",a=r?.childNodes?.[0]?.contentEditable==="true",c=N(o),u=!_(c?.textContent),p=n.collapsed&&(n.startOffset===0||Me()===0||u);if(!n.collapsed){let k=Be(n);if(k&&k.startBlock!==k.endBlock){let w=t._getBlockElements(),nt=w.indexOf(k.startBlock),pt=w.indexOf(k.endBlock),ot=t.getContent(),q=ot[nt],O=ot[pt];if(nt>=0&&pt>nt&&typeof q?.properties?.text=="string"&&typeof O?.properties?.text=="string"){e.preventDefault();let{content:Y,cursor:ft,resultIndex:W}=we(ot,{startIndex:nt,endIndex:pt,startOffset:k.startOffset,endOffset:k.endOffset});t._setContentState(Y.map(ye=>t.normalizeComponentState(ye))),x(()=>{let ye=t._getBlockElements()[W];ye&&typeof ft=="number"&&L(N(ye),ft)})}}return}if(!p)return;let f=t._getBlockElementIndex(o),h=s?t._getBlockElementIndex(s):-1,E=t.getContent(),b=f>=0?E[f]:null,y=h>=0?E[h]:null,C=s?z(s):null;if(s&&y&&b&&I(y)&&I(b)){e.preventDefault(),t.command.mergeBlockElement({blockElement:o,previousBlockElement:s,range:n});return}if(u&&s&&y&&f>=0&&C&&!C.isAtomic?.()){e.preventDefault(),E.splice(f,1),t._setContentState(E),ps(s);return}(!l&&n.startOffset===0||o?.textContent==="\xA0"&&!a)&&(e.preventDefault(),t.command.removeBlockElement({blockElement:s,range:n}))}function Ve(e){return{resolveComponent:t=>t===at.NAMESPACE?at:$t,registerCommands(t){t.emitter.on(g.INSERT_BLOCK_ELEMENT,K(ts)),t.emitter.on(g.REPLACE_BLOCK_ELEMENT,K(es)),t.emitter.on(g.TRANSFORM_BLOCK_ELEMENT,K(ns)),t.emitter.on(g.MOVE_BLOCK_ELEMENT,K(os)),t.emitter.on(g.REMOVE_BLOCK_ELEMENT,K(rs)),t.emitter.on(g.REMOVE_ENTITY_RANGE,K(ss)),t.emitter.on(g.INSERT_ENTITY_RANGE,K(is)),t.emitter.on(g.INSERT_INLINE_STYLE_RANGE,K(ls)),t.emitter.on(g.MERGE_BLOCK_ELEMENT,K(as))},registerHandlers(t){t.emitter.on(g.FOCUSOUT,cs),t.emitter.on(g.KEYDOWN,K(us)),t.emitter.on(g.KEYDOWN,K(ms))},registerListeners(t){let n=t.getRoot(),{signal:o}=t.listenerAbortController;n.addEventListener("keydown",r=>t.emitDomEvent(g.KEYDOWN,r),{signal:o}),n.addEventListener("focusin",r=>t.emitDomEvent(g.FOCUSIN,r),{signal:o}),n.addEventListener("focusout",r=>t.emitDomEvent(g.FOCUSOUT,r),{signal:o}),n.addEventListener("click",r=>t.emitDomEvent(g.CLICK,r),{signal:o}),document.addEventListener("selectionchange",r=>t.emitDomEvent(g.SELECTION_CHANGE,r),{signal:o})}}}var F=class extends _t{static get nodeName(){return"span"}static get style(){return"SPAN"}static match(t){return t.nodeName===this.nodeName.toUpperCase()||t.style===this.style}getState(){return{style:this.constructor.style}}render(){return d(this.constructor.nodeName,{},this.props.children)}};var Vt=class extends F{static get nodeName(){return"b"}static get style(){return"BOLD"}static get LABEL(){return d("b",{},"B")}static match(t){return t.nodeName==="strong"?!0:super.match(t)}};var Gt=class extends F{static get nodeName(){return"i"}static get style(){return"ITALIC"}static get LABEL(){return d("i",{},"I")}};var zt=class extends F{static get nodeName(){return"u"}static get style(){return"UNDERLINE"}static get LABEL(){return d("u",{},"U")}};var qt=class extends F{static get nodeName(){return"sup"}static get style(){return"SUPERSCRIPT"}static get LABEL(){return d("sup",{},"Sup")}};var Yt=class extends F{static get nodeName(){return"sub"}static get style(){return"SUBSCRIPT"}static get LABEL(){return d("sub",{},"Sub")}};var Fo="mrakomor.dialog.Dialog";function Ge({open:e,positionX:t,positionY:n,block:o,dialogRef:r}){let s=H(()=>({position:"absolute",zIndex:"9000",top:`${n.get()}px`,left:`${t.get()}px`,background:"#fff",border:"1px solid #ccc",borderRadius:"4px",padding:"8px 10px",boxShadow:"0 2px 8px rgba(0,0,0,.15)",minWidth:"220px"}));return Rt(()=>e.get(),d("div",{className:"mrakomor-dialog-container",contenteditable:!1,style:s,$ref:r},()=>o.get()))}Ge.NAMESPACE=Fo;function Rn({mrakomor:e}){let t=null,n=A(!1),o=A(!1),r=A(0),s=A(0),i=A(null),l=V(null),a=V(null);function c(){o.set(!1),vo(),l.set(null),x(()=>{n.set(!1)})}return{resolveComponent(u){if(u===Fo)return Ge},registerEvents(){g.OPEN_DIALOG="mrakomor:open-dialog",g.CLOSE_DIALOG="mrakomor:close-dialog"},registerCommands(u){u.command.openDialog=(p,f)=>{u.emit(g.OPEN_DIALOG,{...p,options:f})},u.command.closeDialog=()=>{u.emit(g.CLOSE_DIALOG)}},registerHandlers(){e.emitter.on(g.OPEN_DIALOG,({children:u,element:p})=>{i.set(u??d("div",{},"Empty dialog")),o.set(!0),l.set(p),x(()=>{let{x:f,y:h}=It(e.getRoot(),p??{left:0,top:0},a);r.set(f),s.set(h),n.set(!0)})}),e.emitter.on(g.CLOSE_DIALOG,c),e.emitter.on(g.KEYDOWN,u=>{u.key==="Escape"&&o.peek()===!0&&e.command.closeDialog()}),e.emitter.on(g.CLICK,u=>{o.peek()===!0&&n.peek()===!0&&a&&!a.contains(u.target)&&l&&!l.contains(u.target)&&e.command.closeDialog()})},onMount(){let u=e.getRoot()?.querySelector(".mrakomor-tools-container");if(!u)return;let p=document.createElement("div");p.className="mrakomor-dialog-plugin-container",u.append(p),t=P(p,d(Ge,{open:o,positionX:r,positionY:s,block:i,dialogRef:a}))},onUnmount(){t?.(),t=null}}}function Vo({mrakomor:e,open:t,tooltipElement:n}){let o=A(0),r=A(0),s=A([]),i=null,l=null;function a(){t.set(!1),i=null,l=null}ee(()=>{let u=e.emitter.on(g.OPEN_TOOLTIP,({element:E,actions:b})=>{i=E,l=ie(),s.set(b??[]),t.set(!0),x(()=>{let{x:y,y:C}=It(e.getRoot(),E,n);o.set(y),r.set(C)})}),p=e.emitter.on(g.CLOSE_TOOLTIP,a),f=e.emitter.on(g.KEYDOWN,()=>{t.peek()===!0&&a()}),h=e.emitter.on(g.CLICK,E=>{t.peek()===!0&&n.current&&!n.current.contains(E.target)&&i&&!i.contains(E.target)&&a()});return()=>{u(),p(),f(),h()}});let c=H(()=>({left:`${o.get()}px`,top:`${r.get()}px`}));return Rt(()=>t.get(),d("div",{className:"mrakomor-tooltip",contenteditable:!1,style:c,$ref:n},()=>fs(s.get(),e,l)))}function fs(e,t,n){if(!e.length)return null;let o=null,r=[];for(let s of e){o!==null&&s.group!==o&&r.push(d("span",{className:"mrakomor-tooltip__separator"})),o=s.group;let i=s.label,l=typeof i=="string"?i:typeof i=="function"?d(i,{}):i;r.push(d("button",{type:"button",className:["mrakomor-tooltip__btn",s.active?.()?"mrakomor-tooltip__btn--active":""].filter(Boolean).join(" "),title:s.title??"",onClick:a=>{a.preventDefault(),bn(n),s.onAction(t)}},l))}return d("span",{style:"display: contents"},r)}function vn({mrakomor:e}){let t=null,n=!1,o=A(!1),r=V(null);function s(){let u=e.getConfig();return{inlineStyles:u.inlineStyles,entityRanges:u.entityRanges,blockTransforms:u.blockComponents}}function i(u,p,f,h,E){let b=[],y=e.getConfig()?.inlineStyles??[],C=e.getConfig()?.entityRanges??[],k=E?.read?.(p)??{inlineStyleRanges:p?.properties?.inlineStyleRanges,entityRanges:p?.properties?.entityRanges},w=E?.element??f,nt=k?.inlineStyleRanges??[],{offset:pt,length:ot}=je(w,h),q=pt+ot;for(let O of u.inlineStyles){let mt=typeof O=="string"?O:O.style,Y=y.find(W=>W.style===mt);if(!Y)continue;let ft=nt.some(W=>W.style===mt&&W.offset<q&&W.offset+W.length>pt);b.push({label:Y.LABEL??mt,title:mt.charAt(0)+mt.slice(1).toLowerCase(),group:"inline",active:()=>ft,onAction:W=>{se(),W.command.insertInlineStyleRange({style:Y.style}),x(()=>{yn()})}})}for(let O of u.entityRanges){let mt=typeof O=="string"?O:O.NAMESPACE,Y=C.find(ft=>ft.NAMESPACE===mt);Y&&b.push({label:Y.LABEL??"\u{1F517}",title:Y.NAMESPACE,group:"inline",active:()=>!1,onAction:ft=>{se(),ft.command.insertEntityRange({namespace:Y.NAMESPACE,blockElement:f})}})}return b}function l(u){return{label:u.LABEL??u.NAMESPACE,title:u.LABEL??u.NAMESPACE,group:"transform",active:()=>!0,onAction:()=>{}}}function a(u,p,f){let h=[];for(let E of u.blockTransforms){let b=typeof E=="string"?E:E.NAMESPACE;if(b===f.NAMESPACE)continue;let y=e.resolveComponentConstructor(b);y&&h.push({label:y.LABEL??b,title:`Convert to ${y.LABEL??b}`,group:"transform",active:()=>!1,onAction:C=>{C.command.transformBlockElement({blockElement:p,namespace:b})}})}return h}function c(){if(n)return;let u=window.getSelection(),p=e.getRoot();if(!u||u.rangeCount===0){e.command.closeTooltip();return}let f=u.getRangeAt(0);if(!p.contains(f.commonAncestorContainer)){e.command.closeTooltip();return}if(f.startContainer===r.current&&o.peek()===!0)return;let h=T(f);if(!h){e.command.closeTooltip();return}let E=z(h);if(!E){e.command.closeTooltip();return}let b=E.constructor,y=s(),C=E.getState(),k=E.getFormattingTarget?.(f)??null,w;if(!f.collapsed){if(w=[l(b),...a(y,h,b),...i(y,C,h,f,k)],w.length===0){e.command.closeTooltip();return}e.command.openTooltip({element:h,actions:w})}}return{registerEvents(){g.OPEN_TOOLTIP="mrakomor:open-tooltip",g.CLOSE_TOOLTIP="mrakomor:close-tooltip"},registerCommands(u){u.command.openTooltip=(p,f)=>{u.emit(g.OPEN_TOOLTIP,{...p,options:f})},u.command.closeTooltip=p=>{u.emit(g.CLOSE_TOOLTIP,{options:p})}},registerListeners(){e.emitter.on(g.SELECTION_CHANGE,c),g.OPEN_DIALOG&&e.emitter.on(g.OPEN_DIALOG,()=>{n=!0,o.peek()===!0&&e.command.closeTooltip()}),g.CLOSE_DIALOG&&e.emitter.on(g.CLOSE_DIALOG,()=>{n=!1})},onMount(){let u=e.getRoot().querySelector(".mrakomor-tools-container");if(!u)return;let p=document.createElement("div");p.className="mrakomor-tooltip-plugin-container",u.append(p),P(p,d(Vo,{mrakomor:eo(e),tooltipElement:r,open:o}))}}}var ds='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="currentColor" aria-hidden="true"><circle cx="4" cy="3" r="1.2"/><circle cx="10" cy="3" r="1.2"/><circle cx="4" cy="7" r="1.2"/><circle cx="10" cy="7" r="1.2"/><circle cx="4" cy="11" r="1.2"/><circle cx="10" cy="11" r="1.2"/></svg>';function gs(e,t){for(let n=0;n<t.length;n++){let o=t[n].getBoundingClientRect();if(e<o.top+o.height/2)return n}return t.length}function hs(e,t,n,o){if(!e||!t)return;if(n>=o.length){let l=o[o.length-1];if(!l){e.style.display="none";return}let a=t.getBoundingClientRect(),c=l.getBoundingClientRect();e.style.display="block",e.style.top=`${c.bottom-a.top}px`;return}let r=o[n],s=t.getBoundingClientRect(),i=r.getBoundingClientRect();e.style.display="block",e.style.top=`${i.top-s.top}px`}function Go(){return d("div",{className:"mrakomor-block-gutter",contentEditable:!1},[d("button",{type:"button",className:"mrakomor-block-add","aria-label":"Insert block",contentEditable:!1},"+"),d("button",{type:"button",className:"mrakomor-block-drag","aria-label":"Drag to reorder",contentEditable:!1,$dangerouslySetInnerHTML:ds})])}function In({mrakomor:e}){let t=null,n=null;function o(){n?.blockElement&&n.blockElement.classList.remove("mrakomor-block-element--active","mrakomor-block-element--dragging"),n?.handle&&n.handle.releasePointerCapture?.(n.pointerId),t&&(t.style.display="none"),document.body.classList.remove("mrakomor-block-drag-active"),n=null}function r(c){if(!n||c.pointerId!==n.pointerId)return;let u=e.getRoot()?.querySelector(".mrakomor-content");if(!u)return;let p=[...u.querySelectorAll(".mrakomor-block-element")],f=gs(c.clientY,p);n.targetIndex=f,hs(t,u,f,p)}function s(c){if(!n||c.pointerId!==n.pointerId)return;let{blockElement:u,targetIndex:p}=n;o(),e.command.moveBlockElement({blockElement:u,targetIndex:p})}function i(c){let u=c.target.closest?.(".mrakomor-block-drag");if(!u)return;c.preventDefault(),c.stopPropagation();let p=u.closest(".mrakomor-block-element");if(!p)return;n&&o();let f=e._getBlockElementIndex(p);if(f===-1)return;let h=c.pointerId??1;u.setPointerCapture?.(h),p.classList.add("mrakomor-block-element--active","mrakomor-block-element--dragging"),document.body.classList.add("mrakomor-block-drag-active"),n={blockElement:p,pointerId:h,handle:u,fromIndex:f,targetIndex:f}}function l(c){r({pointerId:n?.pointerId??1,clientY:c.clientY})}function a(c){s({pointerId:n?.pointerId??1})}return{wrapBlockElement(c){return[d(Go),d("div",{className:"mrakomor-block-body",[hn]:!0},c)]},registerHandlers(){e.emitter.on(g.CLICK,c=>{let u=c.target?.closest?.(".mrakomor-block-add");if(!u)return;c.preventDefault?.(),c.stopPropagation?.();let p=u.closest(".mrakomor-block-element");p&&e.command.openBlockInsertMenu({blockElement:p,anchorRect:u.getBoundingClientRect()})}),e.emitter.on(g.KEYDOWN,c=>{c.key==="Escape"&&n&&o()})},onMount(){let{signal:c}=e.listenerAbortController;document.addEventListener("pointerdown",i,{capture:!0,signal:c}),document.addEventListener("mousedown",i,{capture:!0,signal:c});let u=e.getRoot()?.querySelector(".mrakomor-content");u&&(t=document.createElement("div"),t.className="mrakomor-block-drop-indicator",t.style.display="none",u.append(t)),document.addEventListener("pointermove",r,{signal:c}),document.addEventListener("pointerup",s,{signal:c}),document.addEventListener("pointercancel",s,{signal:c}),document.addEventListener("mousemove",l,{signal:c}),document.addEventListener("mouseup",a,{signal:c})},onUnmount(){o(),t?.remove(),t=null}}}var Es=[R,Lt,Mt,Bt,Pt,Tt,"molecule.figure.Figure"];function ys(e){let t=e.getConfig()?.insertableBlocks??[],n=(e.getConfig()?.blockComponents??[]).map(l=>l.NAMESPACE),o=e.getConfig()?.blockInsertVariants??[],r=new Set(o.map(l=>l.namespace)),s=new Set,i=[];for(let l of o)i.push({namespace:l.namespace,label:l.label,settings:l.settings});for(let l of[...t,...n]){if(s.has(l)||r.has(l))continue;s.add(l);let a=e.resolveComponentConstructor(l);a&&i.push({namespace:l,label:a.LABEL??l})}return i}function bs(e){if(!e.length)return null;let t=e.map(n=>d("button",{type:"button",className:"mrakomor-block-insert-menu__item",title:n.label,"data-namespace":n.namespace,"data-settings":n.settings?JSON.stringify(n.settings):void 0},n.label));return d("span",{style:"display: contents"},t)}function zo({open:e,positionX:t,positionY:n,items:o,menuRef:r}){let s=H(()=>({left:`${t.get()}px`,top:`${n.get()}px`}));return Rt(()=>e.get(),d("div",{className:"mrakomor-block-insert-menu",contenteditable:!1,style:s,$ref:r},()=>bs(o.get())))}function Ln({mrakomor:e}){let t=null,n=V(null),o=null,r=A(!1),s=A(!1),i=A(0),l=A(0),a=A([]);function c(){s.set(!1),o&&o.classList.remove("mrakomor-block-element--active"),o=null,x(()=>{r.set(!1)})}function u(p){let f=p.dataset.namespace;if(f)return f;let h=p.textContent.trim();return(e.getConfig()?.insertableBlocks??[]).find(b=>(e.resolveComponentConstructor(b)?.LABEL??b)===h)}return{resolveConfig(p){return{...p,insertableBlocks:p.insertableBlocks??Es}},registerEvents(){g.OPEN_BLOCK_INSERT_MENU="mrakomor:open-block-insert-menu",g.CLOSE_BLOCK_INSERT_MENU="mrakomor:close-block-insert-menu"},registerCommands(p){p.command.openBlockInsertMenu=({blockElement:f,anchorRect:h})=>{p.emit(g.OPEN_BLOCK_INSERT_MENU,{blockElement:f,anchorRect:h})},p.command.closeBlockInsertMenu=()=>{p.emit(g.CLOSE_BLOCK_INSERT_MENU)}},registerHandlers(){e.emitter.on(g.OPEN_BLOCK_INSERT_MENU,({blockElement:p,anchorRect:f})=>{o&&o.classList.remove("mrakomor-block-element--active"),o=p,p?.classList.add("mrakomor-block-element--active"),a.set(ys(e)),s.set(!0),x(()=>{let h=e.getRoot(),E=n?.offsetHeight??200,b=h.getBoundingClientRect();if(f.top-b.top>E+8){let{x:C,y:k}=It(h,f,{offsetHeight:E},4);i.set(C),l.set(k)}else i.set(f.left-b.left),l.set(f.bottom-b.top+4);r.set(!0)})}),e.emitter.on(g.CLOSE_BLOCK_INSERT_MENU,c),e.emitter.on(g.KEYDOWN,p=>{p.key==="Escape"&&s.peek()===!0&&c()}),e.emitter.on(g.CLICK,p=>{s.peek()===!0&&r.peek()===!0&&n&&!n.contains(p.target)&&c()}),e.emitter.on(g.CLICK,p=>{let f=p.target?.closest?.(".mrakomor-block-insert-menu__item");if(!f||!o)return;p.preventDefault?.(),p.stopPropagation?.();let h=u(f);if(!h)return;let E=e.resolveComponentConstructor(h);if(!E)return;let b;if(f.dataset.settings)try{b=JSON.parse(f.dataset.settings)}catch{b=void 0}let y=E.getStateSchema().parse({componentId:S(),component:h,...b?{settings:b}:{}});e.command.insertBlockElement({blockElement:o,namespace:h,newLineState:y,cursor:0}),e.command.closeBlockInsertMenu()})},onMount(){let p=e.getRoot()?.querySelector(".mrakomor-tools-container");if(!p)return;let f=document.createElement("div");f.className="mrakomor-block-insert-menu-container",p.append(f),t=P(f,d(zo,{open:s,positionX:i,positionY:l,items:a,menuRef:n}))},onUnmount(){t?.(),t=null,n.current=null,o=null}}}function ze(e=[]){let t=new Set;return e.map(n=>{if(n?.componentId&&!t.has(n.componentId))return t.add(n.componentId),n;let o=S();return t.add(o),{...n,componentId:o}})}function kt(e,t){if(!e||!t)return null;let n=t.startContainer;for(n.nodeType===Node.TEXT_NODE&&(n=n.parentElement);n&&n!==e;){if(n.nodeName==="LI"&&e.contains(n))return n;n=n.parentElement}return null}function Wt(e,t){if(!t)return-1;let n=t.getAttribute?.("data-item-index");if(n!=null&&n!==""){let o=Number(n);if(!Number.isNaN(o))return o}return[...e.querySelectorAll("li")].indexOf(t)}function Mn(e,t){return!e||!t?0:X(e,t.startContainer,t.startOffset)}function qo(e,t){let n={properties:{text:e.text??"",inlineStyleRanges:e.inlineStyleRanges??[],entityRanges:e.entityRanges??[]}},{originalLineState:o,newLineState:r}=M(n,t);return{before:{componentId:e.componentId,depth:e.depth??0,text:o.properties.text,inlineStyleRanges:o.properties.inlineStyleRanges??[],entityRanges:o.properties.entityRanges??[]},after:{componentId:S(),depth:e.depth??0,text:r.properties.text,inlineStyleRanges:r.properties.inlineStyleRanges??[],entityRanges:r.properties.entityRanges??[]}}}function Yo(e,t){let n=e.properties?.items??[],o=n[t];if(!o)return{blocks:[e],paragraphIndex:0};let r=n.slice(0,t),s=n.slice(t+1),i={component:R,componentId:S(),properties:{text:o.text??"",inlineStyleRanges:o.inlineStyleRanges??[],entityRanges:o.entityRanges??[]},settings:{}},l=[];return r.length&&l.push({...e,properties:{...e.properties,items:r}}),l.push(i),s.length&&l.push({...e,componentId:r.length?S():e.componentId,properties:{...e.properties,items:s}}),{blocks:l,paragraphIndex:r.length?1:0}}function Wo(e,t){return Dt({properties:{text:e?.text??"",inlineStyleRanges:e?.inlineStyleRanges??[],entityRanges:e?.entityRanges??[]}},t)}function Xo(e,t){let n=Number(e.getAttribute("data-depth")??0)||0,o={properties:{text:_(e.innerText??e.textContent??""),inlineStyleRanges:[],entityRanges:[]}};return Ot(e.childNodes,o,0,t),{componentId:e.getAttribute("data-componentid")||void 0,depth:n,text:_(o.properties.text),inlineStyleRanges:o.properties.inlineStyleRanges,entityRanges:o.properties.entityRanges}}var qe=e=>m.object({componentId:m.string().default(()=>e?.getAttribute?.("data-componentid")||S()),depth:m.number().default(0),text:m.string().default(""),inlineStyleRanges:m.array($e()).default([]),entityRanges:m.array(ct()).default([])}).default({}),et=class extends Q{static get NAMESPACE(){return Io}static get LABEL(){return"List"}getInlineStyleComponents(){return this.props?.inlineStyles?.get()??this.mrakomor.getConfig()?.inlineStyles??[]}getEntityRangeComponents(){return this.props?.entityRanges?.get()??this.mrakomor.getConfig()?.entityRanges??[]}static getStateSchema(t){let n=t?.nodeName==="OL"?"ORDERED":t?.nodeName==="UL"?"UNORDERED":void 0;return m.object({component:m.string().default(this.NAMESPACE),componentId:m.string().default(t?.getAttribute("data-componentid")||S()),properties:m.object({items:m.array(qe()).default([qe().parse()]).transform(ze)}).default({}),settings:m.object({style:m.enum(["ORDERED","UNORDERED"]).default(n??"UNORDERED")}).default({})}).default({})}parseFromHTML(t){if(!t)return this.constructor.getStateSchema(t).parse();let n=structuredClone(this.constructor.getStateSchema(t).parse()),o={inlineStyleComponents:this.getInlineStyleComponents(),entityRangeComponents:this.getEntityRangeComponents()},r=[...t.querySelectorAll("li")];return n.properties.items=r.length?r.map(s=>qe(s).parse(Xo(s,o))):[qe().parse()],n.settings={...n.settings,style:t.nodeName==="OL"?"ORDERED":t.nodeName==="UL"?"UNORDERED":this.state?.peek()?.settings?.style??n.settings?.style??"UNORDERED"},n}getFormattingTarget(t){let n=t??v(),o=kt(this.element,n);if(!o)return null;let r=Wt(this.element,o);return r<0?null:{element:o,read(s){let i=s.properties?.items?.[r];return{inlineStyleRanges:i?.inlineStyleRanges,entityRanges:i?.entityRanges}},write(s,{inlineStyleRanges:i,entityRanges:l}){let a=s.properties?.items?.[r];a&&(i!==void 0&&(a.inlineStyleRanges=i),l!==void 0&&(a.entityRanges=l))}}}_commitState(t){let n=this.mrakomor.getContent(),o=n.findIndex(r=>r.componentId===t.componentId);o!==-1&&(n.splice(o,1,t),this.mrakomor.setContent(n))}_buildItemContent(t){return Wo(t,{inlineStyleComponents:this.getInlineStyleComponents(),entityRangeComponents:this.getEntityRangeComponents()})}render(){let t=this.constructor.NAMESPACE.toLowerCase().replaceAll(".","-"),n=this.state.peek(),o=n.settings?.style==="ORDERED"?"ol":"ul";return d(o,{className:t,"data-componentid":n.componentId,$ref:r=>{this.element=r}},ve(()=>this.state.get().properties?.items??[],(r,s)=>r.componentId??String(s),(r,s)=>d("li",{contentEditable:!0,[J]:!0,"data-componentid":()=>r.get().componentId,"data-item-index":()=>{let i=r.get()?.componentId,a=(this.state.get().properties?.items??[]).findIndex(c=>c.componentId===i);return String(a>=0?a:s)},"data-depth":()=>String(r.get()?.depth??0),$dangerouslySetInnerHTML:()=>{let i=r.get(),l=i?.text??"";return _(l)?B(()=>this._buildItemContent(i)):"<br>"}})))}onKeydown(t){if(t.key==="Enter"){this.#n(t);return}t.key==="Backspace"&&this.#e(t)}setCursor(t){let n=this.getState()?.properties?.items??[],o=n.length-1;if(o<0)return;let r=typeof t=="number"?t:_(n[o]?.text).length,s=()=>{let i=this.element?.querySelector(`li[data-item-index="${o}"]`);i?.isConnected&&L(i,r)};s(),x(s)}#t(t){let n=this.getState(),o=[...n.properties.items??[]],r=o[t];if(!r)return;if((r.depth??0)>0){o[t]={...r,depth:r.depth-1},this._commitState({...n,properties:{...n.properties,items:o}});let l=()=>{let a=this.element?.querySelector(`li[data-item-index="${t}"]`);a?.isConnected&&L(a,0)};l(),x(l);return}let{blocks:s,paragraphIndex:i}=Yo(n,t);this.mrakomor.command.replaceBlockElement({blockElement:$(this.element),blocks:s,cursor:0,cursorBlockIndex:i})}#n(t){t.preventDefault();let n=v(),o=kt(this.element,n);if(!o)return;let r=Wt(this.element,o),s=Mn(o,n),i=this.getState(),l=[...i.properties.items??[]],a=l[r];if(!a)return;if(!_(a.text)){this.#t(r);return}let{before:c,after:u}=qo(a,s);l.splice(r,1,c,u),this._commitState({...i,properties:{...i.properties,items:l}}),x(()=>{let p=this.element?.querySelector(`li[data-item-index="${r+1}"]`);p&&L(p,0)})}#e(t){let n=v(),o=kt(this.element,n);if(!o||!n.collapsed)return;let r=Wt(this.element,o);Mn(o,n)===0&&(t.preventDefault(),this.#t(r))}};function Bn(){return{resolveConfig:e=>(e.blockComponents.push(et),e.blockInsertVariants=[...e.blockInsertVariants??[],{label:"UL",namespace:et.NAMESPACE,settings:{style:"UNORDERED"}},{label:"OL",namespace:et.NAMESPACE,settings:{style:"ORDERED"}}],e),resolveComponent:e=>{if(e===et.NAMESPACE)return et}}}var Zo="application/x-mrakomor-blocks+json",tr=1;function ut(e){return I(e)?_(e.properties?.text).length:0}function Ye(e,t,n){let o=e?.properties?.text??"",r=Math.max(0,Math.min(t,o.length)),s=Math.max(r,Math.min(n,o.length)),{originalLineState:i}=M(e,s),{newLineState:l}=M(i,r);return l}function Cs(e,t,n){let o={component:R,properties:{text:e?.text??"",inlineStyleRanges:e?.inlineStyleRanges??[],entityRanges:e?.entityRanges??[]},settings:{}};return Ye(o,t,n)}function Pn(e,t){let{startIndex:n,endIndex:o,startOffset:r,endOffset:s,listItemIndex:i=-1}=t;if(n<0||o<0||n>o)return[];if(n===o){let a=e[n];if(gt(a)&&i>=0){let c=a.properties.items[i];return c?[Cs(c,r,s)]:[structuredClone(a)]}return I(a)?[Ye(a,r,s)]:[structuredClone(a)]}let l=[];for(let a=n;a<=o;a+=1){let c=e[a];a===n&&I(c)?l.push(Ye(c,r,ut(c))):a===o&&I(c)?l.push(Ye(c,0,s)):l.push(structuredClone(c))}return l}function xs(e,t,n,o){let r=structuredClone(e),s=r.properties?.items?.[t];if(!s)return r;let i={properties:{text:s.text??"",inlineStyleRanges:s.inlineStyleRanges??[],entityRanges:s.entityRanges??[]}},{originalLineState:l}=M(i,n),{newLineState:a}=M(i,o),{state:c}=U(l,a);return r.properties.items[t]={...s,text:c.properties.text,inlineStyleRanges:c.properties.inlineStyleRanges,entityRanges:c.properties.entityRanges},r}function Tn(e,t){let{startIndex:n,endIndex:o,startOffset:r,endOffset:s,listItemIndex:i=-1}=t,l=[...e];if(n===o){let p=l[n];if(gt(p)&&i>=0)return l[n]=xs(p,i,r,s),{content:l,resultIndex:n,cursor:r};if(I(p)){let{originalLineState:h}=M(p,r),{newLineState:E}=M(p,s),{state:b,cursor:y}=U(h,E);return l[n]=b,{content:l,resultIndex:n,cursor:y}}l.splice(n,1);let f=Math.min(n,Math.max(0,l.length-1));return{content:l,resultIndex:f,cursor:0}}if(I(l[n])&&I(l[o]))return we(l,{startIndex:n,endIndex:o,startOffset:r,endOffset:s});let a=[];I(l[n])&&a.push(M(l[n],r).originalLineState),I(l[o])&&a.push(M(l[o],s).newLineState);let c=a,u=0;if(a.length===2){let p=U(a[0],a[1]);c=[p.state],u=p.cursor}else a.length===1&&(u=ut(a[0]));return l.splice(n,o-n+1,...c),{content:l,resultIndex:c.length?n:Math.max(0,n-1),cursor:u}}function er(e,t,n){let o=[...e];o.splice(t+1,0,...n);let r=n[n.length-1];return{content:o,resultIndex:t+n.length,cursor:ut(r),listItemIndex:-1}}function Ss(e,{listIndex:t,itemIndex:n,offset:o,blocks:r}){let s=structuredClone(e[t]),i=s.properties?.items?.[n],l=r.length===1&&r[0]?.component===R;if(!i||!l)return er(e,t,r);let a={properties:{text:i.text??"",inlineStyleRanges:i.inlineStyleRanges??[],entityRanges:i.entityRanges??[]}},c={properties:{text:r[0].properties?.text??"",inlineStyleRanges:r[0].properties?.inlineStyleRanges??[],entityRanges:r[0].properties?.entityRanges??[]}},{originalLineState:u,newLineState:p}=M(a,o),{state:f}=U(u,c),{state:h,cursor:E}=U(f,p);s.properties.items[n]={...i,text:h.properties.text,inlineStyleRanges:h.properties.inlineStyleRanges,entityRanges:h.properties.entityRanges};let b=[...e];return b[t]=s,{content:b,resultIndex:t,cursor:E,listItemIndex:n}}function nr(e,{index:t,offset:n,blocks:o,listItemIndex:r=-1}){let s=[...e];if(!o?.length)return{content:s,resultIndex:Math.max(0,t),cursor:n??0};if(t<0||t>=s.length){s.push(...o);let E=o[o.length-1];return{content:s,resultIndex:s.length-1,cursor:ut(E)}}let i=s[t];if(gt(i)&&r>=0)return Ss(s,{listIndex:t,itemIndex:r,offset:n??0,blocks:o});if(!I(i))return er(s,t,o);let{originalLineState:l,newLineState:a}=M(i,n??0),c=o[0],u=o[o.length-1],p=[];if(le(l,c)?p.push(U(l,c).state):(ut(l)>0&&p.push(l),p.push(c)),o.length>1)p.push(...o.slice(1,-1)),le(u,a)?p.push(U(u,a).state):(p.push(u),ut(a)>0&&p.push(a));else{let E=p[p.length-1];if(le(E,a)){let{state:b,cursor:y}=U(E,a);return p[p.length-1]=b,s.splice(t,1,...p),{content:s,resultIndex:t+p.length-1,cursor:y}}ut(a)>0&&p.push(a)}s.splice(t,1,...p);let f=o.length>1&&le(u,a),h=t+p.length-1-(f||ut(a)===0?0:1);return{content:s,resultIndex:Math.max(t,h),cursor:ut(u)}}function Jo(e){if(!e)return null;try{let t=JSON.parse(e);if(t&&t.v===tr&&Array.isArray(t.blocks))return t.blocks}catch{return null}return null}function ks(e){return new DOMParser().parseFromString(e,"text/html").body?.textContent??""}function Qo(e,t=R){return String(e).split(/\r\n|\n|\r/).map(o=>({component:t,properties:{text:o,inlineStyleRanges:[],entityRanges:[]},settings:{}}))}function As(e){return gt(e)?(e.properties.items??[]).map(t=>t.text??"").join(`
4
+ `):I(e)?_(e.properties?.text):""}function _s(e){return e.map(As).join(`
5
+ `)}function Ns(e){return{v:tr,blocks:e.map(t=>structuredClone(t))}}function wn(e,t){let n=Ns(t);e.setData(Zo,JSON.stringify(n)),e.setData("text/plain",_s(t))}function or(e,t=R){if(!e)return[];let n=Jo(e.getData(Zo));if(n)return n;let o=e.getData("text/plain")??"",r=Jo(o);if(r)return r;if(o)return Qo(o,t);let s=e.getData("text/html")??"";return s?Qo(ks(s),t):[]}function rr(e){let t=structuredClone(e);return t.componentId=S(),Array.isArray(t.properties?.items)&&(t.properties.items=t.properties.items.map(n=>({...n,componentId:S()}))),t}function On(e){return!!e.target?.closest?.(".mrakomor-content")}function sr(e,t){if(!t)return-1;let n=e._getBlockElementIndex?.(t);if(typeof n=="number"&&n>=0)return n;let o=z(t)?.getState?.()?.componentId;return o?e.getContent().findIndex(r=>r.componentId===o):-1}function ir(e){return e?.nodeName==="UL"||e?.nodeName==="OL"}function ar(e){let t=z(e)?.element;if(ir(t))return t;let n=N(e);return ir(n)?n:n?.querySelector?.("ul, ol")??t??n}function lr(e,t){let n=ar(e),o=kt(n,t),r=kt(n,{startContainer:t.endContainer});return!o||o!==r?-1:Wt(n,o)}function Dn(e){let t=v();if(!t)return null;let n=$(t.startContainer)??T(t);if(!n)return null;let o=sr(e,n);if(o<0)return null;let r=e.getContent();if(t.collapsed){let a=ie();return{collapsed:!0,startIndex:o,endIndex:o,startOffset:a?.start??0,endOffset:a?.start??0,listItemIndex:gt(r[o])?lr(n,t):-1}}let s=Be(t),i=sr(e,s.endBlock),l=-1;return o===i&&gt(r[o])&&(l=lr(n,t)),{collapsed:!1,startIndex:o,endIndex:i,startOffset:s.startOffset,endOffset:s.endOffset,listItemIndex:l}}function Rs(e,t,n,o=-1){x(()=>{let s=e.getRoot()?.querySelectorAll?.(".mrakomor-content .mrakomor-block-element")?.[t],i=N(s);if(o>=0){let l=ar(s);i=l?.querySelector?.(`li[data-item-index="${o}"]`)??l?.querySelectorAll?.("li")?.[o]??i}i?.isConnected&&L(i,n)})}function vs(e,t){return t.map(n=>{try{return e.normalizeComponentState(rr(n))}catch{return null}}).filter(Boolean)}function cr(e,t,n,o,r=-1){let s=t.map(i=>{try{return e.normalizeComponentState(i)}catch{return null}}).filter(Boolean);e.setContent(s),Rs(e,n,o,r)}function Is(e){let t=e.mrakomor;if(!t||!On(e)||!e.clipboardData)return;let n=Dn(t);if(!n||n.collapsed)return;let o=Pn(t.getContent(),n);o.length&&(e.preventDefault(),wn(e.clipboardData,o))}function Ls(e){let t=e.mrakomor;if(!t||!On(e)||!e.clipboardData)return;let n=Dn(t);if(!n||n.collapsed)return;let o=t.getContent(),r=Pn(o,n);if(!r.length)return;e.preventDefault(),wn(e.clipboardData,r);let s=Tn(o,n);cr(t,s.content,s.resultIndex,s.cursor,n.listItemIndex)}function Ms(e){let t=e.mrakomor;if(!t||e.target&&!On(e))return;e.preventDefault();let n=vs(t,or(e.clipboardData,R));if(!n.length)return;let o=t.getContent(),r=Dn(t);if(!r)return;let s=o,i=r.startIndex,l=r.startOffset;if(!r.collapsed){let c=Tn(s,r);s=c.content,i=c.resultIndex,l=c.cursor}let a=nr(s,{index:i,offset:l,blocks:n,listItemIndex:r.listItemIndex});cr(t,a.content,a.resultIndex,a.cursor,a.listItemIndex??r.listItemIndex)}function Hn({root:e,mrakomor:t}){return{registerEvents(){g.COPY="mrakomor:copy",g.CUT="mrakomor:cut",g.PASTE="mrakomor:paste"},registerCommands(n){n.command.copy=(o={})=>{n.emitDomEvent(g.COPY,o)},n.command.cut=(o={})=>{n.emitDomEvent(g.CUT,o)},n.command.paste=(o={})=>{n.emitDomEvent(g.PASTE,o)}},registerListeners(){let{signal:n}=t.listenerAbortController,o=e??t.getRoot();o.addEventListener("copy",r=>t.emitDomEvent(g.COPY,r),{signal:n}),o.addEventListener("cut",r=>t.emitDomEvent(g.CUT,r),{signal:n}),o.addEventListener("paste",r=>t.emitDomEvent(g.PASTE,r),{signal:n}),t.emitter.on(g.COPY,Is),t.emitter.on(g.CUT,Ls),t.emitter.on(g.PASTE,Ms)}}}function ur(e){return[...e.filter(t=>t!==Ve),Ve]}function Bs(e){Do().parse(e);let t={debug:!1,content:[],plugins:[_n,Sn,xn,Cn,Bn,Rn,vn,kn,In,Ln,Hn],blockComponents:[],inlineStyles:[Vt,Gt,zt,Yt,qt],entityRanges:[],tooltip:{}},n={...t,...e,plugins:ur(e.plugins??t.plugins)},o=new We(n);if(o._init(),!document.head.querySelector("style[data-mrakomor-css]")){let r=d("style",{},`${uo}`);r.setAttribute("data-mrakomor-css",""),document.head.appendChild(r)}return o}var We=class{#t=S();#n;#e=[];#o=[];#s;#l=!1;#a=null;listenerAbortController=new AbortController;#i=A([],{debug:"content"});#r=[];command;emitter;constructor(t){let{root:n,id:o,content:r}=t;this.#t=o||this.#t,this.#n=n,this.#r=r,this.#o=[],this.#s={...t,plugins:ur(t.plugins??[])};let{emitter:s,command:i}=Uo({mrakomor:this});this.command=i,this.emitter=s}_init(){this.#c(),this.#i=A(this._normalizeContentState(this.#r),{debug:"content"})}#c(){this.#e=this.#s.plugins.map(t=>t?.({config:this.#s,root:this.#n,mrakomor:this}))??[],this.#s=this.#e.reduce((t,n)=>n?.resolveConfig?.(t)??t,this.#s),this.#e.forEach(t=>{t?.registerEvents?.(this)}),this.#e.forEach(t=>{t?.registerCommands?.(this)}),this.#e.forEach(t=>{this.emitter.on(g.KEYDOWN,n=>t?.onKeyDown?.(n))}),this.#e.forEach(t=>{t?.registerHandlers?.(this)}),this.#e.forEach(t=>{t?.registerListeners?.(this)})}emit(t,n={}){return this.emitter.emit(t,{...n,mrakomor:this})}on(t,n){return this.emitter.on(t,n)}onChangeContent(t){return this.on(g.CONTENT_CHANGE,t)}emitDomEvent(t,n){let{clipboardData:o,metaKey:r,altKey:s,code:i,ctrlKey:l,key:a,isComposing:c,repeat:u,button:p,shiftKey:f,which:h,detail:E,isTrusted:b,target:y,relatedTarget:C}=n??{},{defaultPrevented:k}=this.emit(t,{clipboardData:o,metaKey:r,altKey:s,code:i,ctrlKey:l,key:a,isComposing:c,repeat:u,button:p,shiftKey:f,which:h,detail:E,isTrusted:b,target:y,relatedTarget:C});return k&&n?.preventDefault?.(),k}getConfig(){return this.#s}wrapBlockElement(t){for(let n of this.#e){let o=n.wrapBlockElement?.(t);if(o)return o}return t}getRoot(){return this.#n}get _id(){return this.#t}getContent(){return this.#o.map(n=>z(n)?.getState())}setContent(t=[]){this._setContentState(this._normalizeContentState(t))}_syncBlockElementsFromDom(){let t=this.#n?.querySelector?.(".mrakomor-content");t&&(this.#o=[...t.querySelectorAll(".mrakomor-block-element")])}_getBlockElements(){return this.#o}_getContentState(){return this.#i.get()}_setContentState(t=[]){this.#i.set(t),this.emit(g.CONTENT_CHANGE,{content:t}),x(()=>{this._syncBlockElementsFromDom()})}_normalizeContentState(t=[]){return t.map(n=>structuredClone(this.normalizeComponentState(n)))??[]}_setBlockElement(t,n=this.#o.length){this.#o.splice(n,0,t)}_removeBlockElement(t){this.#o=this.#o.filter(n=>n!==t)}_getBlockElementIndex(t){return this.#o.indexOf(t)}mount(){let t=P(this.#n,d(Ho,{mrakomor:this}));return this.#l=!0,t}unmount(){this.#l&&(this.#l=!1,co(this.#n))}_onUnmount(){this.listenerAbortController.abort(),this.#e.forEach(t=>{t?.onUnmount?.(this)}),this.emitter.removeAllListeners()}_onMount(){this.#e.forEach(t=>{t?.onMount?.(this)}),x(()=>{this._syncBlockElementsFromDom()})}resolveComponent(t,n){let o=this.resolveComponentConstructor(t);return o?d(o,{state:n}):d($t,{state:n})}resolveComponentConstructor(t){let n=this.#s.blockComponents.find(o=>o.NAMESPACE===t);if(!n){for(let o of this.#e)if(n=o?.resolveComponent?.(t),n)break}return n}normalizeComponentState(t){let n="component"in t?t.component:t.entity.type;return this.resolveComponentConstructor(n)?.getStateSchema()?.parse(t)}};var pr=e=>m.object({componentId:m.string().default(()=>e?.getAttribute?.("data-componentid")||S()),depth:m.number().default(0),text:m.string().default(""),entityRanges:jt()}).default({}),bt=class extends et{static getStateSchema(t){let n=t?.nodeName==="OL"?"ORDERED":t?.nodeName==="UL"?"UNORDERED":void 0;return m.object({component:m.string().default(this.NAMESPACE),componentId:m.string().default(t?.getAttribute("data-componentid")||S()),properties:m.object({items:m.array(pr()).default([pr().parse()]).transform(ze)}).default({}),settings:m.object({style:m.enum(["ORDERED","UNORDERED"]).default(n??"UNORDERED")}).default({})}).default({})}getInlineStyleComponents(){return[]}parseFromHTML(t){return this.constructor.getStateSchema(t).parse(super.parseFromHTML(t))}};function Ps(){return{resolveConfig:e=>(e.blockComponents.push(bt),e.blockInsertVariants=[...e.blockInsertVariants??[],{label:"UL",namespace:bt.NAMESPACE,settings:{style:"UNORDERED"}},{label:"OL",namespace:bt.NAMESPACE,settings:{style:"ORDERED"}}],e),resolveComponent:e=>{if(e===bt.NAMESPACE)return bt}}}export{Go as BlockChrome,zo as BlockInsertMenu,Vt as Bold,Ge as Dialog,g as EVENT,Ht as Figure,Z as HeadlineComponent,Gt as Italic,xt as LinkEntity,et as List,We as Mrakomor,Et as Paragraph,Yt as Subscript,qt as Superscript,Vo as Tooltip,yt as TtsHeadlineComponent,bt as TtsList,Kt as TtsParagraph,Ft as TtsVoice,zt as Underline,In as blockChromePlugin,Ln as blockInsertMenuPlugin,Hn as clipboardPlugin,Bs as createMrakomor,Ve as defaultMrakomorPlugin,Rn as dialogPlugin,Cn as figurePlugin,xn as headlinePlugin,kn as linkEntityPlugin,Bn as listPlugin,Sn as paragraphPlugin,vn as tooltipPlugin,Xr as ttsHeadlinePlugin,Ps as ttsListPlugin,Jr as ttsParagraphPlugin,_n as ttsVoicePlugin};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrakomor/core",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "",
5
5
  "imports": {
6
6
  "#src/*.mjs": "./src/*.mjs",
@@ -14,14 +14,18 @@
14
14
  "build/static/es15"
15
15
  ],
16
16
  "scripts": {
17
- "test": "node --test --import=./src/__tests__/setup.mjs 'src/**/__tests__/**/*.test.mjs'",
17
+ "test": "npm run test:unit && npm run test:integration && npm run test:size && npm run test:e2e",
18
+ "test:unit": "node --test --import=./src/__tests__/setup.mjs 'src/**/__tests__/**/*.test.mjs'",
18
19
  "test:watch": "node --test --watch --import=./src/__tests__/setup.mjs 'src/**/__tests__/**/*.test.mjs'",
20
+ "test:integration": "node --test --import=./src/__tests__/setup.mjs 'src/__integration__/**/*.integration.mjs'",
21
+ "test:size": "npm run build && node scripts/check-bundle-size.mjs",
22
+ "test:e2e": "playwright test",
23
+ "test:performance": "playwright test --project=performance",
19
24
  "lint": "eslint -c ./.eslintrc.js --ignore-path ./.prettierignore './**/*.{js,jsx}'",
20
25
  "types": "tsc -p tsconfig.types.json",
21
26
  "dev": "merkur dev",
22
27
  "build": "merkur build",
23
- "start": "merkur start",
24
- "test:e2e": "playwright test"
28
+ "start": "merkur start"
25
29
  },
26
30
  "author": "Miroslav Jancarik",
27
31
  "license": "UNLICENSED",
@@ -48,6 +52,7 @@
48
52
  "@merkur/tools": "1.0.3",
49
53
  "@playwright/test": "^1.60.0",
50
54
  "@testing-library/dom": "^10.4.0",
55
+ "axe-core": "^4.13.0",
51
56
  "compression": "^1.7.4",
52
57
  "config": "^3.3.7",
53
58
  "cors": "^2.8.5",
@@ -55,6 +60,7 @@
55
60
  "easy-uid": "^2.0.2",
56
61
  "express": "^4.17.3",
57
62
  "express-static-gzip": "^2.1.5",
63
+ "fast-check": "^4.9.0",
58
64
  "global-jsdom": "^25.0.0",
59
65
  "helmet": "^5.0.2",
60
66
  "intersect-objects": "^2.0.0",