dsh-tiddlywiki 0.16.0 → 0.16.2

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.
@@ -565,7 +565,7 @@ html[data-dsh-tw-active] .dshDesktopConversationSurface > :not([data-dsh-tw-view
565
565
  .dsh-tw-toolcard-row-tags { flex: none; font-size: 10px; color: color-mix(in srgb, var(--dsw-alias-label-primary, #222) 55%, transparent); }
566
566
  .dsh-tw-toolcard-row-meta { flex: none; font-size: 10px; color: color-mix(in srgb, var(--dsw-alias-label-primary, #222) 40%, transparent); }
567
567
  .dsh-tw-toolcard-tags-wrap { display: flex; flex-wrap: wrap; gap: 4px; }
568
- `,document.head.append(e))}var d=class{open=!1;listeners=new Set;isOpen(){return this.open}toggle(){this.set(!this.open)}openPanel(){this.set(!0)}closePanel(){this.set(!1)}set(e){if(this.open!==e){this.open=e;for(let t of[...this.listeners])t(e)}}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}};function f(){let e=document.querySelector(`[data-pane="sidebar"], [class*="sidebarCol"], .dshDesktopUpstreamSidebar, .dshDesktopSidebarSurface`);if(e!==null)return e.querySelector(`[class*="logoRow"]`)?.parentElement??e.firstElementChild}function p(e){let t=e.querySelector(`button[class*="newSession"]`);if(t!==null)return t;for(let t of e.children)if(t instanceof HTMLButtonElement&&!t.matches(`[data-dsh-tw-entry]`))return t;let n=e.querySelector(`button[aria-label="新建会话"], button[aria-label="New Session"], button[aria-label*="新会话"], button[aria-label*="new session" i]`);return n===null?Array.from(e.querySelectorAll(`button`)).find(e=>!e.matches(`[data-dsh-tw-entry]`)&&/新会话|新建会话|new session/i.test(e.textContent??``)):n}function m(e){let t=document.createElement(`button`);return t.type=`button`,t.dataset.dshTwEntry=``,t.className=`dsh-tw-entry`,t.setAttribute(`aria-label`,`TiddlyWiki 知识库`),t.innerHTML=`<span class="dsh-tw-entry-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 2.5h8a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1z"/><path d="M6 6h4M6 8.5h2.5"/></svg></span><span class="dsh-tw-entry-label">TiddlyWiki</span>`,t.addEventListener(`click`,()=>{e.toggle()}),t}function h(e,t){let n=p(e);if(n===void 0)return!1;if(t.parentElement!==e){let r=n.closest(`[class*="logoRow"]`),i=r!==null&&r.parentElement===e?r:n,a=Array.from(e.children).filter(e=>e instanceof HTMLElement&&e.matches(`[data-dsh-tw-entry], [data-dsh-atb-entry], [data-dsh-taskboard-entry], [data-dsh-ssh-entry]`)),o=a.length>0?a[0]??null:i.nextElementSibling??null;e.insertBefore(t,o)}return!0}function g(e){let t=m(e),n={attempts:0,found:!1,placed:!1},r=globalThis.location?.hostname;(r===`localhost`||r===`127.0.0.1`)&&(window.__twDebug=n);let i,a=!1,o=()=>{if(n.attempts++,i!==void 0&&!i.isConnected&&(c.disconnect(),i=void 0,a=!1),a){if(document.body.contains(t))return;c.disconnect(),i=void 0,a=!1}i??=f(),i!==void 0&&(n.found=p(i)!==void 0,a=h(i,t),n.placed=a,a&&c.observe(i,{childList:!0,subtree:!0}))},s=new MutationObserver(()=>{o()});s.observe(document.body,{childList:!0,subtree:!0});let c=new MutationObserver(()=>{if(i===void 0||!i.isConnected){a=!1,o();return}i.contains(t)||(a=h(i,t))}),l=setInterval(()=>{o()},2e3),u=()=>{e.isOpen()?t.dataset.active=`true`:delete t.dataset.active},d=e.subscribe(u);return u(),o(),()=>{clearInterval(l),s.disconnect(),c.disconnect(),d(),t.remove()}}const _=`$:/palettes/CupertinoDark`,v=`$:/palettes/Vanilla`,y=`data-ds-dark-theme`,b=`$:/palette`,x=new Set,S=new WeakSet;let C=``,w=!0,T=_;function ee(){try{let e=document.documentElement,t=document.body;if(t!==null&&t.hasAttribute(y))return!0;if(e!==null){let t=e.style.getPropertyValue(`color-scheme`).trim().toLowerCase();if(t===`dark`)return!0;if(t===`light`)return!1}}catch{}try{return window.matchMedia(`(prefers-color-scheme: dark)`).matches}catch{return!1}}function E(e){try{let t=e.wiki.getTiddlerText(b);return typeof t==`string`&&t.trim().length>0?t.trim():v}catch{return v}}function D(e){try{let t=e.wiki.getTiddler(E(e))?.fields;return t!==void 0&&t[`color-scheme`]===`dark`}catch{return!1}}function te(e){try{let t=e.syncer;if(t?.tiddlerInfo===void 0)return;let n=e.wiki.getChangeCount(b),r=t.tiddlerInfo[b];r===void 0?t.tiddlerInfo[b]={changeCount:n}:r.changeCount=n}catch{}}function ne(e){try{let t=e.syncer,n=t?.syncadaptor;if(t===void 0||n===void 0||S.has(t))return;let r=n.saveTiddler.bind(n);n.saveTiddler=(e,t)=>{if(w&&C.length>0&&e?.fields?.title===b&&e?.fields?.text===T){t(null,{},0);return}r(e,t)},S.add(t)}catch{}}function re(e,t){try{if(E(e)===t)return;e.wiki.setText(b,`text`,void 0,t),te(e)}catch{}}function ie(e,t){let n=E(e);if(t){if(D(e))return;n!==T&&(C=n),re(e,T)}else D(e)&&n===T&&C.length>0&&re(e,C)}function ae(e,t){try{let n=t.contentDocument?.documentElement;if(n==null)return;let r=D(e)?`dark`:`light`;n.style.getPropertyValue(`color-scheme`)!==r&&n.style.setProperty(`color-scheme`,r)}catch{}}function oe(e){let t=e.contentWindow?.$tw;t===void 0||t.wiki===void 0||(ne(t),w?ie(t,ee()):ie(t,!1),ae(t,e))}function se(e){let t=e.enabled!==!1,n=typeof e.darkPalette==`string`&&e.darkPalette.trim().length>0?e.darkPalette.trim():_,r=t!==w||n!==T;if(w=t,T=n,r)for(let e of[...x])e()}function ce(e){if(e===null)return()=>{};let t=()=>oe(e);x.add(t);let n=()=>t();e.addEventListener(`load`,n);let r=window.matchMedia(`(prefers-color-scheme: dark)`),i=()=>t();try{r.addEventListener(`change`,i)}catch{r.addListener?.(i)}let a;try{a=new MutationObserver(()=>t()),document.body!==null&&a.observe(document.body,{attributes:!0,attributeFilter:[y]}),document.documentElement!==null&&a.observe(document.documentElement,{attributes:!0,attributeFilter:[`style`]})}catch{a=void 0}let o=[150,600,1500,3e3].map(e=>window.setTimeout(t,e));return t(),()=>{x.delete(t),e.removeEventListener(`load`,n);for(let e of o)window.clearTimeout(e);try{r.removeEventListener(`change`,i)}catch{r.removeListener?.(i)}try{a?.disconnect()}catch{}}}const le=[`[class*="centerCol"]`,`[data-pane="conversation"]`,`.dshDesktopConversationSurface`],ue=`data-dsh-tw-active`,de=[`data-dsh-atb-active`,`data-dsh-taskboard-active`,`data-dsh-ssh-active`],fe=`dsh-panel-activate`,pe=`dsh-tiddlywiki`,me=`[data-dsh-panel-host]`,he=`dsh-tw-open-tiddler`;function ge(e){typeof document>`u`||typeof e!=`string`||e.length===0||document.dispatchEvent(new CustomEvent(he,{detail:{title:e}}))}function _e(){let e=document.querySelector(me);if(e===null)return 40;let t=parseInt(getComputedStyle(e).zIndex,10);return Number.isFinite(t)?Math.max(20,Math.min(40,t-1)):40}function ve(){for(let e of le){let t=document.querySelector(e);if(t!==null)return t}}async function ye(){try{let e=await fetch(`/dsh-tiddlywiki/status`,{signal:AbortSignal.timeout(8e3)});return e.ok?await e.json():null}catch{return null}}async function be(){try{return(await fetch(`/dsh-tiddlywiki/restart`,{method:`POST`,signal:AbortSignal.timeout(8e3)})).ok}catch{return!1}}function xe(e){let t,n,r,i,a,o,s=0,c,l=!1,u=null,d=()=>{let e=document.createElement(`div`);return e.dataset.dshTwView=``,e.className=`dsh-tw-view`,i=document.createElement(`div`),i.className=`dsh-tw-panel-frame-wrap`,i.style.cssText=`flex:1;min-height:0;display:flex;flex-direction:column`,r=document.createElement(`iframe`),r.className=`dsh-tw-panel-frame`,r.title=`TiddlyWiki`,r.hidden=!0,i.append(r),r.addEventListener(`load`,()=>{l=!0,v()}),c=ce(r),a=document.createElement(`div`),a.className=`dsh-tw-panel-error`,a.hidden=!0,e.append(i,a),e},f=()=>{if(t===void 0||n===void 0)return;let e=n.getBoundingClientRect();if(e.width===0&&e.height===0)return;let r=`${e.left}px`,i=`${e.top}px`,a=`${e.width}px`,o=`${e.height}px`;t.style.left!==r&&(t.style.left=r),t.style.top!==i&&(t.style.top=i),t.style.width!==a&&(t.style.width=a),t.style.height!==o&&(t.style.height=o)},p=()=>{t!==void 0&&(t.style.zIndex=String(_e()),document.querySelector(me)===null?delete t.dataset.sidebarHost:t.dataset.sidebarHost=`1`)},m=()=>{t===void 0&&(n=ve(),n!==void 0&&(t=d(),t.style.position=`fixed`,p(),document.body.append(t),f()))},h=e=>{if(r===void 0||a===void 0||i===void 0)return;r.hidden=!0,a.hidden=!1,a.textContent=``;let t=document.createElement(`div`);t.textContent=`TiddlyWiki 服务不可用`;let n=document.createElement(`code`);n.textContent=e;let o=document.createElement(`button`);o.type=`button`,o.textContent=`重试`,o.addEventListener(`click`,()=>{o.disabled=!0,o.textContent=`重启中…`,be().finally(()=>{b()})}),a.append(t,n,o)},g=()=>{if(r===void 0||a===void 0||i===void 0)return;r.hidden=!0,a.hidden=!1,a.textContent=``;let e=document.createElement(`div`);e.textContent=`TiddlyWiki 服务正在启动…`,a.append(e)},_=e=>{r===void 0||a===void 0||(a.hidden=!0,r.hidden=!1,r.dataset.loaded!==e&&(r.dataset.loaded=e,l=!1,r.src=e))},v=()=>{if(u===null||r===void 0||!l)return;let e=u;u=null;try{let t=r.contentWindow;if(t===null)throw Error(`iframe window unavailable`);if(t.location.hash===e)return;t.location.hash=e}catch{let t=r.src.split(`#`)[0];if(r.src===`${t}${e}`)return;r.src=`${t}${e}`}},y=t=>{let n=t.detail,r=typeof n?.title==`string`&&n.title.length>0?n.title:``;r.length!==0&&(u=`#${encodeURIComponent(r)}`,e.openPanel(),v())},b=async()=>{o!==void 0&&(window.clearTimeout(o),o=void 0);let e=await ye();if(e===null){h(`无法访问 /dsh-tiddlywiki/status`);return}if(e.status===`running`){s=0,se({enabled:e.ui?.followDshTheme!==!1,darkPalette:e.ui?.darkPalette}),typeof e.twProxy==`string`?_(new URL(e.twProxy,window.location.origin).href):typeof e.url==`string`?_(e.url):h(`服务未返回编辑器地址`);return}if(e.status===`starting`){g(),s<30&&(s++,o=window.setTimeout(()=>{b()},1500));return}s=0,h(e.error??`服务状态:${e.status}`)},x=()=>{if(e.isOpen()){for(let e of de)document.documentElement.removeAttribute(e);document.documentElement.setAttribute(ue,``),document.dispatchEvent(new CustomEvent(fe,{detail:pe})),b()}else document.documentElement.removeAttribute(ue),o!==void 0&&(window.clearTimeout(o),o=void 0),s=0},S=t=>{t.detail!==pe&&e.isOpen()&&e.closePanel()},C=t=>{if(!e.isOpen())return;let n=t.target;n!==null&&n.closest(`[data-dsh-tw-entry]`)===null&&n.closest(`[class*="sessionRow"], [class*="projectRow"], [class*="searchResultRow"], [class*="searchResultWorkspace"], [class*="newSession"]`)!==null&&e.closePanel()},w=new MutationObserver(()=>{m(),p()});w.observe(document.body,{childList:!0,subtree:!0});let T=new ResizeObserver(()=>f());T.observe(document.body);let ee=window.setInterval(f,2e3),E=()=>f();window.addEventListener(`resize`,E);let D=()=>f();window.addEventListener(`scroll`,D,!0),document.addEventListener(`click`,C,!0),document.addEventListener(fe,S);let te=e.subscribe(x);m(),x();let ne=()=>{r!==void 0&&!r.hidden&&(r.src=r.src)};return document.addEventListener(`dsh-tw-panel-reload`,ne),document.addEventListener(he,y),()=>{o!==void 0&&window.clearTimeout(o),window.clearInterval(ee),window.removeEventListener(`resize`,E),window.removeEventListener(`scroll`,D,!0),T.disconnect(),document.removeEventListener(`click`,C,!0),document.removeEventListener(fe,S),document.removeEventListener(`dsh-tw-panel-reload`,ne),document.removeEventListener(he,y),w.disconnect(),te(),c?.(),document.documentElement.removeAttribute(ue),t?.remove()}}function O(e){let t=document.querySelector(`.dsh-tw-toast`);t===null&&(t=document.createElement(`div`),t.className=`dsh-tw-toast`,document.body.append(t)),t.textContent=e,t.classList.add(`dsh-tw-toast-show`),clearTimeout(t.__twToastTimer),t.__twToastTimer=window.setTimeout(()=>{t?.classList.remove(`dsh-tw-toast-show`)},2500)}let k,Se,Ce,we;function Te(e,t){De(),!(k===void 0||Se===void 0)&&(Ce!==void 0&&(Ce.textContent=`TiddlyWiki 编辑器 · ${t}`),k.style.display=``,Se.src=e)}function Ee(){we?.(),we=void 0,k?.remove(),k=void 0,Se=void 0,Ce=void 0}function De(){if(k!==void 0&&Se!==void 0)return;k=document.createElement(`div`),k.className=`dsh-tw-editor-popup`,k.style.display=`none`;let e=document.createElement(`div`);e.className=`dsh-tw-editor-bar`,Ce=document.createElement(`span`),Ce.className=`dsh-tw-editor-title`,Ce.textContent=`TiddlyWiki 编辑器`;let t=document.createElement(`button`);t.type=`button`,t.className=`dsh-tw-editor-close`,t.textContent=`✕`,t.title=`关闭`,e.append(Ce,t),Se=document.createElement(`iframe`),Se.className=`dsh-tw-editor-frame`,Se.setAttribute(`sandbox`,`allow-scripts allow-same-origin allow-forms allow-popups`),Se.title=`TiddlyWiki 编辑器`,we=ce(Se);let n=document.createElement(`div`);n.className=`dsh-tw-editor-resize`,n.title=`拖拽调整大小`,k.append(e,Se,n),document.body.append(k),t.addEventListener(`click`,()=>{k!==void 0&&(k.style.display=`none`)}),e.addEventListener(`mousedown`,e=>{if(e.button!==0||k===void 0)return;e.preventDefault();let t=k.getBoundingClientRect(),n=e.clientX,r=e.clientY,i=t.left,a=t.top,o=e=>{k!==void 0&&(k.style.left=`${i+e.clientX-n}px`,k.style.top=`${a+e.clientY-r}px`,k.style.margin=`0`,k.style.right=`auto`,k.style.bottom=`auto`)},s=()=>{window.removeEventListener(`mousemove`,o),window.removeEventListener(`mouseup`,s)};window.addEventListener(`mousemove`,o),window.addEventListener(`mouseup`,s)}),n.addEventListener(`mousedown`,e=>{if(e.button!==0||k===void 0)return;e.preventDefault(),e.stopPropagation();let t=k.getBoundingClientRect(),n=e.clientX,r=e.clientY,i=t.width,a=t.height,o=e=>{k!==void 0&&(k.style.width=`${Math.max(360,i+e.clientX-n)}px`,k.style.height=`${Math.max(260,a+e.clientY-r)}px`,k.style.right=`auto`,k.style.bottom=`auto`)},s=()=>{window.removeEventListener(`mousemove`,o),window.removeEventListener(`mouseup`,s)};window.addEventListener(`mousemove`,o),window.addEventListener(`mouseup`,s)})}let Oe=[],ke=[];(()=>{let e=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5`.split(`,`).map(e=>e?parseInt(e,36):1);for(let t=0,n=0;t<e.length;t++)(t%2?ke:Oe).push(n+=e[t])})();function Ae(e){if(e<768)return!1;for(let t=0,n=Oe.length;;){let r=t+n>>1;if(e<Oe[r])n=r;else if(e>=ke[r])t=r+1;else return!0;if(t==n)return!1}}function je(e){return e>=127462&&e<=127487}const Me=8205;function Ne(e,t,n=!0,r=!0){return(n?Pe:Fe)(e,t,r)}function Pe(e,t,n){if(t==e.length)return t;t&&Le(e.charCodeAt(t))&&Re(e.charCodeAt(t-1))&&t--;let r=Ie(e,t);for(t+=ze(r);t<e.length;){let i=Ie(e,t);if(r==Me||i==Me||n&&Ae(i))t+=ze(i),r=i;else if(je(i)){let n=0,r=t-2;for(;r>=0&&je(Ie(e,r));)n++,r-=2;if(n%2==0)break;t+=2}else break}return t}function Fe(e,t,n){for(;t>1;){let r=Pe(e,t-2,n);if(r<t)return r;t--}return 0}function Ie(e,t){let n=e.charCodeAt(t);if(!Re(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return Le(r)?(n-55296<<10)+(r-56320)+65536:n}function Le(e){return e>=56320&&e<57344}function Re(e){return e>=55296&&e<56320}function ze(e){return e<65536?1:2}var A=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=Ye(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),Ve.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Ye(this,e,t);let n=[];return this.decompose(e,t,n,0),Ve.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new Ge(this),i=new Ge(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return!1;if(a+=r.value.length,r.done||a>=n)return!0}}iter(e=1){return new Ge(this,e)}iterRange(e,t=this.length){return new Ke(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new qe(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new Be(t):Ve.from(Be.split(t,[]))}},Be=class e extends A{constructor(e,t=He(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new Je(r,o,n,a);r=o+1,n++}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(We(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=Ue(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else{let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)))}}else r.push(a)}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=Ye(this,t,n);let i=Ue(this.text,Ue(r.text,We(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):Ve.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=`
568
+ `,document.head.append(e))}var d=class{open=!1;listeners=new Set;isOpen(){return this.open}toggle(){this.set(!this.open)}openPanel(){this.set(!0)}closePanel(){this.set(!1)}set(e){if(this.open!==e){this.open=e;for(let t of[...this.listeners])t(e)}}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}};function f(){let e=document.querySelector(`[data-pane="sidebar"], [class*="sidebarCol"], .dshDesktopUpstreamSidebar, .dshDesktopSidebarSurface`);if(e!==null)return e.querySelector(`[class*="logoRow"]`)?.parentElement??e.firstElementChild}function p(e){let t=e.querySelector(`button[class*="newSession"]`);if(t!==null)return t;for(let t of e.children)if(t instanceof HTMLButtonElement&&!t.matches(`[data-dsh-tw-entry]`))return t;let n=e.querySelector(`button[aria-label="新建会话"], button[aria-label="New Session"], button[aria-label*="新会话"], button[aria-label*="new session" i]`);return n===null?Array.from(e.querySelectorAll(`button`)).find(e=>!e.matches(`[data-dsh-tw-entry]`)&&/新会话|新建会话|new session/i.test(e.textContent??``)):n}function m(e){let t=document.createElement(`button`);return t.type=`button`,t.dataset.dshTwEntry=``,t.className=`dsh-tw-entry`,t.setAttribute(`aria-label`,`TiddlyWiki 知识库`),t.innerHTML=`<span class="dsh-tw-entry-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 2.5h8a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1z"/><path d="M6 6h4M6 8.5h2.5"/></svg></span><span class="dsh-tw-entry-label">TiddlyWiki</span>`,t.addEventListener(`click`,()=>{e.toggle()}),t}function h(e,t){let n=p(e);if(n===void 0)return!1;if(t.parentElement!==e){let r=n.closest(`[class*="logoRow"]`),i=r!==null&&r.parentElement===e?r:n,a=Array.from(e.children).filter(e=>e instanceof HTMLElement&&e.matches(`[data-dsh-tw-entry], [data-dsh-atb-entry], [data-dsh-taskboard-entry], [data-dsh-ssh-entry]`)),o=a.length>0?a[0]??null:i.nextElementSibling??null;e.insertBefore(t,o)}return!0}function g(e){let t=m(e),n={attempts:0,found:!1,placed:!1},r=globalThis.location?.hostname;(r===`localhost`||r===`127.0.0.1`)&&(window.__twDebug=n);let i,a=!1,o=()=>{if(n.attempts++,i!==void 0&&!i.isConnected&&(c.disconnect(),i=void 0,a=!1),a){if(document.body.contains(t))return;c.disconnect(),i=void 0,a=!1}i??=f(),i!==void 0&&(n.found=p(i)!==void 0,a=h(i,t),n.placed=a,a&&c.observe(i,{childList:!0,subtree:!0}))},s=new MutationObserver(()=>{o()});s.observe(document.body,{childList:!0,subtree:!0});let c=new MutationObserver(()=>{if(i===void 0||!i.isConnected){a=!1,o();return}i.contains(t)||(a=h(i,t))}),l=setInterval(()=>{o()},2e3),u=()=>{e.isOpen()?t.dataset.active=`true`:delete t.dataset.active},d=e.subscribe(u);return u(),o(),()=>{clearInterval(l),s.disconnect(),c.disconnect(),d(),t.remove()}}const _=`$:/palettes/CupertinoDark`,v=`$:/palettes/Vanilla`,y=`data-ds-dark-theme`,b=`$:/palette`,x=new Set,S=new WeakSet;let C=``,w=!0,T=_;function ee(){try{let e=document.documentElement,t=document.body;if(t!==null&&t.hasAttribute(y))return!0;if(e!==null){let t=e.style.getPropertyValue(`color-scheme`).trim().toLowerCase();if(t===`dark`)return!0;if(t===`light`)return!1}}catch{}try{return window.matchMedia(`(prefers-color-scheme: dark)`).matches}catch{return!1}}function E(e){try{let t=e.wiki.getTiddlerText(b);return typeof t==`string`&&t.trim().length>0?t.trim():v}catch{return v}}function D(e){try{let t=e.wiki.getTiddler(E(e))?.fields;return t!==void 0&&t[`color-scheme`]===`dark`}catch{return!1}}function te(e){try{let t=e.syncer;if(t?.tiddlerInfo===void 0)return;let n=e.wiki.getChangeCount(b),r=t.tiddlerInfo[b];r===void 0?t.tiddlerInfo[b]={changeCount:n}:r.changeCount=n}catch{}}function ne(e){try{let t=e.syncer,n=t?.syncadaptor;if(t===void 0||n===void 0||S.has(t))return;let r=n.saveTiddler.bind(n);n.saveTiddler=(e,t)=>{if(w&&C.length>0&&e?.fields?.title===b&&e?.fields?.text===T){t(null,{},0);return}r(e,t)},S.add(t)}catch{}}function re(e,t){try{if(E(e)===t)return;e.wiki.setText(b,`text`,void 0,t),te(e)}catch{}}function ie(e,t){let n=E(e);if(t){if(D(e))return;n!==T&&(C=n),re(e,T)}else D(e)&&n===T&&C.length>0&&re(e,C)}function ae(e,t){try{let n=t.contentDocument?.documentElement;if(n==null)return;let r=D(e)?`dark`:`light`;n.style.getPropertyValue(`color-scheme`)!==r&&n.style.setProperty(`color-scheme`,r)}catch{}}function oe(e){let t=e.contentWindow?.$tw;t===void 0||t.wiki===void 0||(ne(t),w?ie(t,ee()):ie(t,!1),ae(t,e))}function se(e){let t=e.enabled!==!1,n=typeof e.darkPalette==`string`&&e.darkPalette.trim().length>0?e.darkPalette.trim():_,r=t!==w||n!==T;if(w=t,T=n,r)for(let e of[...x])e()}function ce(e){if(e===null)return()=>{};let t=()=>oe(e);x.add(t);let n=()=>t();e.addEventListener(`load`,n);let r=window.matchMedia(`(prefers-color-scheme: dark)`),i=()=>t();try{r.addEventListener(`change`,i)}catch{r.addListener?.(i)}let a;try{a=new MutationObserver(()=>t()),document.body!==null&&a.observe(document.body,{attributes:!0,attributeFilter:[y]}),document.documentElement!==null&&a.observe(document.documentElement,{attributes:!0,attributeFilter:[`style`]})}catch{a=void 0}let o=[150,600,1500,3e3].map(e=>window.setTimeout(t,e));return t(),()=>{x.delete(t),e.removeEventListener(`load`,n);for(let e of o)window.clearTimeout(e);try{r.removeEventListener(`change`,i)}catch{r.removeListener?.(i)}try{a?.disconnect()}catch{}}}const le=[`[class*="centerCol"]`,`[data-pane="conversation"]`,`.dshDesktopConversationSurface`],ue=`data-dsh-tw-active`,de=[`data-dsh-atb-active`,`data-dsh-taskboard-active`,`data-dsh-ssh-active`],fe=`dsh-panel-activate`,pe=`dsh-tiddlywiki`,me=`[data-dsh-panel-host]`,he=`dsh-tw-open-tiddler`;function ge(e){typeof document>`u`||typeof e!=`string`||e.length===0||document.dispatchEvent(new CustomEvent(he,{detail:{title:e}}))}function _e(){let e=document.querySelector(me);if(e===null)return 40;let t=parseInt(getComputedStyle(e).zIndex,10);return Number.isFinite(t)?Math.max(20,Math.min(40,t-1)):40}function ve(){for(let e of le){let t=document.querySelector(e);if(t!==null)return t}}async function ye(){try{let e=await fetch(`/dsh-tiddlywiki/status`,{signal:AbortSignal.timeout(8e3)});return e.ok?await e.json():null}catch{return null}}async function be(){try{return(await fetch(`/dsh-tiddlywiki/restart`,{method:`POST`,signal:AbortSignal.timeout(8e3)})).ok}catch{return!1}}function xe(e){let t,n,r,i,a,o,s=0,c,l=!1,u=null,d=()=>{let e=document.createElement(`div`);return e.dataset.dshTwView=``,e.className=`dsh-tw-view`,i=document.createElement(`div`),i.className=`dsh-tw-panel-frame-wrap`,i.style.cssText=`flex:1;min-height:0;display:flex;flex-direction:column`,r=document.createElement(`iframe`),r.className=`dsh-tw-panel-frame`,r.title=`TiddlyWiki`,r.hidden=!0,i.append(r),r.addEventListener(`load`,()=>{l=!0,v()}),c=ce(r),a=document.createElement(`div`),a.className=`dsh-tw-panel-error`,a.hidden=!0,e.append(i,a),e},f=()=>{if(t===void 0||n===void 0)return;let e=n.getBoundingClientRect();if(e.width===0&&e.height===0)return;let r=`${e.left}px`,i=`${e.top}px`,a=`${e.width}px`,o=`${e.height}px`;t.style.left!==r&&(t.style.left=r),t.style.top!==i&&(t.style.top=i),t.style.width!==a&&(t.style.width=a),t.style.height!==o&&(t.style.height=o)},p=()=>{t!==void 0&&(t.style.zIndex=String(_e()),document.querySelector(me)===null?delete t.dataset.sidebarHost:t.dataset.sidebarHost=`1`)},m=()=>{t===void 0&&(n=ve(),n!==void 0&&(t=d(),t.style.position=`fixed`,p(),document.body.append(t),f()))},h=e=>{if(r===void 0||a===void 0||i===void 0)return;r.hidden=!0,a.hidden=!1,a.textContent=``;let t=document.createElement(`div`);t.textContent=`TiddlyWiki 服务不可用`;let n=document.createElement(`code`);n.textContent=e;let o=document.createElement(`button`);o.type=`button`,o.textContent=`重试`,o.addEventListener(`click`,()=>{o.disabled=!0,o.textContent=`重启中…`,be().finally(()=>{x()})}),a.append(t,n,o)},g=()=>{if(r===void 0||a===void 0||i===void 0)return;r.hidden=!0,a.hidden=!1,a.textContent=``;let e=document.createElement(`div`);e.textContent=`TiddlyWiki 服务正在启动…`,a.append(e)},_=e=>{r===void 0||a===void 0||(a.hidden=!0,r.hidden=!1,r.dataset.loaded!==e&&(r.dataset.loaded=e,l=!1,r.src=e))},v=()=>{if(u===null||r===void 0||!l)return;let e=u,t=r.contentWindow;if(t===null){y(e);return}let n=r=>{if(u!==e)return;let i=t;if(typeof i.$tw!=`object`||i.$tw===null){if(r<40){window.setTimeout(()=>n(r+1),150);return}y(e);return}u=null;try{if(t.location.hash===e)return;t.location.hash=e}catch{y(e)}};n(0)},y=e=>{if(r===void 0)return;u===e&&(u=null);let t=r.src.split(`#`)[0];r.src!==`${t}${e}`&&(r.src=`${t}${e}`)},b=t=>{let n=t.detail,r=typeof n?.title==`string`&&n.title.length>0?n.title:``;r.length!==0&&(u=`#${encodeURIComponent(r)}`,e.openPanel(),v())},x=async()=>{o!==void 0&&(window.clearTimeout(o),o=void 0);let e=await ye();if(e===null){h(`无法访问 /dsh-tiddlywiki/status`);return}if(e.status===`running`){s=0,se({enabled:e.ui?.followDshTheme!==!1,darkPalette:e.ui?.darkPalette}),typeof e.twProxy==`string`?_(new URL(e.twProxy,window.location.origin).href):typeof e.url==`string`?_(e.url):h(`服务未返回编辑器地址`);return}if(e.status===`starting`){g(),s<30&&(s++,o=window.setTimeout(()=>{x()},1500));return}s=0,h(e.error??`服务状态:${e.status}`)},S=()=>{if(e.isOpen()){for(let e of de)document.documentElement.removeAttribute(e);document.documentElement.setAttribute(ue,``),document.dispatchEvent(new CustomEvent(fe,{detail:pe})),x()}else document.documentElement.removeAttribute(ue),o!==void 0&&(window.clearTimeout(o),o=void 0),s=0},C=t=>{t.detail!==pe&&e.isOpen()&&e.closePanel()},w=t=>{if(!e.isOpen())return;let n=t.target;n!==null&&n.closest(`[data-dsh-tw-entry]`)===null&&n.closest(`[class*="sessionRow"], [class*="projectRow"], [class*="searchResultRow"], [class*="searchResultWorkspace"], [class*="newSession"]`)!==null&&e.closePanel()},T=new MutationObserver(()=>{m(),p()});T.observe(document.body,{childList:!0,subtree:!0});let ee=new ResizeObserver(()=>f());ee.observe(document.body);let E=window.setInterval(f,2e3),D=()=>f();window.addEventListener(`resize`,D);let te=()=>f();window.addEventListener(`scroll`,te,!0),document.addEventListener(`click`,w,!0),document.addEventListener(fe,C);let ne=e.subscribe(S);m(),S();let re=()=>{r!==void 0&&!r.hidden&&(r.src=r.src)};return document.addEventListener(`dsh-tw-panel-reload`,re),document.addEventListener(he,b),()=>{o!==void 0&&window.clearTimeout(o),window.clearInterval(E),window.removeEventListener(`resize`,D),window.removeEventListener(`scroll`,te,!0),ee.disconnect(),document.removeEventListener(`click`,w,!0),document.removeEventListener(fe,C),document.removeEventListener(`dsh-tw-panel-reload`,re),document.removeEventListener(he,b),T.disconnect(),ne(),c?.(),document.documentElement.removeAttribute(ue),t?.remove()}}function O(e){let t=document.querySelector(`.dsh-tw-toast`);t===null&&(t=document.createElement(`div`),t.className=`dsh-tw-toast`,document.body.append(t)),t.textContent=e,t.classList.add(`dsh-tw-toast-show`),clearTimeout(t.__twToastTimer),t.__twToastTimer=window.setTimeout(()=>{t?.classList.remove(`dsh-tw-toast-show`)},2500)}let k,Se,Ce,we;function Te(e,t){De(),!(k===void 0||Se===void 0)&&(Ce!==void 0&&(Ce.textContent=`TiddlyWiki 编辑器 · ${t}`),k.style.display=``,Se.src=e)}function Ee(){we?.(),we=void 0,k?.remove(),k=void 0,Se=void 0,Ce=void 0}function De(){if(k!==void 0&&Se!==void 0)return;k=document.createElement(`div`),k.className=`dsh-tw-editor-popup`,k.style.display=`none`;let e=document.createElement(`div`);e.className=`dsh-tw-editor-bar`,Ce=document.createElement(`span`),Ce.className=`dsh-tw-editor-title`,Ce.textContent=`TiddlyWiki 编辑器`;let t=document.createElement(`button`);t.type=`button`,t.className=`dsh-tw-editor-close`,t.textContent=`✕`,t.title=`关闭`,e.append(Ce,t),Se=document.createElement(`iframe`),Se.className=`dsh-tw-editor-frame`,Se.setAttribute(`sandbox`,`allow-scripts allow-same-origin allow-forms allow-popups`),Se.title=`TiddlyWiki 编辑器`,we=ce(Se);let n=document.createElement(`div`);n.className=`dsh-tw-editor-resize`,n.title=`拖拽调整大小`,k.append(e,Se,n),document.body.append(k),t.addEventListener(`click`,()=>{k!==void 0&&(k.style.display=`none`)}),e.addEventListener(`mousedown`,e=>{if(e.button!==0||k===void 0)return;e.preventDefault();let t=k.getBoundingClientRect(),n=e.clientX,r=e.clientY,i=t.left,a=t.top,o=e=>{k!==void 0&&(k.style.left=`${i+e.clientX-n}px`,k.style.top=`${a+e.clientY-r}px`,k.style.margin=`0`,k.style.right=`auto`,k.style.bottom=`auto`)},s=()=>{window.removeEventListener(`mousemove`,o),window.removeEventListener(`mouseup`,s)};window.addEventListener(`mousemove`,o),window.addEventListener(`mouseup`,s)}),n.addEventListener(`mousedown`,e=>{if(e.button!==0||k===void 0)return;e.preventDefault(),e.stopPropagation();let t=k.getBoundingClientRect(),n=e.clientX,r=e.clientY,i=t.width,a=t.height,o=e=>{k!==void 0&&(k.style.width=`${Math.max(360,i+e.clientX-n)}px`,k.style.height=`${Math.max(260,a+e.clientY-r)}px`,k.style.right=`auto`,k.style.bottom=`auto`)},s=()=>{window.removeEventListener(`mousemove`,o),window.removeEventListener(`mouseup`,s)};window.addEventListener(`mousemove`,o),window.addEventListener(`mouseup`,s)})}let Oe=[],ke=[];(()=>{let e=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5`.split(`,`).map(e=>e?parseInt(e,36):1);for(let t=0,n=0;t<e.length;t++)(t%2?ke:Oe).push(n+=e[t])})();function Ae(e){if(e<768)return!1;for(let t=0,n=Oe.length;;){let r=t+n>>1;if(e<Oe[r])n=r;else if(e>=ke[r])t=r+1;else return!0;if(t==n)return!1}}function je(e){return e>=127462&&e<=127487}const Me=8205;function Ne(e,t,n=!0,r=!0){return(n?Pe:Fe)(e,t,r)}function Pe(e,t,n){if(t==e.length)return t;t&&Le(e.charCodeAt(t))&&Re(e.charCodeAt(t-1))&&t--;let r=Ie(e,t);for(t+=ze(r);t<e.length;){let i=Ie(e,t);if(r==Me||i==Me||n&&Ae(i))t+=ze(i),r=i;else if(je(i)){let n=0,r=t-2;for(;r>=0&&je(Ie(e,r));)n++,r-=2;if(n%2==0)break;t+=2}else break}return t}function Fe(e,t,n){for(;t>1;){let r=Pe(e,t-2,n);if(r<t)return r;t--}return 0}function Ie(e,t){let n=e.charCodeAt(t);if(!Re(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return Le(r)?(n-55296<<10)+(r-56320)+65536:n}function Le(e){return e>=56320&&e<57344}function Re(e){return e>=55296&&e<56320}function ze(e){return e<65536?1:2}var A=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=Ye(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),Ve.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Ye(this,e,t);let n=[];return this.decompose(e,t,n,0),Ve.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new Ge(this),i=new Ge(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return!1;if(a+=r.value.length,r.done||a>=n)return!0}}iter(e=1){return new Ge(this,e)}iterRange(e,t=this.length){return new Ke(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new qe(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new Be(t):Ve.from(Be.split(t,[]))}},Be=class e extends A{constructor(e,t=He(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new Je(r,o,n,a);r=o+1,n++}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(We(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=Ue(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else{let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)))}}else r.push(a)}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=Ye(this,t,n);let i=Ue(this.text,Ue(r.text,We(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):Ve.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=`
569
569
  `){[e,t]=Ye(this,e,t);let r=``;for(let i=0,a=0;i<=t&&a<this.text.length;a++){let o=this.text[a],s=i+o.length;i>e&&a&&(r+=n),e<s&&t>i&&(r+=o.slice(Math.max(0,e-i),t-i)),i=s+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(t,n){let r=[],i=-1;for(let a of t)r.push(a),i+=a.length+1,r.length==32&&(n.push(new e(r,i)),r=[],i=-1);return i>-1&&n.push(new e(r,i)),n}},Ve=class e extends A{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let t of e)this.lines+=t.lines}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.children[i],o=r+a.length,s=n+a.lines-1;if((t?s:o)>=e)return a.lineInner(e,t,n,r);r=o+1,n=s+1}}decompose(e,t,n,r){for(let i=0,a=0;a<=t&&i<this.children.length;i++){let o=this.children[i],s=a+o.length;if(e<=s&&t>=a){let i=r&(a<=e|(s>=t?2:0));a>=e&&s<=t&&!i?n.push(o):o.decompose(e-a,t-a,n,i)}a=s+1}}replace(t,n,r){if([t,n]=Ye(this,t,n),r.lines<this.lines)for(let i=0,a=0;i<this.children.length;i++){let o=this.children[i],s=a+o.length;if(t>=a&&n<=s){let c=o.replace(t-a,n-a,r),l=this.lines-o.lines+c.lines;if(c.lines<l>>4&&c.lines>l>>6){let a=this.children.slice();return a[i]=c,new e(a,this.length-(n-t)+r.length)}return super.replace(a,s,c)}a=s+1}return super.replace(t,n,r)}sliceString(e,t=this.length,n=`
570
570
  `){[e,t]=Ye(this,e,t);let r=``;for(let i=0,a=0;i<this.children.length&&a<=t;i++){let o=this.children[i],s=a+o.length;a>e&&i&&(r+=n),e<s&&t>a&&(r+=o.sliceString(e-a,t-a,n)),a=s+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(t,n){if(!(t instanceof e))return 0;let r=0,[i,a,o,s]=n>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;i+=n,a+=n){if(i==o||a==s)return r;let e=this.children[i],c=t.children[a];if(e!=c)return r+e.scanIdentical(c,n);r+=e.length+1}}static from(t,n=t.reduce((e,t)=>e+t.length+1,-1)){let r=0;for(let e of t)r+=e.lines;if(r<32){let e=[];for(let n of t)n.flatten(e);return new Be(e,n)}let i=Math.max(32,r>>5),a=i<<1,o=i>>1,s=[],c=0,l=-1,u=[];function d(t){let n;if(t.lines>a&&t instanceof e)for(let e of t.children)d(e);else t.lines>o&&(c>o||!c)?(f(),s.push(t)):t instanceof Be&&c&&(n=u[u.length-1])instanceof Be&&t.lines+n.lines<=32?(c+=t.lines,l+=t.length+1,u[u.length-1]=new Be(n.text.concat(t.text),n.length+1+t.length)):(c+t.lines>i&&f(),c+=t.lines,l+=t.length+1,u.push(t))}function f(){c!=0&&(s.push(u.length==1?u[0]:e.from(u,l)),l=-1,c=u.length=0)}for(let e of t)d(e);return f(),s.length==1?s[0]:new e(s,n)}};A.empty=new Be([``],0);function He(e){let t=-1;for(let n of e)t+=n.length+1;return t}function Ue(e,t,n=0,r=1e9){for(let i=0,a=0,o=!0;a<e.length&&i<=r;a++){let s=e[a],c=i+s.length;c>=n&&(c>r&&(s=s.slice(0,r-i)),i<n&&(s=s.slice(n-i)),o?(t[t.length-1]+=s,o=!1):t.push(s)),i=c+1}return t}function We(e,t,n){return Ue(e,[``],t,n)}var Ge=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value=``,this.nodes=[e],this.offsets=[t>0?1:(e instanceof Be?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,r=this.nodes[n],i=this.offsets[n],a=i>>1,o=r instanceof Be?r.text.length:r.children.length;if(a==(t>0?o:0)){if(n==0)return this.done=!0,this.value=``,this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=`
571
571
  `,this;e--}else if(r instanceof Be){let i=r.text[a+(t<0?-1:0)];if(this.offsets[n]+=t,i.length>Math.max(0,e))return this.value=e==0?i:t>0?i.slice(e):i.slice(0,i.length-e),this;e-=i.length}else{let i=r.children[a+(t<0?-1:0)];e>i.length?(e-=i.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(i),this.offsets.push(t>0?1:(i instanceof Be?i.text.length:i.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Ke=class{constructor(e,t,n){this.value=``,this.done=!1,this.cursor=new Ge(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value=``,this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=n?r:t<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=``}},qe=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value=``,this.done=!1}next(e=0){let{done:t,lineBreak:n,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value=``,this.afterBreak=!1):t?(this.done=!0,this.value=``):n?this.afterBreak?this.value=``:(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<`u`&&(A.prototype[Symbol.iterator]=function(){return this.iter()},Ge.prototype[Symbol.iterator]=Ke.prototype[Symbol.iterator]=qe.prototype[Symbol.iterator]=function(){return this});var Je=class{constructor(e,t,n,r){this.from=e,this.to=t,this.number=n,this.text=r}get length(){return this.to-this.from}};function Ye(e,t,n){return t=Math.max(0,Math.min(e.length,t)),[t,Math.max(t,Math.min(e.length,n))]}function Xe(e,t,n=!0,r=!0){return Ne(e,t,n,r)}function Ze(e){return e>=56320&&e<57344}function Qe(e){return e>=55296&&e<56320}function $e(e,t){let n=e.charCodeAt(t);if(!Qe(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return Ze(r)?(n-55296<<10)+(r-56320)+65536:n}function et(e){return e<65536?1:2}const tt=/\r\n?|\n/;var nt=(function(e){return e[e.Simple=0]=`Simple`,e[e.TrackDel=1]=`TrackDel`,e[e.TrackBefore=2]=`TrackBefore`,e[e.TrackAfter=3]=`TrackAfter`,e})(nt||={}),rt=class e{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t+1];e+=n<0?this.sections[t]:n}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,n=0,r=0;t<this.sections.length;){let i=this.sections[t++],a=this.sections[t++];a<0?(e(n,r,i),r+=i):r+=a,n+=i}}iterChangedRanges(e,t=!1){st(this,e,t)}get invertedDesc(){let t=[];for(let e=0;e<this.sections.length;){let n=this.sections[e++],r=this.sections[e++];r<0?t.push(n,r):t.push(r,n)}return new e(t)}composeDesc(e){return this.empty?e:e.empty?this:lt(this,e)}mapDesc(e,t=!1){return e.empty?this:ct(this,e,t)}mapPos(e,t=-1,n=nt.Simple){let r=0,i=0;for(let a=0;a<this.sections.length;){let o=this.sections[a++],s=this.sections[a++],c=r+o;if(s<0){if(c>e)return i+(e-r);i+=o}else{if(n!=nt.Simple&&c>=e&&(n==nt.TrackDel&&r<e&&c>e||n==nt.TrackBefore&&r<e||n==nt.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!o)return e==r||t<0?i:i+s;i+=s}r=c}if(e>r)throw RangeError(`Position ${e} is out of range for changeset of length ${r}`);return i}touchesRange(e,t=e){for(let n=0,r=0;n<this.sections.length&&r<=t;){let i=this.sections[n++],a=this.sections[n++],o=r+i;if(a>=0&&r<=t&&o>=e)return r<e&&o>t?`cover`:!0;r=o}return!1}toString(){let e=``;for(let t=0;t<this.sections.length;){let n=this.sections[t++],r=this.sections[t++];e+=(e?` `:``)+n+(r>=0?`:`+r:``)}return e}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!=`number`))throw RangeError(`Invalid JSON representation of ChangeDesc`);return new e(t)}static create(t){return new e(t)}},it=class e extends rt{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw RangeError(`Applying change set to a document with the wrong length`);return st(this,(t,n,r,i,a)=>e=e.replace(r,r+(n-t),a),!1),e}mapDesc(e,t=!1){return ct(this,e,t,!0)}invert(t){let n=this.sections.slice(),r=[];for(let e=0,i=0;e<n.length;e+=2){let a=n[e],o=n[e+1];if(o>=0){n[e]=o,n[e+1]=a;let s=e>>1;for(;r.length<s;)r.push(A.empty);r.push(a?t.slice(i,i+a):A.empty)}i+=a}return new e(n,r)}compose(e){return this.empty?e:e.empty?this:lt(this,e,!0)}map(e,t=!1){return e.empty?this:ct(this,e,t,!0)}iterChanges(e,t=!1){st(this,e,t)}get desc(){return rt.create(this.sections)}filter(t){let n=[],r=[],i=[],a=new ut(this);done:for(let e=0,o=0;;){let s=e==t.length?1e9:t[e++];for(;o<s||o==s&&a.len==0;){if(a.done)break done;let e=Math.min(a.len,s-o);at(i,e,-1);let t=a.ins==-1?-1:a.off==0?a.ins:0;at(n,e,t),t>0&&ot(r,n,a.text),a.forward(e),o+=e}let c=t[e++];for(;o<c;){if(a.done)break done;let e=Math.min(a.len,c-o);at(n,e,-1),at(i,e,a.ins==-1?-1:a.off==0?a.ins:0),a.forward(e),o+=e}}return{changes:new e(n,r),filtered:rt.create(i)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t],r=this.sections[t+1];r<0?e.push(n):r==0?e.push([n]):e.push([n].concat(this.inserted[t>>1].toJSON()))}return e}static of(t,n,r){let i=[],a=[],o=0,s=null;function c(t=!1){if(!t&&!i.length)return;o<n&&at(i,n-o,-1);let r=new e(i,a);s=s?s.compose(r.map(s)):r,i=[],a=[],o=0}function l(t){if(Array.isArray(t))for(let e of t)l(e);else if(t instanceof e){if(t.length!=n)throw RangeError(`Mismatched change set length (got ${t.length}, expected ${n})`);c(),s=s?s.compose(t.map(s)):t}else{let{from:e,to:s=e,insert:l}=t;if(e>s||e<0||s>n)throw RangeError(`Invalid change range ${e} to ${s} (in doc of length ${n})`);let u=l?typeof l==`string`?A.of(l.split(r||tt)):l:A.empty,d=u.length;if(e==s&&d==0)return;e<o&&c(),e>o&&at(i,e-o,-1),at(i,s-e,d),ot(a,i,u),o=s}}return l(t),c(!s),s}static empty(t){return new e(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw RangeError(`Invalid JSON representation of ChangeSet`);let n=[],r=[];for(let e=0;e<t.length;e++){let i=t[e];if(typeof i==`number`)n.push(i,-1);else if(!Array.isArray(i)||typeof i[0]!=`number`||i.some((e,t)=>t&&typeof e!=`string`))throw RangeError(`Invalid JSON representation of ChangeSet`);else if(i.length==1)n.push(i[0],0);else{for(;r.length<e;)r.push(A.empty);r[e]=A.of(i.slice(1)),n.push(i[0],r[e].length)}}return new e(n,r)}static createSet(t,n){return new e(t,n)}};function at(e,t,n,r=!1){if(t==0&&n<=0)return;let i=e.length-2;i>=0&&n<=0&&n==e[i+1]?e[i]+=t:i>=0&&t==0&&e[i]==0?e[i+1]+=n:r?(e[i]+=t,e[i+1]+=n):e.push(t,n)}function ot(e,t,n){if(n.length==0)return;let r=t.length-2>>1;if(r<e.length)e[e.length-1]=e[e.length-1].append(n);else{for(;e.length<r;)e.push(A.empty);e.push(n)}}function st(e,t,n){let r=e.inserted;for(let i=0,a=0,o=0;o<e.sections.length;){let s=e.sections[o++],c=e.sections[o++];if(c<0)i+=s,a+=s;else{let l=i,u=a,d=A.empty;for(;l+=s,u+=c,c&&r&&(d=d.append(r[o-2>>1])),!(n||o==e.sections.length||e.sections[o+1]<0);)s=e.sections[o++],c=e.sections[o++];t(i,l,a,u,d),i=l,a=u}}}function ct(e,t,n,r=!1){let i=[],a=r?[]:null,o=new ut(e),s=new ut(t);for(let e=-1;;)if(o.done&&s.len||s.done&&o.len)throw Error(`Mismatched change set lengths`);else if(o.ins==-1&&s.ins==-1){let e=Math.min(o.len,s.len);at(i,e,-1),o.forward(e),s.forward(e)}else if(s.ins>=0&&(o.ins<0||e==o.i||o.off==0&&(s.len<o.len||s.len==o.len&&!n))){let t=s.len;for(at(i,s.ins,-1);t;){let n=Math.min(o.len,t);o.ins>=0&&e<o.i&&o.len<=n&&(at(i,0,o.ins),a&&ot(a,i,o.text),e=o.i),o.forward(n),t-=n}s.next()}else if(o.ins>=0){let t=0,n=o.len;for(;n;)if(s.ins==-1){let e=Math.min(n,s.len);t+=e,n-=e,s.forward(e)}else if(s.ins==0&&s.len<n)n-=s.len,s.next();else break;at(i,t,e<o.i?o.ins:0),a&&e<o.i&&ot(a,i,o.text),e=o.i,o.forward(o.len-n)}else if(o.done&&s.done)return a?it.createSet(i,a):rt.create(i);else throw Error(`Mismatched change set lengths`)}function lt(e,t,n=!1){let r=[],i=n?[]:null,a=new ut(e),o=new ut(t);for(let e=!1;;)if(a.done&&o.done)return i?it.createSet(r,i):rt.create(r);else if(a.ins==0)at(r,a.len,0,e),a.next();else if(o.len==0&&!o.done)at(r,0,o.ins,e),i&&ot(i,r,o.text),o.next();else if(a.done||o.done)throw Error(`Mismatched change set lengths`);else{let t=Math.min(a.len2,o.len),n=r.length;if(a.ins==-1){let n=o.ins==-1?-1:o.off?0:o.ins;at(r,t,n,e),i&&n&&ot(i,r,o.text)}else o.ins==-1?(at(r,a.off?0:a.len,t,e),i&&ot(i,r,a.textBit(t))):(at(r,a.off?0:a.len,o.off?0:o.ins,e),i&&!o.off&&ot(i,r,o.text));e=(a.ins>t||o.ins>=0&&o.len>t)&&(e||r.length>n),a.forward2(t),o.forward(t)}}var ut=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?A.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?A.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},dt=class e{constructor(e,t,n,r){this.from=e,this.to=t,this.flags=n,this.goalColumn=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(t,n=-1){let r,i;return this.empty?r=i=t.mapPos(this.from,n):(r=t.mapPos(this.from,1),i=t.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new e(r,i,this.flags,this.goalColumn)}extend(e,t=e,n=0){if(e<=this.anchor&&t>=this.anchor)return j.range(e,t,void 0,void 0,n);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return j.range(this.anchor,r,void 0,void 0,n)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!=`number`||typeof e.head!=`number`)throw RangeError(`Invalid JSON representation for SelectionRange`);return j.range(e.anchor,e.head)}static create(t,n,r,i){return new e(t,n,r,i)}},j=class e{constructor(e,t){this.ranges=e,this.mainIndex=t}map(t,n=-1){return t.empty?this:e.create(this.ranges.map(e=>e.map(t,n)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;n<this.ranges.length;n++)if(!this.ranges[n].eq(e.ranges[n],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new e([this.main],0)}addRange(t,n=!0){return e.create([t].concat(this.ranges),n?0:this.mainIndex+1)}replaceRange(t,n=this.mainIndex){let r=this.ranges.slice();return r[n]=t,e.create(r,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!=`number`||t.main>=t.ranges.length)throw RangeError(`Invalid JSON representation for EditorSelection`);return new e(t.ranges.map(e=>dt.fromJSON(e)),t.main)}static single(t,n=t){return new e([e.range(t,n)],0)}static create(t,n=0){if(t.length==0)throw RangeError(`A selection needs at least one range`);for(let r=0,i=0;i<t.length;i++){let a=t[i];if(a.empty?a.from<=r:a.from<r)return e.normalized(t.slice(),n);r=a.to}return new e(t,n)}static cursor(e,t=0,n,r){return dt.create(e,e,(t==0?0:t<0?8:16)|(n==null?7:Math.min(6,n)),r)}static range(e,t,n,r,i){let a=r==null?7:Math.min(6,r);return!i&&e!=t&&(i=t<e?1:-1),i&&(a|=i<0?8:16),t<e?dt.create(t,e,a|32,n):dt.create(e,t,a,n)}static undirectionalRange(e,t){return dt.create(e,t,64,void 0)}static normalized(t,n=0){let r=t[n];t.sort((e,t)=>e.from-t.from),n=t.indexOf(r);for(let r=1;r<t.length;r++){let i=t[r],a=t[r-1];if(i.empty?i.from<=a.to:i.from<a.to){let o=a.from,s=Math.max(i.to,a.to);r<=n&&n--,t.splice(--r,2,i.anchor>i.head?e.range(s,o):e.range(o,s))}}return new e(t,n)}};function ft(e,t){for(let n of e.ranges)if(n.to>t)throw RangeError(`Selection points outside of document`)}let pt=0;var M=class e{constructor(e,t,n,r,i){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=r,this.id=pt++,this.default=e([]),this.extensions=typeof i==`function`?i(this):i}get reader(){return this}static define(t={}){return new e(t.combine||(e=>e),t.compareInput||((e,t)=>e===t),t.compare||(t.combine?(e,t)=>e===t:mt),!!t.static,t.enables)}of(e){return new ht([],this,0,e)}compute(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new ht(e,this,1,t)}computeN(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new ht(e,this,2,t)}from(e,t){return t||=e=>e,this.compute([e],n=>t(n.field(e)))}};function mt(e,t){return e==t||e.length==t.length&&e.every((e,n)=>e===t[n])}var ht=class{constructor(e,t,n,r){this.dependencies=e,this.facet=t,this.type=n,this.value=r,this.id=pt++}dynamicSlot(e){let t=this.value,n=this.facet.compareInput,r=this.id,i=e[r]>>1,a=this.type==2,o=!1,s=!1,c=[];for(let t of this.dependencies)t==`doc`?o=!0:t==`selection`?s=!0:(e[t.id]??1)&1||c.push(e[t.id]);return{create(e){return e.values[i]=t(e),1},update(e,r){if(o&&r.docChanged||s&&(r.docChanged||r.selection)||_t(e,c)){let r=t(e);if(a?!gt(r,e.values[i],n):!n(r,e.values[i]))return e.values[i]=r,1}return 0},reconfigure:(e,o)=>{let s,c=o.config.address[r];if(c!=null){let r=At(o,c);if(this.dependencies.every(t=>t instanceof M?o.facet(t)===e.facet(t):t instanceof bt?o.field(t,!1)==e.field(t,!1):!0)||(a?gt(s=t(e),r,n):n(s=t(e),r)))return e.values[i]=r,0}else s=t(e);return e.values[i]=s,1}}}get extension(){return this}};function gt(e,t,n){if(e.length!=t.length)return!1;for(let r=0;r<e.length;r++)if(!n(e[r],t[r]))return!1;return!0}function _t(e,t){let n=!1;for(let r of t)kt(e,r)&1&&(n=!0);return n}function vt(e,t,n){let r=n.map(t=>e[t.id]),i=n.map(e=>e.type),a=r.filter(e=>!(e&1)),o=e[t.id]>>1;function s(e){let n=[];for(let t=0;t<r.length;t++){let a=At(e,r[t]);if(i[t]==2)for(let e of a)n.push(e);else n.push(a)}return t.combine(n)}return{create(e){for(let t of r)kt(e,t);return e.values[o]=s(e),1},update(e,n){if(!_t(e,a))return 0;let r=s(e);return t.compare(r,e.values[o])?0:(e.values[o]=r,1)},reconfigure(e,i){let a=_t(e,r),c=i.config.facets[t.id],l=i.facet(t);if(c&&!a&&mt(n,c))return e.values[o]=l,0;let u=s(e);return t.compare(u,l)?(e.values[o]=l,0):(e.values[o]=u,1)}}}const yt=M.define({static:!0});var bt=class e{constructor(e,t,n,r,i){this.id=e,this.createF=t,this.updateF=n,this.compareF=r,this.spec=i,this.provides=void 0}static define(t){let n=new e(pt++,t.create,t.update,t.compare||((e,t)=>e===t),t);return t.provide&&(n.provides=t.provide(n)),n}create(e){return(e.facet(yt).find(e=>e.field==this)?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:e=>(e.values[t]=this.create(e),1),update:(e,n)=>{let r=e.values[t],i=this.updateF(r,n);return this.compareF(r,i)?0:(e.values[t]=i,1)},reconfigure:(e,n)=>{let r=e.facet(yt),i=n.facet(yt),a;return(a=r.find(e=>e.field==this))&&a!=i.find(e=>e.field==this)?(e.values[t]=a.create(e),1):n.config.address[this.id]==null?(e.values[t]=this.create(e),1):(e.values[t]=n.field(this),0)}}}init(e){return[this,yt.of({field:this,create:e})]}get extension(){return this}};const xt={lowest:4,low:3,default:2,high:1,highest:0};function St(e){return t=>new wt(t,e)}const Ct={highest:St(xt.highest),high:St(xt.high),default:St(xt.default),low:St(xt.low),lowest:St(xt.lowest)};var wt=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Tt=class e{of(e){return new Et(this,e)}reconfigure(t){return e.reconfigure.of({compartment:this,extension:t})}get(e){return e.config.compartments.get(this)}},Et=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},Dt=class e{constructor(e,t,n,r,i,a){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=r,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length<n.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(t,n,r){let i=[],a=Object.create(null),o=new Map;for(let e of Ot(t,n,o))e instanceof bt?i.push(e):(a[e.facet.id]||(a[e.facet.id]=[])).push(e);let s=Object.create(null),c=[],l=[];for(let e of i)s[e.id]=l.length<<1,l.push(t=>e.slot(t));let u=r?.config.facets;for(let e in a){let t=a[e],n=t[0].facet,i=u&&u[e]||[];if(t.every(e=>e.type==0))if(s[n.id]=c.length<<1|1,mt(i,t))c.push(r.facet(n));else{let e=n.combine(t.map(e=>e.value));c.push(r&&n.compare(e,r.facet(n))?r.facet(n):e)}else{for(let e of t)e.type==0?(s[e.id]=c.length<<1|1,c.push(e.value)):(s[e.id]=l.length<<1,l.push(t=>e.dynamicSlot(t)));s[n.id]=l.length<<1,l.push(e=>vt(e,n,t))}}let d=l.map(e=>e(s));return new e(t,o,d,s,c,a)}};function Ot(e,t,n){let r=[[],[],[],[],[]],i=new Map;function a(e,o){let s=i.get(e);if(s!=null){if(s<=o)return;let t=r[s].indexOf(e);t>-1&&r[s].splice(t,1),e instanceof Et&&n.delete(e.compartment)}if(i.set(e,o),Array.isArray(e))for(let t of e)a(t,o);else if(e instanceof Et){if(n.has(e.compartment))throw RangeError(`Duplicate use of compartment in extensions`);let r=t.get(e.compartment)||e.inner;n.set(e.compartment,r),a(r,o)}else if(e instanceof wt)a(e.inner,e.prec);else if(e instanceof bt)r[o].push(e),e.provides&&a(e.provides,o);else if(e instanceof ht)r[o].push(e),e.facet.extensions&&a(e.facet.extensions,xt.default);else{let t=e.extension;if(!t)throw Error(`Unrecognized extension value in extension set (${e}).`);if(t==e)throw Error(`Unrecognized extension value in extension set (${e}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);a(t,o)}}return a(e,xt.default),r.reduce((e,t)=>e.concat(t))}function kt(e,t){if(t&1)return 2;let n=t>>1,r=e.status[n];if(r==4)throw Error(`Cyclic dependency between fields and/or facets`);if(r&2)return r;e.status[n]=4;let i=e.computeSlot(e,e.config.dynamicSlots[n]);return e.status[n]=2|i}function At(e,t){return t&1?e.config.staticValues[t>>1]:e.values[t>>1]}const jt=M.define(),Mt=M.define({combine:e=>e.some(e=>e),static:!0}),Nt=M.define({combine:e=>e.length?e[0]:void 0,static:!0}),Pt=M.define(),Ft=M.define(),It=M.define(),Lt=M.define({combine:e=>e.length?e[0]:!1});var Rt=class{constructor(e,t){this.type=e,this.value=t}static define(){return new zt}},zt=class{of(e){return new Rt(this,e)}},Bt=class{constructor(e){this.map=e}of(e){return new N(this,e)}},N=class e{constructor(e,t){this.type=e,this.value=t}map(t){let n=this.type.map(this.value,t);return n===void 0?void 0:n==this.value?this:new e(this.type,n)}is(e){return this.type==e}static define(e={}){return new Bt(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let r of e){let e=r.map(t);e&&n.push(e)}return n}};N.reconfigure=N.define(),N.appendConfig=N.define();var Vt=class e{constructor(t,n,r,i,a,o){this.startState=t,this.changes=n,this.selection=r,this.effects=i,this.annotations=a,this.scrollIntoView=o,this._doc=null,this._state=null,r&&ft(r,n.newLength),a.some(t=>t.type==e.time)||(this.annotations=a.concat(e.time.of(Date.now())))}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}get newDoc(){return this._doc||=this.changes.apply(this.startState.doc)}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let n=this.annotation(e.userEvent);return!!(n&&(n==t||n.length>t.length&&n.slice(0,t.length)==t&&n[t.length]==`.`))}};Vt.time=Rt.define(),Vt.userEvent=Rt.define(),Vt.addToHistory=Rt.define(),Vt.remote=Rt.define();function Ht(e,t){let n=[];for(let r=0,i=0;;){let a,o;if(r<e.length&&(i==t.length||t[i]>=e[r]))a=e[r++],o=e[r++];else if(i<t.length)a=t[i++],o=t[i++];else return n;!n.length||n[n.length-1]<a?n.push(a,o):n[n.length-1]<o&&(n[n.length-1]=o)}}function Ut(e,t,n){let r,i,a;return n?(r=t.changes,i=it.empty(t.changes.length),a=e.changes.compose(t.changes)):(r=t.changes.map(e.changes),i=e.changes.mapDesc(t.changes,!0),a=e.changes.compose(r)),{changes:a,selection:t.selection?t.selection.map(i):e.selection?.map(r),effects:N.mapEffects(e.effects,r).concat(N.mapEffects(t.effects,i)),annotations:e.annotations.length?e.annotations.concat(t.annotations):t.annotations,scrollIntoView:e.scrollIntoView||t.scrollIntoView}}function Wt(e,t,n){let r=t.selection,i=Yt(t.annotations);return t.userEvent&&(i=i.concat(Vt.userEvent.of(t.userEvent))),{changes:t.changes instanceof it?t.changes:it.of(t.changes||[],n,e.facet(Nt)),selection:r&&(r instanceof j?r:j.single(r.anchor,r.head)),effects:Yt(t.effects),annotations:i,scrollIntoView:!!t.scrollIntoView}}function Gt(e,t,n){let r=Wt(e,t.length?t[0]:{},e.doc.length);t.length&&t[0].filter===!1&&(n=!1);for(let i=1;i<t.length;i++){t[i].filter===!1&&(n=!1);let a=!!t[i].sequential;r=Ut(r,Wt(e,t[i],a?r.changes.newLength:e.doc.length),a)}let i=Vt.create(e,r.changes,r.selection,r.effects,r.annotations,r.scrollIntoView);return qt(n?Kt(i):i)}function Kt(e){let t=e.startState,n=!0;for(let r of t.facet(Pt)){let t=r(e);if(t===!1){n=!1;break}Array.isArray(t)&&(n=n===!0?t:Ht(n,t))}if(n!==!0){let r,i;if(n===!1)i=e.changes.invertedDesc,r=it.empty(t.doc.length);else{let t=e.changes.filter(n);r=t.changes,i=t.filtered.mapDesc(t.changes).invertedDesc}e=Vt.create(t,r,e.selection&&e.selection.map(i),N.mapEffects(e.effects,i),e.annotations,e.scrollIntoView)}let r=t.facet(Ft);for(let n=r.length-1;n>=0;n--){let i=r[n](e);e=i instanceof Vt?i:Array.isArray(i)&&i.length==1&&i[0]instanceof Vt?i[0]:Gt(t,Yt(i),!1)}return e}function qt(e){let t=e.startState,n=t.facet(It),r=e;for(let i=n.length-1;i>=0;i--){let a=n[i](e);a&&Object.keys(a).length&&(r=Ut(r,Wt(t,a,e.changes.newLength),!0))}return r==e?e:Vt.create(t,e.changes,e.selection,r.effects,r.annotations,r.scrollIntoView)}const Jt=[];function Yt(e){return e==null?Jt:Array.isArray(e)?e:[e]}var Xt=(function(e){return e[e.Word=0]=`Word`,e[e.Space=1]=`Space`,e[e.Other=2]=`Other`,e})(Xt||={});const Zt=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Qt;try{Qt=RegExp(`[\\p{Alphabetic}\\p{Number}_]`,`u`)}catch{}function $t(e){if(Qt)return Qt.test(e);for(let t=0;t<e.length;t++){let n=e[t];if(/\w/.test(n)||n>`€`&&(n.toUpperCase()!=n.toLowerCase()||Zt.test(n)))return!0}return!1}function en(e){return t=>{if(!/\S/.test(t))return Xt.Space;if($t(t))return Xt.Word;for(let n=0;n<e.length;n++)if(t.indexOf(e[n])>-1)return Xt.Word;return Xt.Other}}var P=class e{constructor(e,t,n,r,i,a){this.config=e,this.doc=t,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let e=0;e<this.config.dynamicSlots.length;e++)kt(this,e<<1);this.computeSlot=null}field(e,t=!0){let n=this.config.address[e.id];if(n==null){if(t)throw RangeError(`Field is not present in this state`);return}return kt(this,n),At(this,n)}update(...e){return Gt(this,e,!0)}applyTransaction(t){let n=this.config,{base:r,compartments:i}=n;for(let e of t.effects)e.is(Tt.reconfigure)?(n&&=(i=new Map,n.compartments.forEach((e,t)=>i.set(t,e)),null),i.set(e.value.compartment,e.value.extension)):e.is(N.reconfigure)?(n=null,r=e.value):e.is(N.appendConfig)&&(n=null,r=Yt(r).concat(e.value));let a;n?a=t.startState.values.slice():(n=Dt.resolve(r,i,this),a=new e(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(e,t)=>t.reconfigure(e,this),null).values);let o=t.startState.facet(Mt)?t.newSelection:t.newSelection.asSingle();new e(n,t.newDoc,o,a,(e,n)=>n.update(e,t),t)}replaceSelection(e){return typeof e==`string`&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:j.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),r=this.changes(n.changes),i=[n.range],a=Yt(n.effects);for(let n=1;n<t.ranges.length;n++){let o=e(t.ranges[n]),s=this.changes(o.changes),c=s.map(r);for(let e=0;e<n;e++)i[e]=i[e].map(c);let l=r.mapDesc(s,!0);i.push(o.range.map(l)),r=r.compose(c),a=N.mapEffects(a,c).concat(N.mapEffects(Yt(o.effects),l))}return{changes:r,selection:j.create(i,t.mainIndex),effects:a}}changes(t=[]){return t instanceof it?t:it.of(t,this.doc.length,this.facet(e.lineSeparator))}toText(t){return A.of(t.split(this.facet(e.lineSeparator)||tt))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(kt(this,t),At(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let n in e){let r=e[n];r instanceof bt&&this.config.address[r.id]!=null&&(t[n]=r.spec.toJSON(this.field(e[n]),this))}return t}static fromJSON(t,n={},r){if(!t||typeof t.doc!=`string`)throw RangeError(`Invalid JSON representation for EditorState`);let i=[];if(r){for(let e in r)if(Object.prototype.hasOwnProperty.call(t,e)){let n=r[e],a=t[e];i.push(n.init(e=>n.spec.fromJSON(a,e)))}}return e.create({doc:t.doc,selection:j.fromJSON(t.selection),extensions:n.extensions?i.concat([n.extensions]):i})}static create(t={}){let n=Dt.resolve(t.extensions||[],new Map),r=t.doc instanceof A?t.doc:A.of((t.doc||``).split(n.staticFacet(e.lineSeparator)||tt)),i=t.selection?t.selection instanceof j?t.selection:j.single(t.selection.anchor,t.selection.head):j.single(0);return ft(i,r.length),n.staticFacet(Mt)||(i=i.asSingle()),new e(n,r,i,n.dynamicSlots.map(()=>null),(e,t)=>t.create(e),null)}get tabSize(){return this.facet(e.tabSize)}get lineBreak(){return this.facet(e.lineSeparator)||`
@@ -604,4 +604,4 @@ html[data-dsh-tw-active] .dshDesktopConversationSurface > :not([data-dsh-tw-view
604
604
  }`,{label:`enum`,detail:`definition`,type:`keyword`})]),Dm=new Pc,Om=new Set([`Script`,`Block`,`FunctionExpression`,`FunctionDeclaration`,`ArrowFunction`,`MethodDeclaration`,`ForStatement`]);function km(e){return(t,n)=>{let r=t.node.getChild(`VariableDefinition`);return r&&n(r,e),!0}}const Am=[`FunctionDeclaration`],jm={FunctionDeclaration:km(`function`),ClassDeclaration:km(`class`),ClassExpression:()=>!0,EnumDeclaration:km(`constant`),TypeAliasDeclaration:km(`type`),NamespaceDeclaration:km(`namespace`),VariableDefinition(e,t){e.matchContext(Am)||t(e,`variable`)},TypeDefinition(e,t){t(e,`type`)},__proto__:null};function Mm(e,t){let n=Dm.get(t);if(n)return n;let r=[],i=!0;function a(t,n){let i=e.sliceString(t.from,t.to);r.push({label:i,type:n})}return t.cursor(G.IncludeAnonymous).iterate(t=>{if(i)i=!1;else if(t.name){let e=jm[t.name];if(e&&e(t,a)||Om.has(t.name))return!1}else if(t.to-t.from>8192){for(let n of Mm(e,t.node))r.push(n);return!1}}),Dm.set(t,r),r}const Nm=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,Pm=[`TemplateString`,`String`,`RegExp`,`LineComment`,`BlockComment`,`VariableDefinition`,`TypeDefinition`,`Label`,`PropertyDefinition`,`PropertyName`,`PrivatePropertyDefinition`,`PrivatePropertyName`,`JSXText`,`JSXAttributeValue`,`JSXOpenTag`,`JSXCloseTag`,`JSXSelfClosingTag`,`.`,`?.`];function Fm(e){let t=Y(e.state).resolveInner(e.pos,-1);if(Pm.indexOf(t.name)>-1)return null;let n=t.name==`VariableName`||t.to-t.from<20&&Nm.test(e.state.sliceDoc(t.from,t.to));if(!n&&!e.explicit)return null;let r=[];for(let n=t;n;n=n.parent)Om.has(n.name)&&(r=r.concat(Mm(e.state.doc,n)));return{options:r,from:n?t.from:e.pos,validFor:Nm}}const Im=jl.define({name:`javascript`,parser:wm.configure({props:[Yl.add({IfStatement:su({except:/^\s*({|else\b)/}),TryStatement:su({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:ou,SwitchBody:e=>{let t=e.textAfter,n=/^\s*\}/.test(t),r=/^\s*(case|default)\b/.test(t);return e.baseIndent+(n?0:r?1:2)*e.unit},Block:iu({closing:`}`}),ArrowFunction:e=>e.baseIndent+e.unit,"TemplateString BlockComment":()=>null,"Statement Property":su({except:/^\s*{/}),JSXElement(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},JSXEscape(e){let t=/\s*\}/.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"JSXOpenTag JSXSelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),lu.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":uu,BlockComment(e){return{from:e.from+2,to:e.to-2}},JSXElement(e){let t=e.firstChild;if(!t||t.name==`JSXSelfClosingTag`)return null;let n=e.lastChild;return{from:t.to,to:n.type.isError?e.to:n.from}},"JSXSelfClosingTag JSXOpenTag"(e){let t=e.firstChild?.nextSibling,n=e.lastChild;return!t||t.type.isError?null:{from:t.to,to:n.type.isError?e.to:n.from}}})]}),languageData:{closeBrackets:{brackets:[`(`,`[`,`{`,`'`,`"`,"`"]},commentTokens:{line:`//`,block:{open:`/*`,close:`*/`}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:`$`}}),Lm={test:e=>/^JSX/.test(e.name),facet:Dl({commentTokens:{block:{open:`{/*`,close:`*/}`}}})},Rm=Im.configure({dialect:`ts`},`typescript`),zm=Im.configure({dialect:`jsx`,props:[Ol.add(e=>e.isTop?[Lm]:void 0)]}),Bm=Im.configure({dialect:`jsx ts`,props:[Ol.add(e=>e.isTop?[Lm]:void 0)]},`typescript`);let Vm=e=>({label:e,type:`keyword`});const Hm=`break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield`.split(` `).map(Vm),Um=Hm.concat([`declare`,`implements`,`private`,`protected`,`public`].map(Vm));function Wm(e={}){let t=e.jsx?e.typescript?Bm:zm:e.typescript?Rm:Im,n=e.typescript?Em.concat(Um):Tm.concat(Hm);return new Vl(t,[Im.data.of({autocomplete:Fu(Pm,Pu(n))}),Im.data.of({autocomplete:Fm}),e.jsx?Jm:[]])}function Gm(e){for(;;){if(e.name==`JSXOpenTag`||e.name==`JSXSelfClosingTag`||e.name==`JSXFragmentTag`)return e;if(e.name==`JSXEscape`||!e.parent)return null;e=e.parent}}function Km(e,t,n=e.length){for(let r=t?.firstChild;r;r=r.nextSibling)if(r.name==`JSXIdentifier`||r.name==`JSXBuiltin`||r.name==`JSXNamespacedName`||r.name==`JSXMemberExpression`)return e.sliceString(r.from,Math.min(r.to,n));return``}const qm=typeof navigator==`object`&&/Android\b/.test(navigator.userAgent),Jm=H.inputHandler.of((e,t,n,r,i)=>{if((qm?e.composing:e.compositionStarted)||e.state.readOnly||t!=n||r!=`>`&&r!=`/`||!Im.isActiveAt(e.state,t,-1))return!1;let a=i(),{state:o}=a,s=o.changeByRange(e=>{let{head:t}=e,n=Y(o).resolveInner(t-1,-1),i;if(n.name==`JSXStartTag`&&(n=n.parent),!(o.doc.sliceString(t-1,t)!=r||n.name==`JSXAttributeValue`&&n.to>t)){if(r==`>`&&n.name==`JSXFragmentTag`)return{range:e,changes:{from:t,insert:`</>`}};if(r==`/`&&n.name==`JSXStartCloseTag`){let e=n.parent,r=e.parent;if(r&&e.from==t-2&&((i=Km(o.doc,r.firstChild,t))||r.firstChild?.name==`JSXFragmentTag`)){let e=`${i}>`;return{range:j.cursor(t+e.length,-1),changes:{from:t,insert:e}}}}else if(r==`>`){let r=Gm(n);if(r&&r.name==`JSXOpenTag`&&!/^\/?>|^<\//.test(o.doc.sliceString(t,t+2))&&(i=Km(o.doc,r,t)))return{range:e,changes:{from:t,insert:`</${i}>`}}}}return{range:e}});return s.changes.empty?!1:(e.dispatch([a,o.update(s,{userEvent:`input.complete`,scrollIntoView:!0})]),!0)}),Ym=[`_blank`,`_self`,`_top`,`_parent`],Xm=[`ascii`,`utf-8`,`utf-16`,`latin1`,`latin1`],Zm=[`get`,`post`,`put`,`delete`],Qm=[`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`],$m=[`true`,`false`],Q={},eh={a:{attrs:{href:null,ping:null,type:null,media:null,target:Ym,hreflang:null}},abbr:Q,address:Q,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:[`default`,`rect`,`circle`,`poly`]}},article:Q,aside:Q,audio:{attrs:{src:null,mediagroup:null,crossorigin:[`anonymous`,`use-credentials`],preload:[`none`,`metadata`,`auto`],autoplay:[`autoplay`],loop:[`loop`],controls:[`controls`]}},b:Q,base:{attrs:{href:null,target:Ym}},bdi:Q,bdo:Q,blockquote:{attrs:{cite:null}},body:Q,br:Q,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:[`autofocus`],disabled:[`autofocus`],formenctype:Qm,formmethod:Zm,formnovalidate:[`novalidate`],formtarget:Ym,type:[`submit`,`reset`,`button`]}},canvas:{attrs:{width:null,height:null}},caption:Q,center:Q,cite:Q,code:Q,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:[`command`,`checkbox`,`radio`],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:[`disabled`],checked:[`checked`]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:[`disabled`],multiple:[`multiple`]}},datalist:{attrs:{data:null}},dd:Q,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:[`open`]}},dfn:Q,div:Q,dl:Q,dt:Q,em:Q,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:[`disabled`],form:null,name:null}},figcaption:Q,figure:Q,footer:Q,form:{attrs:{action:null,name:null,"accept-charset":Xm,autocomplete:[`on`,`off`],enctype:Qm,method:Zm,novalidate:[`novalidate`],target:Ym}},h1:Q,h2:Q,h3:Q,h4:Q,h5:Q,h6:Q,head:{children:[`title`,`base`,`link`,`style`,`meta`,`script`,`noscript`,`command`]},header:Q,hgroup:Q,hr:Q,html:{attrs:{manifest:null}},i:Q,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:[`allow-top-navigation`,`allow-same-origin`,`allow-forms`,`allow-scripts`],seamless:[`seamless`]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:[`anonymous`,`use-credentials`]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:[`audio/*`,`video/*`,`image/*`],autocomplete:[`on`,`off`],autofocus:[`autofocus`],checked:[`checked`],disabled:[`disabled`],formenctype:Qm,formmethod:Zm,formnovalidate:[`novalidate`],formtarget:Ym,multiple:[`multiple`],readonly:[`readonly`],required:[`required`],type:[`hidden`,`text`,`search`,`tel`,`url`,`email`,`password`,`datetime`,`date`,`month`,`week`,`time`,`datetime-local`,`number`,`range`,`color`,`checkbox`,`radio`,`file`,`submit`,`image`,`reset`,`button`]}},ins:{attrs:{cite:null,datetime:null}},kbd:Q,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:[`autofocus`],disabled:[`disabled`],keytype:[`RSA`]}},label:{attrs:{for:null,form:null}},legend:Q,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:[`all`,`16x16`,`16x16 32x32`,`16x16 32x32 64x64`]}},map:{attrs:{name:null}},mark:Q,menu:{attrs:{label:null,type:[`list`,`context`,`toolbar`]}},meta:{attrs:{content:null,charset:Xm,name:[`viewport`,`application-name`,`author`,`description`,`generator`,`keywords`],"http-equiv":[`content-language`,`content-type`,`default-style`,`refresh`]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:Q,noscript:Q,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:[`typemustmatch`]}},ol:{attrs:{reversed:[`reversed`],start:null,type:[`1`,`a`,`A`,`i`,`I`]},children:[`li`,`script`,`template`,`ul`,`ol`]},optgroup:{attrs:{disabled:[`disabled`],label:null}},option:{attrs:{disabled:[`disabled`],label:null,selected:[`selected`],value:null}},output:{attrs:{for:null,form:null,name:null}},p:Q,param:{attrs:{name:null,value:null}},pre:Q,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:Q,rt:Q,ruby:Q,samp:Q,script:{attrs:{type:[`text/javascript`],src:null,async:[`async`],defer:[`defer`],charset:Xm}},section:Q,select:{attrs:{form:null,name:null,size:null,autofocus:[`autofocus`],disabled:[`disabled`],multiple:[`multiple`]}},slot:{attrs:{name:null}},small:Q,source:{attrs:{src:null,type:null,media:null}},span:Q,strong:Q,style:{attrs:{type:[`text/css`],media:null,scoped:null}},sub:Q,summary:Q,sup:Q,table:Q,tbody:Q,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:Q,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:[`autofocus`],disabled:[`disabled`],readonly:[`readonly`],required:[`required`],wrap:[`soft`,`hard`]}},tfoot:Q,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:[`row`,`col`,`rowgroup`,`colgroup`]}},thead:Q,time:{attrs:{datetime:null}},title:Q,tr:Q,track:{attrs:{src:null,label:null,default:null,kind:[`subtitles`,`captions`,`descriptions`,`chapters`,`metadata`],srclang:null}},ul:{children:[`li`,`script`,`template`,`ul`,`ol`]},var:Q,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:[`anonymous`,`use-credentials`],preload:[`auto`,`metadata`,`none`],autoplay:[`autoplay`],mediagroup:[`movie`],muted:[`muted`],controls:[`controls`]}},wbr:Q},th={accesskey:null,class:null,contenteditable:$m,contextmenu:null,dir:[`ltr`,`rtl`,`auto`],draggable:[`true`,`false`,`auto`],dropzone:[`copy`,`move`,`link`,`string:`,`file:`],hidden:[`hidden`],id:null,inert:[`inert`],itemid:null,itemprop:null,itemref:null,itemscope:[`itemscope`],itemtype:null,lang:[`ar`,`bn`,`de`,`en-GB`,`en-US`,`es`,`fr`,`hi`,`id`,`ja`,`pa`,`pt`,`ru`,`tr`,`zh`],spellcheck:$m,autocorrect:$m,autocapitalize:$m,style:null,tabindex:null,title:null,translate:[`yes`,`no`],rel:[`stylesheet`,`alternate`,`author`,`bookmark`,`help`,`license`,`next`,`nofollow`,`noreferrer`,`prefetch`,`prev`,`search`,`tag`],role:`alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer`.split(` `),"aria-activedescendant":null,"aria-atomic":$m,"aria-autocomplete":[`inline`,`list`,`both`,`none`],"aria-busy":$m,"aria-checked":[`true`,`false`,`mixed`,`undefined`],"aria-controls":null,"aria-describedby":null,"aria-disabled":$m,"aria-dropeffect":null,"aria-expanded":[`true`,`false`,`undefined`],"aria-flowto":null,"aria-grabbed":[`true`,`false`,`undefined`],"aria-haspopup":$m,"aria-hidden":$m,"aria-invalid":[`true`,`false`,`grammar`,`spelling`],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":[`off`,`polite`,`assertive`],"aria-multiline":$m,"aria-multiselectable":$m,"aria-owns":null,"aria-posinset":null,"aria-pressed":[`true`,`false`,`mixed`,`undefined`],"aria-readonly":$m,"aria-relevant":null,"aria-required":$m,"aria-selected":[`true`,`false`,`undefined`],"aria-setsize":null,"aria-sort":[`ascending`,`descending`,`none`,`other`],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},nh=`beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload`.split(` `).map(e=>`on`+e);for(let e of nh)th[e]=null;var rh=class{constructor(e,t){this.tags={...eh,...e},this.globalAttrs={...th,...t},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};rh.default=new rh;function ih(e,t,n=e.length){if(!t)return``;let r=t.firstChild,i=r&&r.getChild(`TagName`);return i?e.sliceString(i.from,Math.min(i.to,n)):``}function ah(e,t=!1){for(;e;e=e.parent)if(e.name==`Element`)if(t)t=!1;else return e;return null}function oh(e,t,n){return n.tags[ih(e,ah(t))]?.children||n.allTags}function sh(e,t){let n=[];for(let r=ah(t);r&&!r.type.isTop;r=ah(r.parent)){let i=ih(e,r);if(i&&r.lastChild.name==`CloseTag`)break;i&&n.indexOf(i)<0&&(t.name==`EndTag`||t.from>=r.firstChild.to)&&n.push(i)}return n}const ch=/^[:\-\.\w\u00b7-\uffff]*$/;function lh(e,t,n,r,i){let a=/\s*>/.test(e.sliceDoc(i,i+5))?``:`>`,o=ah(n,n.name==`StartTag`||n.name==`TagName`);return{from:r,to:i,options:oh(e.doc,o,t).map(e=>({label:e,type:`type`})).concat(sh(e.doc,n).map((e,t)=>({label:`/`+e,apply:`/`+e+a,type:`type`,boost:99-t}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function uh(e,t,n,r){let i=/\s*>/.test(e.sliceDoc(r,r+5))?``:`>`;return{from:n,to:r,options:sh(e.doc,t).map((e,t)=>({label:e,apply:e+i,type:`type`,boost:99-t})),validFor:ch}}function dh(e,t,n,r){let i=[],a=0;for(let r of oh(e.doc,n,t))i.push({label:`<`+r,type:`type`});for(let t of sh(e.doc,n))i.push({label:`</`+t+`>`,type:`type`,boost:99-a++});return{from:r,to:r,options:i,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function fh(e,t,n,r,i){let a=ah(n),o=a?t.tags[ih(e.doc,a)]:null,s=o&&o.attrs?Object.keys(o.attrs):[];return{from:r,to:i,options:(o&&o.globalAttrs===!1?s:s.length?s.concat(t.globalAttrNames):t.globalAttrNames).map(e=>({label:e,type:`property`})),validFor:ch}}function ph(e,t,n,r,i){let a=n.parent?.getChild(`AttributeName`),o=[],s;if(a){let c=e.sliceDoc(a.from,a.to),l=t.globalAttrs[c];if(!l){let r=ah(n),i=r?t.tags[ih(e.doc,r)]:null;l=i?.attrs&&i.attrs[c]}if(l){let t=e.sliceDoc(r,i).toLowerCase(),n=`"`,a=`"`;/^['"]/.test(t)?(s=t[0]==`"`?/^[^"]*$/:/^[^']*$/,n=``,a=e.sliceDoc(i,i+1)==t[0]?``:t[0],t=t.slice(1),r++):s=/^[^\s<>='"]*$/;for(let e of l)o.push({label:e,apply:n+e+a,type:`constant`})}}return{from:r,to:i,options:o,validFor:s}}function mh(e,t){let{state:n,pos:r}=t,i=Y(n).resolveInner(r,-1),a=i.resolve(r);for(let e=r,t;a==i&&(t=i.childBefore(e));){let n=t.lastChild;if(!n||!n.type.isError||n.from<n.to)break;a=i=t,e=n.from}return i.name==`TagName`?i.parent&&/CloseTag$/.test(i.parent.name)?uh(n,i,i.from,r):lh(n,e,i,i.from,r):i.name==`StartTag`||i.name==`IncompleteTag`?lh(n,e,i,r,r):i.name==`StartCloseTag`||i.name==`IncompleteCloseTag`?uh(n,i,r,r):i.name==`OpenTag`||i.name==`SelfClosingTag`||i.name==`AttributeName`?fh(n,e,i,i.name==`AttributeName`?i.from:r,r):i.name==`Is`||i.name==`AttributeValue`||i.name==`UnquotedAttributeValue`?ph(n,e,i,i.name==`Is`?r:i.from,r):t.explicit&&(a.name==`Element`||a.name==`Text`||a.name==`Document`)?dh(n,e,i,r):null}function hh(e){return mh(rh.default,e)}function gh(e){let{extraTags:t,extraGlobalAttributes:n}=e,r=n||t?new rh(t,n):rh.default;return e=>mh(r,e)}const _h=Im.parser.configure({top:`SingleExpression`}),vh=[{tag:`script`,attrs:e=>e.type==`text/typescript`||e.lang==`ts`,parser:Rm.parser},{tag:`script`,attrs:e=>e.type==`text/babel`||e.type==`text/jsx`,parser:zm.parser},{tag:`script`,attrs:e=>e.type==`text/typescript-jsx`,parser:Bm.parser},{tag:`script`,attrs(e){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(e.type)},parser:_h},{tag:`script`,attrs(e){return!e.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(e.type)},parser:Im.parser},{tag:`style`,attrs(e){return(!e.lang||e.lang==`css`)&&(!e.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(e.type))},parser:um.parser}],yh=[{name:`style`,parser:um.parser.configure({top:`Styles`})}].concat(nh.map(e=>({name:e,parser:Im.parser}))),bh=jl.define({name:`html`,parser:kp.configure({props:[Yl.add({Element(e){let t=/^(\s*)(<\/)?/.exec(e.textAfter);return e.node.to<=e.pos+t[0].length?e.continue():e.lineIndent(e.node.from)+(t[2]?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit},Document(e){if(e.pos+/\s*/.exec(e.textAfter)[0].length<e.node.to)return e.continue();let t=null,n;for(let n=e.node;;){let e=n.lastChild;if(!e||e.name!=`Element`||e.to!=n.to)break;t=n=e}return t&&!((n=t.lastChild)&&(n.name==`CloseTag`||n.name==`SelfClosingTag`))?e.lineIndent(t.from)+e.unit:null}}),lu.add({Element(e){let t=e.firstChild,n=e.lastChild;return!t||t.name!=`OpenTag`?null:{from:t.to,to:n.name==`CloseTag`?n.from:e.to}}}),vu.add({"OpenTag CloseTag":e=>e.getChild(`TagName`)})]}),languageData:{commentTokens:{block:{open:`<!--`,close:`-->`}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:`-_`}}),xh=bh.configure({wrap:Np(vh,yh)});function Sh(e={}){let t=``,n;return e.matchClosingTags===!1&&(t=`noMatch`),e.selfClosingTags===!0&&(t=(t?t+` `:``)+`selfClosing`),(e.nestedLanguages&&e.nestedLanguages.length||e.nestedAttributes&&e.nestedAttributes.length)&&(n=Np((e.nestedLanguages||[]).concat(vh),(e.nestedAttributes||[]).concat(yh))),new Vl(n?bh.configure({wrap:n,dialect:t}):t?xh.configure({dialect:t}):xh,[xh.data.of({autocomplete:gh(e)}),e.autoCloseTags===!1?[]:Th,Wm().support,dm().support])}const Ch=new Set(`area base br col command embed frame hr img input keygen link meta param source track wbr menuitem`.split(` `));function wh(e,t,n){for(;;){if(t.lastChild?.name!=`CloseTag`)return!1;let r=t.parent;if(!r||ih(e,r)!=n)return!0;t=r}}const Th=H.inputHandler.of((e,t,n,r,i)=>{if(e.composing||e.state.readOnly||t!=n||r!=`>`&&r!=`/`||!xh.isActiveAt(e.state,t,-1))return!1;let a=i(),{state:o}=a,s=o.changeByRange(e=>{let t=o.doc.sliceString(e.from-1,e.to)==r,{head:n}=e,i=Y(o).resolveInner(n,-1),a;if(t&&r==`>`&&i.name==`EndTag`){let t=i.parent;if((a=ih(o.doc,t.parent,n))&&!Ch.has(a)&&!wh(o.doc,t.parent,a))return{range:e,changes:{from:n,to:n+ +(o.doc.sliceString(n,n+1)===`>`),insert:`</${a}>`}}}else if(t&&r==`/`&&i.name==`IncompleteCloseTag`){let e=i.parent;if(i.from==n-2&&e.lastChild?.name!=`CloseTag`&&(a=ih(o.doc,e,n))&&!Ch.has(a)){let e=n+ +(o.doc.sliceString(n,n+1)===`>`),t=`${a}>`;return{range:j.cursor(n+t.length,-1),changes:{from:n,to:e,insert:t}}}}return{range:e}});return s.changes.empty?!1:(e.dispatch([a,o.update(s,{userEvent:`input.complete`,scrollIntoView:!0})]),!0)}),Eh=Dl({commentTokens:{block:{open:`<!--`,close:`-->`}}}),Dh=new U,Oh=cf.configure({props:[lu.add(e=>!e.is(`Block`)||e.is(`Document`)||kh(e)!=null||Ah(e)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),Dh.add(kh),Yl.add({Document:()=>null}),El.add({Document:Eh})]});function kh(e){let t=/^(?:ATX|Setext)Heading(\d)$/.exec(e.name);return t?+t[1]:void 0}function Ah(e){return e.name==`OrderedList`||e.name==`BulletList`}function jh(e,t){let n=e;for(;;){let e=n.nextSibling,r;if(!e||(r=kh(e.type))!=null&&r<=t)break;n=e}return n.to}const Mh=cu.of((e,t,n)=>{for(let r=Y(e).resolveInner(n,-1);r&&!(r.from<t);r=r.parent){let e=r.type.prop(Dh);if(e==null)continue;let t=jh(r,e);if(t>n)return{from:n,to:t}}return null});function Nh(e){return new kl(Eh,e,[],`markdown`)}const Ph=Nh(Oh),Fh=Nh(Oh.configure([Of,jf,Af,Mf,{props:[lu.add({Table:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}]));function Ih(e,t){return n=>{if(n&&e){let t=null;if(n=/\S*/.exec(n)[0],t=typeof e==`function`?e(n):Hl.matchLanguageName(e,n,!0),t instanceof Hl)return t.support?t.support.language.parser:Pl.getSkippingParser(t.load());if(t)return t.parser}return t?t.parser:null}}var Lh=class{constructor(e,t,n,r,i,a,o){this.node=e,this.from=t,this.to=n,this.spaceBefore=r,this.spaceAfter=i,this.type=a,this.item=o}blank(e,t=!0){let n=this.spaceBefore+(this.node.name==`Blockquote`?`>`:``);if(e!=null){for(;n.length<e;)n+=` `;return n}else{for(let e=this.to-this.from-n.length-this.spaceAfter.length;e>0;e--)n+=` `;return n+(t?this.spaceAfter:``)}}marker(e,t){let n=this.node.name==`OrderedList`?String(+zh(this.item,e)[2]+t):``;return this.spaceBefore+n+this.type+this.spaceAfter}};function Rh(e,t){let n=[],r=[];for(let t=e;t;t=t.parent){if(t.name==`FencedCode`)return r;(t.name==`ListItem`||t.name==`Blockquote`)&&n.push(t)}for(let e=n.length-1;e>=0;e--){let i=n[e],a,o=t.lineAt(i.from),s=i.from-o.from;if(i.name==`Blockquote`&&(a=/^ *>( ?)/.exec(o.text.slice(s))))r.push(new Lh(i,s,s+a[0].length,``,a[1],`>`,null));else if(i.name==`ListItem`&&i.parent.name==`OrderedList`&&(a=/^( *)\d+([.)])( *)/.exec(o.text.slice(s)))){let e=a[3],t=a[0].length;e.length>=4&&(e=e.slice(0,e.length-4),t-=4),r.push(new Lh(i.parent,s,s+t,a[1],e,a[2],i))}else if(i.name==`ListItem`&&i.parent.name==`BulletList`&&(a=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(o.text.slice(s)))){let e=a[4],t=a[0].length;e.length>4&&(e=e.slice(0,e.length-4),t-=4);let n=a[2];a[3]&&(n+=a[3].replace(/[xX]/,` `)),r.push(new Lh(i.parent,s,s+t,a[1],e,n,i))}}return r}function zh(e,t){return/^(\s*)(\d+)(?=[.)])/.exec(t.sliceString(e.from,e.from+10))}function Bh(e,t,n,r=0){for(let i=-1,a=e;;){if(a.name==`ListItem`){let e=zh(a,t),o=+e[2];if(i>=0){if(o!=i+1)return;n.push({from:a.from+e[1].length,to:a.from+e[0].length,insert:String(i+2+r)})}i=o}let e=a.nextSibling;if(!e)break;a=e}}function Vh(e,t){let n=/^[ \t]*/.exec(e)[0].length;if(!n||t.facet(Wl)!=` `)return e;let r=xn(e,4,n),i=``;for(let e=r;e>0;)e>=4?(i+=` `,e-=4):(i+=` `,e--);return i+e.slice(n)}const Hh=((e={})=>({state:t,dispatch:n})=>{let r=Y(t),{doc:i}=t,a=null,o=t.changeByRange(n=>{if(!n.empty||!Fh.isActiveAt(t,n.from,-1)&&!Fh.isActiveAt(t,n.from,1))return a={range:n};let o=n.from,s=i.lineAt(o),c=Rh(r.resolveInner(o,-1),i);for(;c.length&&c[c.length-1].from>o-s.from;)c.pop();if(!c.length)return a={range:n};let l=c[c.length-1];if(l.to-l.spaceAfter.length>o-s.from)return a={range:n};let u=o>=l.to-l.spaceAfter.length&&!/\S/.test(s.text.slice(l.to));if(l.item&&u){if(l.item.from<s.from&&!/^[\s>]*$/.test(s.text.slice(0,l.to)))return a={range:n};let r=l.node.firstChild,u=l.node.getChild(`ListItem`,`ListItem`);if(r.to>=o||u&&u.to<o||s.from>0&&!/[^\s>]/.test(i.lineAt(s.from-1).text)||e.nonTightLists===!1){let e=c.length>1?c[c.length-2]:null,t,n=``;e&&e.item?(t=s.from+e.from,n=e.marker(i,1)):t=s.from+(e?e.to:0);let r=[{from:t,to:o,insert:n}];return l.node.name==`OrderedList`&&Bh(l.item,i,r,-2),e&&e.node.name==`OrderedList`&&Bh(e.item,i,r),{range:j.cursor(t+n.length),changes:r}}else{let e=Gh(c,t,s);return{range:j.cursor(o+e.length+1),changes:{from:s.from,insert:e+t.lineBreak}}}}if(l.node.name==`Blockquote`&&u&&s.from){let e=i.lineAt(s.from-1),r=/>\s*$/.exec(e.text);if(r&&r.index==l.from){let i=t.changes([{from:e.from+r.index,to:e.to},{from:s.from+l.from,to:s.to}]);return{range:n.map(i),changes:i}}}let d=[];l.node.name==`OrderedList`&&Bh(l.item,i,d);let f=l.item&&l.item.from<s.from,p=``;if(!f||/^[\s\d.)\-+*>]*/.exec(s.text)[0].length>=l.to)for(let e=0,t=c.length-1;e<=t;e++)p+=e==t&&!f?c[e].marker(i,1):c[e].blank(e<t?xn(s.text,4,c[e+1].from)-p.length:null);let m=o;for(;m>s.from&&/\s/.test(s.text.charAt(m-s.from-1));)m--;return p=Vh(p,t),Wh(l.node,t.doc)&&(p=Gh(c,t,s)+t.lineBreak+p),d.push({from:m,to:o,insert:t.lineBreak+p}),{range:j.cursor(m+p.length+1),changes:d}});return a?!1:(n(t.update(o,{scrollIntoView:!0,userEvent:`input`})),!0)})();function Uh(e){return e.name==`QuoteMark`||e.name==`ListMark`}function Wh(e,t){if(e.name!=`OrderedList`&&e.name!=`BulletList`)return!1;let n=e.firstChild,r=e.getChild(`ListItem`,`ListItem`);if(!r)return!1;let i=t.lineAt(n.to),a=t.lineAt(r.from),o=/^[\s>]*$/.test(i.text);return i.number+ +!o<a.number}function Gh(e,t,n){let r=``;for(let t=0,i=e.length-2;t<=i;t++)r+=e[t].blank(t<i?xn(n.text,4,e[t+1].from)-r.length:null,t<i);return Vh(r,t)}function Kh(e,t){let n=e.resolveInner(t,-1),r=t;Uh(n)&&(r=n.from,n=n.parent);for(let e;e=n.childBefore(r);)if(Uh(e))r=e.from;else if(e.name==`OrderedList`||e.name==`BulletList`)n=e.lastChild,r=n.to;else break;return n}const qh=[{key:`Enter`,run:Hh},{key:`Backspace`,run:({state:e,dispatch:t})=>{let n=Y(e),r=null,i=e.changeByRange(t=>{let i=t.from,{doc:a}=e;if(t.empty&&Fh.isActiveAt(e,t.from)){let t=a.lineAt(i),r=Rh(Kh(n,i),a);if(r.length){let n=r[r.length-1],a=n.to-n.spaceAfter.length+ +!!n.spaceAfter;if(i-t.from>a&&!/\S/.test(t.text.slice(a,i-t.from)))return{range:j.cursor(t.from+a),changes:{from:t.from+a,to:i}};if(i-t.from==a&&(n.item&&t.from<=n.item.from||/^[\s>]*$/.test(t.text.slice(0,n.to)))){let r=t.from+n.from;if(n.item&&n.node.from<n.item.from&&/\S/.test(t.text.slice(n.from,n.to))){let i=n.blank(xn(t.text,4,n.to)-xn(t.text,4,n.from));return r==t.from&&(i=Vh(i,e)),{range:j.cursor(r+i.length),changes:{from:r,to:t.from+n.to,insert:i}}}if(r<i)return{range:j.cursor(r),changes:{from:r,to:i}}}}}return r={range:t}});return r?!1:(t(e.update(i,{scrollIntoView:!0,userEvent:`delete`})),!0)}}],Jh=Sh({matchClosingTags:!1});function Yh(e={}){let{codeLanguages:t,defaultCodeLanguage:n,addKeymap:r=!0,base:{parser:i}=Ph,completeHTMLTags:a=!0,pasteURLAsLink:o=!0,htmlTagLanguage:s=Jh}=e;if(!(i instanceof Fd))throw RangeError("Base parser provided to `markdown` should be a Markdown parser");let c=e.extensions?[e.extensions]:[],l=[s.support,Mh],u;o&&l.push(eg),n instanceof Vl?(l.push(n.support),u=n.language):n&&(u=n);let d=t||u?Ih(t,u):void 0;c.push(uf({codeParser:d,htmlParser:s.language.parser})),r&&l.push(Ct.high(Fs.of(qh)));let f=Nh(i.configure(c));return a&&l.push(f.data.of({autocomplete:Xh})),new Vl(f,l)}function Xh(e){let{state:t,pos:n}=e,r=/<[:\-\.\w\u00b7-\uffff]*$/.exec(t.sliceDoc(n-25,n));if(!r)return null;let i=Y(t).resolveInner(n,-1);for(;i&&!i.type.isTop;){if(i.name==`CodeBlock`||i.name==`FencedCode`||i.name==`ProcessingInstructionBlock`||i.name==`CommentBlock`||i.name==`Link`||i.name==`Image`)return null;i=i.parent}return{from:n-r[0].length,to:n,options:Qh(),validFor:/^<[:\-\.\w\u00b7-\uffff]*$/}}let Zh=null;function Qh(){if(Zh)return Zh;let e=hh(new ju(P.create({extensions:Jh}),0,!0));return Zh=e?e.options:[]}const $h=/code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i,eg=H.domEventHandlers({paste:(e,t)=>{let{main:n}=t.state.selection;if(n.empty)return!1;let r=e.clipboardData?.getData(`text/plain`);if(!r||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(r)||(/^www\./.test(r)&&(r=`https://`+r),!Fh.isActiveAt(t.state,n.from,1)))return!1;let i=Y(t.state),a=!1;return i.iterate({from:n.from,to:n.to,enter:e=>{(e.from>n.from||$h.test(e.name))&&(a=!0)},leave:e=>{e.to<n.to&&(a=!0)}}),a?!1:(t.dispatch({changes:[{from:n.from,insert:`[`},{from:n.to,insert:`](${r})`}],userEvent:`input.paste`,scrollIntoView:!0}),!0)}}),tg=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=og(e.state,n.from);return r.line?rg(e):r.block?ag(e):!1};function ng(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let i=e(t,n);return i?(r(n.update(i)),!0):!1}}const rg=ng(ug,0),ig=ng(lg,0),ag=ng((e,t)=>lg(e,t,cg(t)),0);function og(e,t){let n=e.languageDataAt(`commentTokens`,t,1);return n.length?n[0]:{}}function sg(e,{open:t,close:n},r,i){let a=e.sliceDoc(r-50,r),o=e.sliceDoc(i,i+50),s=/\s*$/.exec(a)[0].length,c=/^\s*/.exec(o)[0].length,l=a.length-s;if(a.slice(l-t.length,l)==t&&o.slice(c,c+n.length)==n)return{open:{pos:r-s,margin:s&&1},close:{pos:i+c,margin:c&&1}};let u,d;i-r<=100?u=d=e.sliceDoc(r,i):(u=e.sliceDoc(r,r+50),d=e.sliceDoc(i-50,i));let f=/^\s*/.exec(u)[0].length,p=/\s*$/.exec(d)[0].length,m=d.length-p-n.length;return u.slice(f,f+t.length)==t&&d.slice(m,m+n.length)==n?{open:{pos:r+f+t.length,margin:+!!/\s/.test(u.charAt(f+t.length))},close:{pos:i-p-n.length,margin:+!!/\s/.test(d.charAt(m-1))}}:null}function cg(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),i=n.to<=r.to?r:e.doc.lineAt(n.to);i.from>r.from&&i.from==n.to&&(i=n.to==r.to+1?r:e.doc.lineAt(n.to-1));let a=t.length-1;a>=0&&t[a].to>r.from?t[a].to=i.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return t}function lg(e,t,n=t.selection.ranges){let r=n.map(e=>og(t,e.from).block);if(!r.every(e=>e))return null;let i=n.map((e,n)=>sg(t,r[n],e.from,e.to));if(e!=2&&!i.every(e=>e))return{changes:t.changes(n.map((e,t)=>i[t]?[]:[{from:e.from,insert:r[t].open+` `},{from:e.to,insert:` `+r[t].close}]))};if(e!=1&&i.some(e=>e)){let e=[];for(let t=0,n;t<i.length;t++)if(n=i[t]){let i=r[t],{open:a,close:o}=n;e.push({from:a.pos-i.open.length,to:a.pos+a.margin},{from:o.pos-o.margin,to:o.pos+i.close.length})}return{changes:e}}return null}function ug(e,t,n=t.selection.ranges){let r=[],i=-1;ranges:for(let{from:e,to:a}of n){let n=r.length,o=1e9,s;for(let n=e;n<=a;){let c=t.doc.lineAt(n);if(s==null&&(s=og(t,c.from).line,!s))continue ranges;if(c.from>i&&(e==a||a>c.from)){i=c.from;let e=/^\s*/.exec(c.text)[0].length,t=e==c.length,n=c.text.slice(e,e+s.length)==s?e:-1;e<c.text.length&&e<o&&(o=e),r.push({line:c,comment:n,token:s,indent:e,empty:t,single:!1})}n=c.to+1}if(o<1e9)for(let e=n;e<r.length;e++)r[e].indent<r[e].line.text.length&&(r[e].indent=o);r.length==n+1&&(r[n].single=!0)}if(e!=2&&r.some(e=>e.comment<0&&(!e.empty||e.single))){let e=[];for(let{line:t,token:n,indent:i,empty:a,single:o}of r)(o||!a)&&e.push({from:t.from+i,insert:n+` `});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}else if(e!=1&&r.some(e=>e.comment>=0)){let e=[];for(let{line:t,comment:n,token:i}of r)if(n>=0){let r=t.from+n,a=r+i.length;t.text[a-t.from]==` `&&a++,e.push({from:r,to:a})}return{changes:e}}return null}const dg=Rt.define(),fg=Rt.define(),pg=M.define(),mg=M.define({combine(e){return tn(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}}),hg=bt.define({create(){return Ng.empty},update(e,t){let n=t.state.facet(mg),r=t.annotation(dg);if(r){let i=Sg.fromTransaction(t,r.selection),a=r.side,o=a==0?e.undone:e.done;return o=i?Cg(o,o.length,n.minDepth,i):Og(o,t.startState.selection),new Ng(a==0?r.rest:o,a==0?o:r.rest)}let i=t.annotation(fg);if((i==`full`||i==`before`)&&(e=e.isolate()),t.annotation(Vt.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let a=Sg.fromTransaction(t),o=t.annotation(Vt.time),s=t.annotation(Vt.userEvent);return a?e=e.addChanges(a,o,s,n,t):t.selection&&(e=e.addSelection(t.startState.selection,o,s,n.newGroupDelay)),(i==`full`||i==`after`)&&(e=e.isolate()),e},toJSON(e){return{done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}},fromJSON(e){return new Ng(e.done.map(Sg.fromJSON),e.undone.map(Sg.fromJSON))}});function gg(e={}){return[hg,mg.of(e),H.domEventHandlers({beforeinput(e,t){let n=e.inputType==`historyUndo`?vg:e.inputType==`historyRedo`?yg:null;return n?(e.preventDefault(),n(t)):!1}})]}function _g(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let i=n.field(hg,!1);if(!i)return!1;let a=i.pop(e,n,t);return a?(r(a),!0):!1}}const vg=_g(0,!1),yg=_g(1,!1),bg=_g(0,!0),xg=_g(1,!0);var Sg=class e{constructor(e,t,n,r,i){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=i}setSelAfter(t){return new e(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){return{changes:this.changes?.toJSON(),mapped:this.mapped?.toJSON(),startSelection:this.startSelection?.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(t){return new e(t.changes&&it.fromJSON(t.changes),[],t.mapped&&rt.fromJSON(t.mapped),t.startSelection&&j.fromJSON(t.startSelection),t.selectionsAfter.map(j.fromJSON))}static fromTransaction(t,n){let r=Dg;for(let e of t.startState.facet(pg)){let n=e(t);n.length&&(r=r.concat(n))}return!r.length&&t.changes.empty?null:new e(t.changes.invert(t.startState.doc),r,void 0,n||t.startState.selection,Dg)}static selection(t){return new e(void 0,Dg,void 0,void 0,t)}};function Cg(e,t,n,r){let i=t+1>n+20?t-n-1:0,a=e.slice(i,t);return a.push(r),a}function wg(e,t){let n=[],r=!1;return e.iterChangedRanges((e,t)=>n.push(e,t)),t.iterChangedRanges((e,t,i,a)=>{for(let e=0;e<n.length;){let t=n[e++],o=n[e++];a>=t&&i<=o&&(r=!0)}}),r}function Tg(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((e,n)=>e.empty!=t.ranges[n].empty).length===0}function Eg(e,t){return e.length?t.length?e.concat(t):e:t}const Dg=[];function Og(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-200));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),Cg(e,e.length-1,1e9,n.setSelAfter(r)))}else return[Sg.selection([t])]}function kg(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function Ag(e,t){if(!e.length)return e;let n=e.length,r=Dg;for(;n;){let i=jg(e[n-1],t,r);if(i.changes&&!i.changes.empty||i.effects.length){let t=e.slice(0,n);return t[n-1]=i,t}else t=i.mapped,n--,r=i.selectionsAfter}return r.length?[Sg.selection(r)]:Dg}function jg(e,t,n){let r=Eg(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):Dg,n);if(!e.changes)return Sg.selection(r);let i=e.changes.map(t),a=t.mapDesc(e.changes,!0),o=e.mapped?e.mapped.composeDesc(a):a;return new Sg(i,N.mapEffects(e.effects,t),o,e.startSelection.map(a),r)}const Mg=/^(input\.type|delete)($|\.)/;var Ng=class e{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new e(this.done,this.undone):this}addChanges(t,n,r,i,a){let o=this.done,s=o[o.length-1];return o=s&&s.changes&&!s.changes.empty&&t.changes&&(!r||Mg.test(r))&&(!s.selectionsAfter.length&&n-this.prevTime<i.newGroupDelay&&i.joinToEvent(a,wg(s.changes,t.changes))||r==`input.type.compose`)?Cg(o,o.length-1,i.minDepth,new Sg(t.changes.compose(s.changes),Eg(N.mapEffects(t.effects,s.changes),s.effects),s.mapped,s.startSelection,Dg)):Cg(o,o.length,i.minDepth,t),new e(o,Dg,n,r)}addSelection(t,n,r,i){let a=this.done.length?this.done[this.done.length-1].selectionsAfter:Dg;return a.length>0&&n-this.prevTime<i&&r==this.prevUserEvent&&r&&/^select($|\.)/.test(r)&&Tg(a[a.length-1],t)?this:new e(Og(this.done,t),this.undone,n,r)}addMapping(t){return new e(Ag(this.done,t),Ag(this.undone,t),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=e==0?this.done:this.undone;if(r.length==0)return null;let i=r[r.length-1],a=i.selectionsAfter[0]||(i.startSelection?i.startSelection.map(i.changes.invertedDesc,1):t.selection);if(n&&i.selectionsAfter.length)return t.update({selection:i.selectionsAfter[i.selectionsAfter.length-1],annotations:dg.of({side:e,rest:kg(r),selection:a}),userEvent:e==0?`select.undo`:`select.redo`,scrollIntoView:!0});if(i.changes){let n=r.length==1?Dg:r.slice(0,r.length-1);return i.mapped&&(n=Ag(n,i.mapped)),t.update({changes:i.changes,selection:i.startSelection,effects:i.effects,annotations:dg.of({side:e,rest:n,selection:a}),filter:!1,userEvent:e==0?`undo`:`redo`,scrollIntoView:!0})}else return null}};Ng.empty=new Ng(Dg,Dg);const Pg=[{key:`Mod-z`,run:vg,preventDefault:!0},{key:`Mod-y`,mac:`Mod-Shift-z`,run:yg,preventDefault:!0},{linux:`Ctrl-Shift-z`,run:yg,preventDefault:!0},{key:`Mod-u`,run:bg,preventDefault:!0},{key:`Alt-u`,mac:`Mod-Shift-u`,run:xg,preventDefault:!0}];function Fg(e,t){return j.create(e.ranges.map(t),e.mainIndex)}function Ig(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:`select`})}function Lg({state:e,dispatch:t},n){let r=Fg(e.selection,n);return r.eq(e.selection,!0)?!1:(t(Ig(e,r)),!0)}function Rg(e,t){return j.cursor(t?e.to:e.from)}function zg(e,t){return Lg(e,n=>n.empty?e.moveByChar(n,t):Rg(n,t))}function Bg(e){return e.textDirectionAt(e.state.selection.main.head)==R.LTR}const Vg=e=>zg(e,!Bg(e)),Hg=e=>zg(e,Bg(e));function Ug(e,t){return Lg(e,n=>n.empty?e.moveByGroup(n,t):Rg(n,t))}const Wg=e=>Ug(e,!Bg(e)),Gg=e=>Ug(e,Bg(e));typeof Intl<`u`&&Intl.Segmenter;function Kg(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function qg(e,t,n){let r=Y(e).resolveInner(t.head),i=n?U.closedBy:U.openedBy;for(let a=t.head;;){let t=n?r.childAfter(a):r.childBefore(a);if(!t)break;Kg(e,t,i)?r=t:a=n?t.to:t.from}let a=r.type.prop(i),o,s;return s=a&&(o=n?xu(e,r.from,1):xu(e,r.to,-1))&&o.matched?n?o.end.to:o.end.from:n?r.to:r.from,j.cursor(s,n?-1:1)}const Jg=e=>Lg(e,t=>qg(e.state,t,!Bg(e))),Yg=e=>Lg(e,t=>qg(e.state,t,Bg(e)));function Xg(e,t){return Lg(e,n=>{if(!n.empty)return Rg(n,t);let r=e.moveVertically(n,t);return r.head==n.head?e.moveToLineBoundary(n,t):r})}const Zg=e=>Xg(e,!1),Qg=e=>Xg(e,!0);function $g(e){let t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,n=0,r=0,i;if(t){for(let t of e.state.facet(H.scrollMargins)){let i=t(e);i?.top&&(n=Math.max(i?.top,n)),i?.bottom&&(r=Math.max(i?.bottom,r))}i=e.scrollDOM.clientHeight-n-r}else i=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:n,marginBottom:r,selfScroll:t,height:Math.max(e.defaultLineHeight,i-5)}}function e_(e,t){let n=$g(e),{state:r}=e,i=Fg(r.selection,r=>r.empty?e.moveVertically(r,t,n.height):Rg(r,t));if(i.eq(r.selection))return!1;let a;if(n.selfScroll){let t=e.coordsAtPos(r.selection.main.head),o=e.scrollDOM.getBoundingClientRect(),s=o.top+n.marginTop,c=o.bottom-n.marginBottom;t&&t.top>s&&t.bottom<c&&(a=H.scrollIntoView(i.main.head,{y:`start`,yMargin:t.top-s}))}return e.dispatch(Ig(r,i),{effects:a}),!0}const t_=e=>e_(e,!1),n_=e=>e_(e,!0);function r_(e,t,n){let r=e.lineBlockAt(t.head),i=e.moveToLineBoundary(t,n);if(i.head==t.head&&i.head!=(n?r.to:r.from)&&(i=e.moveToLineBoundary(t,n,!1)),!n&&i.head==r.from&&r.length){let n=/^\s*/.exec(e.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;n&&t.head!=r.from+n&&(i=j.cursor(r.from+n))}return i}const i_=e=>Lg(e,t=>r_(e,t,!0)),a_=e=>Lg(e,t=>r_(e,t,!1)),o_=e=>Lg(e,t=>r_(e,t,!Bg(e))),s_=e=>Lg(e,t=>r_(e,t,Bg(e))),c_=e=>Lg(e,t=>j.cursor(e.lineBlockAt(t.head).from,1)),l_=e=>Lg(e,t=>j.cursor(e.lineBlockAt(t.head).to,-1));function u_(e,t,n){let r=!1,i=Fg(e.selection,t=>{let i=xu(e,t.head,-1)||xu(e,t.head,1)||t.head>0&&xu(e,t.head-1,1)||t.head<e.doc.length&&xu(e,t.head+1,-1);if(!i||!i.end)return t;r=!0;let a=i.start.from==t.head?i.end.to:i.end.from;return n?j.range(t.anchor,a):j.cursor(a)});return r?(t(Ig(e,i)),!0):!1}const d_=({state:e,dispatch:t})=>u_(e,t,!1);function f_(e,t,n){let r=Fg(e.state.selection,e=>{e.undirectional&&e.head>=e.anchor!=t&&(e=j.range(e.head,e.anchor));let r=n(e);return j.range(e.anchor,r.head,r.goalColumn,r.bidiLevel||void 0,r.assoc)});return r.eq(e.state.selection)?!1:(e.dispatch(Ig(e.state,r)),!0)}function p_(e,t){return f_(e,t,n=>e.moveByChar(n,t))}const m_=e=>p_(e,!Bg(e)),h_=e=>p_(e,Bg(e));function g_(e,t){return f_(e,t,n=>e.moveByGroup(n,t))}const __=e=>g_(e,!Bg(e)),v_=e=>g_(e,Bg(e)),y_=e=>{let t=!Bg(e);return f_(e,t,n=>qg(e.state,n,t))},b_=e=>{let t=Bg(e);return f_(e,t,n=>qg(e.state,n,t))};function x_(e,t){return f_(e,t,n=>e.moveVertically(n,t))}const S_=e=>x_(e,!1),C_=e=>x_(e,!0);function w_(e,t){return f_(e,t,n=>e.moveVertically(n,t,$g(e).height))}const T_=e=>w_(e,!1),E_=e=>w_(e,!0),D_=e=>f_(e,!0,t=>r_(e,t,!0)),O_=e=>f_(e,!1,t=>r_(e,t,!1)),k_=e=>{let t=!Bg(e);return f_(e,t,n=>r_(e,n,t))},A_=e=>{let t=Bg(e);return f_(e,t,n=>r_(e,n,t))},j_=e=>f_(e,!1,t=>j.cursor(e.lineBlockAt(t.head).from)),M_=e=>f_(e,!0,t=>j.cursor(e.lineBlockAt(t.head).to)),N_=({state:e,dispatch:t})=>(t(Ig(e,{anchor:0})),!0),P_=({state:e,dispatch:t})=>(t(Ig(e,{anchor:e.doc.length})),!0),F_=({state:e,dispatch:t})=>(t(Ig(e,{anchor:e.selection.main.anchor,head:0})),!0),I_=({state:e,dispatch:t})=>(t(Ig(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),L_=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:`select`})),!0),R_=({state:e,dispatch:t})=>{let n=rv(e).map(({from:t,to:n})=>j.undirectionalRange(t,Math.min(n+1,e.doc.length)));return t(e.update({selection:j.create(n),userEvent:`select`})),!0},z_=({state:e,dispatch:t})=>{let n=Fg(e.selection,t=>{let n=Y(e),r=n.resolveStack(t.from,1);if(t.empty){let e=n.resolveStack(t.from,-1);e.node.from>=r.node.from&&e.node.to<=r.node.to&&(r=e)}for(let e=r;e;e=e.next){let{node:n}=e;if((n.from<t.from&&n.to>=t.to||n.to>t.to&&n.from<=t.from)&&e.next)return j.undirectionalRange(n.from,n.to)}return t});return n.eq(e.selection)?!1:(t(Ig(e,n)),!0)};function B_(e,t){let{state:n}=e,r=n.selection,i=n.selection.ranges.slice();for(let r of n.selection.ranges){let a=n.doc.lineAt(r.head);if(t?a.to<e.state.doc.length:a.from>0)for(let n=r;;){let r=e.moveVertically(n,t);if(r.head<a.from||r.head>a.to){i.some(e=>e.head==r.head)||i.push(r);break}else if(r.head==n.head)break;else n=r}}return i.length==r.ranges.length?!1:(e.dispatch(Ig(n,j.create(i,i.length-1))),!0)}const V_=e=>B_(e,!1),H_=e=>B_(e,!0),U_=({state:e,dispatch:t})=>{let n=e.selection,r=null;return n.ranges.length>1?r=j.create([n.main]):n.main.empty||(r=j.create([j.cursor(n.main.head)])),r?(t(Ig(e,r)),!0):!1};function W_(e,t){if(e.state.readOnly)return!1;let n=`delete.selection`,{state:r}=e,i=r.changeByRange(r=>{let{from:i,to:a}=r;if(i==a){let o=t(r);o<i?(n=`delete.backward`,o=G_(e,o,!1)):o>i&&(n=`delete.forward`,o=G_(e,o,!0)),i=Math.min(i,o),a=Math.max(a,o)}else i=G_(e,i,!1),a=G_(e,a,!0);return i==a?{range:r}:{changes:{from:i,to:a},range:j.cursor(i,i<r.head?-1:1)}});return i.changes.empty?!1:(e.dispatch(r.update(i,{scrollIntoView:!0,userEvent:n,effects:n==`delete.selection`?H.announce.of(r.phrase(`Selection deleted`)):void 0})),!0)}function G_(e,t,n){if(e instanceof H)for(let r of e.state.facet(H.atomicRanges).map(t=>t(e)))r.between(t,t,(e,r)=>{e<t&&r>t&&(t=n?r:e)});return t}const K_=(e,t,n)=>W_(e,r=>{let i=r.from,{state:a}=e,o=a.doc.lineAt(i),s,c;if(n&&!t&&i>o.from&&i<o.from+200&&!/[^ \t]/.test(s=o.text.slice(0,i-o.from))){if(s[s.length-1]==` `)return i-1;let e=xn(s,a.tabSize)%Gl(a)||Gl(a);for(let t=0;t<e&&s[s.length-1-t]==` `;t++)i--;c=i}else c=Xe(o.text,i-o.from,t,t)+o.from,c==i&&o.number!=(t?a.doc.lines:1)?c+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(o.text.slice(c-o.from,i-o.from))&&(c=Xe(o.text,c-o.from,!1,!1)+o.from);return c}),q_=e=>K_(e,!1,!0),J_=e=>K_(e,!0,!1),Y_=(e,t)=>W_(e,n=>{let r=n.head,{state:i}=e,a=i.doc.lineAt(r),o=i.charCategorizer(r);for(let e=null;;){if(r==(t?a.to:a.from)){r==n.head&&a.number!=(t?i.doc.lines:1)&&(r+=t?1:-1);break}let s=Xe(a.text,r-a.from,t)+a.from,c=a.text.slice(Math.min(r,s)-a.from,Math.max(r,s)-a.from),l=o(c);if(e!=null&&l!=e)break;(c!=` `||r!=n.head)&&(e=l),r=s}return r}),X_=e=>Y_(e,!1),Z_=e=>Y_(e,!0),Q_=e=>W_(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),$_=e=>W_(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),ev=e=>W_(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),tv=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:A.of([``,``])},range:j.cursor(e.from)}));return t(e.update(n,{scrollIntoView:!0,userEvent:`input`})),!0},nv=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(t=>{if(!t.empty||t.from==0||t.from==e.doc.length)return{range:t};let n=t.from,r=e.doc.lineAt(n),i=n==r.from?n-1:Xe(r.text,n-r.from,!1)+r.from,a=n==r.to?n+1:Xe(r.text,n-r.from,!0)+r.from;return{changes:{from:i,to:a,insert:e.doc.slice(n,a).append(e.doc.slice(i,n))},range:j.cursor(a)}});return n.changes.empty?!1:(t(e.update(n,{scrollIntoView:!0,userEvent:`move.character`})),!0)};function rv(e){let t=[],n=-1;for(let r of e.selection.ranges){let i=e.doc.lineAt(r.from),a=e.doc.lineAt(r.to);if(!r.empty&&r.to==a.from&&(a=e.doc.lineAt(r.to-1)),n>=i.number){let e=t[t.length-1];e.to=a.to,e.ranges.push(r)}else t.push({from:i.from,to:a.to,ranges:[r]});n=a.number+1}return t}function iv(e,t,n){if(e.readOnly)return!1;let r=[],i=[];for(let t of rv(e)){if(n?t.to==e.doc.length:t.from==0)continue;let a=e.doc.lineAt(n?t.to+1:t.from-1),o=a.length+1;if(n){r.push({from:t.to,to:a.to},{from:t.from,insert:a.text+e.lineBreak});for(let n of t.ranges)i.push(j.range(Math.min(e.doc.length,n.anchor+o),Math.min(e.doc.length,n.head+o)))}else{r.push({from:a.from,to:t.from},{from:t.to,insert:e.lineBreak+a.text});for(let e of t.ranges)i.push(j.range(e.anchor-o,e.head-o))}}return r.length?(t(e.update({changes:r,scrollIntoView:!0,selection:j.create(i,e.selection.mainIndex),userEvent:`move.line`})),!0):!1}const av=({state:e,dispatch:t})=>iv(e,t,!1),ov=({state:e,dispatch:t})=>iv(e,t,!0);function sv(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of rv(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});let i=e.changes(r);return t(e.update({changes:i,selection:e.selection.map(i,n?1:-1),scrollIntoView:!0,userEvent:`input.copyline`})),!0}const cv=({state:e,dispatch:t})=>sv(e,t,!1),lv=({state:e,dispatch:t})=>sv(e,t,!0),uv=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(rv(t).map(({from:e,to:n})=>(e>0?e--:n<t.doc.length&&n++,{from:e,to:n}))),r=Fg(t.selection,t=>{let n;if(e.lineWrapping){let r=e.lineBlockAt(t.head),i=e.coordsAtPos(t.head,t.assoc||1);i&&(n=r.bottom+e.documentTop-i.bottom+e.defaultLineHeight/2)}return e.moveVertically(t,!0,n)}).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:`delete.line`}),!0};function dv(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n=Y(e).resolveInner(t),r=n.childBefore(t),i=n.childAfter(t),a;return r&&i&&r.to<=t&&i.from>=t&&(a=r.type.prop(U.closedBy))&&a.indexOf(i.name)>-1&&e.doc.lineAt(r.to).from==e.doc.lineAt(i.from).from&&!/\S/.test(e.sliceDoc(r.to,i.from))?{from:r.to,to:i.from}:null}const fv=mv(!1),pv=mv(!0);function mv(e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let r=t.changeByRange(n=>{let{from:r,to:i}=n,a=t.doc.lineAt(r),o=!e&&r==i&&dv(t,r);e&&(r=i=(i<=a.to?a:t.doc.lineAt(i)).to);let s=new Jl(t,{simulateBreak:r,simulateDoubleBreak:!!o}),c=ql(s,r);for(c??=xn(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize);i<a.to&&/\s/.test(a.text[i-a.from]);)i++;o?{from:r,to:i}=o:r>a.from&&r<a.from+100&&!/\S/.test(a.text.slice(0,r))&&(r=a.from);let l=[``,Kl(t,c)];return o&&l.push(Kl(t,s.lineIndent(a.from,-1))),{changes:{from:r,to:i,insert:A.of(l)},range:j.cursor(r+1+l[1].length)}});return n(t.update(r,{scrollIntoView:!0,userEvent:`input`})),!0}}function hv(e,t){let n=-1;return e.changeByRange(r=>{let i=[];for(let a=r.from;a<=r.to;){let o=e.doc.lineAt(a);o.number>n&&(r.empty||r.to>o.from)&&(t(o,i,r),n=o.number),a=o.to+1}let a=e.changes(i);return{changes:i,range:j.range(a.mapPos(r.anchor,1),a.mapPos(r.head,1))}})}const gv=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new Jl(e,{overrideIndentation:e=>n[e]??-1}),i=hv(e,(t,i,a)=>{let o=ql(r,t.from);if(o==null)return;/\S/.test(t.text)||(o=0);let s=/^\s*/.exec(t.text)[0],c=Kl(e,o);(s!=c||a.from<t.from+s.length)&&(n[t.from]=o,i.push({from:t.from,to:t.from+s.length,insert:c}))});return i.changes.empty||t(e.update(i,{userEvent:`indent`})),!0},_v=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(hv(e,(t,n)=>{n.push({from:t.from,insert:e.facet(Wl)})}),{userEvent:`input.indent`})),!0),vv=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(hv(e,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let i=xn(r,e.tabSize),a=0,o=Kl(e,Math.max(0,i-Gl(e)));for(;a<r.length&&a<o.length&&r.charCodeAt(a)==o.charCodeAt(a);)a++;n.push({from:t.from+a,to:t.from+r.length,insert:o.slice(a)})}),{userEvent:`delete.dedent`})),!0),yv=e=>(e.setTabFocusMode(),!0),bv=[{key:`Ctrl-b`,run:Vg,shift:m_,preventDefault:!0},{key:`Ctrl-f`,run:Hg,shift:h_},{key:`Ctrl-p`,run:Zg,shift:S_},{key:`Ctrl-n`,run:Qg,shift:C_},{key:`Ctrl-a`,run:c_,shift:j_},{key:`Ctrl-e`,run:l_,shift:M_},{key:`Ctrl-d`,run:J_},{key:`Ctrl-h`,run:q_},{key:`Ctrl-k`,run:Q_},{key:`Ctrl-Alt-h`,run:X_},{key:`Ctrl-o`,run:tv},{key:`Ctrl-t`,run:nv},{key:`Ctrl-v`,run:n_}],xv=[{key:`ArrowLeft`,run:Vg,shift:m_,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:Wg,shift:__,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:o_,shift:k_,preventDefault:!0},{key:`ArrowRight`,run:Hg,shift:h_,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:Gg,shift:v_,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:s_,shift:A_,preventDefault:!0},{key:`ArrowUp`,run:Zg,shift:S_,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:N_,shift:F_},{mac:`Ctrl-ArrowUp`,run:t_,shift:T_},{key:`ArrowDown`,run:Qg,shift:C_,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:P_,shift:I_},{mac:`Ctrl-ArrowDown`,run:n_,shift:E_},{key:`PageUp`,run:t_,shift:T_},{key:`PageDown`,run:n_,shift:E_},{key:`Home`,run:a_,shift:O_,preventDefault:!0},{key:`Mod-Home`,run:N_,shift:F_},{key:`End`,run:i_,shift:D_,preventDefault:!0},{key:`Mod-End`,run:P_,shift:I_},{key:`Enter`,run:fv,shift:fv},{key:`Mod-a`,run:L_},{key:`Backspace`,run:q_,shift:q_,preventDefault:!0},{key:`Delete`,run:J_,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:X_,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:Z_,preventDefault:!0},{mac:`Mod-Backspace`,run:$_,preventDefault:!0},{mac:`Mod-Delete`,run:ev,preventDefault:!0}].concat(bv.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),Sv=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:Jg,shift:y_},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:Yg,shift:b_},{key:`Alt-ArrowUp`,run:av},{key:`Shift-Alt-ArrowUp`,run:cv},{key:`Alt-ArrowDown`,run:ov},{key:`Shift-Alt-ArrowDown`,run:lv},{key:`Mod-Alt-ArrowUp`,run:V_},{key:`Mod-Alt-ArrowDown`,run:H_},{key:`Escape`,run:U_},{key:`Mod-Enter`,run:pv},{key:`Alt-l`,mac:`Ctrl-l`,run:R_},{key:`Mod-i`,run:z_,preventDefault:!0},{key:`Mod-[`,run:vv},{key:`Mod-]`,run:_v},{key:`Mod-Alt-\\`,run:gv},{key:`Shift-Mod-k`,run:uv},{key:`Shift-Mod-\\`,run:d_},{key:`Mod-/`,run:tg},{key:`Alt-A`,mac:`Ctrl-A`,run:ig},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:yv}].concat(xv),Cv=`var(--dsw-alias-brand-primary, #3e63dd)`,wv=`color-mix(in srgb, var(--dsw-alias-brand-primary, #3e63dd) 55%, transparent)`,Tv=`var(--dsw-alias-label-dimmed, #999)`,Ev=`ui-monospace, "Cascadia Mono", Consolas, "SF Mono", Menlo, monospace`,Dv=du.define([{tag:[J.heading1,J.heading2,J.heading3,J.heading4,J.heading5,J.heading6],color:Cv,fontWeight:`700`},{tag:J.processingInstruction,color:wv},{tag:J.monospace,fontFamily:Ev,backgroundColor:`color-mix(in srgb, var(--dsw-alias-label-secondary, #888) 12%, transparent)`,borderRadius:`4px`,padding:`0 3px`},{tag:J.content,fontFamily:Ev,backgroundColor:`color-mix(in srgb, var(--dsw-alias-label-secondary, #888) 8%, transparent)`},{tag:J.strong,fontWeight:`700`},{tag:J.emphasis,fontStyle:`italic`},{tag:J.strikethrough,textDecoration:`line-through`,opacity:`.75`},{tag:J.link,color:Cv,textDecoration:`underline`},{tag:J.url,color:wv,textDecoration:`underline dotted`},{tag:J.quote,fontStyle:`italic`,color:`var(--dsw-alias-label-secondary, #888)`},{tag:J.contentSeparator,color:Tv,textDecoration:`line-through`},{tag:J.comment,color:Tv}]);function Ov(e={}){let t=document.createElement(`div`);t.className=`dsh-tw-note-editor`;let n=new H({parent:t,state:P.create({doc:``,extensions:[H.lineWrapping,gg(),Yh({base:Fh}),hu(Dv),Zs(),ac(e.placeholder??``),Fs.of([...Sv,...Pg,{key:`Mod-Enter`,run:()=>(e.onSave?.(),!0)}]),H.updateListener.of(t=>{t.docChanged&&e.onChange?.()})]})});return{el:t,view:n,getValue:()=>n.state.doc.toString(),setValue(e){n.dispatch({changes:{from:0,to:n.state.doc.length,insert:e}})},insertAtCaret(e){let{from:t}=n.state.selection.main,r=`${t===n.state.doc.lineAt(t).from?``:`
605
605
  `}${e}\n`;n.dispatch({changes:{from:t,insert:r},selection:{anchor:t+r.length},scrollIntoView:!0}),n.focus()},focus:()=>n.focus()}}const kv=`dsh-tw-note-draft-v1`;function Av(){try{let e=localStorage.getItem(kv);if(e===null)return null;let t=JSON.parse(e);return typeof t.text!=`string`||typeof t.title!=`string`?null:{text:t.text,title:t.title,tags:Array.isArray(t.tags)?t.tags.filter(e=>typeof e==`string`):[],savedAt:typeof t.savedAt==`number`?t.savedAt:0}}catch{return null}}function jv(e){try{localStorage.setItem(kv,JSON.stringify(e))}catch{}}function Mv(){try{localStorage.removeItem(kv)}catch{}}function Nv(e){return e<10?`0${e}`:String(e)}function Pv(e=new Date){return`${e.getFullYear()}-${Nv(e.getMonth()+1)}-${Nv(e.getDate())} ${Nv(e.getHours())}:${Nv(e.getMinutes())}`}function Fv(e){if(e===null)return``;let t=new Date(e).getTime();if(Number.isNaN(t))return``;let n=Date.now()-t,r=Math.floor(n/6e4);if(r<1)return`刚刚`;if(r<60)return`${r}分钟前`;let i=Math.floor(r/60);if(i<24)return`${i}小时前`;let a=Math.floor(i/24);return a<30?`${a}天前`:new Date(t).toLocaleDateString(`zh-CN`)}async function Iv(){let e={showQuickNote:!0,defaultTag:`inbox`};try{let t=await fetch(`/dsh-tiddlywiki/status`,{signal:AbortSignal.timeout(5e3)});if(!t.ok)return e;let n=await t.json();return{showQuickNote:n.ui?.showQuickNote!==!1,defaultTag:n.note?.tag??`inbox`}}catch{return e}}function Lv(e={}){let t=document.createElement(`div`);t.className=`dsh-tw-note-tags`;let n=document.createElement(`div`);n.className=`dsh-tw-note-chips`;let r=document.createElement(`input`);r.className=`dsh-tw-note-taginput`,r.placeholder=`tag(可多选,自动补全)`;let i=document.createElement(`div`);i.className=`dsh-tw-note-tagsuggest`,i.hidden=!0,t.append(n,r,i);let a=[],o=()=>{i.hidden=!0},s=()=>{e.onChange?.()},c=()=>{n.replaceChildren();for(let e of a){let t=document.createElement(`span`);t.className=`dsh-tw-note-tagchip`,t.textContent=e;let r=document.createElement(`span`);r.className=`dsh-tw-note-tagchip-x`,r.textContent=`×`,r.title=`移除 tag「${e}」`,r.addEventListener(`click`,t=>{t.stopPropagation();let n=a.indexOf(e);n>=0&&(a.splice(n,1),c(),s())}),t.append(r),n.append(t)}},l=e=>{let t=e.trim();t.length===0||a.includes(t)||(a.push(t),r.value=``,c(),o(),r.focus(),s())},u=()=>{for(let e of r.value.split(/\s+/))l(e)},d=[],f,p=()=>(f??=fetch(`/dsh-tiddlywiki/tags`,{signal:AbortSignal.timeout(5e3)}).then(e=>e.ok?e.json():Promise.resolve({})).then(e=>[...e.tags??[]].sort((e,t)=>e.localeCompare(t,`zh`))).catch(()=>[]),f.then(e=>{d=e}),f),m=()=>{let e=r.value.trim().toLowerCase(),t=d.filter(t=>!a.includes(t)&&(e.length===0||t.toLowerCase().includes(e))).slice(0,8);i.replaceChildren();for(let e of t){let t=document.createElement(`div`);t.className=`dsh-tw-note-tagsuggest-item`,t.textContent=e,t.addEventListener(`mousedown`,t=>{t.preventDefault(),l(e)}),i.append(t)}i.hidden=t.length===0};return r.addEventListener(`focus`,()=>{p().then(m)}),r.addEventListener(`input`,()=>{d.length===0?p().then(m):m()}),r.addEventListener(`keydown`,e=>{e.key===`Enter`||e.key===`,`?(e.preventDefault(),u()):e.key===`Backspace`&&r.value.length===0&&a.length>0?(a.pop(),c(),s()):e.key===`Escape`&&o()}),document.addEventListener(`click`,e=>{t.contains(e.target)||o()},!0),{el:t,getTags:()=>(u(),[...a]),setDefault:e=>{if(a.length===0){let t=e.trim();t.length>0&&(a.push(t),c())}},setTags:e=>{a.length=0;for(let t of Array.isArray(e)?e:[]){let e=typeof t==`string`?t.trim():``;e.length>0&&!a.includes(e)&&a.push(e)}r.value=``,c(),o()}}}async function Rv(e,t){if(e.size>67108864){O(`文件过大(≤ 64MB)`);return}try{let n=await fetch(`/dsh-tiddlywiki/upload?name=${encodeURIComponent(e.name)}`,{method:`POST`,headers:{"content-type":e.type||`application/octet-stream`},body:e,signal:AbortSignal.timeout(12e4)}),r=await n.json().catch(()=>null);if(!n.ok||r?.ok!==!0){O(`上传失败:${r?.error??`HTTP ${n.status}`}`);return}let i=r.name??e.name,a=e.type.startsWith(`image/`)?`![${i}](${r.url})`:`[${i}](${r.url})`;t.insertAtCaret(a),O(`已上传「${i}」并插入链接`)}catch(e){O(`上传失败:${e instanceof Error?e.message:String(e)}`)}}function zv(){let e,t=!1,n=!1,r=`inbox`,i,a=!1,o=()=>{e!==void 0&&(e.titleInput.value=Pv())},s=()=>{t||!n||e===void 0||(i!==void 0&&(clearTimeout(i),i=void 0),i=window.setTimeout(()=>{if(i=void 0,e===void 0)return;let t=e.editor.getValue(),n=e.titleInput.value.trim();if(t.trim().length===0&&n.length===0){Mv();return}jv({text:t,title:n,tags:e.tagEditor.getTags(),savedAt:Date.now()})},500))},c=()=>{e!==void 0&&(e.draftBanner.hidden=!0)},l=()=>{a=!1,e!==void 0&&(e.recentWrap.hidden=!0)},u=async t=>{try{let n=await fetch(`/dsh-tiddlywiki/get?title=${encodeURIComponent(t)}`,{signal:AbortSignal.timeout(1e4)}),r=await n.json().catch(()=>null);if(!n.ok||r?.ok!==!0||typeof r.title!=`string`){O(`读取失败:${r?.notFound===!0?`不存在`:r?.error??`HTTP ${n.status}`}`);return}if(e===void 0)return;e.editor.setValue(r.text??``),e.titleInput.value=r.title,e.tagEditor.setTags(r.tags??[]),c(),l(),O(`已载入「${r.title}」`),e.editor.focus()}catch(e){O(`读取失败:${e instanceof Error?e.message:String(e)}`)}},d=()=>{if(e===void 0)return;if(a){l();return}a=!0,e.recentWrap.hidden=!1,e.recentWrap.textContent=``;let t=document.createElement(`div`);t.className=`dsh-tw-note-recent-muted`,t.textContent=`加载中…`,e.recentWrap.append(t),(async()=>{try{let t=await(await fetch(`/dsh-tiddlywiki/recent?limit=15`,{signal:AbortSignal.timeout(1e4)})).json().catch(()=>null);if(!a||e===void 0)return;e.recentWrap.replaceChildren();let n=t?.ok===!0?t.items??[]:[];if(n.length===0){let n=document.createElement(`div`);n.className=`dsh-tw-note-recent-muted`,n.textContent=t?.ok===!0?`暂无笔记`:`加载失败:${t?.error??`未知`}`,e.recentWrap.append(n);return}for(let t of n){let n=document.createElement(`div`);n.className=`dsh-tw-note-recent-item`,n.title=t.snippet||t.title;let r=document.createElement(`span`);r.className=`dsh-tw-note-recent-name`,r.textContent=t.title;let i=document.createElement(`span`);i.className=`dsh-tw-note-recent-meta`;let a=[Fv(t.modified)];t.tags.length>0&&a.unshift(t.tags.slice(0,3).join(`,`)),i.textContent=a.join(` · `),n.append(r,i),n.addEventListener(`click`,()=>{u(t.title)}),e.recentWrap.append(n)}}catch(t){if(!a||e===void 0)return;e.recentWrap.replaceChildren();let n=document.createElement(`div`);n.className=`dsh-tw-note-recent-muted`,n.textContent=`加载失败:${t instanceof Error?t.message:String(t)}`,e.recentWrap.append(n)}})()},f=()=>{if(e!==void 0)return;let t=document.createElement(`div`);t.className=`dsh-tw-note`,t.hidden=!0;let r=document.createElement(`div`);r.className=`dsh-tw-note-card`;let i=document.createElement(`div`);i.className=`dsh-tw-note-head`;let a=document.createElement(`span`);a.className=`dsh-tw-note-label`,a.textContent=`📝 快速笔记`;let o=document.createElement(`button`);o.type=`button`,o.className=`dsh-tw-note-close`,o.title=`收起`,o.textContent=`✕`,i.append(a,o);let u=document.createElement(`div`);u.className=`dsh-tw-note-draft`,u.hidden=!0;let f=document.createElement(`span`);f.className=`dsh-tw-note-draft-text`,f.textContent=`已恢复未保存草稿`;let p=document.createElement(`button`);p.type=`button`,p.className=`dsh-tw-note-draft-discard`,p.textContent=`丢弃`,u.append(f,p);let m=document.createElement(`div`);m.className=`dsh-tw-note-fields`;let h=document.createElement(`input`);h.className=`dsh-tw-note-title`,h.placeholder=`标题(默认时间戳)`;let g=Lv({onChange:s});m.append(h,g.el),h.addEventListener(`input`,s);let _,v=Ov({placeholder:`写点东西… Markdown 高亮,可 📎/拖入文件
606
606
  Ctrl+Enter 保存`,onSave:()=>{_?.()},onChange:s}),y=document.createElement(`button`);y.type=`button`,y.className=`dsh-tw-note-upload`,y.title=`上传文件到 wiki 并插入 Markdown 链接(也可直接拖入编辑器)`,y.textContent=`📎 上传`;let b=document.createElement(`input`);b.type=`file`,b.multiple=!0,b.hidden=!0,y.addEventListener(`click`,()=>{b.click()}),b.addEventListener(`change`,()=>{for(let e of Array.from(b.files??[]))Rv(e,v);b.value=``});let x=0;v.el.addEventListener(`dragenter`,e=>{e.preventDefault(),x++,v.el.classList.add(`dsh-tw-note-drop`)}),v.el.addEventListener(`dragover`,e=>{e.preventDefault()}),v.el.addEventListener(`dragleave`,e=>{e.preventDefault(),x=Math.max(0,x-1),x===0&&v.el.classList.remove(`dsh-tw-note-drop`)}),v.el.addEventListener(`drop`,e=>{e.preventDefault(),x=0,v.el.classList.remove(`dsh-tw-note-drop`);let t=e.dataTransfer?.files;if(!(t===void 0||t.length===0))for(let e of Array.from(t))Rv(e,v)});let S=document.createElement(`div`);S.className=`dsh-tw-note-foot`;let C=document.createElement(`div`);C.className=`dsh-tw-note-foot-left`;let w=document.createElement(`span`);w.className=`dsh-tw-note-hint`,w.textContent=`Ctrl+Enter`;let T=document.createElement(`button`);T.type=`button`,T.className=`dsh-tw-note-recent-btn`,T.title=`最近修改的笔记,点击载入继续编辑`,T.textContent=`🕘 最近`,T.addEventListener(`click`,d),C.append(y,T,w);let ee=document.createElement(`div`);ee.className=`dsh-tw-note-foot-right`;let E=document.createElement(`button`);E.type=`button`,E.className=`dsh-tw-note-edit`,E.title=`保存并在 TiddlyWiki 原生编辑器中打开`,E.textContent=`✏️ 在 TW 中编辑`;let D=document.createElement(`button`);D.type=`button`,D.className=`dsh-tw-note-save`,D.textContent=`保存`,ee.append(E,D),S.append(C,ee);let te=document.createElement(`div`);te.className=`dsh-tw-note-recent`,te.hidden=!0,r.append(i,u,m,v.el,S),t.append(r,te),document.body.append(t),e={root:t,card:r,editor:v,titleInput:h,tagEditor:g,saveBtn:D,editBtn:E,draftBanner:u,recentBtn:T,recentWrap:te};let ne=()=>{n=!1,t.hidden=!0,l()},re=()=>{Mv(),c(),v.setValue(``),h.value=Pv(),g.setTags([]),ne()};_=async()=>{let e=v.getValue().trim();if(e.length===0){O(`内容为空,未保存`);return}D.disabled=!0,D.textContent=`保存中…`;try{let t=await fetch(`/dsh-tiddlywiki/note`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({title:h.value.trim(),tags:g.getTags(),text:e}),signal:AbortSignal.timeout(1e4)}),n=await t.json().catch(()=>null);if(!t.ok||n?.ok!==!0){O(`保存失败:${n?.error??`HTTP ${t.status}`}`);return}re(),O(`已保存「${n.title??h.value}」`)}catch(e){O(`保存失败:${e instanceof Error?e.message:String(e)}`)}finally{D.disabled=!1,D.textContent=`保存`}},D.addEventListener(`click`,()=>{_?.()});let ie=async()=>{let e=h.value.trim().length>0?h.value.trim():Pv(),t=v.getValue(),n=g.getTags();E.disabled=!0,E.textContent=`打开中…`;try{let r=await fetch(`/dsh-tiddlywiki/edit`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({title:e,tags:n,text:t}),signal:AbortSignal.timeout(1e4)}),i=await r.json().catch(()=>null);if(!r.ok||i?.ok!==!0){O(`打开失败:${i?.error??`HTTP ${r.status}`}`);return}if(typeof i.twUrl!=`string`||typeof i.draftTitle!=`string`){O(`打开失败:服务未返回编辑器地址`);return}Mv(),c(),Te(`${new URL(i.twUrl,location.origin).href}#${encodeURIComponent(i.draftTitle)}`,i.title??e),O(`已在弹出窗口打开「${i.title??e}」编辑器`)}catch(e){O(`打开失败:${e instanceof Error?e.message:String(e)}`)}finally{E.disabled=!1,E.textContent=`✏️ 在 TW 中编辑`}};E.addEventListener(`click`,()=>{ie()}),o.addEventListener(`click`,ne),document.addEventListener(`click`,e=>{if(!n)return;let r=e.target;t.contains(r)||te.contains(r)||ne()},!0),p.addEventListener(`click`,()=>{Mv(),c(),v.setValue(``),h.value=Pv(),g.setTags([]),O(`已丢弃草稿`)})};return{async open(){if(t||(f(),e===void 0||n))return;n=!0,e.root.hidden=!1;let i=Av();i!==null&&(i.text.trim().length>0||i.title.trim().length>0)?(e.editor.setValue(i.text),e.titleInput.value=i.title,e.tagEditor.setTags(i.tags),e.draftBanner.hidden=!1):(o(),r=(await Iv()).defaultTag,e.tagEditor.setDefault(r)),e.editor.focus()},close(){e!==void 0&&(n=!1,e.root.hidden=!0,l())},async toggle(){n?this.close():await this.open()},isOpen(){return n},dispose(){t=!0,i!==void 0&&(clearTimeout(i),i=void 0),e?.editor.view.destroy(),e?.root.remove(),document.querySelector(`.dsh-tw-toast`)?.remove(),e=void 0}}}function Bv(e){return e<10?`0${e}`:String(e)}function Vv(e){return`${Bv(e.getHours())}:${Bv(e.getMinutes())}`}async function Hv(){try{let e=await fetch(`/dsh-tiddlywiki/status`,{signal:AbortSignal.timeout(8e3)});return e.ok?await e.json():null}catch{return null}}function Uv(e,t){let n=e?.git,r=[`同步知识库`],i=`offline`,a=`离线`;if(n==null||n.exists!==!0)r.push(`git 仓库不可用`);else{r.push(`分支 ${n.branch??`?`}`),typeof n.lastCommit==`string`&&r.push(n.lastCommit);let e=typeof n.behind==`number`?n.behind:0,t=typeof n.ahead==`number`?n.ahead:0;t>0&&r.push(`领先 ${t}`),e>0&&r.push(`落后 ${e}`),n.dirty===!0?(i=`dirty`,a=`待提交`,r.push(`有 ${n.dirtyFiles?.length??0} 个未提交改动`)):e>0?(i=`behind`,a=`可更新`):(i=`clean`,a=`已同步`)}return t!==void 0&&r.push(`上次同步 ${Vv(t)}`),{state:i,label:a,tooltip:r.join(` · `),...t===void 0?{}:{lastSync:t}}}function Wv(){let e={state:`offline`,label:`离线`,tooltip:`同步知识库`},t,n,r=!1,i=new Set,a=()=>{for(let e of[...i])e()},o=n=>{let r=Uv(n,t);(r.state!==e.state||r.tooltip!==e.tooltip)&&(e=r,a())},s=async()=>{o(await Hv())};return s(),n=window.setInterval(()=>{s()},3e4),{getState:()=>e,trigger:async()=>{if(r)return e;r=!0,e={...e,state:`syncing`,label:`同步中…`},a();try{let e=await fetch(`/dsh-tiddlywiki/sync`,{method:`POST`,signal:AbortSignal.timeout(12e4)}),n=await e.json().catch(()=>null);if(t=new Date,n===null||n.ok!==!0)O(`同步失败:${n?.error??n?.message??`HTTP ${e.status}`}`);else{let e=``;n.push&&n.push!==`nothing to commit`&&(e=`(${n.push})`),n.changed===!0&&(e+=n.restarted===!0?`,TW 已重启`:`,TW 未自动重启`,n.restartError&&(e+=`(${n.restartError})`)),O(`同步完成:${n.message??`OK`}${e}`)}await s()}catch(e){O(`同步失败:${e instanceof Error?e.message:String(e)}`)}finally{r=!1,await s()}return e},subscribe(e){return i.add(e),()=>{i.delete(e)}},dispose(){n!==void 0&&(clearInterval(n),n=void 0),i.clear()}}}const Gv=`/dsh-tiddlywiki/status`;async function Kv(){try{let e=await fetch(Gv,{signal:AbortSignal.timeout(5e3)});if(!e.ok)return{showQuickNote:!0,showPanelStatus:!0,showSyncButton:!0};let t=await e.json();return{showQuickNote:t.ui?.showQuickNote!==!1,showPanelStatus:t.ui?.showPanelStatus!==!1,showSyncButton:t.ui?.showSyncButton!==!1}}catch{return{showQuickNote:!0,showPanelStatus:!0,showSyncButton:!0}}}async function qv(){try{let e=await fetch(Gv,{signal:AbortSignal.timeout(8e3)});if(!e.ok)return{state:`failed`,text:`状态不可达`};let t=await e.json();return t.status===`running`?{state:`running`,text:`TW 在线 · ${t.url??``}`}:t.status===`starting`?{state:`starting`,text:`TW 启动中…`}:{state:`failed`,text:t.error??`TW 状态:${t.status??`?`}`}}catch{return{state:`failed`,text:`状态不可达`}}}function Jv(e,t,n){let r=!1,i,a,o,s,c,l,u,d=!1,f,p,m=()=>{d=!1,s!==void 0&&(s.hidden=!0)},h=()=>{let e=n.getState();o!==void 0&&(o.dataset.state=e.state),a!==void 0&&(a.title=`知识库 · ${e.tooltip}`),f!==void 0&&(f.dataset.state=e.state),p!==void 0&&(p.textContent=e.tooltip)},g=async()=>{let e=await qv();r||(c!==void 0&&(c.textContent=e.text),l!==void 0&&(l.dataset.state=e.state))},_=_=>{if(r)return;if(i=document.createElement(`div`),i.className=`dsh-tw-fab-wrap`,s=document.createElement(`div`),s.className=`dsh-tw-fab-menu`,s.hidden=!0,_.showPanelStatus){let e=document.createElement(`div`);e.className=`dsh-tw-fab-status`,l=document.createElement(`span`),l.className=`dsh-tw-fab-status-dot`,l.dataset.state=`unknown`,c=document.createElement(`span`),c.className=`dsh-tw-fab-status-text`,c.textContent=`TiddlyWiki 服务…`,e.append(l,c),s.append(e)}if(_.showSyncButton){let e=document.createElement(`div`);e.className=`dsh-tw-fab-status`,f=document.createElement(`span`),f.className=`dsh-tw-fab-status-dot`,f.dataset.state=n.getState().state,p=document.createElement(`span`),p.className=`dsh-tw-fab-status-text`,p.textContent=n.getState().tooltip,e.append(f,p),s.append(e)}if(_.showQuickNote){let e=document.createElement(`button`);e.type=`button`,e.className=`dsh-tw-fab-item`,e.textContent=`📝 快速笔记`,e.addEventListener(`click`,()=>{m(),t.toggle()}),s.append(e)}if(_.showPanelStatus){u=document.createElement(`span`),u.textContent=`打开 TW 面板`;let t=document.createElement(`button`);t.type=`button`,t.className=`dsh-tw-fab-item`,t.append(document.createTextNode(`🖥 `),u),t.addEventListener(`click`,()=>{m(),e.toggle()}),s.append(t);let n=document.createElement(`button`);n.type=`button`,n.className=`dsh-tw-fab-item`,n.textContent=`🔄 重载 TW 面板`,n.addEventListener(`click`,()=>{m(),document.dispatchEvent(new CustomEvent(`dsh-tw-panel-reload`)),g()}),s.append(n)}if(_.showSyncButton){let e=document.createElement(`button`);e.type=`button`,e.className=`dsh-tw-fab-item`,e.textContent=`🔁 同步`,e.addEventListener(`click`,()=>{m(),n.trigger()}),s.append(e)}a=document.createElement(`button`),a.type=`button`,a.className=`dsh-tw-fab`,a.setAttribute(`aria-label`,`TiddlyWiki 知识库`);let v=document.createElement(`span`);v.className=`dsh-tw-fab-icon`,v.innerHTML=`<svg viewBox="0 0 16 16" width="17" height="17" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 2.5h8a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1z"/><path d="M6 6h4M6 8.5h2.5"/></svg>`,o=document.createElement(`span`),o.className=`dsh-tw-fab-dot`,o.dataset.state=n.getState().state,a.append(v,o),a.addEventListener(`click`,()=>{if(s!==void 0){if(d){m();return}d=!0,s.hidden=!1,h(),g()}}),i.append(s,a),document.body.append(i),h(),document.addEventListener(`click`,e=>{if(!d)return;let t=e.target;i!==void 0&&i.contains(t)||m()},!0)},v=e.subscribe(()=>{u!==void 0&&(u.textContent=e.isOpen()?`收起 TW 面板`:`打开 TW 面板`)}),y=n.subscribe(h);return(async()=>{let e=await Kv();r||!e.showQuickNote&&!e.showPanelStatus&&!e.showSyncButton||_(e)})(),()=>{r=!0,v(),y(),i?.remove()}}const Yv=`/dsh-tiddlywiki/admin/info`,Xv=`/dsh-tiddlywiki/admin/seeds/run`;function $(e,t,n){let r=document.createElement(e);return t!==void 0&&(r.className=t),n!==void 0&&(r.textContent=n),r}async function Zv(e,t){let n=await fetch(e,{...t,signal:AbortSignal.timeout(15e3)}),r=await n.json().catch(()=>({}));if(!n.ok){let e=r.error??`HTTP ${n.status}`;throw Error(e)}return r}function Qv(e){let t=!1;e.classList.add(`dsh-tw-settings`);let n=$(`div`,`dsh-tw-settings-row dsh-tw-settings-status`),r=$(`div`,`dsh-tw-settings-body`);e.append(n,r);let i=[],a=async()=>{try{let e=await Zv(`/dsh-tiddlywiki/admin/state`);if(t)return;$v(n,e,a),ry(r,e,a)}catch(e){if(t)return;r.replaceChildren(),n.replaceChildren();let i=$(`div`,`dsh-tw-settings-error`,`加载配置失败:${e instanceof Error?e.message:String(e)}`),o=$(`button`,`dsh-tw-settings-btn`,`重试`);o.type=`button`,o.addEventListener(`click`,()=>{a()}),r.append(i,o)}};return a(),i.push(()=>{t=!0,e.replaceChildren(),e.classList.remove(`dsh-tw-settings`)}),()=>{for(let e of i.splice(0))e()}}function $v(e,t,n){e.replaceChildren();let r=t.server??{},i=r.status??`unknown`,a=$(`span`,`dsh-tw-settings-chip`,i);a.dataset.state=i;let o=$(`span`,`dsh-tw-settings-muted`,[r.url===void 0?``:`TW ${r.url}`,t.git?.branch===void 0?``:`git ${t.git.branch}`,t.git?.lastCommit===void 0?``:t.git.lastCommit,t.git?.dirty===!0?`有未提交改动`:``].filter(Boolean).join(` · `)),s=$(`button`,`dsh-tw-settings-btn`,`同步`);s.type=`button`,s.title=`git 同步(pull → commit → push)`,s.addEventListener(`click`,()=>{s.disabled=!0,s.textContent=`同步中…`,(async()=>{try{let e=await fetch(`/dsh-tiddlywiki/sync`,{method:`POST`,signal:AbortSignal.timeout(12e4)}),t=await e.json().catch(()=>null);if(!e.ok||t?.ok!==!0)O(`同步失败:${t?.error??t?.message??`HTTP ${e.status}`}`);else{let e=``;t.changed===!0&&(e+=t.restarted===!0?`,TW 已重启`:`,TW 未自动重启`,t.restartError&&(e+=`(${t.restartError})`)),O(`同步完成:${t.message??`OK`}${e}`)}}catch(e){O(`同步失败:${e instanceof Error?e.message:String(e)}`)}finally{s.disabled=!1,s.textContent=`同步`,n()}})()});let c=$(`button`,`dsh-tw-settings-btn`,`重启 TW`);c.type=`button`,c.addEventListener(`click`,()=>{c.disabled=!0,c.textContent=`重启中…`,(async()=>{try{await Zv(`/dsh-tiddlywiki/admin/restart`,{method:`POST`}),O(`TW 已重启`)}catch(e){O(`重启失败:${e instanceof Error?e.message:String(e)}`)}finally{c.disabled=!1,c.textContent=`重启 TW`,n()}})()}),e.append(a,o,s,c)}function ey(e,t,n){let r=$(`section`,`dsh-tw-settings-section`);r.append($(`h3`,`dsh-tw-settings-h`,`常规配置`));let i=t.note??{},a=t.git??{},o=t.ui??{},s=[],c=(e,t,n)=>{let i=$(`input`,`dsh-tw-settings-input`);i.value=n;let a=$(`label`,`dsh-tw-settings-field`);a.append($(`span`,`dsh-tw-settings-label`,t),i),s.push({key:e,input:i,initial:n,read:()=>i.value.trim(),changed:()=>i.value.trim()!==n}),r.append(a)},l=(e,t,n)=>{let i=$(`input`,`dsh-tw-settings-check`);i.type=`checkbox`,i.checked=n;let a=$(`label`,`dsh-tw-settings-field dsh-tw-settings-field-check`);a.append(i,$(`span`,`dsh-tw-settings-label`,t)),s.push({key:e,input:i,initial:n,read:()=>i.checked,changed:()=>i.checked!==n}),r.append(a)},u=(e,t,n)=>{let i=$(`input`,`dsh-tw-settings-input`);i.type=`number`,i.value=String(n);let a=$(`label`,`dsh-tw-settings-field`);a.append($(`span`,`dsh-tw-settings-label`,t),i),s.push({key:e,input:i,initial:n,read:()=>Number(i.value)||n,changed:()=>(Number(i.value)||n)!==n}),r.append(a)};c(`note.tag`,`快速笔记默认 tag`,typeof i.tag==`string`?i.tag:`inbox`),l(`git.autoCommit`,`自动 commit(防抖)`,a.autoCommit!==!1),u(`git.debounceMs`,`自动 commit 防抖(ms)`,typeof a.debounceMs==`number`?a.debounceMs:6e4),c(`git.remote`,`git 远端(空=仅本地)`,typeof a.remote==`string`?a.remote:``),c(`git.branch`,`git 分支`,typeof a.branch==`string`?a.branch:`main`),l(`ui.showQuickNote`,`显示「知识库」按钮里的「快速笔记」入口`,o.showQuickNote!==!1),l(`ui.showPanelStatus`,`显示「知识库」按钮里的 TW 面板/重载入口与状态行`,o.showPanelStatus!==!1),l(`ui.showSyncButton`,`显示「知识库」按钮里的「同步」入口与 git 状态点`,o.showSyncButton!==!1),l(`ui.followDshTheme`,`嵌入式 TW 跟随 DSH 深浅主题(暗色时自动切深色 palette,不写回 wiki)`,o.followDshTheme!==!1),c(`ui.darkPalette`,`暗色时 TW palette(tiddler 标题)`,typeof o.darkPalette==`string`&&o.darkPalette.length>0?o.darkPalette:`$:/palettes/CupertinoDark`);let d=o.allArticles??{};u(`ui.allArticles.pageSize`,`「所有文章」每页条数`,typeof d.pageSize==`number`?d.pageSize:10);let f=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`保存配置`);f.type=`button`,f.addEventListener(`click`,()=>{f.disabled=!0,(async()=>{let e={};for(let t of s){if(!t.changed())continue;let n=t.key.split(`.`),r=e;for(let e=0;e<n.length;e++){let i=n[e];if(i===void 0)break;if(e===n.length-1)r[i]=t.read();else{let e=r[i]??{};r[i]=e,r=e}}}try{await Zv(`/dsh-tiddlywiki/admin/config`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}),O(`配置已保存`),n()}catch(e){O(`保存失败:${e instanceof Error?e.message:String(e)}`)}finally{f.disabled=!1}})()}),r.append(f),e.append(r)}function ty(e,t,n,r){let i=n?.plugins??[],a=n?.themes??[],o=n?.languages??[],s=new Set(t?.plugins??[]),c=new Set(t?.themes??[]),l=new Set(t?.languages??[]),u=$(`section`,`dsh-tw-settings-section`);u.append($(`h3`,`dsh-tw-settings-h`,`插件管理(自带官方插件)`));let d=$(`input`,`dsh-tw-settings-input dsh-tw-settings-search`);d.placeholder=`搜索插件…`;let f=$(`div`,`dsh-tw-settings-list`),p=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`应用插件(重启 TW)`);p.type=`button`;let m=e=>{f.replaceChildren();let t=e.toLowerCase();for(let e of i){if(t.length>0&&!`${e.label} ${e.name} ${e.description}`.toLowerCase().includes(t))continue;let n=$(`input`,`dsh-tw-settings-check`);n.type=`checkbox`,n.checked=s.has(e.name),n.addEventListener(`change`,()=>{n.checked?s.add(e.name):s.delete(e.name)});let r=$(`label`,`dsh-tw-settings-row dsh-tw-settings-plugin`),i=$(`span`,`dsh-tw-settings-name`,e.label);i.title=e.name;let a=$(`span`,`dsh-tw-settings-muted`,e.description||e.name);r.append(n,i,a),f.append(r)}};d.addEventListener(`input`,()=>m(d.value)),p.addEventListener(`click`,()=>{p.disabled=!0,(async()=>{try{await Zv(Yv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({plugins:[...s]})}),O(`插件已应用,TW 已重启`),r()}catch(e){O(`应用失败:${e instanceof Error?e.message:String(e)}`),p.disabled=!1}})()}),m(``),u.append(d,f,p),e.append(u);let h=$(`section`,`dsh-tw-settings-section`);h.append($(`h3`,`dsh-tw-settings-h`,`主题管理(自带主题)`));let g=$(`div`,`dsh-tw-settings-muted`,`「加载」= TW 里可用的主题(可多选,依赖链自动带上,如 heavier 会带 snowwhite+vanilla);「活动」= 当前视觉主题(单选,自动加入加载集)。应用后重启 TW。`),_=$(`div`,`dsh-tw-settings-row dsh-tw-settings-head`);_.append($(`span`,`dsh-tw-settings-col`,`加载`),$(`span`,`dsh-tw-settings-col`,`活动`),$(`span`,`dsh-tw-settings-name`,`主题`));let v=t?.themes??[],y=v.length>0?v[v.length-1]:`tiddlywiki/vanilla`,b=$(`div`,`dsh-tw-settings-list`);for(let e of a){let t=$(`input`,`dsh-tw-settings-check`);t.type=`checkbox`,t.checked=c.has(e.name),t.title=`加载该主题`,t.addEventListener(`change`,()=>{t.checked?c.add(e.name):c.delete(e.name)});let n=$(`input`,`dsh-tw-settings-check`);n.type=`radio`,n.name=`dsh-tw-active-theme`,n.checked=e.name===y,n.title=`设为活动主题`,n.addEventListener(`change`,()=>{n.checked&&(y=e.name)});let r=$(`span`,`dsh-tw-settings-name`,e.label);r.title=e.name;let i=$(`span`,`dsh-tw-settings-muted`,e.description||e.name),a=$(`div`,`dsh-tw-settings-row dsh-tw-settings-plugin`);a.append(t,n,r,i),b.append(a)}let x=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`应用主题(重启 TW)`);x.type=`button`,x.addEventListener(`click`,()=>{x.disabled=!0,(async()=>{try{await Zv(Yv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({themes:[...c],themeActive:y})}),O(`主题已应用,TW 已重启`),r()}catch(e){O(`应用失败:${e instanceof Error?e.message:String(e)}`),x.disabled=!1}})()}),h.append(g,_,b,x),e.append(h);let S=$(`section`,`dsh-tw-settings-section`);S.append($(`h3`,`dsh-tw-settings-h`,`语言管理(自带官方语言包)`));let C=$(`div`,`dsh-tw-settings-muted`,`勾选启用语言插件并重启 TW;如中文请选 zh-Hans(简体)或 zh-CN。`),w=$(`div`,`dsh-tw-settings-list`);for(let e of o){let t=$(`input`,`dsh-tw-settings-check`);t.type=`checkbox`,t.checked=l.has(e.name),t.addEventListener(`change`,()=>{t.checked?l.add(e.name):l.delete(e.name)});let n=$(`label`,`dsh-tw-settings-row dsh-tw-settings-plugin`),r=$(`span`,`dsh-tw-settings-name`,e.label);r.title=e.name;let i=$(`span`,`dsh-tw-settings-muted`,e.description||e.name);n.append(t,r,i),w.append(n)}let T=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`应用语言(重启 TW)`);T.type=`button`,T.addEventListener(`click`,()=>{T.disabled=!0,(async()=>{try{await Zv(Yv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({languages:[...l]})}),O(`语言已应用,TW 已重启`),r()}catch(e){O(`应用失败:${e instanceof Error?e.message:String(e)}`),T.disabled=!1}})()}),S.append(C,w,T),e.append(S)}function ny(e){let t=$(`section`,`dsh-tw-settings-section`);t.append($(`h3`,`dsh-tw-settings-h`,`初始化(一次性预置)`));let n=$(`div`,`dsh-tw-settings-muted`,`这些是插件与 dsh 联动、需要在 wiki 里预置的 tiddler/配置。「发送给 Agent 按钮」和「TW 前端 API 基址」是功能必需项,启动时自动写入(只写缺失,不覆盖你的改动);其余为可选项,默认不自动写入、也不会强绑定——需要时点「重新初始化」写入,不想要了可随时「反初始化」移除。`),r=$(`div`,`dsh-tw-settings-list`),i=$(`div`,`dsh-tw-settings-muted`),a=`/dsh-tiddlywiki/admin/seeds/remove`,o=async()=>{try{let e=await Zv(`/dsh-tiddlywiki/admin/seeds`);if(e.ok!==!0||!Array.isArray(e.items))throw Error(e.error??`获取失败`);r.replaceChildren();let t=0,n=0;for(let i of e.items){i.present&&(t+=1),i.removable&&(n+=1);let e=$(`span`,`dsh-tw-settings-chip`,i.present?`✓`:`✗`);e.dataset.state=i.present?`ok`:`missing`,e.title=i.present?`已存在`:`缺失`;let s=$(`span`,`dsh-tw-settings-name`,i.title);s.title=i.id;let c=$(`span`,`dsh-tw-settings-muted`,i.detail??i.description),l=$(`button`,`dsh-tw-settings-btn`,`重新初始化`);l.type=`button`,l.title=`强制重写「${i.title}」的内置内容(会覆盖当前 tiddler)`,l.addEventListener(`click`,()=>{l.disabled=!0,l.textContent=`执行中…`,(async()=>{try{let e=await fetch(Xv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:i.id,force:!0}),signal:AbortSignal.timeout(3e4)}),t=await e.json().catch(()=>null);!e.ok||t?.ok!==!0?O(`重新初始化失败:${t?.error??t?.results?.[0]?.error??`HTTP ${e.status}`}`):O(`已重新初始化「${i.title}」`),o()}catch(e){O(`重新初始化失败:${e instanceof Error?e.message:String(e)}`)}finally{l.disabled=!1,l.textContent=`重新初始化`}})()});let u=$(`div`,`dsh-tw-settings-row dsh-tw-settings-plugin`);if(u.append(e,s,c,l),i.removable){let e=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-danger`,`反初始化`);e.type=`button`,e.title=`移除「${i.title}」写入的 tiddler 与 marker(恢复未初始化状态)`,e.addEventListener(`click`,()=>{window.confirm(`确定反初始化「${i.title}」?将删除它写入的 tiddler(含其一次性 marker),需要时可用「重新初始化」恢复。`)&&(e.disabled=!0,e.textContent=`移除中…`,(async()=>{try{let e=await fetch(a,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:i.id}),signal:AbortSignal.timeout(3e4)}),t=await e.json().catch(()=>null);!e.ok||t?.ok!==!0?O(`反初始化失败:${t?.error??t?.results?.[0]?.error??`HTTP ${e.status}`}`):O(`已反初始化「${i.title}」`),o()}catch(e){O(`反初始化失败:${e instanceof Error?e.message:String(e)}`)}finally{e.disabled=!1,e.textContent=`反初始化`}})())}),u.append(e)}r.append(u)}i.textContent=`共 ${e.items.length} 项,${t} 项已就绪;可移除 ${n} 项`}catch(e){i.textContent=`加载初始化状态失败:${e instanceof Error?e.message:String(e)}`}},s=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`全部重新初始化`);s.type=`button`,s.title=`强制重写所有一次性预置内容(含可选 seed,会覆盖当前 tiddler/配置)`,s.addEventListener(`click`,()=>{s.disabled=!0,s.textContent=`执行中…`,(async()=>{try{let e=await fetch(Xv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({force:!0}),signal:AbortSignal.timeout(6e4)}),t=await e.json().catch(()=>null);!e.ok||t?.ok!==!0?O(`重新初始化失败:${t?.error??`HTTP ${e.status}`}`):O(`全部已重新初始化`),o()}catch(e){O(`重新初始化失败:${e instanceof Error?e.message:String(e)}`)}finally{s.disabled=!1,s.textContent=`全部重新初始化`}})()});let c=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-danger`,`全部反初始化`);c.type=`button`,c.title=`移除所有可选 seed 写入的 tiddler 与 marker(功能必需项保留)`,c.addEventListener(`click`,()=>{window.confirm(`确定全部反初始化?将删除所有可选 seed 写入的 tiddler(含一次性 marker)。功能必需项(发送给 Agent 按钮 / TW 前端 API 基址)会保留。`)&&(c.disabled=!0,c.textContent=`移除中…`,(async()=>{try{let e=await fetch(a,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({}),signal:AbortSignal.timeout(6e4)}),t=await e.json().catch(()=>null);!e.ok||t?.ok!==!0?O(`反初始化失败:${t?.error??`HTTP ${e.status}`}`):O(`全部可选 seed 已反初始化`),o()}catch(e){O(`反初始化失败:${e instanceof Error?e.message:String(e)}`)}finally{c.disabled=!1,c.textContent=`全部反初始化`}})())}),t.append(n,i,r,s,c),e.append(t),o()}function ry(e,t,n){e.replaceChildren(),ey(e,t.config??{},n),ty(e,t.info,t.catalog,n),ny(e)}function iy(){let e=c.useRef(null);return c.useEffect(()=>{let t=e.current;return t===null?void 0:Qv(t)},[]),c.createElement(`div`,{ref:e})}const ay={tiddlywiki_get:`读取笔记`,tiddlywiki_search:`检索笔记`,tiddlywiki_recent:`最近修改`,tiddlywiki_list_tags:`标签列表`,tiddlywiki_put:`写入笔记`,tiddlywiki_batch_put:`批量写入`,tiddlywiki_rename:`重命名笔记`,tiddlywiki_delete:`删除笔记`,tiddlywiki_git_sync:`git 同步`,tiddlywiki_git_resolve:`git 冲突解决`};function oy(e){return typeof e==`object`&&!!e&&e.kind===`tool-result`}function sy(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.call==`object`&&t.call!==null){let e=t.call;if(typeof e.name==`string`&&typeof e.argsRaw==`string`)return e}let n=e;return typeof n.name==`string`&&typeof n.argsRaw==`string`?{name:n.name,argsRaw:n.argsRaw}:null}function cy(e){try{let t=JSON.parse(e);return typeof t==`object`&&t&&!Array.isArray(t)?t:{}}catch{return{}}}function ly(e){return Array.isArray(e)?e.filter(e=>typeof e?.text==`string`).map(e=>e.text).join(`
607
- `):``}function uy(e){return typeof e==`string`?e:``}async function dy(e){try{let t=await fetch(e,{signal:AbortSignal.timeout(1e4)});if(!t.ok)return null;let n=await t.json();return typeof n==`object`&&n?n:null}catch{return null}}async function fy(e){try{let t=await fetch(`/dsh-tiddlywiki/tw/render`,{method:`POST`,headers:{"content-type":`application/json`,"x-requested-with":`TiddlyWiki`},body:JSON.stringify({title:e}),signal:AbortSignal.timeout(1e4)});return t.ok?await t.text():null}catch{return null}}function py(e,t){let[n,r]=c.useState({loading:!0,data:null});return c.useEffect(()=>{let t=!0;return r({loading:!0,data:null}),Promise.resolve(e()).then(e=>{t&&r({loading:!1,data:e})},()=>{t&&r({loading:!1,data:null})}),()=>{t=!1}},t),n}function my(e){return t=>{t.preventDefault(),t.stopPropagation(),ge(e)}}function hy(e){let t=ay[e.toolName]??e.toolName,n=c.createElement(`div`,{className:`dsh-tw-toolcard-head`},c.createElement(`span`,{className:`dsh-tw-toolcard-badge`},t),e.title!==void 0&&e.title.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-title`,title:e.title},e.title):null,e.onOpen===void 0?null:c.createElement(`button`,{type:`button`,className:`dsh-tw-toolcard-open`,onClick:e.onOpen},`在 TW 打开`)),r=e.subtitle!==void 0||e.tags!==void 0&&e.tags.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-meta`},e.subtitle===void 0?null:c.createElement(`span`,{className:`dsh-tw-toolcard-sub`},e.subtitle),e.tags!==void 0&&e.tags.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-tags`},...e.tags.map(e=>c.createElement(`span`,{className:`dsh-tw-toolcard-tag`,key:e},e))):null):null;return c.createElement(`div`,{className:`dsh-tw-toolcard`},n,r,c.createElement(`div`,{className:`dsh-tw-toolcard-body`},e.children),e.foot!==void 0&&e.foot!==null?c.createElement(`div`,{className:`dsh-tw-toolcard-foot`},e.foot):null)}function gy(e){let{title:t}=e,{loading:n,data:r}=py(async()=>{let[e,n]=await Promise.all([dy(`/dsh-tiddlywiki/get?title=${encodeURIComponent(t)}`),fy(t)]);return{get:e,html:n}},[t]),i=r?.get??null,a=r?.html??null,o;o=n?c.createElement(`div`,{className:`dsh-tw-toolcard-loading`},`渲染中…`):i!==null&&i.notFound===!0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`tiddler「${t}」不存在`):typeof a==`string`&&a.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-native`,dangerouslySetInnerHTML:{__html:a}}):i!==null&&typeof i.text==`string`&&i.text.length>0?c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},i.text):c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`wiki 服务不可用`);let s=Array.isArray(i?.tags)?i.tags.filter(e=>typeof e==`string`):[],l=typeof i?.modified==`string`?i.modified:void 0;return c.createElement(hy,{toolName:e.toolName,title:t,subtitle:e.subtitle,tags:s,onOpen:my(t),foot:l===void 0?void 0:`修改于 ${l}`},o)}function _y(e){return c.createElement(`a`,{className:`dsh-tw-toolcard-row`,href:`/dsh-tiddlywiki/tw/#${encodeURIComponent(e.title)}`,onClick:my(e.title),title:e.title},c.createElement(`span`,{className:`dsh-tw-toolcard-row-title`},e.title),e.tags!==void 0&&e.tags.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-row-tags`},e.tags.slice(0,4).join(` · `)):null,typeof e.modified==`string`&&e.modified.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-row-meta`},e.modified):null)}function vy(e){let t=e.rows.slice(0,60),n;return n=t.length===0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},e.fallbackText):c.createElement(`div`,{className:`dsh-tw-toolcard-list`},...t.map((e,t)=>c.createElement(_y,{key:`${e.title}-${t}`,...e}))),c.createElement(hy,{toolName:e.toolName,title:e.title,subtitle:e.subtitle},n)}function yy(e){let t=uy(e.args.query),n=new URLSearchParams;if(t.length>0&&n.set(`query`,t),Array.isArray(e.args.tags))for(let t of e.args.tags)typeof t==`string`&&t.length>0&&n.append(`tags`,t);typeof e.args.tag==`string`&&e.args.tag.length>0&&n.set(`tag`,e.args.tag),typeof e.args.since==`string`&&e.args.since.length>0&&n.set(`since`,e.args.since),typeof e.args.type==`string`&&e.args.type.length>0&&n.set(`type`,e.args.type),typeof e.args.limit==`number`&&n.set(`limit`,String(e.args.limit));let r=n.toString(),i=py(()=>dy(`/dsh-tiddlywiki/search?${r}`),[r]).data,a=(Array.isArray(i?.items)?i.items:[]).map(e=>({title:uy(e.title),tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):[],modified:typeof e.modified==`string`?e.modified:null})),o=typeof i?.total==`number`?i.total:void 0,s=`关键词「${t||`(全部)`}」${o===void 0?``:` · 共 ${o} 条`}`;return c.createElement(vy,{toolName:e.toolName,title:t.length>0?t:`检索`,subtitle:s,rows:a,fallbackText:`没有匹配的笔记`})}function by(e){let t=new URLSearchParams;typeof e.args.limit==`number`&&t.set(`limit`,String(e.args.limit)),typeof e.args.since==`string`&&e.args.since.length>0&&t.set(`since`,e.args.since);let n=t.toString(),r=py(()=>dy(`/dsh-tiddlywiki/recent?${n}`),[n]).data,i=(Array.isArray(r?.items)?r.items:[]).map(e=>({title:uy(e.title),tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):[],modified:typeof e.modified==`string`?e.modified:null}));return c.createElement(vy,{toolName:e.toolName,title:`最近修改`,subtitle:i.length>0?`最近 ${i.length} 条`:``,rows:i,fallbackText:`暂无笔记`})}function xy(e){let t=(Array.isArray(e.args.items)?e.args.items:[]).map(e=>typeof e==`object`&&e&&typeof e.title==`string`?uy(e.title):null).filter(e=>e!==null&&e.length>0).map(e=>({title:e}));return c.createElement(vy,{toolName:e.toolName,title:`批量写入`,subtitle:t.length>0?`写入 ${t.length} 篇`:`(参数中没有可解析的 items)`,rows:t,fallbackText:`没有可展示的笔记`})}function Sy(e){let t=py(()=>dy(`/dsh-tiddlywiki/tags`),[]).data,n=(Array.isArray(t?.items)?t.items:[]).map(e=>({tag:uy(e.tag),count:typeof e.count==`number`?e.count:0})),r;return r=n.length===0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`暂无标签`):c.createElement(`div`,{className:`dsh-tw-toolcard-tags-wrap`},...n.map(e=>c.createElement(`span`,{className:`dsh-tw-toolcard-tag`,key:e.tag},`${e.tag} · ${e.count}`))),c.createElement(hy,{toolName:e.toolName,title:`标签`,subtitle:`共 ${n.length} 个`},r)}function Cy(e){let t=e.text.trim().length>0?c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},e.text):c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`(无结果)`);return c.createElement(hy,{toolName:e.toolName},t)}function wy(e){let t=e.title.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`已删除 tiddler「${e.title}」`):c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},e.text||`(已删除)`);return c.createElement(hy,{toolName:e.toolName,title:e.title.length>0?e.title:void 0},t)}function Ty(e,t){switch(e){case`tiddlywiki_get`:case`tiddlywiki_put`:case`tiddlywiki_delete`:return uy(t.title);case`tiddlywiki_rename`:return uy(t.newTitle);case`tiddlywiki_search`:return uy(t.query);case`tiddlywiki_recent`:case`tiddlywiki_list_tags`:case`tiddlywiki_batch_put`:case`tiddlywiki_git_sync`:case`tiddlywiki_git_resolve`:return``;default:return``}}function Ey(e){let t=e.block,n=e.toolName,r=oy(t),i=sy(t),a=n!==void 0&&n.length>0?n:i?.name??``,o=cy(i?.argsRaw??``),s=r?ly(t.content):``;if(i===null)return c.createElement(hy,{toolName:a},c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},s||`(无调用信息)`));if(!r)return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`div`,{className:`dsh-tw-toolcard-pending`},`处理中…`));if(t.isError===!0)return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`div`,{className:`dsh-tw-toolcard-error`},s||`工具调用失败`));switch(a){case`tiddlywiki_get`:return c.createElement(gy,{toolName:a,title:uy(o.title),subtitle:`读取`});case`tiddlywiki_put`:return c.createElement(gy,{toolName:a,title:uy(o.title),subtitle:`已写入`});case`tiddlywiki_rename`:return c.createElement(gy,{toolName:a,title:uy(o.newTitle),subtitle:`已重命名「${uy(o.oldTitle)}」→`});case`tiddlywiki_delete`:return c.createElement(wy,{toolName:a,title:uy(o.title),text:s});case`tiddlywiki_batch_put`:return c.createElement(xy,{toolName:a,args:o,text:s});case`tiddlywiki_search`:return c.createElement(yy,{toolName:a,args:o,text:s});case`tiddlywiki_recent`:return c.createElement(by,{toolName:a,args:o,text:s});case`tiddlywiki_list_tags`:return c.createElement(Sy,{toolName:a,text:s});case`tiddlywiki_git_sync`:case`tiddlywiki_git_resolve`:return c.createElement(Cy,{toolName:a,text:s});default:return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},s||`(完成)`))}}const Dy=[`tiddlywiki_get`,`tiddlywiki_search`,`tiddlywiki_recent`,`tiddlywiki_list_tags`,`tiddlywiki_put`,`tiddlywiki_batch_put`,`tiddlywiki_rename`,`tiddlywiki_delete`,`tiddlywiki_git_sync`,`tiddlywiki_git_resolve`];function Oy(e){let t=[];for(let n of Dy)try{let r=e.register({name:`tool.call.toolview`,id:`dsh-tiddlywiki-toolview-${n}`,key:n,order:20,label:`TiddlyWiki: ${n}`},Ey);t.push(r)}catch(e){console.error(`[dsh-tiddlywiki] register toolview ${n} failed:`,e)}return t}function ky(){let e=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`a`);if(n===null)return;let r=(n.getAttribute(`href`)??``).match(/^\/dsh-tiddlywiki\/tw\/#(.+)$/);if(r===null||r[1]===void 0)return;e.preventDefault(),e.stopPropagation();let i=r[1];try{i=decodeURIComponent(i)}catch{}ge(i)};return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}const Ay=[`slots`];function jy(e){try{u();let t=new d,n=[];try{let e=zv(),r=Wv();n.push(()=>e.dispose()),n.push(()=>r.dispose()),n.push(g(t)),n.push(xe(t)),n.push(Jv(t,e,r)),n.push(Ee)}catch(e){console.error(`[dsh-tiddlywiki] mount failed:`,e)}try{e.slots!==void 0&&n.push(...Oy(e.slots))}catch(e){console.error(`[dsh-tiddlywiki] tool views failed:`,e)}try{n.push(ky())}catch(e){console.error(`[dsh-tiddlywiki] wiki link interceptor failed:`,e)}try{let t=e.slots?.inject(`settings.section`,()=>e.slots?.register({name:`settings.section`,id:`dsh-tiddlywiki`,order:50,label:`TiddlyWiki 知识库`},iy));t!==void 0&&n.push(t)}catch(e){console.error(`[dsh-tiddlywiki] settings section failed:`,e)}e.effect?.(()=>()=>{for(let e of n.splice(0))e()},`dsh-tiddlywiki: client mount`)}catch(e){console.error(`[dsh-tiddlywiki] client half failed to start:`,e)}}exports.apply=jy,exports.inject=Ay,exports.name=`dsh-tiddlywiki/client`;
607
+ `):``}function uy(e){return typeof e==`string`?e:``}async function dy(e){try{let t=await fetch(e,{signal:AbortSignal.timeout(1e4)});if(!t.ok)return null;let n=await t.json();return typeof n==`object`&&n?n:null}catch{return null}}async function fy(e){try{let t=await fetch(`/dsh-tiddlywiki/tw/render`,{method:`POST`,headers:{"content-type":`application/json`,"x-requested-with":`TiddlyWiki`},body:JSON.stringify({title:e}),signal:AbortSignal.timeout(1e4)});return t.ok?await t.text():null}catch{return null}}function py(e,t){let[n,r]=c.useState({loading:!0,data:null});return c.useEffect(()=>{let t=!0;return r({loading:!0,data:null}),Promise.resolve(e()).then(e=>{t&&r({loading:!1,data:e})},()=>{t&&r({loading:!1,data:null})}),()=>{t=!1}},t),n}function my(e){return t=>{t.preventDefault(),t.stopPropagation(),ge(e)}}function hy(e){let t=ay[e.toolName]??e.toolName,n=c.createElement(`div`,{className:`dsh-tw-toolcard-head`},c.createElement(`span`,{className:`dsh-tw-toolcard-badge`},t),e.title!==void 0&&e.title.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-title`,title:e.title},e.title):null,e.onOpen===void 0?null:c.createElement(`button`,{type:`button`,className:`dsh-tw-toolcard-open`,onClick:e.onOpen},`在 TW 打开`)),r=e.subtitle!==void 0||e.tags!==void 0&&e.tags.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-meta`},e.subtitle===void 0?null:c.createElement(`span`,{className:`dsh-tw-toolcard-sub`},e.subtitle),e.tags!==void 0&&e.tags.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-tags`},...e.tags.map(e=>c.createElement(`span`,{className:`dsh-tw-toolcard-tag`,key:e},e))):null):null;return c.createElement(`div`,{className:`dsh-tw-toolcard`},n,r,c.createElement(`div`,{className:`dsh-tw-toolcard-body`},e.children),e.foot!==void 0&&e.foot!==null?c.createElement(`div`,{className:`dsh-tw-toolcard-foot`},e.foot):null)}function gy(e){let{title:t}=e,{loading:n,data:r}=py(async()=>{let[e,n]=await Promise.all([dy(`/dsh-tiddlywiki/get?title=${encodeURIComponent(t)}`),fy(t)]);return{get:e,html:n}},[t]),i=r?.get??null,a=r?.html??null,o;o=n?c.createElement(`div`,{className:`dsh-tw-toolcard-loading`},`渲染中…`):i!==null&&i.notFound===!0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`tiddler「${t}」不存在`):typeof a==`string`&&a.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-native`,dangerouslySetInnerHTML:{__html:a}}):i!==null&&typeof i.text==`string`&&i.text.length>0?c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},i.text):c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`wiki 服务不可用`);let s=Array.isArray(i?.tags)?i.tags.filter(e=>typeof e==`string`):[],l=typeof i?.modified==`string`?i.modified:void 0;return c.createElement(hy,{toolName:e.toolName,title:t,subtitle:e.subtitle,tags:s,onOpen:my(t),foot:l===void 0?void 0:`修改于 ${l}`},o)}function _y(e){return c.createElement(`a`,{className:`dsh-tw-toolcard-row`,href:`/dsh-tiddlywiki/tw/#${encodeURIComponent(e.title)}`,onClick:my(e.title),title:e.title},c.createElement(`span`,{className:`dsh-tw-toolcard-row-title`},e.title),e.tags!==void 0&&e.tags.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-row-tags`},e.tags.slice(0,4).join(` · `)):null,typeof e.modified==`string`&&e.modified.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-row-meta`},e.modified):null)}function vy(e){let t=e.rows.slice(0,60),n;return n=t.length===0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},e.fallbackText):c.createElement(`div`,{className:`dsh-tw-toolcard-list`},...t.map((e,t)=>c.createElement(_y,{key:`${e.title}-${t}`,...e}))),c.createElement(hy,{toolName:e.toolName,title:e.title,subtitle:e.subtitle},n)}function yy(e){let t=uy(e.args.query),n=new URLSearchParams;if(t.length>0&&n.set(`query`,t),Array.isArray(e.args.tags))for(let t of e.args.tags)typeof t==`string`&&t.length>0&&n.append(`tags`,t);typeof e.args.tag==`string`&&e.args.tag.length>0&&n.set(`tag`,e.args.tag),typeof e.args.since==`string`&&e.args.since.length>0&&n.set(`since`,e.args.since),typeof e.args.type==`string`&&e.args.type.length>0&&n.set(`type`,e.args.type),typeof e.args.limit==`number`&&n.set(`limit`,String(e.args.limit));let r=n.toString(),i=py(()=>dy(`/dsh-tiddlywiki/search?${r}`),[r]).data,a=(Array.isArray(i?.items)?i.items:[]).map(e=>({title:uy(e.title),tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):[],modified:typeof e.modified==`string`?e.modified:null})),o=typeof i?.total==`number`?i.total:void 0,s=`关键词「${t||`(全部)`}」${o===void 0?``:` · 共 ${o} 条`}`;return c.createElement(vy,{toolName:e.toolName,title:t.length>0?t:`检索`,subtitle:s,rows:a,fallbackText:`没有匹配的笔记`})}function by(e){let t=new URLSearchParams;typeof e.args.limit==`number`&&t.set(`limit`,String(e.args.limit)),typeof e.args.since==`string`&&e.args.since.length>0&&t.set(`since`,e.args.since);let n=t.toString(),r=py(()=>dy(`/dsh-tiddlywiki/recent?${n}`),[n]).data,i=(Array.isArray(r?.items)?r.items:[]).map(e=>({title:uy(e.title),tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):[],modified:typeof e.modified==`string`?e.modified:null}));return c.createElement(vy,{toolName:e.toolName,title:`最近修改`,subtitle:i.length>0?`最近 ${i.length} 条`:``,rows:i,fallbackText:`暂无笔记`})}function xy(e){let t=(Array.isArray(e.args.items)?e.args.items:[]).map(e=>typeof e==`object`&&e&&typeof e.title==`string`?uy(e.title):null).filter(e=>e!==null&&e.length>0).map(e=>({title:e}));return c.createElement(vy,{toolName:e.toolName,title:`批量写入`,subtitle:t.length>0?`写入 ${t.length} 篇`:`(参数中没有可解析的 items)`,rows:t,fallbackText:`没有可展示的笔记`})}function Sy(e){let t=py(()=>dy(`/dsh-tiddlywiki/tags`),[]).data,n=(Array.isArray(t?.items)?t.items:[]).map(e=>({tag:uy(e.tag),count:typeof e.count==`number`?e.count:0})),r;return r=n.length===0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`暂无标签`):c.createElement(`div`,{className:`dsh-tw-toolcard-tags-wrap`},...n.map(e=>c.createElement(`span`,{className:`dsh-tw-toolcard-tag`,key:e.tag},`${e.tag} · ${e.count}`))),c.createElement(hy,{toolName:e.toolName,title:`标签`,subtitle:`共 ${n.length} 个`},r)}function Cy(e){let t=e.text.trim().length>0?c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},e.text):c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`(无结果)`);return c.createElement(hy,{toolName:e.toolName},t)}function wy(e){let t=e.title.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`已删除 tiddler「${e.title}」`):c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},e.text||`(已删除)`);return c.createElement(hy,{toolName:e.toolName,title:e.title.length>0?e.title:void 0},t)}function Ty(e,t){switch(e){case`tiddlywiki_get`:case`tiddlywiki_put`:case`tiddlywiki_delete`:return uy(t.title);case`tiddlywiki_rename`:return uy(t.newTitle);case`tiddlywiki_search`:return uy(t.query);case`tiddlywiki_recent`:case`tiddlywiki_list_tags`:case`tiddlywiki_batch_put`:case`tiddlywiki_git_sync`:case`tiddlywiki_git_resolve`:return``;default:return``}}function Ey(e){let t=e.block,n=e.toolName,r=oy(t),i=sy(t),a=n!==void 0&&n.length>0?n:i?.name??``,o=cy(i?.argsRaw??``),s=r?ly(t.content):``;if(i===null)return c.createElement(hy,{toolName:a},c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},s||`(无调用信息)`));if(!r)return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`div`,{className:`dsh-tw-toolcard-pending`},`处理中…`));if(t.isError===!0)return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`div`,{className:`dsh-tw-toolcard-error`},s||`工具调用失败`));switch(a){case`tiddlywiki_get`:return c.createElement(gy,{toolName:a,title:uy(o.title),subtitle:`读取`});case`tiddlywiki_put`:return c.createElement(gy,{toolName:a,title:uy(o.title),subtitle:`已写入`});case`tiddlywiki_rename`:return c.createElement(gy,{toolName:a,title:uy(o.newTitle),subtitle:`已重命名「${uy(o.oldTitle)}」→`});case`tiddlywiki_delete`:return c.createElement(wy,{toolName:a,title:uy(o.title),text:s});case`tiddlywiki_batch_put`:return c.createElement(xy,{toolName:a,args:o,text:s});case`tiddlywiki_search`:return c.createElement(yy,{toolName:a,args:o,text:s});case`tiddlywiki_recent`:return c.createElement(by,{toolName:a,args:o,text:s});case`tiddlywiki_list_tags`:return c.createElement(Sy,{toolName:a,text:s});case`tiddlywiki_git_sync`:case`tiddlywiki_git_resolve`:return c.createElement(Cy,{toolName:a,text:s});default:return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},s||`(完成)`))}}const Dy=[`tiddlywiki_get`,`tiddlywiki_search`,`tiddlywiki_recent`,`tiddlywiki_list_tags`,`tiddlywiki_put`,`tiddlywiki_batch_put`,`tiddlywiki_rename`,`tiddlywiki_delete`,`tiddlywiki_git_sync`,`tiddlywiki_git_resolve`];function Oy(e){let t=[];for(let n of Dy)try{let r=e.inject(`tool.call.toolview`,()=>e.register({name:`tool.call.toolview`,id:`dsh-tiddlywiki-toolview-${n}`,key:n,order:20,label:`TiddlyWiki: ${n}`},Ey));r!==void 0&&t.push(r)}catch(e){console.error(`[dsh-tiddlywiki] register toolview ${n} failed:`,e)}return t}function ky(){let e=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`a`);if(n===null)return;let r=(n.getAttribute(`href`)??``).match(/^\/dsh-tiddlywiki\/tw\/#(.+)$/);if(r===null||r[1]===void 0)return;e.preventDefault(),e.stopPropagation();let i=r[1];try{i=decodeURIComponent(i)}catch{}ge(i)};return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}const Ay=[`slots`];function jy(e){try{u();let t=new d,n=[];try{let e=zv(),r=Wv();n.push(()=>e.dispose()),n.push(()=>r.dispose()),n.push(g(t)),n.push(xe(t)),n.push(Jv(t,e,r)),n.push(Ee)}catch(e){console.error(`[dsh-tiddlywiki] mount failed:`,e)}try{e.slots!==void 0&&n.push(...Oy(e.slots))}catch(e){console.error(`[dsh-tiddlywiki] tool views failed:`,e)}try{n.push(ky())}catch(e){console.error(`[dsh-tiddlywiki] wiki link interceptor failed:`,e)}try{let t=e.slots?.inject(`settings.section`,()=>e.slots?.register({name:`settings.section`,id:`dsh-tiddlywiki`,order:50,label:`TiddlyWiki 知识库`},iy));t!==void 0&&n.push(t)}catch(e){console.error(`[dsh-tiddlywiki] settings section failed:`,e)}e.effect?.(()=>()=>{for(let e of n.splice(0))e()},`dsh-tiddlywiki: client mount`)}catch(e){console.error(`[dsh-tiddlywiki] client half failed to start:`,e)}}exports.apply=jy,exports.inject=Ay,exports.name=`dsh-tiddlywiki/client`;
package/lib/client.js CHANGED
@@ -571,7 +571,7 @@ html[data-dsh-tw-active] .dshDesktopConversationSurface > :not([data-dsh-tw-view
571
571
  .dsh-tw-toolcard-row-tags { flex: none; font-size: 10px; color: color-mix(in srgb, var(--dsw-alias-label-primary, #222) 55%, transparent); }
572
572
  .dsh-tw-toolcard-row-meta { flex: none; font-size: 10px; color: color-mix(in srgb, var(--dsw-alias-label-primary, #222) 40%, transparent); }
573
573
  .dsh-tw-toolcard-tags-wrap { display: flex; flex-wrap: wrap; gap: 4px; }
574
- `,document.head.append(e))}var d=class{open=!1;listeners=new Set;isOpen(){return this.open}toggle(){this.set(!this.open)}openPanel(){this.set(!0)}closePanel(){this.set(!1)}set(e){if(this.open!==e){this.open=e;for(let t of[...this.listeners])t(e)}}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}};function f(){let e=document.querySelector(`[data-pane="sidebar"], [class*="sidebarCol"], .dshDesktopUpstreamSidebar, .dshDesktopSidebarSurface`);if(e!==null)return e.querySelector(`[class*="logoRow"]`)?.parentElement??e.firstElementChild}function p(e){let t=e.querySelector(`button[class*="newSession"]`);if(t!==null)return t;for(let t of e.children)if(t instanceof HTMLButtonElement&&!t.matches(`[data-dsh-tw-entry]`))return t;let n=e.querySelector(`button[aria-label="新建会话"], button[aria-label="New Session"], button[aria-label*="新会话"], button[aria-label*="new session" i]`);return n===null?Array.from(e.querySelectorAll(`button`)).find(e=>!e.matches(`[data-dsh-tw-entry]`)&&/新会话|新建会话|new session/i.test(e.textContent??``)):n}function m(e){let t=document.createElement(`button`);return t.type=`button`,t.dataset.dshTwEntry=``,t.className=`dsh-tw-entry`,t.setAttribute(`aria-label`,`TiddlyWiki 知识库`),t.innerHTML=`<span class="dsh-tw-entry-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 2.5h8a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1z"/><path d="M6 6h4M6 8.5h2.5"/></svg></span><span class="dsh-tw-entry-label">TiddlyWiki</span>`,t.addEventListener(`click`,()=>{e.toggle()}),t}function h(e,t){let n=p(e);if(n===void 0)return!1;if(t.parentElement!==e){let r=n.closest(`[class*="logoRow"]`),i=r!==null&&r.parentElement===e?r:n,a=Array.from(e.children).filter(e=>e instanceof HTMLElement&&e.matches(`[data-dsh-tw-entry], [data-dsh-atb-entry], [data-dsh-taskboard-entry], [data-dsh-ssh-entry]`)),o=a.length>0?a[0]??null:i.nextElementSibling??null;e.insertBefore(t,o)}return!0}function g(e){let t=m(e),n={attempts:0,found:!1,placed:!1},r=globalThis.location?.hostname;(r===`localhost`||r===`127.0.0.1`)&&(window.__twDebug=n);let i,a=!1,o=()=>{if(n.attempts++,i!==void 0&&!i.isConnected&&(c.disconnect(),i=void 0,a=!1),a){if(document.body.contains(t))return;c.disconnect(),i=void 0,a=!1}i??=f(),i!==void 0&&(n.found=p(i)!==void 0,a=h(i,t),n.placed=a,a&&c.observe(i,{childList:!0,subtree:!0}))},s=new MutationObserver(()=>{o()});s.observe(document.body,{childList:!0,subtree:!0});let c=new MutationObserver(()=>{if(i===void 0||!i.isConnected){a=!1,o();return}i.contains(t)||(a=h(i,t))}),l=setInterval(()=>{o()},2e3),u=()=>{e.isOpen()?t.dataset.active=`true`:delete t.dataset.active},d=e.subscribe(u);return u(),o(),()=>{clearInterval(l),s.disconnect(),c.disconnect(),d(),t.remove()}}const _=`$:/palettes/CupertinoDark`,v=`$:/palettes/Vanilla`,y=`data-ds-dark-theme`,b=`$:/palette`,x=new Set,S=new WeakSet;let C=``,w=!0,T=_;function ee(){try{let e=document.documentElement,t=document.body;if(t!==null&&t.hasAttribute(y))return!0;if(e!==null){let t=e.style.getPropertyValue(`color-scheme`).trim().toLowerCase();if(t===`dark`)return!0;if(t===`light`)return!1}}catch{}try{return window.matchMedia(`(prefers-color-scheme: dark)`).matches}catch{return!1}}function E(e){try{let t=e.wiki.getTiddlerText(b);return typeof t==`string`&&t.trim().length>0?t.trim():v}catch{return v}}function D(e){try{let t=e.wiki.getTiddler(E(e))?.fields;return t!==void 0&&t[`color-scheme`]===`dark`}catch{return!1}}function te(e){try{let t=e.syncer;if(t?.tiddlerInfo===void 0)return;let n=e.wiki.getChangeCount(b),r=t.tiddlerInfo[b];r===void 0?t.tiddlerInfo[b]={changeCount:n}:r.changeCount=n}catch{}}function ne(e){try{let t=e.syncer,n=t?.syncadaptor;if(t===void 0||n===void 0||S.has(t))return;let r=n.saveTiddler.bind(n);n.saveTiddler=(e,t)=>{if(w&&C.length>0&&e?.fields?.title===b&&e?.fields?.text===T){t(null,{},0);return}r(e,t)},S.add(t)}catch{}}function re(e,t){try{if(E(e)===t)return;e.wiki.setText(b,`text`,void 0,t),te(e)}catch{}}function ie(e,t){let n=E(e);if(t){if(D(e))return;n!==T&&(C=n),re(e,T)}else D(e)&&n===T&&C.length>0&&re(e,C)}function ae(e,t){try{let n=t.contentDocument?.documentElement;if(n==null)return;let r=D(e)?`dark`:`light`;n.style.getPropertyValue(`color-scheme`)!==r&&n.style.setProperty(`color-scheme`,r)}catch{}}function oe(e){let t=e.contentWindow?.$tw;t===void 0||t.wiki===void 0||(ne(t),w?ie(t,ee()):ie(t,!1),ae(t,e))}function se(e){let t=e.enabled!==!1,n=typeof e.darkPalette==`string`&&e.darkPalette.trim().length>0?e.darkPalette.trim():_,r=t!==w||n!==T;if(w=t,T=n,r)for(let e of[...x])e()}function ce(e){if(e===null)return()=>{};let t=()=>oe(e);x.add(t);let n=()=>t();e.addEventListener(`load`,n);let r=window.matchMedia(`(prefers-color-scheme: dark)`),i=()=>t();try{r.addEventListener(`change`,i)}catch{r.addListener?.(i)}let a;try{a=new MutationObserver(()=>t()),document.body!==null&&a.observe(document.body,{attributes:!0,attributeFilter:[y]}),document.documentElement!==null&&a.observe(document.documentElement,{attributes:!0,attributeFilter:[`style`]})}catch{a=void 0}let o=[150,600,1500,3e3].map(e=>window.setTimeout(t,e));return t(),()=>{x.delete(t),e.removeEventListener(`load`,n);for(let e of o)window.clearTimeout(e);try{r.removeEventListener(`change`,i)}catch{r.removeListener?.(i)}try{a?.disconnect()}catch{}}}const le=[`[class*="centerCol"]`,`[data-pane="conversation"]`,`.dshDesktopConversationSurface`],ue=`data-dsh-tw-active`,de=[`data-dsh-atb-active`,`data-dsh-taskboard-active`,`data-dsh-ssh-active`],fe=`dsh-panel-activate`,pe=`dsh-tiddlywiki`,me=`[data-dsh-panel-host]`,he=`dsh-tw-open-tiddler`;function ge(e){typeof document>`u`||typeof e!=`string`||e.length===0||document.dispatchEvent(new CustomEvent(he,{detail:{title:e}}))}function _e(){let e=document.querySelector(me);if(e===null)return 40;let t=parseInt(getComputedStyle(e).zIndex,10);return Number.isFinite(t)?Math.max(20,Math.min(40,t-1)):40}function ve(){for(let e of le){let t=document.querySelector(e);if(t!==null)return t}}async function ye(){try{let e=await fetch(`/dsh-tiddlywiki/status`,{signal:AbortSignal.timeout(8e3)});return e.ok?await e.json():null}catch{return null}}async function be(){try{return(await fetch(`/dsh-tiddlywiki/restart`,{method:`POST`,signal:AbortSignal.timeout(8e3)})).ok}catch{return!1}}function xe(e){let t,n,r,i,a,o,s=0,c,l=!1,u=null,d=()=>{let e=document.createElement(`div`);return e.dataset.dshTwView=``,e.className=`dsh-tw-view`,i=document.createElement(`div`),i.className=`dsh-tw-panel-frame-wrap`,i.style.cssText=`flex:1;min-height:0;display:flex;flex-direction:column`,r=document.createElement(`iframe`),r.className=`dsh-tw-panel-frame`,r.title=`TiddlyWiki`,r.hidden=!0,i.append(r),r.addEventListener(`load`,()=>{l=!0,v()}),c=ce(r),a=document.createElement(`div`),a.className=`dsh-tw-panel-error`,a.hidden=!0,e.append(i,a),e},f=()=>{if(t===void 0||n===void 0)return;let e=n.getBoundingClientRect();if(e.width===0&&e.height===0)return;let r=`${e.left}px`,i=`${e.top}px`,a=`${e.width}px`,o=`${e.height}px`;t.style.left!==r&&(t.style.left=r),t.style.top!==i&&(t.style.top=i),t.style.width!==a&&(t.style.width=a),t.style.height!==o&&(t.style.height=o)},p=()=>{t!==void 0&&(t.style.zIndex=String(_e()),document.querySelector(me)===null?delete t.dataset.sidebarHost:t.dataset.sidebarHost=`1`)},m=()=>{t===void 0&&(n=ve(),n!==void 0&&(t=d(),t.style.position=`fixed`,p(),document.body.append(t),f()))},h=e=>{if(r===void 0||a===void 0||i===void 0)return;r.hidden=!0,a.hidden=!1,a.textContent=``;let t=document.createElement(`div`);t.textContent=`TiddlyWiki 服务不可用`;let n=document.createElement(`code`);n.textContent=e;let o=document.createElement(`button`);o.type=`button`,o.textContent=`重试`,o.addEventListener(`click`,()=>{o.disabled=!0,o.textContent=`重启中…`,be().finally(()=>{b()})}),a.append(t,n,o)},g=()=>{if(r===void 0||a===void 0||i===void 0)return;r.hidden=!0,a.hidden=!1,a.textContent=``;let e=document.createElement(`div`);e.textContent=`TiddlyWiki 服务正在启动…`,a.append(e)},_=e=>{r===void 0||a===void 0||(a.hidden=!0,r.hidden=!1,r.dataset.loaded!==e&&(r.dataset.loaded=e,l=!1,r.src=e))},v=()=>{if(u===null||r===void 0||!l)return;let e=u;u=null;try{let t=r.contentWindow;if(t===null)throw Error(`iframe window unavailable`);if(t.location.hash===e)return;t.location.hash=e}catch{let t=r.src.split(`#`)[0];if(r.src===`${t}${e}`)return;r.src=`${t}${e}`}},y=t=>{let n=t.detail,r=typeof n?.title==`string`&&n.title.length>0?n.title:``;r.length!==0&&(u=`#${encodeURIComponent(r)}`,e.openPanel(),v())},b=async()=>{o!==void 0&&(window.clearTimeout(o),o=void 0);let e=await ye();if(e===null){h(`无法访问 /dsh-tiddlywiki/status`);return}if(e.status===`running`){s=0,se({enabled:e.ui?.followDshTheme!==!1,darkPalette:e.ui?.darkPalette}),typeof e.twProxy==`string`?_(new URL(e.twProxy,window.location.origin).href):typeof e.url==`string`?_(e.url):h(`服务未返回编辑器地址`);return}if(e.status===`starting`){g(),s<30&&(s++,o=window.setTimeout(()=>{b()},1500));return}s=0,h(e.error??`服务状态:${e.status}`)},x=()=>{if(e.isOpen()){for(let e of de)document.documentElement.removeAttribute(e);document.documentElement.setAttribute(ue,``),document.dispatchEvent(new CustomEvent(fe,{detail:pe})),b()}else document.documentElement.removeAttribute(ue),o!==void 0&&(window.clearTimeout(o),o=void 0),s=0},S=t=>{t.detail!==pe&&e.isOpen()&&e.closePanel()},C=t=>{if(!e.isOpen())return;let n=t.target;n!==null&&n.closest(`[data-dsh-tw-entry]`)===null&&n.closest(`[class*="sessionRow"], [class*="projectRow"], [class*="searchResultRow"], [class*="searchResultWorkspace"], [class*="newSession"]`)!==null&&e.closePanel()},w=new MutationObserver(()=>{m(),p()});w.observe(document.body,{childList:!0,subtree:!0});let T=new ResizeObserver(()=>f());T.observe(document.body);let ee=window.setInterval(f,2e3),E=()=>f();window.addEventListener(`resize`,E);let D=()=>f();window.addEventListener(`scroll`,D,!0),document.addEventListener(`click`,C,!0),document.addEventListener(fe,S);let te=e.subscribe(x);m(),x();let ne=()=>{r!==void 0&&!r.hidden&&(r.src=r.src)};return document.addEventListener(`dsh-tw-panel-reload`,ne),document.addEventListener(he,y),()=>{o!==void 0&&window.clearTimeout(o),window.clearInterval(ee),window.removeEventListener(`resize`,E),window.removeEventListener(`scroll`,D,!0),T.disconnect(),document.removeEventListener(`click`,C,!0),document.removeEventListener(fe,S),document.removeEventListener(`dsh-tw-panel-reload`,ne),document.removeEventListener(he,y),w.disconnect(),te(),c?.(),document.documentElement.removeAttribute(ue),t?.remove()}}function O(e){let t=document.querySelector(`.dsh-tw-toast`);t===null&&(t=document.createElement(`div`),t.className=`dsh-tw-toast`,document.body.append(t)),t.textContent=e,t.classList.add(`dsh-tw-toast-show`),clearTimeout(t.__twToastTimer),t.__twToastTimer=window.setTimeout(()=>{t?.classList.remove(`dsh-tw-toast-show`)},2500)}let k,Se,Ce,we;function Te(e,t){De(),!(k===void 0||Se===void 0)&&(Ce!==void 0&&(Ce.textContent=`TiddlyWiki 编辑器 · ${t}`),k.style.display=``,Se.src=e)}function Ee(){we?.(),we=void 0,k?.remove(),k=void 0,Se=void 0,Ce=void 0}function De(){if(k!==void 0&&Se!==void 0)return;k=document.createElement(`div`),k.className=`dsh-tw-editor-popup`,k.style.display=`none`;let e=document.createElement(`div`);e.className=`dsh-tw-editor-bar`,Ce=document.createElement(`span`),Ce.className=`dsh-tw-editor-title`,Ce.textContent=`TiddlyWiki 编辑器`;let t=document.createElement(`button`);t.type=`button`,t.className=`dsh-tw-editor-close`,t.textContent=`✕`,t.title=`关闭`,e.append(Ce,t),Se=document.createElement(`iframe`),Se.className=`dsh-tw-editor-frame`,Se.setAttribute(`sandbox`,`allow-scripts allow-same-origin allow-forms allow-popups`),Se.title=`TiddlyWiki 编辑器`,we=ce(Se);let n=document.createElement(`div`);n.className=`dsh-tw-editor-resize`,n.title=`拖拽调整大小`,k.append(e,Se,n),document.body.append(k),t.addEventListener(`click`,()=>{k!==void 0&&(k.style.display=`none`)}),e.addEventListener(`mousedown`,e=>{if(e.button!==0||k===void 0)return;e.preventDefault();let t=k.getBoundingClientRect(),n=e.clientX,r=e.clientY,i=t.left,a=t.top,o=e=>{k!==void 0&&(k.style.left=`${i+e.clientX-n}px`,k.style.top=`${a+e.clientY-r}px`,k.style.margin=`0`,k.style.right=`auto`,k.style.bottom=`auto`)},s=()=>{window.removeEventListener(`mousemove`,o),window.removeEventListener(`mouseup`,s)};window.addEventListener(`mousemove`,o),window.addEventListener(`mouseup`,s)}),n.addEventListener(`mousedown`,e=>{if(e.button!==0||k===void 0)return;e.preventDefault(),e.stopPropagation();let t=k.getBoundingClientRect(),n=e.clientX,r=e.clientY,i=t.width,a=t.height,o=e=>{k!==void 0&&(k.style.width=`${Math.max(360,i+e.clientX-n)}px`,k.style.height=`${Math.max(260,a+e.clientY-r)}px`,k.style.right=`auto`,k.style.bottom=`auto`)},s=()=>{window.removeEventListener(`mousemove`,o),window.removeEventListener(`mouseup`,s)};window.addEventListener(`mousemove`,o),window.addEventListener(`mouseup`,s)})}let Oe=[],ke=[];(()=>{let e=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5`.split(`,`).map(e=>e?parseInt(e,36):1);for(let t=0,n=0;t<e.length;t++)(t%2?ke:Oe).push(n+=e[t])})();function Ae(e){if(e<768)return!1;for(let t=0,n=Oe.length;;){let r=t+n>>1;if(e<Oe[r])n=r;else if(e>=ke[r])t=r+1;else return!0;if(t==n)return!1}}function je(e){return e>=127462&&e<=127487}const Me=8205;function Ne(e,t,n=!0,r=!0){return(n?Pe:Fe)(e,t,r)}function Pe(e,t,n){if(t==e.length)return t;t&&Le(e.charCodeAt(t))&&Re(e.charCodeAt(t-1))&&t--;let r=Ie(e,t);for(t+=ze(r);t<e.length;){let i=Ie(e,t);if(r==Me||i==Me||n&&Ae(i))t+=ze(i),r=i;else if(je(i)){let n=0,r=t-2;for(;r>=0&&je(Ie(e,r));)n++,r-=2;if(n%2==0)break;t+=2}else break}return t}function Fe(e,t,n){for(;t>1;){let r=Pe(e,t-2,n);if(r<t)return r;t--}return 0}function Ie(e,t){let n=e.charCodeAt(t);if(!Re(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return Le(r)?(n-55296<<10)+(r-56320)+65536:n}function Le(e){return e>=56320&&e<57344}function Re(e){return e>=55296&&e<56320}function ze(e){return e<65536?1:2}var A=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=Ye(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),Ve.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Ye(this,e,t);let n=[];return this.decompose(e,t,n,0),Ve.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new Ge(this),i=new Ge(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return!1;if(a+=r.value.length,r.done||a>=n)return!0}}iter(e=1){return new Ge(this,e)}iterRange(e,t=this.length){return new Ke(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new qe(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new Be(t):Ve.from(Be.split(t,[]))}},Be=class e extends A{constructor(e,t=He(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new Je(r,o,n,a);r=o+1,n++}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(We(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=Ue(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else{let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)))}}else r.push(a)}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=Ye(this,t,n);let i=Ue(this.text,Ue(r.text,We(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):Ve.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=`
574
+ `,document.head.append(e))}var d=class{open=!1;listeners=new Set;isOpen(){return this.open}toggle(){this.set(!this.open)}openPanel(){this.set(!0)}closePanel(){this.set(!1)}set(e){if(this.open!==e){this.open=e;for(let t of[...this.listeners])t(e)}}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}};function f(){let e=document.querySelector(`[data-pane="sidebar"], [class*="sidebarCol"], .dshDesktopUpstreamSidebar, .dshDesktopSidebarSurface`);if(e!==null)return e.querySelector(`[class*="logoRow"]`)?.parentElement??e.firstElementChild}function p(e){let t=e.querySelector(`button[class*="newSession"]`);if(t!==null)return t;for(let t of e.children)if(t instanceof HTMLButtonElement&&!t.matches(`[data-dsh-tw-entry]`))return t;let n=e.querySelector(`button[aria-label="新建会话"], button[aria-label="New Session"], button[aria-label*="新会话"], button[aria-label*="new session" i]`);return n===null?Array.from(e.querySelectorAll(`button`)).find(e=>!e.matches(`[data-dsh-tw-entry]`)&&/新会话|新建会话|new session/i.test(e.textContent??``)):n}function m(e){let t=document.createElement(`button`);return t.type=`button`,t.dataset.dshTwEntry=``,t.className=`dsh-tw-entry`,t.setAttribute(`aria-label`,`TiddlyWiki 知识库`),t.innerHTML=`<span class="dsh-tw-entry-icon"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 2.5h8a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1z"/><path d="M6 6h4M6 8.5h2.5"/></svg></span><span class="dsh-tw-entry-label">TiddlyWiki</span>`,t.addEventListener(`click`,()=>{e.toggle()}),t}function h(e,t){let n=p(e);if(n===void 0)return!1;if(t.parentElement!==e){let r=n.closest(`[class*="logoRow"]`),i=r!==null&&r.parentElement===e?r:n,a=Array.from(e.children).filter(e=>e instanceof HTMLElement&&e.matches(`[data-dsh-tw-entry], [data-dsh-atb-entry], [data-dsh-taskboard-entry], [data-dsh-ssh-entry]`)),o=a.length>0?a[0]??null:i.nextElementSibling??null;e.insertBefore(t,o)}return!0}function g(e){let t=m(e),n={attempts:0,found:!1,placed:!1},r=globalThis.location?.hostname;(r===`localhost`||r===`127.0.0.1`)&&(window.__twDebug=n);let i,a=!1,o=()=>{if(n.attempts++,i!==void 0&&!i.isConnected&&(c.disconnect(),i=void 0,a=!1),a){if(document.body.contains(t))return;c.disconnect(),i=void 0,a=!1}i??=f(),i!==void 0&&(n.found=p(i)!==void 0,a=h(i,t),n.placed=a,a&&c.observe(i,{childList:!0,subtree:!0}))},s=new MutationObserver(()=>{o()});s.observe(document.body,{childList:!0,subtree:!0});let c=new MutationObserver(()=>{if(i===void 0||!i.isConnected){a=!1,o();return}i.contains(t)||(a=h(i,t))}),l=setInterval(()=>{o()},2e3),u=()=>{e.isOpen()?t.dataset.active=`true`:delete t.dataset.active},d=e.subscribe(u);return u(),o(),()=>{clearInterval(l),s.disconnect(),c.disconnect(),d(),t.remove()}}const _=`$:/palettes/CupertinoDark`,v=`$:/palettes/Vanilla`,y=`data-ds-dark-theme`,b=`$:/palette`,x=new Set,S=new WeakSet;let C=``,w=!0,T=_;function ee(){try{let e=document.documentElement,t=document.body;if(t!==null&&t.hasAttribute(y))return!0;if(e!==null){let t=e.style.getPropertyValue(`color-scheme`).trim().toLowerCase();if(t===`dark`)return!0;if(t===`light`)return!1}}catch{}try{return window.matchMedia(`(prefers-color-scheme: dark)`).matches}catch{return!1}}function E(e){try{let t=e.wiki.getTiddlerText(b);return typeof t==`string`&&t.trim().length>0?t.trim():v}catch{return v}}function D(e){try{let t=e.wiki.getTiddler(E(e))?.fields;return t!==void 0&&t[`color-scheme`]===`dark`}catch{return!1}}function te(e){try{let t=e.syncer;if(t?.tiddlerInfo===void 0)return;let n=e.wiki.getChangeCount(b),r=t.tiddlerInfo[b];r===void 0?t.tiddlerInfo[b]={changeCount:n}:r.changeCount=n}catch{}}function ne(e){try{let t=e.syncer,n=t?.syncadaptor;if(t===void 0||n===void 0||S.has(t))return;let r=n.saveTiddler.bind(n);n.saveTiddler=(e,t)=>{if(w&&C.length>0&&e?.fields?.title===b&&e?.fields?.text===T){t(null,{},0);return}r(e,t)},S.add(t)}catch{}}function re(e,t){try{if(E(e)===t)return;e.wiki.setText(b,`text`,void 0,t),te(e)}catch{}}function ie(e,t){let n=E(e);if(t){if(D(e))return;n!==T&&(C=n),re(e,T)}else D(e)&&n===T&&C.length>0&&re(e,C)}function ae(e,t){try{let n=t.contentDocument?.documentElement;if(n==null)return;let r=D(e)?`dark`:`light`;n.style.getPropertyValue(`color-scheme`)!==r&&n.style.setProperty(`color-scheme`,r)}catch{}}function oe(e){let t=e.contentWindow?.$tw;t===void 0||t.wiki===void 0||(ne(t),w?ie(t,ee()):ie(t,!1),ae(t,e))}function se(e){let t=e.enabled!==!1,n=typeof e.darkPalette==`string`&&e.darkPalette.trim().length>0?e.darkPalette.trim():_,r=t!==w||n!==T;if(w=t,T=n,r)for(let e of[...x])e()}function ce(e){if(e===null)return()=>{};let t=()=>oe(e);x.add(t);let n=()=>t();e.addEventListener(`load`,n);let r=window.matchMedia(`(prefers-color-scheme: dark)`),i=()=>t();try{r.addEventListener(`change`,i)}catch{r.addListener?.(i)}let a;try{a=new MutationObserver(()=>t()),document.body!==null&&a.observe(document.body,{attributes:!0,attributeFilter:[y]}),document.documentElement!==null&&a.observe(document.documentElement,{attributes:!0,attributeFilter:[`style`]})}catch{a=void 0}let o=[150,600,1500,3e3].map(e=>window.setTimeout(t,e));return t(),()=>{x.delete(t),e.removeEventListener(`load`,n);for(let e of o)window.clearTimeout(e);try{r.removeEventListener(`change`,i)}catch{r.removeListener?.(i)}try{a?.disconnect()}catch{}}}const le=[`[class*="centerCol"]`,`[data-pane="conversation"]`,`.dshDesktopConversationSurface`],ue=`data-dsh-tw-active`,de=[`data-dsh-atb-active`,`data-dsh-taskboard-active`,`data-dsh-ssh-active`],fe=`dsh-panel-activate`,pe=`dsh-tiddlywiki`,me=`[data-dsh-panel-host]`,he=`dsh-tw-open-tiddler`;function ge(e){typeof document>`u`||typeof e!=`string`||e.length===0||document.dispatchEvent(new CustomEvent(he,{detail:{title:e}}))}function _e(){let e=document.querySelector(me);if(e===null)return 40;let t=parseInt(getComputedStyle(e).zIndex,10);return Number.isFinite(t)?Math.max(20,Math.min(40,t-1)):40}function ve(){for(let e of le){let t=document.querySelector(e);if(t!==null)return t}}async function ye(){try{let e=await fetch(`/dsh-tiddlywiki/status`,{signal:AbortSignal.timeout(8e3)});return e.ok?await e.json():null}catch{return null}}async function be(){try{return(await fetch(`/dsh-tiddlywiki/restart`,{method:`POST`,signal:AbortSignal.timeout(8e3)})).ok}catch{return!1}}function xe(e){let t,n,r,i,a,o,s=0,c,l=!1,u=null,d=()=>{let e=document.createElement(`div`);return e.dataset.dshTwView=``,e.className=`dsh-tw-view`,i=document.createElement(`div`),i.className=`dsh-tw-panel-frame-wrap`,i.style.cssText=`flex:1;min-height:0;display:flex;flex-direction:column`,r=document.createElement(`iframe`),r.className=`dsh-tw-panel-frame`,r.title=`TiddlyWiki`,r.hidden=!0,i.append(r),r.addEventListener(`load`,()=>{l=!0,v()}),c=ce(r),a=document.createElement(`div`),a.className=`dsh-tw-panel-error`,a.hidden=!0,e.append(i,a),e},f=()=>{if(t===void 0||n===void 0)return;let e=n.getBoundingClientRect();if(e.width===0&&e.height===0)return;let r=`${e.left}px`,i=`${e.top}px`,a=`${e.width}px`,o=`${e.height}px`;t.style.left!==r&&(t.style.left=r),t.style.top!==i&&(t.style.top=i),t.style.width!==a&&(t.style.width=a),t.style.height!==o&&(t.style.height=o)},p=()=>{t!==void 0&&(t.style.zIndex=String(_e()),document.querySelector(me)===null?delete t.dataset.sidebarHost:t.dataset.sidebarHost=`1`)},m=()=>{t===void 0&&(n=ve(),n!==void 0&&(t=d(),t.style.position=`fixed`,p(),document.body.append(t),f()))},h=e=>{if(r===void 0||a===void 0||i===void 0)return;r.hidden=!0,a.hidden=!1,a.textContent=``;let t=document.createElement(`div`);t.textContent=`TiddlyWiki 服务不可用`;let n=document.createElement(`code`);n.textContent=e;let o=document.createElement(`button`);o.type=`button`,o.textContent=`重试`,o.addEventListener(`click`,()=>{o.disabled=!0,o.textContent=`重启中…`,be().finally(()=>{x()})}),a.append(t,n,o)},g=()=>{if(r===void 0||a===void 0||i===void 0)return;r.hidden=!0,a.hidden=!1,a.textContent=``;let e=document.createElement(`div`);e.textContent=`TiddlyWiki 服务正在启动…`,a.append(e)},_=e=>{r===void 0||a===void 0||(a.hidden=!0,r.hidden=!1,r.dataset.loaded!==e&&(r.dataset.loaded=e,l=!1,r.src=e))},v=()=>{if(u===null||r===void 0||!l)return;let e=u,t=r.contentWindow;if(t===null){y(e);return}let n=r=>{if(u!==e)return;let i=t;if(typeof i.$tw!=`object`||i.$tw===null){if(r<40){window.setTimeout(()=>n(r+1),150);return}y(e);return}u=null;try{if(t.location.hash===e)return;t.location.hash=e}catch{y(e)}};n(0)},y=e=>{if(r===void 0)return;u===e&&(u=null);let t=r.src.split(`#`)[0];r.src!==`${t}${e}`&&(r.src=`${t}${e}`)},b=t=>{let n=t.detail,r=typeof n?.title==`string`&&n.title.length>0?n.title:``;r.length!==0&&(u=`#${encodeURIComponent(r)}`,e.openPanel(),v())},x=async()=>{o!==void 0&&(window.clearTimeout(o),o=void 0);let e=await ye();if(e===null){h(`无法访问 /dsh-tiddlywiki/status`);return}if(e.status===`running`){s=0,se({enabled:e.ui?.followDshTheme!==!1,darkPalette:e.ui?.darkPalette}),typeof e.twProxy==`string`?_(new URL(e.twProxy,window.location.origin).href):typeof e.url==`string`?_(e.url):h(`服务未返回编辑器地址`);return}if(e.status===`starting`){g(),s<30&&(s++,o=window.setTimeout(()=>{x()},1500));return}s=0,h(e.error??`服务状态:${e.status}`)},S=()=>{if(e.isOpen()){for(let e of de)document.documentElement.removeAttribute(e);document.documentElement.setAttribute(ue,``),document.dispatchEvent(new CustomEvent(fe,{detail:pe})),x()}else document.documentElement.removeAttribute(ue),o!==void 0&&(window.clearTimeout(o),o=void 0),s=0},C=t=>{t.detail!==pe&&e.isOpen()&&e.closePanel()},w=t=>{if(!e.isOpen())return;let n=t.target;n!==null&&n.closest(`[data-dsh-tw-entry]`)===null&&n.closest(`[class*="sessionRow"], [class*="projectRow"], [class*="searchResultRow"], [class*="searchResultWorkspace"], [class*="newSession"]`)!==null&&e.closePanel()},T=new MutationObserver(()=>{m(),p()});T.observe(document.body,{childList:!0,subtree:!0});let ee=new ResizeObserver(()=>f());ee.observe(document.body);let E=window.setInterval(f,2e3),D=()=>f();window.addEventListener(`resize`,D);let te=()=>f();window.addEventListener(`scroll`,te,!0),document.addEventListener(`click`,w,!0),document.addEventListener(fe,C);let ne=e.subscribe(S);m(),S();let re=()=>{r!==void 0&&!r.hidden&&(r.src=r.src)};return document.addEventListener(`dsh-tw-panel-reload`,re),document.addEventListener(he,b),()=>{o!==void 0&&window.clearTimeout(o),window.clearInterval(E),window.removeEventListener(`resize`,D),window.removeEventListener(`scroll`,te,!0),ee.disconnect(),document.removeEventListener(`click`,w,!0),document.removeEventListener(fe,C),document.removeEventListener(`dsh-tw-panel-reload`,re),document.removeEventListener(he,b),T.disconnect(),ne(),c?.(),document.documentElement.removeAttribute(ue),t?.remove()}}function O(e){let t=document.querySelector(`.dsh-tw-toast`);t===null&&(t=document.createElement(`div`),t.className=`dsh-tw-toast`,document.body.append(t)),t.textContent=e,t.classList.add(`dsh-tw-toast-show`),clearTimeout(t.__twToastTimer),t.__twToastTimer=window.setTimeout(()=>{t?.classList.remove(`dsh-tw-toast-show`)},2500)}let k,Se,Ce,we;function Te(e,t){De(),!(k===void 0||Se===void 0)&&(Ce!==void 0&&(Ce.textContent=`TiddlyWiki 编辑器 · ${t}`),k.style.display=``,Se.src=e)}function Ee(){we?.(),we=void 0,k?.remove(),k=void 0,Se=void 0,Ce=void 0}function De(){if(k!==void 0&&Se!==void 0)return;k=document.createElement(`div`),k.className=`dsh-tw-editor-popup`,k.style.display=`none`;let e=document.createElement(`div`);e.className=`dsh-tw-editor-bar`,Ce=document.createElement(`span`),Ce.className=`dsh-tw-editor-title`,Ce.textContent=`TiddlyWiki 编辑器`;let t=document.createElement(`button`);t.type=`button`,t.className=`dsh-tw-editor-close`,t.textContent=`✕`,t.title=`关闭`,e.append(Ce,t),Se=document.createElement(`iframe`),Se.className=`dsh-tw-editor-frame`,Se.setAttribute(`sandbox`,`allow-scripts allow-same-origin allow-forms allow-popups`),Se.title=`TiddlyWiki 编辑器`,we=ce(Se);let n=document.createElement(`div`);n.className=`dsh-tw-editor-resize`,n.title=`拖拽调整大小`,k.append(e,Se,n),document.body.append(k),t.addEventListener(`click`,()=>{k!==void 0&&(k.style.display=`none`)}),e.addEventListener(`mousedown`,e=>{if(e.button!==0||k===void 0)return;e.preventDefault();let t=k.getBoundingClientRect(),n=e.clientX,r=e.clientY,i=t.left,a=t.top,o=e=>{k!==void 0&&(k.style.left=`${i+e.clientX-n}px`,k.style.top=`${a+e.clientY-r}px`,k.style.margin=`0`,k.style.right=`auto`,k.style.bottom=`auto`)},s=()=>{window.removeEventListener(`mousemove`,o),window.removeEventListener(`mouseup`,s)};window.addEventListener(`mousemove`,o),window.addEventListener(`mouseup`,s)}),n.addEventListener(`mousedown`,e=>{if(e.button!==0||k===void 0)return;e.preventDefault(),e.stopPropagation();let t=k.getBoundingClientRect(),n=e.clientX,r=e.clientY,i=t.width,a=t.height,o=e=>{k!==void 0&&(k.style.width=`${Math.max(360,i+e.clientX-n)}px`,k.style.height=`${Math.max(260,a+e.clientY-r)}px`,k.style.right=`auto`,k.style.bottom=`auto`)},s=()=>{window.removeEventListener(`mousemove`,o),window.removeEventListener(`mouseup`,s)};window.addEventListener(`mousemove`,o),window.addEventListener(`mouseup`,s)})}let Oe=[],ke=[];(()=>{let e=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5`.split(`,`).map(e=>e?parseInt(e,36):1);for(let t=0,n=0;t<e.length;t++)(t%2?ke:Oe).push(n+=e[t])})();function Ae(e){if(e<768)return!1;for(let t=0,n=Oe.length;;){let r=t+n>>1;if(e<Oe[r])n=r;else if(e>=ke[r])t=r+1;else return!0;if(t==n)return!1}}function je(e){return e>=127462&&e<=127487}const Me=8205;function Ne(e,t,n=!0,r=!0){return(n?Pe:Fe)(e,t,r)}function Pe(e,t,n){if(t==e.length)return t;t&&Le(e.charCodeAt(t))&&Re(e.charCodeAt(t-1))&&t--;let r=Ie(e,t);for(t+=ze(r);t<e.length;){let i=Ie(e,t);if(r==Me||i==Me||n&&Ae(i))t+=ze(i),r=i;else if(je(i)){let n=0,r=t-2;for(;r>=0&&je(Ie(e,r));)n++,r-=2;if(n%2==0)break;t+=2}else break}return t}function Fe(e,t,n){for(;t>1;){let r=Pe(e,t-2,n);if(r<t)return r;t--}return 0}function Ie(e,t){let n=e.charCodeAt(t);if(!Re(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return Le(r)?(n-55296<<10)+(r-56320)+65536:n}function Le(e){return e>=56320&&e<57344}function Re(e){return e>=55296&&e<56320}function ze(e){return e<65536?1:2}var A=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=Ye(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),Ve.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Ye(this,e,t);let n=[];return this.decompose(e,t,n,0),Ve.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new Ge(this),i=new Ge(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return!1;if(a+=r.value.length,r.done||a>=n)return!0}}iter(e=1){return new Ge(this,e)}iterRange(e,t=this.length){return new Ke(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new qe(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new Be(t):Ve.from(Be.split(t,[]))}},Be=class e extends A{constructor(e,t=He(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new Je(r,o,n,a);r=o+1,n++}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(We(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=Ue(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else{let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)))}}else r.push(a)}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=Ye(this,t,n);let i=Ue(this.text,Ue(r.text,We(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):Ve.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=`
575
575
  `){[e,t]=Ye(this,e,t);let r=``;for(let i=0,a=0;i<=t&&a<this.text.length;a++){let o=this.text[a],s=i+o.length;i>e&&a&&(r+=n),e<s&&t>i&&(r+=o.slice(Math.max(0,e-i),t-i)),i=s+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(t,n){let r=[],i=-1;for(let a of t)r.push(a),i+=a.length+1,r.length==32&&(n.push(new e(r,i)),r=[],i=-1);return i>-1&&n.push(new e(r,i)),n}},Ve=class e extends A{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let t of e)this.lines+=t.lines}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.children[i],o=r+a.length,s=n+a.lines-1;if((t?s:o)>=e)return a.lineInner(e,t,n,r);r=o+1,n=s+1}}decompose(e,t,n,r){for(let i=0,a=0;a<=t&&i<this.children.length;i++){let o=this.children[i],s=a+o.length;if(e<=s&&t>=a){let i=r&(a<=e|(s>=t?2:0));a>=e&&s<=t&&!i?n.push(o):o.decompose(e-a,t-a,n,i)}a=s+1}}replace(t,n,r){if([t,n]=Ye(this,t,n),r.lines<this.lines)for(let i=0,a=0;i<this.children.length;i++){let o=this.children[i],s=a+o.length;if(t>=a&&n<=s){let c=o.replace(t-a,n-a,r),l=this.lines-o.lines+c.lines;if(c.lines<l>>4&&c.lines>l>>6){let a=this.children.slice();return a[i]=c,new e(a,this.length-(n-t)+r.length)}return super.replace(a,s,c)}a=s+1}return super.replace(t,n,r)}sliceString(e,t=this.length,n=`
576
576
  `){[e,t]=Ye(this,e,t);let r=``;for(let i=0,a=0;i<this.children.length&&a<=t;i++){let o=this.children[i],s=a+o.length;a>e&&i&&(r+=n),e<s&&t>a&&(r+=o.sliceString(e-a,t-a,n)),a=s+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(t,n){if(!(t instanceof e))return 0;let r=0,[i,a,o,s]=n>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;i+=n,a+=n){if(i==o||a==s)return r;let e=this.children[i],c=t.children[a];if(e!=c)return r+e.scanIdentical(c,n);r+=e.length+1}}static from(t,n=t.reduce((e,t)=>e+t.length+1,-1)){let r=0;for(let e of t)r+=e.lines;if(r<32){let e=[];for(let n of t)n.flatten(e);return new Be(e,n)}let i=Math.max(32,r>>5),a=i<<1,o=i>>1,s=[],c=0,l=-1,u=[];function d(t){let n;if(t.lines>a&&t instanceof e)for(let e of t.children)d(e);else t.lines>o&&(c>o||!c)?(f(),s.push(t)):t instanceof Be&&c&&(n=u[u.length-1])instanceof Be&&t.lines+n.lines<=32?(c+=t.lines,l+=t.length+1,u[u.length-1]=new Be(n.text.concat(t.text),n.length+1+t.length)):(c+t.lines>i&&f(),c+=t.lines,l+=t.length+1,u.push(t))}function f(){c!=0&&(s.push(u.length==1?u[0]:e.from(u,l)),l=-1,c=u.length=0)}for(let e of t)d(e);return f(),s.length==1?s[0]:new e(s,n)}};A.empty=new Be([``],0);function He(e){let t=-1;for(let n of e)t+=n.length+1;return t}function Ue(e,t,n=0,r=1e9){for(let i=0,a=0,o=!0;a<e.length&&i<=r;a++){let s=e[a],c=i+s.length;c>=n&&(c>r&&(s=s.slice(0,r-i)),i<n&&(s=s.slice(n-i)),o?(t[t.length-1]+=s,o=!1):t.push(s)),i=c+1}return t}function We(e,t,n){return Ue(e,[``],t,n)}var Ge=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value=``,this.nodes=[e],this.offsets=[t>0?1:(e instanceof Be?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,r=this.nodes[n],i=this.offsets[n],a=i>>1,o=r instanceof Be?r.text.length:r.children.length;if(a==(t>0?o:0)){if(n==0)return this.done=!0,this.value=``,this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=`
577
577
  `,this;e--}else if(r instanceof Be){let i=r.text[a+(t<0?-1:0)];if(this.offsets[n]+=t,i.length>Math.max(0,e))return this.value=e==0?i:t>0?i.slice(e):i.slice(0,i.length-e),this;e-=i.length}else{let i=r.children[a+(t<0?-1:0)];e>i.length?(e-=i.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(i),this.offsets.push(t>0?1:(i instanceof Be?i.text.length:i.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Ke=class{constructor(e,t,n){this.value=``,this.done=!1,this.cursor=new Ge(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value=``,this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=n?r:t<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=``}},qe=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value=``,this.done=!1}next(e=0){let{done:t,lineBreak:n,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value=``,this.afterBreak=!1):t?(this.done=!0,this.value=``):n?this.afterBreak?this.value=``:(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<`u`&&(A.prototype[Symbol.iterator]=function(){return this.iter()},Ge.prototype[Symbol.iterator]=Ke.prototype[Symbol.iterator]=qe.prototype[Symbol.iterator]=function(){return this});var Je=class{constructor(e,t,n,r){this.from=e,this.to=t,this.number=n,this.text=r}get length(){return this.to-this.from}};function Ye(e,t,n){return t=Math.max(0,Math.min(e.length,t)),[t,Math.max(t,Math.min(e.length,n))]}function Xe(e,t,n=!0,r=!0){return Ne(e,t,n,r)}function Ze(e){return e>=56320&&e<57344}function Qe(e){return e>=55296&&e<56320}function $e(e,t){let n=e.charCodeAt(t);if(!Qe(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return Ze(r)?(n-55296<<10)+(r-56320)+65536:n}function et(e){return e<65536?1:2}const tt=/\r\n?|\n/;var nt=(function(e){return e[e.Simple=0]=`Simple`,e[e.TrackDel=1]=`TrackDel`,e[e.TrackBefore=2]=`TrackBefore`,e[e.TrackAfter=3]=`TrackAfter`,e})(nt||={}),rt=class e{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t+1];e+=n<0?this.sections[t]:n}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,n=0,r=0;t<this.sections.length;){let i=this.sections[t++],a=this.sections[t++];a<0?(e(n,r,i),r+=i):r+=a,n+=i}}iterChangedRanges(e,t=!1){st(this,e,t)}get invertedDesc(){let t=[];for(let e=0;e<this.sections.length;){let n=this.sections[e++],r=this.sections[e++];r<0?t.push(n,r):t.push(r,n)}return new e(t)}composeDesc(e){return this.empty?e:e.empty?this:lt(this,e)}mapDesc(e,t=!1){return e.empty?this:ct(this,e,t)}mapPos(e,t=-1,n=nt.Simple){let r=0,i=0;for(let a=0;a<this.sections.length;){let o=this.sections[a++],s=this.sections[a++],c=r+o;if(s<0){if(c>e)return i+(e-r);i+=o}else{if(n!=nt.Simple&&c>=e&&(n==nt.TrackDel&&r<e&&c>e||n==nt.TrackBefore&&r<e||n==nt.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!o)return e==r||t<0?i:i+s;i+=s}r=c}if(e>r)throw RangeError(`Position ${e} is out of range for changeset of length ${r}`);return i}touchesRange(e,t=e){for(let n=0,r=0;n<this.sections.length&&r<=t;){let i=this.sections[n++],a=this.sections[n++],o=r+i;if(a>=0&&r<=t&&o>=e)return r<e&&o>t?`cover`:!0;r=o}return!1}toString(){let e=``;for(let t=0;t<this.sections.length;){let n=this.sections[t++],r=this.sections[t++];e+=(e?` `:``)+n+(r>=0?`:`+r:``)}return e}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!=`number`))throw RangeError(`Invalid JSON representation of ChangeDesc`);return new e(t)}static create(t){return new e(t)}},it=class e extends rt{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw RangeError(`Applying change set to a document with the wrong length`);return st(this,(t,n,r,i,a)=>e=e.replace(r,r+(n-t),a),!1),e}mapDesc(e,t=!1){return ct(this,e,t,!0)}invert(t){let n=this.sections.slice(),r=[];for(let e=0,i=0;e<n.length;e+=2){let a=n[e],o=n[e+1];if(o>=0){n[e]=o,n[e+1]=a;let s=e>>1;for(;r.length<s;)r.push(A.empty);r.push(a?t.slice(i,i+a):A.empty)}i+=a}return new e(n,r)}compose(e){return this.empty?e:e.empty?this:lt(this,e,!0)}map(e,t=!1){return e.empty?this:ct(this,e,t,!0)}iterChanges(e,t=!1){st(this,e,t)}get desc(){return rt.create(this.sections)}filter(t){let n=[],r=[],i=[],a=new ut(this);done:for(let e=0,o=0;;){let s=e==t.length?1e9:t[e++];for(;o<s||o==s&&a.len==0;){if(a.done)break done;let e=Math.min(a.len,s-o);at(i,e,-1);let t=a.ins==-1?-1:a.off==0?a.ins:0;at(n,e,t),t>0&&ot(r,n,a.text),a.forward(e),o+=e}let c=t[e++];for(;o<c;){if(a.done)break done;let e=Math.min(a.len,c-o);at(n,e,-1),at(i,e,a.ins==-1?-1:a.off==0?a.ins:0),a.forward(e),o+=e}}return{changes:new e(n,r),filtered:rt.create(i)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t],r=this.sections[t+1];r<0?e.push(n):r==0?e.push([n]):e.push([n].concat(this.inserted[t>>1].toJSON()))}return e}static of(t,n,r){let i=[],a=[],o=0,s=null;function c(t=!1){if(!t&&!i.length)return;o<n&&at(i,n-o,-1);let r=new e(i,a);s=s?s.compose(r.map(s)):r,i=[],a=[],o=0}function l(t){if(Array.isArray(t))for(let e of t)l(e);else if(t instanceof e){if(t.length!=n)throw RangeError(`Mismatched change set length (got ${t.length}, expected ${n})`);c(),s=s?s.compose(t.map(s)):t}else{let{from:e,to:s=e,insert:l}=t;if(e>s||e<0||s>n)throw RangeError(`Invalid change range ${e} to ${s} (in doc of length ${n})`);let u=l?typeof l==`string`?A.of(l.split(r||tt)):l:A.empty,d=u.length;if(e==s&&d==0)return;e<o&&c(),e>o&&at(i,e-o,-1),at(i,s-e,d),ot(a,i,u),o=s}}return l(t),c(!s),s}static empty(t){return new e(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw RangeError(`Invalid JSON representation of ChangeSet`);let n=[],r=[];for(let e=0;e<t.length;e++){let i=t[e];if(typeof i==`number`)n.push(i,-1);else if(!Array.isArray(i)||typeof i[0]!=`number`||i.some((e,t)=>t&&typeof e!=`string`))throw RangeError(`Invalid JSON representation of ChangeSet`);else if(i.length==1)n.push(i[0],0);else{for(;r.length<e;)r.push(A.empty);r[e]=A.of(i.slice(1)),n.push(i[0],r[e].length)}}return new e(n,r)}static createSet(t,n){return new e(t,n)}};function at(e,t,n,r=!1){if(t==0&&n<=0)return;let i=e.length-2;i>=0&&n<=0&&n==e[i+1]?e[i]+=t:i>=0&&t==0&&e[i]==0?e[i+1]+=n:r?(e[i]+=t,e[i+1]+=n):e.push(t,n)}function ot(e,t,n){if(n.length==0)return;let r=t.length-2>>1;if(r<e.length)e[e.length-1]=e[e.length-1].append(n);else{for(;e.length<r;)e.push(A.empty);e.push(n)}}function st(e,t,n){let r=e.inserted;for(let i=0,a=0,o=0;o<e.sections.length;){let s=e.sections[o++],c=e.sections[o++];if(c<0)i+=s,a+=s;else{let l=i,u=a,d=A.empty;for(;l+=s,u+=c,c&&r&&(d=d.append(r[o-2>>1])),!(n||o==e.sections.length||e.sections[o+1]<0);)s=e.sections[o++],c=e.sections[o++];t(i,l,a,u,d),i=l,a=u}}}function ct(e,t,n,r=!1){let i=[],a=r?[]:null,o=new ut(e),s=new ut(t);for(let e=-1;;)if(o.done&&s.len||s.done&&o.len)throw Error(`Mismatched change set lengths`);else if(o.ins==-1&&s.ins==-1){let e=Math.min(o.len,s.len);at(i,e,-1),o.forward(e),s.forward(e)}else if(s.ins>=0&&(o.ins<0||e==o.i||o.off==0&&(s.len<o.len||s.len==o.len&&!n))){let t=s.len;for(at(i,s.ins,-1);t;){let n=Math.min(o.len,t);o.ins>=0&&e<o.i&&o.len<=n&&(at(i,0,o.ins),a&&ot(a,i,o.text),e=o.i),o.forward(n),t-=n}s.next()}else if(o.ins>=0){let t=0,n=o.len;for(;n;)if(s.ins==-1){let e=Math.min(n,s.len);t+=e,n-=e,s.forward(e)}else if(s.ins==0&&s.len<n)n-=s.len,s.next();else break;at(i,t,e<o.i?o.ins:0),a&&e<o.i&&ot(a,i,o.text),e=o.i,o.forward(o.len-n)}else if(o.done&&s.done)return a?it.createSet(i,a):rt.create(i);else throw Error(`Mismatched change set lengths`)}function lt(e,t,n=!1){let r=[],i=n?[]:null,a=new ut(e),o=new ut(t);for(let e=!1;;)if(a.done&&o.done)return i?it.createSet(r,i):rt.create(r);else if(a.ins==0)at(r,a.len,0,e),a.next();else if(o.len==0&&!o.done)at(r,0,o.ins,e),i&&ot(i,r,o.text),o.next();else if(a.done||o.done)throw Error(`Mismatched change set lengths`);else{let t=Math.min(a.len2,o.len),n=r.length;if(a.ins==-1){let n=o.ins==-1?-1:o.off?0:o.ins;at(r,t,n,e),i&&n&&ot(i,r,o.text)}else o.ins==-1?(at(r,a.off?0:a.len,t,e),i&&ot(i,r,a.textBit(t))):(at(r,a.off?0:a.len,o.off?0:o.ins,e),i&&!o.off&&ot(i,r,o.text));e=(a.ins>t||o.ins>=0&&o.len>t)&&(e||r.length>n),a.forward2(t),o.forward(t)}}var ut=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?A.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?A.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},dt=class e{constructor(e,t,n,r){this.from=e,this.to=t,this.flags=n,this.goalColumn=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(t,n=-1){let r,i;return this.empty?r=i=t.mapPos(this.from,n):(r=t.mapPos(this.from,1),i=t.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new e(r,i,this.flags,this.goalColumn)}extend(e,t=e,n=0){if(e<=this.anchor&&t>=this.anchor)return j.range(e,t,void 0,void 0,n);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return j.range(this.anchor,r,void 0,void 0,n)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!=`number`||typeof e.head!=`number`)throw RangeError(`Invalid JSON representation for SelectionRange`);return j.range(e.anchor,e.head)}static create(t,n,r,i){return new e(t,n,r,i)}},j=class e{constructor(e,t){this.ranges=e,this.mainIndex=t}map(t,n=-1){return t.empty?this:e.create(this.ranges.map(e=>e.map(t,n)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;n<this.ranges.length;n++)if(!this.ranges[n].eq(e.ranges[n],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new e([this.main],0)}addRange(t,n=!0){return e.create([t].concat(this.ranges),n?0:this.mainIndex+1)}replaceRange(t,n=this.mainIndex){let r=this.ranges.slice();return r[n]=t,e.create(r,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!=`number`||t.main>=t.ranges.length)throw RangeError(`Invalid JSON representation for EditorSelection`);return new e(t.ranges.map(e=>dt.fromJSON(e)),t.main)}static single(t,n=t){return new e([e.range(t,n)],0)}static create(t,n=0){if(t.length==0)throw RangeError(`A selection needs at least one range`);for(let r=0,i=0;i<t.length;i++){let a=t[i];if(a.empty?a.from<=r:a.from<r)return e.normalized(t.slice(),n);r=a.to}return new e(t,n)}static cursor(e,t=0,n,r){return dt.create(e,e,(t==0?0:t<0?8:16)|(n==null?7:Math.min(6,n)),r)}static range(e,t,n,r,i){let a=r==null?7:Math.min(6,r);return!i&&e!=t&&(i=t<e?1:-1),i&&(a|=i<0?8:16),t<e?dt.create(t,e,a|32,n):dt.create(e,t,a,n)}static undirectionalRange(e,t){return dt.create(e,t,64,void 0)}static normalized(t,n=0){let r=t[n];t.sort((e,t)=>e.from-t.from),n=t.indexOf(r);for(let r=1;r<t.length;r++){let i=t[r],a=t[r-1];if(i.empty?i.from<=a.to:i.from<a.to){let o=a.from,s=Math.max(i.to,a.to);r<=n&&n--,t.splice(--r,2,i.anchor>i.head?e.range(s,o):e.range(o,s))}}return new e(t,n)}};function ft(e,t){for(let n of e.ranges)if(n.to>t)throw RangeError(`Selection points outside of document`)}let pt=0;var M=class e{constructor(e,t,n,r,i){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=r,this.id=pt++,this.default=e([]),this.extensions=typeof i==`function`?i(this):i}get reader(){return this}static define(t={}){return new e(t.combine||(e=>e),t.compareInput||((e,t)=>e===t),t.compare||(t.combine?(e,t)=>e===t:mt),!!t.static,t.enables)}of(e){return new ht([],this,0,e)}compute(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new ht(e,this,1,t)}computeN(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new ht(e,this,2,t)}from(e,t){return t||=e=>e,this.compute([e],n=>t(n.field(e)))}};function mt(e,t){return e==t||e.length==t.length&&e.every((e,n)=>e===t[n])}var ht=class{constructor(e,t,n,r){this.dependencies=e,this.facet=t,this.type=n,this.value=r,this.id=pt++}dynamicSlot(e){let t=this.value,n=this.facet.compareInput,r=this.id,i=e[r]>>1,a=this.type==2,o=!1,s=!1,c=[];for(let t of this.dependencies)t==`doc`?o=!0:t==`selection`?s=!0:(e[t.id]??1)&1||c.push(e[t.id]);return{create(e){return e.values[i]=t(e),1},update(e,r){if(o&&r.docChanged||s&&(r.docChanged||r.selection)||_t(e,c)){let r=t(e);if(a?!gt(r,e.values[i],n):!n(r,e.values[i]))return e.values[i]=r,1}return 0},reconfigure:(e,o)=>{let s,c=o.config.address[r];if(c!=null){let r=At(o,c);if(this.dependencies.every(t=>t instanceof M?o.facet(t)===e.facet(t):t instanceof bt?o.field(t,!1)==e.field(t,!1):!0)||(a?gt(s=t(e),r,n):n(s=t(e),r)))return e.values[i]=r,0}else s=t(e);return e.values[i]=s,1}}}get extension(){return this}};function gt(e,t,n){if(e.length!=t.length)return!1;for(let r=0;r<e.length;r++)if(!n(e[r],t[r]))return!1;return!0}function _t(e,t){let n=!1;for(let r of t)kt(e,r)&1&&(n=!0);return n}function vt(e,t,n){let r=n.map(t=>e[t.id]),i=n.map(e=>e.type),a=r.filter(e=>!(e&1)),o=e[t.id]>>1;function s(e){let n=[];for(let t=0;t<r.length;t++){let a=At(e,r[t]);if(i[t]==2)for(let e of a)n.push(e);else n.push(a)}return t.combine(n)}return{create(e){for(let t of r)kt(e,t);return e.values[o]=s(e),1},update(e,n){if(!_t(e,a))return 0;let r=s(e);return t.compare(r,e.values[o])?0:(e.values[o]=r,1)},reconfigure(e,i){let a=_t(e,r),c=i.config.facets[t.id],l=i.facet(t);if(c&&!a&&mt(n,c))return e.values[o]=l,0;let u=s(e);return t.compare(u,l)?(e.values[o]=l,0):(e.values[o]=u,1)}}}const yt=M.define({static:!0});var bt=class e{constructor(e,t,n,r,i){this.id=e,this.createF=t,this.updateF=n,this.compareF=r,this.spec=i,this.provides=void 0}static define(t){let n=new e(pt++,t.create,t.update,t.compare||((e,t)=>e===t),t);return t.provide&&(n.provides=t.provide(n)),n}create(e){return(e.facet(yt).find(e=>e.field==this)?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:e=>(e.values[t]=this.create(e),1),update:(e,n)=>{let r=e.values[t],i=this.updateF(r,n);return this.compareF(r,i)?0:(e.values[t]=i,1)},reconfigure:(e,n)=>{let r=e.facet(yt),i=n.facet(yt),a;return(a=r.find(e=>e.field==this))&&a!=i.find(e=>e.field==this)?(e.values[t]=a.create(e),1):n.config.address[this.id]==null?(e.values[t]=this.create(e),1):(e.values[t]=n.field(this),0)}}}init(e){return[this,yt.of({field:this,create:e})]}get extension(){return this}};const xt={lowest:4,low:3,default:2,high:1,highest:0};function St(e){return t=>new wt(t,e)}const Ct={highest:St(xt.highest),high:St(xt.high),default:St(xt.default),low:St(xt.low),lowest:St(xt.lowest)};var wt=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Tt=class e{of(e){return new Et(this,e)}reconfigure(t){return e.reconfigure.of({compartment:this,extension:t})}get(e){return e.config.compartments.get(this)}},Et=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},Dt=class e{constructor(e,t,n,r,i,a){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=r,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length<n.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(t,n,r){let i=[],a=Object.create(null),o=new Map;for(let e of Ot(t,n,o))e instanceof bt?i.push(e):(a[e.facet.id]||(a[e.facet.id]=[])).push(e);let s=Object.create(null),c=[],l=[];for(let e of i)s[e.id]=l.length<<1,l.push(t=>e.slot(t));let u=r?.config.facets;for(let e in a){let t=a[e],n=t[0].facet,i=u&&u[e]||[];if(t.every(e=>e.type==0))if(s[n.id]=c.length<<1|1,mt(i,t))c.push(r.facet(n));else{let e=n.combine(t.map(e=>e.value));c.push(r&&n.compare(e,r.facet(n))?r.facet(n):e)}else{for(let e of t)e.type==0?(s[e.id]=c.length<<1|1,c.push(e.value)):(s[e.id]=l.length<<1,l.push(t=>e.dynamicSlot(t)));s[n.id]=l.length<<1,l.push(e=>vt(e,n,t))}}let d=l.map(e=>e(s));return new e(t,o,d,s,c,a)}};function Ot(e,t,n){let r=[[],[],[],[],[]],i=new Map;function a(e,o){let s=i.get(e);if(s!=null){if(s<=o)return;let t=r[s].indexOf(e);t>-1&&r[s].splice(t,1),e instanceof Et&&n.delete(e.compartment)}if(i.set(e,o),Array.isArray(e))for(let t of e)a(t,o);else if(e instanceof Et){if(n.has(e.compartment))throw RangeError(`Duplicate use of compartment in extensions`);let r=t.get(e.compartment)||e.inner;n.set(e.compartment,r),a(r,o)}else if(e instanceof wt)a(e.inner,e.prec);else if(e instanceof bt)r[o].push(e),e.provides&&a(e.provides,o);else if(e instanceof ht)r[o].push(e),e.facet.extensions&&a(e.facet.extensions,xt.default);else{let t=e.extension;if(!t)throw Error(`Unrecognized extension value in extension set (${e}).`);if(t==e)throw Error(`Unrecognized extension value in extension set (${e}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);a(t,o)}}return a(e,xt.default),r.reduce((e,t)=>e.concat(t))}function kt(e,t){if(t&1)return 2;let n=t>>1,r=e.status[n];if(r==4)throw Error(`Cyclic dependency between fields and/or facets`);if(r&2)return r;e.status[n]=4;let i=e.computeSlot(e,e.config.dynamicSlots[n]);return e.status[n]=2|i}function At(e,t){return t&1?e.config.staticValues[t>>1]:e.values[t>>1]}const jt=M.define(),Mt=M.define({combine:e=>e.some(e=>e),static:!0}),Nt=M.define({combine:e=>e.length?e[0]:void 0,static:!0}),Pt=M.define(),Ft=M.define(),It=M.define(),Lt=M.define({combine:e=>e.length?e[0]:!1});var Rt=class{constructor(e,t){this.type=e,this.value=t}static define(){return new zt}},zt=class{of(e){return new Rt(this,e)}},Bt=class{constructor(e){this.map=e}of(e){return new N(this,e)}},N=class e{constructor(e,t){this.type=e,this.value=t}map(t){let n=this.type.map(this.value,t);return n===void 0?void 0:n==this.value?this:new e(this.type,n)}is(e){return this.type==e}static define(e={}){return new Bt(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let r of e){let e=r.map(t);e&&n.push(e)}return n}};N.reconfigure=N.define(),N.appendConfig=N.define();var Vt=class e{constructor(t,n,r,i,a,o){this.startState=t,this.changes=n,this.selection=r,this.effects=i,this.annotations=a,this.scrollIntoView=o,this._doc=null,this._state=null,r&&ft(r,n.newLength),a.some(t=>t.type==e.time)||(this.annotations=a.concat(e.time.of(Date.now())))}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}get newDoc(){return this._doc||=this.changes.apply(this.startState.doc)}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let n=this.annotation(e.userEvent);return!!(n&&(n==t||n.length>t.length&&n.slice(0,t.length)==t&&n[t.length]==`.`))}};Vt.time=Rt.define(),Vt.userEvent=Rt.define(),Vt.addToHistory=Rt.define(),Vt.remote=Rt.define();function Ht(e,t){let n=[];for(let r=0,i=0;;){let a,o;if(r<e.length&&(i==t.length||t[i]>=e[r]))a=e[r++],o=e[r++];else if(i<t.length)a=t[i++],o=t[i++];else return n;!n.length||n[n.length-1]<a?n.push(a,o):n[n.length-1]<o&&(n[n.length-1]=o)}}function Ut(e,t,n){let r,i,a;return n?(r=t.changes,i=it.empty(t.changes.length),a=e.changes.compose(t.changes)):(r=t.changes.map(e.changes),i=e.changes.mapDesc(t.changes,!0),a=e.changes.compose(r)),{changes:a,selection:t.selection?t.selection.map(i):e.selection?.map(r),effects:N.mapEffects(e.effects,r).concat(N.mapEffects(t.effects,i)),annotations:e.annotations.length?e.annotations.concat(t.annotations):t.annotations,scrollIntoView:e.scrollIntoView||t.scrollIntoView}}function Wt(e,t,n){let r=t.selection,i=Yt(t.annotations);return t.userEvent&&(i=i.concat(Vt.userEvent.of(t.userEvent))),{changes:t.changes instanceof it?t.changes:it.of(t.changes||[],n,e.facet(Nt)),selection:r&&(r instanceof j?r:j.single(r.anchor,r.head)),effects:Yt(t.effects),annotations:i,scrollIntoView:!!t.scrollIntoView}}function Gt(e,t,n){let r=Wt(e,t.length?t[0]:{},e.doc.length);t.length&&t[0].filter===!1&&(n=!1);for(let i=1;i<t.length;i++){t[i].filter===!1&&(n=!1);let a=!!t[i].sequential;r=Ut(r,Wt(e,t[i],a?r.changes.newLength:e.doc.length),a)}let i=Vt.create(e,r.changes,r.selection,r.effects,r.annotations,r.scrollIntoView);return qt(n?Kt(i):i)}function Kt(e){let t=e.startState,n=!0;for(let r of t.facet(Pt)){let t=r(e);if(t===!1){n=!1;break}Array.isArray(t)&&(n=n===!0?t:Ht(n,t))}if(n!==!0){let r,i;if(n===!1)i=e.changes.invertedDesc,r=it.empty(t.doc.length);else{let t=e.changes.filter(n);r=t.changes,i=t.filtered.mapDesc(t.changes).invertedDesc}e=Vt.create(t,r,e.selection&&e.selection.map(i),N.mapEffects(e.effects,i),e.annotations,e.scrollIntoView)}let r=t.facet(Ft);for(let n=r.length-1;n>=0;n--){let i=r[n](e);e=i instanceof Vt?i:Array.isArray(i)&&i.length==1&&i[0]instanceof Vt?i[0]:Gt(t,Yt(i),!1)}return e}function qt(e){let t=e.startState,n=t.facet(It),r=e;for(let i=n.length-1;i>=0;i--){let a=n[i](e);a&&Object.keys(a).length&&(r=Ut(r,Wt(t,a,e.changes.newLength),!0))}return r==e?e:Vt.create(t,e.changes,e.selection,r.effects,r.annotations,r.scrollIntoView)}const Jt=[];function Yt(e){return e==null?Jt:Array.isArray(e)?e:[e]}var Xt=(function(e){return e[e.Word=0]=`Word`,e[e.Space=1]=`Space`,e[e.Other=2]=`Other`,e})(Xt||={});const Zt=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Qt;try{Qt=RegExp(`[\\p{Alphabetic}\\p{Number}_]`,`u`)}catch{}function $t(e){if(Qt)return Qt.test(e);for(let t=0;t<e.length;t++){let n=e[t];if(/\w/.test(n)||n>`€`&&(n.toUpperCase()!=n.toLowerCase()||Zt.test(n)))return!0}return!1}function en(e){return t=>{if(!/\S/.test(t))return Xt.Space;if($t(t))return Xt.Word;for(let n=0;n<e.length;n++)if(t.indexOf(e[n])>-1)return Xt.Word;return Xt.Other}}var P=class e{constructor(e,t,n,r,i,a){this.config=e,this.doc=t,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let e=0;e<this.config.dynamicSlots.length;e++)kt(this,e<<1);this.computeSlot=null}field(e,t=!0){let n=this.config.address[e.id];if(n==null){if(t)throw RangeError(`Field is not present in this state`);return}return kt(this,n),At(this,n)}update(...e){return Gt(this,e,!0)}applyTransaction(t){let n=this.config,{base:r,compartments:i}=n;for(let e of t.effects)e.is(Tt.reconfigure)?(n&&=(i=new Map,n.compartments.forEach((e,t)=>i.set(t,e)),null),i.set(e.value.compartment,e.value.extension)):e.is(N.reconfigure)?(n=null,r=e.value):e.is(N.appendConfig)&&(n=null,r=Yt(r).concat(e.value));let a;n?a=t.startState.values.slice():(n=Dt.resolve(r,i,this),a=new e(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(e,t)=>t.reconfigure(e,this),null).values);let o=t.startState.facet(Mt)?t.newSelection:t.newSelection.asSingle();new e(n,t.newDoc,o,a,(e,n)=>n.update(e,t),t)}replaceSelection(e){return typeof e==`string`&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:j.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),r=this.changes(n.changes),i=[n.range],a=Yt(n.effects);for(let n=1;n<t.ranges.length;n++){let o=e(t.ranges[n]),s=this.changes(o.changes),c=s.map(r);for(let e=0;e<n;e++)i[e]=i[e].map(c);let l=r.mapDesc(s,!0);i.push(o.range.map(l)),r=r.compose(c),a=N.mapEffects(a,c).concat(N.mapEffects(Yt(o.effects),l))}return{changes:r,selection:j.create(i,t.mainIndex),effects:a}}changes(t=[]){return t instanceof it?t:it.of(t,this.doc.length,this.facet(e.lineSeparator))}toText(t){return A.of(t.split(this.facet(e.lineSeparator)||tt))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(kt(this,t),At(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let n in e){let r=e[n];r instanceof bt&&this.config.address[r.id]!=null&&(t[n]=r.spec.toJSON(this.field(e[n]),this))}return t}static fromJSON(t,n={},r){if(!t||typeof t.doc!=`string`)throw RangeError(`Invalid JSON representation for EditorState`);let i=[];if(r){for(let e in r)if(Object.prototype.hasOwnProperty.call(t,e)){let n=r[e],a=t[e];i.push(n.init(e=>n.spec.fromJSON(a,e)))}}return e.create({doc:t.doc,selection:j.fromJSON(t.selection),extensions:n.extensions?i.concat([n.extensions]):i})}static create(t={}){let n=Dt.resolve(t.extensions||[],new Map),r=t.doc instanceof A?t.doc:A.of((t.doc||``).split(n.staticFacet(e.lineSeparator)||tt)),i=t.selection?t.selection instanceof j?t.selection:j.single(t.selection.anchor,t.selection.head):j.single(0);return ft(i,r.length),n.staticFacet(Mt)||(i=i.asSingle()),new e(n,r,i,n.dynamicSlots.map(()=>null),(e,t)=>t.create(e),null)}get tabSize(){return this.facet(e.tabSize)}get lineBreak(){return this.facet(e.lineSeparator)||`
@@ -610,7 +610,7 @@ html[data-dsh-tw-active] .dshDesktopConversationSurface > :not([data-dsh-tw-view
610
610
  }`,{label:`enum`,detail:`definition`,type:`keyword`})]),Dm=new Pc,Om=new Set([`Script`,`Block`,`FunctionExpression`,`FunctionDeclaration`,`ArrowFunction`,`MethodDeclaration`,`ForStatement`]);function km(e){return(t,n)=>{let r=t.node.getChild(`VariableDefinition`);return r&&n(r,e),!0}}const Am=[`FunctionDeclaration`],jm={FunctionDeclaration:km(`function`),ClassDeclaration:km(`class`),ClassExpression:()=>!0,EnumDeclaration:km(`constant`),TypeAliasDeclaration:km(`type`),NamespaceDeclaration:km(`namespace`),VariableDefinition(e,t){e.matchContext(Am)||t(e,`variable`)},TypeDefinition(e,t){t(e,`type`)},__proto__:null};function Mm(e,t){let n=Dm.get(t);if(n)return n;let r=[],i=!0;function a(t,n){let i=e.sliceString(t.from,t.to);r.push({label:i,type:n})}return t.cursor(G.IncludeAnonymous).iterate(t=>{if(i)i=!1;else if(t.name){let e=jm[t.name];if(e&&e(t,a)||Om.has(t.name))return!1}else if(t.to-t.from>8192){for(let n of Mm(e,t.node))r.push(n);return!1}}),Dm.set(t,r),r}const Nm=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,Pm=[`TemplateString`,`String`,`RegExp`,`LineComment`,`BlockComment`,`VariableDefinition`,`TypeDefinition`,`Label`,`PropertyDefinition`,`PropertyName`,`PrivatePropertyDefinition`,`PrivatePropertyName`,`JSXText`,`JSXAttributeValue`,`JSXOpenTag`,`JSXCloseTag`,`JSXSelfClosingTag`,`.`,`?.`];function Fm(e){let t=Y(e.state).resolveInner(e.pos,-1);if(Pm.indexOf(t.name)>-1)return null;let n=t.name==`VariableName`||t.to-t.from<20&&Nm.test(e.state.sliceDoc(t.from,t.to));if(!n&&!e.explicit)return null;let r=[];for(let n=t;n;n=n.parent)Om.has(n.name)&&(r=r.concat(Mm(e.state.doc,n)));return{options:r,from:n?t.from:e.pos,validFor:Nm}}const Im=jl.define({name:`javascript`,parser:wm.configure({props:[Yl.add({IfStatement:su({except:/^\s*({|else\b)/}),TryStatement:su({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:ou,SwitchBody:e=>{let t=e.textAfter,n=/^\s*\}/.test(t),r=/^\s*(case|default)\b/.test(t);return e.baseIndent+(n?0:r?1:2)*e.unit},Block:iu({closing:`}`}),ArrowFunction:e=>e.baseIndent+e.unit,"TemplateString BlockComment":()=>null,"Statement Property":su({except:/^\s*{/}),JSXElement(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},JSXEscape(e){let t=/\s*\}/.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"JSXOpenTag JSXSelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),lu.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":uu,BlockComment(e){return{from:e.from+2,to:e.to-2}},JSXElement(e){let t=e.firstChild;if(!t||t.name==`JSXSelfClosingTag`)return null;let n=e.lastChild;return{from:t.to,to:n.type.isError?e.to:n.from}},"JSXSelfClosingTag JSXOpenTag"(e){let t=e.firstChild?.nextSibling,n=e.lastChild;return!t||t.type.isError?null:{from:t.to,to:n.type.isError?e.to:n.from}}})]}),languageData:{closeBrackets:{brackets:[`(`,`[`,`{`,`'`,`"`,"`"]},commentTokens:{line:`//`,block:{open:`/*`,close:`*/`}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:`$`}}),Lm={test:e=>/^JSX/.test(e.name),facet:Dl({commentTokens:{block:{open:`{/*`,close:`*/}`}}})},Rm=Im.configure({dialect:`ts`},`typescript`),zm=Im.configure({dialect:`jsx`,props:[Ol.add(e=>e.isTop?[Lm]:void 0)]}),Bm=Im.configure({dialect:`jsx ts`,props:[Ol.add(e=>e.isTop?[Lm]:void 0)]},`typescript`);let Vm=e=>({label:e,type:`keyword`});const Hm=`break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield`.split(` `).map(Vm),Um=Hm.concat([`declare`,`implements`,`private`,`protected`,`public`].map(Vm));function Wm(e={}){let t=e.jsx?e.typescript?Bm:zm:e.typescript?Rm:Im,n=e.typescript?Em.concat(Um):Tm.concat(Hm);return new Vl(t,[Im.data.of({autocomplete:Fu(Pm,Pu(n))}),Im.data.of({autocomplete:Fm}),e.jsx?Jm:[]])}function Gm(e){for(;;){if(e.name==`JSXOpenTag`||e.name==`JSXSelfClosingTag`||e.name==`JSXFragmentTag`)return e;if(e.name==`JSXEscape`||!e.parent)return null;e=e.parent}}function Km(e,t,n=e.length){for(let r=t?.firstChild;r;r=r.nextSibling)if(r.name==`JSXIdentifier`||r.name==`JSXBuiltin`||r.name==`JSXNamespacedName`||r.name==`JSXMemberExpression`)return e.sliceString(r.from,Math.min(r.to,n));return``}const qm=typeof navigator==`object`&&/Android\b/.test(navigator.userAgent),Jm=H.inputHandler.of((e,t,n,r,i)=>{if((qm?e.composing:e.compositionStarted)||e.state.readOnly||t!=n||r!=`>`&&r!=`/`||!Im.isActiveAt(e.state,t,-1))return!1;let a=i(),{state:o}=a,s=o.changeByRange(e=>{let{head:t}=e,n=Y(o).resolveInner(t-1,-1),i;if(n.name==`JSXStartTag`&&(n=n.parent),!(o.doc.sliceString(t-1,t)!=r||n.name==`JSXAttributeValue`&&n.to>t)){if(r==`>`&&n.name==`JSXFragmentTag`)return{range:e,changes:{from:t,insert:`</>`}};if(r==`/`&&n.name==`JSXStartCloseTag`){let e=n.parent,r=e.parent;if(r&&e.from==t-2&&((i=Km(o.doc,r.firstChild,t))||r.firstChild?.name==`JSXFragmentTag`)){let e=`${i}>`;return{range:j.cursor(t+e.length,-1),changes:{from:t,insert:e}}}}else if(r==`>`){let r=Gm(n);if(r&&r.name==`JSXOpenTag`&&!/^\/?>|^<\//.test(o.doc.sliceString(t,t+2))&&(i=Km(o.doc,r,t)))return{range:e,changes:{from:t,insert:`</${i}>`}}}}return{range:e}});return s.changes.empty?!1:(e.dispatch([a,o.update(s,{userEvent:`input.complete`,scrollIntoView:!0})]),!0)}),Ym=[`_blank`,`_self`,`_top`,`_parent`],Xm=[`ascii`,`utf-8`,`utf-16`,`latin1`,`latin1`],Zm=[`get`,`post`,`put`,`delete`],Qm=[`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`],$m=[`true`,`false`],Q={},eh={a:{attrs:{href:null,ping:null,type:null,media:null,target:Ym,hreflang:null}},abbr:Q,address:Q,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:[`default`,`rect`,`circle`,`poly`]}},article:Q,aside:Q,audio:{attrs:{src:null,mediagroup:null,crossorigin:[`anonymous`,`use-credentials`],preload:[`none`,`metadata`,`auto`],autoplay:[`autoplay`],loop:[`loop`],controls:[`controls`]}},b:Q,base:{attrs:{href:null,target:Ym}},bdi:Q,bdo:Q,blockquote:{attrs:{cite:null}},body:Q,br:Q,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:[`autofocus`],disabled:[`autofocus`],formenctype:Qm,formmethod:Zm,formnovalidate:[`novalidate`],formtarget:Ym,type:[`submit`,`reset`,`button`]}},canvas:{attrs:{width:null,height:null}},caption:Q,center:Q,cite:Q,code:Q,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:[`command`,`checkbox`,`radio`],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:[`disabled`],checked:[`checked`]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:[`disabled`],multiple:[`multiple`]}},datalist:{attrs:{data:null}},dd:Q,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:[`open`]}},dfn:Q,div:Q,dl:Q,dt:Q,em:Q,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:[`disabled`],form:null,name:null}},figcaption:Q,figure:Q,footer:Q,form:{attrs:{action:null,name:null,"accept-charset":Xm,autocomplete:[`on`,`off`],enctype:Qm,method:Zm,novalidate:[`novalidate`],target:Ym}},h1:Q,h2:Q,h3:Q,h4:Q,h5:Q,h6:Q,head:{children:[`title`,`base`,`link`,`style`,`meta`,`script`,`noscript`,`command`]},header:Q,hgroup:Q,hr:Q,html:{attrs:{manifest:null}},i:Q,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:[`allow-top-navigation`,`allow-same-origin`,`allow-forms`,`allow-scripts`],seamless:[`seamless`]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:[`anonymous`,`use-credentials`]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:[`audio/*`,`video/*`,`image/*`],autocomplete:[`on`,`off`],autofocus:[`autofocus`],checked:[`checked`],disabled:[`disabled`],formenctype:Qm,formmethod:Zm,formnovalidate:[`novalidate`],formtarget:Ym,multiple:[`multiple`],readonly:[`readonly`],required:[`required`],type:[`hidden`,`text`,`search`,`tel`,`url`,`email`,`password`,`datetime`,`date`,`month`,`week`,`time`,`datetime-local`,`number`,`range`,`color`,`checkbox`,`radio`,`file`,`submit`,`image`,`reset`,`button`]}},ins:{attrs:{cite:null,datetime:null}},kbd:Q,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:[`autofocus`],disabled:[`disabled`],keytype:[`RSA`]}},label:{attrs:{for:null,form:null}},legend:Q,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:[`all`,`16x16`,`16x16 32x32`,`16x16 32x32 64x64`]}},map:{attrs:{name:null}},mark:Q,menu:{attrs:{label:null,type:[`list`,`context`,`toolbar`]}},meta:{attrs:{content:null,charset:Xm,name:[`viewport`,`application-name`,`author`,`description`,`generator`,`keywords`],"http-equiv":[`content-language`,`content-type`,`default-style`,`refresh`]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:Q,noscript:Q,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:[`typemustmatch`]}},ol:{attrs:{reversed:[`reversed`],start:null,type:[`1`,`a`,`A`,`i`,`I`]},children:[`li`,`script`,`template`,`ul`,`ol`]},optgroup:{attrs:{disabled:[`disabled`],label:null}},option:{attrs:{disabled:[`disabled`],label:null,selected:[`selected`],value:null}},output:{attrs:{for:null,form:null,name:null}},p:Q,param:{attrs:{name:null,value:null}},pre:Q,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:Q,rt:Q,ruby:Q,samp:Q,script:{attrs:{type:[`text/javascript`],src:null,async:[`async`],defer:[`defer`],charset:Xm}},section:Q,select:{attrs:{form:null,name:null,size:null,autofocus:[`autofocus`],disabled:[`disabled`],multiple:[`multiple`]}},slot:{attrs:{name:null}},small:Q,source:{attrs:{src:null,type:null,media:null}},span:Q,strong:Q,style:{attrs:{type:[`text/css`],media:null,scoped:null}},sub:Q,summary:Q,sup:Q,table:Q,tbody:Q,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:Q,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:[`autofocus`],disabled:[`disabled`],readonly:[`readonly`],required:[`required`],wrap:[`soft`,`hard`]}},tfoot:Q,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:[`row`,`col`,`rowgroup`,`colgroup`]}},thead:Q,time:{attrs:{datetime:null}},title:Q,tr:Q,track:{attrs:{src:null,label:null,default:null,kind:[`subtitles`,`captions`,`descriptions`,`chapters`,`metadata`],srclang:null}},ul:{children:[`li`,`script`,`template`,`ul`,`ol`]},var:Q,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:[`anonymous`,`use-credentials`],preload:[`auto`,`metadata`,`none`],autoplay:[`autoplay`],mediagroup:[`movie`],muted:[`muted`],controls:[`controls`]}},wbr:Q},th={accesskey:null,class:null,contenteditable:$m,contextmenu:null,dir:[`ltr`,`rtl`,`auto`],draggable:[`true`,`false`,`auto`],dropzone:[`copy`,`move`,`link`,`string:`,`file:`],hidden:[`hidden`],id:null,inert:[`inert`],itemid:null,itemprop:null,itemref:null,itemscope:[`itemscope`],itemtype:null,lang:[`ar`,`bn`,`de`,`en-GB`,`en-US`,`es`,`fr`,`hi`,`id`,`ja`,`pa`,`pt`,`ru`,`tr`,`zh`],spellcheck:$m,autocorrect:$m,autocapitalize:$m,style:null,tabindex:null,title:null,translate:[`yes`,`no`],rel:[`stylesheet`,`alternate`,`author`,`bookmark`,`help`,`license`,`next`,`nofollow`,`noreferrer`,`prefetch`,`prev`,`search`,`tag`],role:`alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer`.split(` `),"aria-activedescendant":null,"aria-atomic":$m,"aria-autocomplete":[`inline`,`list`,`both`,`none`],"aria-busy":$m,"aria-checked":[`true`,`false`,`mixed`,`undefined`],"aria-controls":null,"aria-describedby":null,"aria-disabled":$m,"aria-dropeffect":null,"aria-expanded":[`true`,`false`,`undefined`],"aria-flowto":null,"aria-grabbed":[`true`,`false`,`undefined`],"aria-haspopup":$m,"aria-hidden":$m,"aria-invalid":[`true`,`false`,`grammar`,`spelling`],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":[`off`,`polite`,`assertive`],"aria-multiline":$m,"aria-multiselectable":$m,"aria-owns":null,"aria-posinset":null,"aria-pressed":[`true`,`false`,`mixed`,`undefined`],"aria-readonly":$m,"aria-relevant":null,"aria-required":$m,"aria-selected":[`true`,`false`,`undefined`],"aria-setsize":null,"aria-sort":[`ascending`,`descending`,`none`,`other`],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},nh=`beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload`.split(` `).map(e=>`on`+e);for(let e of nh)th[e]=null;var rh=class{constructor(e,t){this.tags={...eh,...e},this.globalAttrs={...th,...t},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};rh.default=new rh;function ih(e,t,n=e.length){if(!t)return``;let r=t.firstChild,i=r&&r.getChild(`TagName`);return i?e.sliceString(i.from,Math.min(i.to,n)):``}function ah(e,t=!1){for(;e;e=e.parent)if(e.name==`Element`)if(t)t=!1;else return e;return null}function oh(e,t,n){return n.tags[ih(e,ah(t))]?.children||n.allTags}function sh(e,t){let n=[];for(let r=ah(t);r&&!r.type.isTop;r=ah(r.parent)){let i=ih(e,r);if(i&&r.lastChild.name==`CloseTag`)break;i&&n.indexOf(i)<0&&(t.name==`EndTag`||t.from>=r.firstChild.to)&&n.push(i)}return n}const ch=/^[:\-\.\w\u00b7-\uffff]*$/;function lh(e,t,n,r,i){let a=/\s*>/.test(e.sliceDoc(i,i+5))?``:`>`,o=ah(n,n.name==`StartTag`||n.name==`TagName`);return{from:r,to:i,options:oh(e.doc,o,t).map(e=>({label:e,type:`type`})).concat(sh(e.doc,n).map((e,t)=>({label:`/`+e,apply:`/`+e+a,type:`type`,boost:99-t}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function uh(e,t,n,r){let i=/\s*>/.test(e.sliceDoc(r,r+5))?``:`>`;return{from:n,to:r,options:sh(e.doc,t).map((e,t)=>({label:e,apply:e+i,type:`type`,boost:99-t})),validFor:ch}}function dh(e,t,n,r){let i=[],a=0;for(let r of oh(e.doc,n,t))i.push({label:`<`+r,type:`type`});for(let t of sh(e.doc,n))i.push({label:`</`+t+`>`,type:`type`,boost:99-a++});return{from:r,to:r,options:i,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function fh(e,t,n,r,i){let a=ah(n),o=a?t.tags[ih(e.doc,a)]:null,s=o&&o.attrs?Object.keys(o.attrs):[];return{from:r,to:i,options:(o&&o.globalAttrs===!1?s:s.length?s.concat(t.globalAttrNames):t.globalAttrNames).map(e=>({label:e,type:`property`})),validFor:ch}}function ph(e,t,n,r,i){let a=n.parent?.getChild(`AttributeName`),o=[],s;if(a){let c=e.sliceDoc(a.from,a.to),l=t.globalAttrs[c];if(!l){let r=ah(n),i=r?t.tags[ih(e.doc,r)]:null;l=i?.attrs&&i.attrs[c]}if(l){let t=e.sliceDoc(r,i).toLowerCase(),n=`"`,a=`"`;/^['"]/.test(t)?(s=t[0]==`"`?/^[^"]*$/:/^[^']*$/,n=``,a=e.sliceDoc(i,i+1)==t[0]?``:t[0],t=t.slice(1),r++):s=/^[^\s<>='"]*$/;for(let e of l)o.push({label:e,apply:n+e+a,type:`constant`})}}return{from:r,to:i,options:o,validFor:s}}function mh(e,t){let{state:n,pos:r}=t,i=Y(n).resolveInner(r,-1),a=i.resolve(r);for(let e=r,t;a==i&&(t=i.childBefore(e));){let n=t.lastChild;if(!n||!n.type.isError||n.from<n.to)break;a=i=t,e=n.from}return i.name==`TagName`?i.parent&&/CloseTag$/.test(i.parent.name)?uh(n,i,i.from,r):lh(n,e,i,i.from,r):i.name==`StartTag`||i.name==`IncompleteTag`?lh(n,e,i,r,r):i.name==`StartCloseTag`||i.name==`IncompleteCloseTag`?uh(n,i,r,r):i.name==`OpenTag`||i.name==`SelfClosingTag`||i.name==`AttributeName`?fh(n,e,i,i.name==`AttributeName`?i.from:r,r):i.name==`Is`||i.name==`AttributeValue`||i.name==`UnquotedAttributeValue`?ph(n,e,i,i.name==`Is`?r:i.from,r):t.explicit&&(a.name==`Element`||a.name==`Text`||a.name==`Document`)?dh(n,e,i,r):null}function hh(e){return mh(rh.default,e)}function gh(e){let{extraTags:t,extraGlobalAttributes:n}=e,r=n||t?new rh(t,n):rh.default;return e=>mh(r,e)}const _h=Im.parser.configure({top:`SingleExpression`}),vh=[{tag:`script`,attrs:e=>e.type==`text/typescript`||e.lang==`ts`,parser:Rm.parser},{tag:`script`,attrs:e=>e.type==`text/babel`||e.type==`text/jsx`,parser:zm.parser},{tag:`script`,attrs:e=>e.type==`text/typescript-jsx`,parser:Bm.parser},{tag:`script`,attrs(e){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(e.type)},parser:_h},{tag:`script`,attrs(e){return!e.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(e.type)},parser:Im.parser},{tag:`style`,attrs(e){return(!e.lang||e.lang==`css`)&&(!e.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(e.type))},parser:um.parser}],yh=[{name:`style`,parser:um.parser.configure({top:`Styles`})}].concat(nh.map(e=>({name:e,parser:Im.parser}))),bh=jl.define({name:`html`,parser:kp.configure({props:[Yl.add({Element(e){let t=/^(\s*)(<\/)?/.exec(e.textAfter);return e.node.to<=e.pos+t[0].length?e.continue():e.lineIndent(e.node.from)+(t[2]?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit},Document(e){if(e.pos+/\s*/.exec(e.textAfter)[0].length<e.node.to)return e.continue();let t=null,n;for(let n=e.node;;){let e=n.lastChild;if(!e||e.name!=`Element`||e.to!=n.to)break;t=n=e}return t&&!((n=t.lastChild)&&(n.name==`CloseTag`||n.name==`SelfClosingTag`))?e.lineIndent(t.from)+e.unit:null}}),lu.add({Element(e){let t=e.firstChild,n=e.lastChild;return!t||t.name!=`OpenTag`?null:{from:t.to,to:n.name==`CloseTag`?n.from:e.to}}}),vu.add({"OpenTag CloseTag":e=>e.getChild(`TagName`)})]}),languageData:{commentTokens:{block:{open:`<!--`,close:`-->`}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:`-_`}}),xh=bh.configure({wrap:Np(vh,yh)});function Sh(e={}){let t=``,n;return e.matchClosingTags===!1&&(t=`noMatch`),e.selfClosingTags===!0&&(t=(t?t+` `:``)+`selfClosing`),(e.nestedLanguages&&e.nestedLanguages.length||e.nestedAttributes&&e.nestedAttributes.length)&&(n=Np((e.nestedLanguages||[]).concat(vh),(e.nestedAttributes||[]).concat(yh))),new Vl(n?bh.configure({wrap:n,dialect:t}):t?xh.configure({dialect:t}):xh,[xh.data.of({autocomplete:gh(e)}),e.autoCloseTags===!1?[]:Th,Wm().support,dm().support])}const Ch=new Set(`area base br col command embed frame hr img input keygen link meta param source track wbr menuitem`.split(` `));function wh(e,t,n){for(;;){if(t.lastChild?.name!=`CloseTag`)return!1;let r=t.parent;if(!r||ih(e,r)!=n)return!0;t=r}}const Th=H.inputHandler.of((e,t,n,r,i)=>{if(e.composing||e.state.readOnly||t!=n||r!=`>`&&r!=`/`||!xh.isActiveAt(e.state,t,-1))return!1;let a=i(),{state:o}=a,s=o.changeByRange(e=>{let t=o.doc.sliceString(e.from-1,e.to)==r,{head:n}=e,i=Y(o).resolveInner(n,-1),a;if(t&&r==`>`&&i.name==`EndTag`){let t=i.parent;if((a=ih(o.doc,t.parent,n))&&!Ch.has(a)&&!wh(o.doc,t.parent,a))return{range:e,changes:{from:n,to:n+ +(o.doc.sliceString(n,n+1)===`>`),insert:`</${a}>`}}}else if(t&&r==`/`&&i.name==`IncompleteCloseTag`){let e=i.parent;if(i.from==n-2&&e.lastChild?.name!=`CloseTag`&&(a=ih(o.doc,e,n))&&!Ch.has(a)){let e=n+ +(o.doc.sliceString(n,n+1)===`>`),t=`${a}>`;return{range:j.cursor(n+t.length,-1),changes:{from:n,to:e,insert:t}}}}return{range:e}});return s.changes.empty?!1:(e.dispatch([a,o.update(s,{userEvent:`input.complete`,scrollIntoView:!0})]),!0)}),Eh=Dl({commentTokens:{block:{open:`<!--`,close:`-->`}}}),Dh=new U,Oh=cf.configure({props:[lu.add(e=>!e.is(`Block`)||e.is(`Document`)||kh(e)!=null||Ah(e)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),Dh.add(kh),Yl.add({Document:()=>null}),El.add({Document:Eh})]});function kh(e){let t=/^(?:ATX|Setext)Heading(\d)$/.exec(e.name);return t?+t[1]:void 0}function Ah(e){return e.name==`OrderedList`||e.name==`BulletList`}function jh(e,t){let n=e;for(;;){let e=n.nextSibling,r;if(!e||(r=kh(e.type))!=null&&r<=t)break;n=e}return n.to}const Mh=cu.of((e,t,n)=>{for(let r=Y(e).resolveInner(n,-1);r&&!(r.from<t);r=r.parent){let e=r.type.prop(Dh);if(e==null)continue;let t=jh(r,e);if(t>n)return{from:n,to:t}}return null});function Nh(e){return new kl(Eh,e,[],`markdown`)}const Ph=Nh(Oh),Fh=Nh(Oh.configure([Of,jf,Af,Mf,{props:[lu.add({Table:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}]));function Ih(e,t){return n=>{if(n&&e){let t=null;if(n=/\S*/.exec(n)[0],t=typeof e==`function`?e(n):Hl.matchLanguageName(e,n,!0),t instanceof Hl)return t.support?t.support.language.parser:Pl.getSkippingParser(t.load());if(t)return t.parser}return t?t.parser:null}}var Lh=class{constructor(e,t,n,r,i,a,o){this.node=e,this.from=t,this.to=n,this.spaceBefore=r,this.spaceAfter=i,this.type=a,this.item=o}blank(e,t=!0){let n=this.spaceBefore+(this.node.name==`Blockquote`?`>`:``);if(e!=null){for(;n.length<e;)n+=` `;return n}else{for(let e=this.to-this.from-n.length-this.spaceAfter.length;e>0;e--)n+=` `;return n+(t?this.spaceAfter:``)}}marker(e,t){let n=this.node.name==`OrderedList`?String(+zh(this.item,e)[2]+t):``;return this.spaceBefore+n+this.type+this.spaceAfter}};function Rh(e,t){let n=[],r=[];for(let t=e;t;t=t.parent){if(t.name==`FencedCode`)return r;(t.name==`ListItem`||t.name==`Blockquote`)&&n.push(t)}for(let e=n.length-1;e>=0;e--){let i=n[e],a,o=t.lineAt(i.from),s=i.from-o.from;if(i.name==`Blockquote`&&(a=/^ *>( ?)/.exec(o.text.slice(s))))r.push(new Lh(i,s,s+a[0].length,``,a[1],`>`,null));else if(i.name==`ListItem`&&i.parent.name==`OrderedList`&&(a=/^( *)\d+([.)])( *)/.exec(o.text.slice(s)))){let e=a[3],t=a[0].length;e.length>=4&&(e=e.slice(0,e.length-4),t-=4),r.push(new Lh(i.parent,s,s+t,a[1],e,a[2],i))}else if(i.name==`ListItem`&&i.parent.name==`BulletList`&&(a=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(o.text.slice(s)))){let e=a[4],t=a[0].length;e.length>4&&(e=e.slice(0,e.length-4),t-=4);let n=a[2];a[3]&&(n+=a[3].replace(/[xX]/,` `)),r.push(new Lh(i.parent,s,s+t,a[1],e,n,i))}}return r}function zh(e,t){return/^(\s*)(\d+)(?=[.)])/.exec(t.sliceString(e.from,e.from+10))}function Bh(e,t,n,r=0){for(let i=-1,a=e;;){if(a.name==`ListItem`){let e=zh(a,t),o=+e[2];if(i>=0){if(o!=i+1)return;n.push({from:a.from+e[1].length,to:a.from+e[0].length,insert:String(i+2+r)})}i=o}let e=a.nextSibling;if(!e)break;a=e}}function Vh(e,t){let n=/^[ \t]*/.exec(e)[0].length;if(!n||t.facet(Wl)!=` `)return e;let r=xn(e,4,n),i=``;for(let e=r;e>0;)e>=4?(i+=` `,e-=4):(i+=` `,e--);return i+e.slice(n)}const Hh=((e={})=>({state:t,dispatch:n})=>{let r=Y(t),{doc:i}=t,a=null,o=t.changeByRange(n=>{if(!n.empty||!Fh.isActiveAt(t,n.from,-1)&&!Fh.isActiveAt(t,n.from,1))return a={range:n};let o=n.from,s=i.lineAt(o),c=Rh(r.resolveInner(o,-1),i);for(;c.length&&c[c.length-1].from>o-s.from;)c.pop();if(!c.length)return a={range:n};let l=c[c.length-1];if(l.to-l.spaceAfter.length>o-s.from)return a={range:n};let u=o>=l.to-l.spaceAfter.length&&!/\S/.test(s.text.slice(l.to));if(l.item&&u){if(l.item.from<s.from&&!/^[\s>]*$/.test(s.text.slice(0,l.to)))return a={range:n};let r=l.node.firstChild,u=l.node.getChild(`ListItem`,`ListItem`);if(r.to>=o||u&&u.to<o||s.from>0&&!/[^\s>]/.test(i.lineAt(s.from-1).text)||e.nonTightLists===!1){let e=c.length>1?c[c.length-2]:null,t,n=``;e&&e.item?(t=s.from+e.from,n=e.marker(i,1)):t=s.from+(e?e.to:0);let r=[{from:t,to:o,insert:n}];return l.node.name==`OrderedList`&&Bh(l.item,i,r,-2),e&&e.node.name==`OrderedList`&&Bh(e.item,i,r),{range:j.cursor(t+n.length),changes:r}}else{let e=Gh(c,t,s);return{range:j.cursor(o+e.length+1),changes:{from:s.from,insert:e+t.lineBreak}}}}if(l.node.name==`Blockquote`&&u&&s.from){let e=i.lineAt(s.from-1),r=/>\s*$/.exec(e.text);if(r&&r.index==l.from){let i=t.changes([{from:e.from+r.index,to:e.to},{from:s.from+l.from,to:s.to}]);return{range:n.map(i),changes:i}}}let d=[];l.node.name==`OrderedList`&&Bh(l.item,i,d);let f=l.item&&l.item.from<s.from,p=``;if(!f||/^[\s\d.)\-+*>]*/.exec(s.text)[0].length>=l.to)for(let e=0,t=c.length-1;e<=t;e++)p+=e==t&&!f?c[e].marker(i,1):c[e].blank(e<t?xn(s.text,4,c[e+1].from)-p.length:null);let m=o;for(;m>s.from&&/\s/.test(s.text.charAt(m-s.from-1));)m--;return p=Vh(p,t),Wh(l.node,t.doc)&&(p=Gh(c,t,s)+t.lineBreak+p),d.push({from:m,to:o,insert:t.lineBreak+p}),{range:j.cursor(m+p.length+1),changes:d}});return a?!1:(n(t.update(o,{scrollIntoView:!0,userEvent:`input`})),!0)})();function Uh(e){return e.name==`QuoteMark`||e.name==`ListMark`}function Wh(e,t){if(e.name!=`OrderedList`&&e.name!=`BulletList`)return!1;let n=e.firstChild,r=e.getChild(`ListItem`,`ListItem`);if(!r)return!1;let i=t.lineAt(n.to),a=t.lineAt(r.from),o=/^[\s>]*$/.test(i.text);return i.number+ +!o<a.number}function Gh(e,t,n){let r=``;for(let t=0,i=e.length-2;t<=i;t++)r+=e[t].blank(t<i?xn(n.text,4,e[t+1].from)-r.length:null,t<i);return Vh(r,t)}function Kh(e,t){let n=e.resolveInner(t,-1),r=t;Uh(n)&&(r=n.from,n=n.parent);for(let e;e=n.childBefore(r);)if(Uh(e))r=e.from;else if(e.name==`OrderedList`||e.name==`BulletList`)n=e.lastChild,r=n.to;else break;return n}const qh=[{key:`Enter`,run:Hh},{key:`Backspace`,run:({state:e,dispatch:t})=>{let n=Y(e),r=null,i=e.changeByRange(t=>{let i=t.from,{doc:a}=e;if(t.empty&&Fh.isActiveAt(e,t.from)){let t=a.lineAt(i),r=Rh(Kh(n,i),a);if(r.length){let n=r[r.length-1],a=n.to-n.spaceAfter.length+ +!!n.spaceAfter;if(i-t.from>a&&!/\S/.test(t.text.slice(a,i-t.from)))return{range:j.cursor(t.from+a),changes:{from:t.from+a,to:i}};if(i-t.from==a&&(n.item&&t.from<=n.item.from||/^[\s>]*$/.test(t.text.slice(0,n.to)))){let r=t.from+n.from;if(n.item&&n.node.from<n.item.from&&/\S/.test(t.text.slice(n.from,n.to))){let i=n.blank(xn(t.text,4,n.to)-xn(t.text,4,n.from));return r==t.from&&(i=Vh(i,e)),{range:j.cursor(r+i.length),changes:{from:r,to:t.from+n.to,insert:i}}}if(r<i)return{range:j.cursor(r),changes:{from:r,to:i}}}}}return r={range:t}});return r?!1:(t(e.update(i,{scrollIntoView:!0,userEvent:`delete`})),!0)}}],Jh=Sh({matchClosingTags:!1});function Yh(e={}){let{codeLanguages:t,defaultCodeLanguage:n,addKeymap:r=!0,base:{parser:i}=Ph,completeHTMLTags:a=!0,pasteURLAsLink:o=!0,htmlTagLanguage:s=Jh}=e;if(!(i instanceof Fd))throw RangeError("Base parser provided to `markdown` should be a Markdown parser");let c=e.extensions?[e.extensions]:[],l=[s.support,Mh],u;o&&l.push(eg),n instanceof Vl?(l.push(n.support),u=n.language):n&&(u=n);let d=t||u?Ih(t,u):void 0;c.push(uf({codeParser:d,htmlParser:s.language.parser})),r&&l.push(Ct.high(Fs.of(qh)));let f=Nh(i.configure(c));return a&&l.push(f.data.of({autocomplete:Xh})),new Vl(f,l)}function Xh(e){let{state:t,pos:n}=e,r=/<[:\-\.\w\u00b7-\uffff]*$/.exec(t.sliceDoc(n-25,n));if(!r)return null;let i=Y(t).resolveInner(n,-1);for(;i&&!i.type.isTop;){if(i.name==`CodeBlock`||i.name==`FencedCode`||i.name==`ProcessingInstructionBlock`||i.name==`CommentBlock`||i.name==`Link`||i.name==`Image`)return null;i=i.parent}return{from:n-r[0].length,to:n,options:Qh(),validFor:/^<[:\-\.\w\u00b7-\uffff]*$/}}let Zh=null;function Qh(){if(Zh)return Zh;let e=hh(new ju(P.create({extensions:Jh}),0,!0));return Zh=e?e.options:[]}const $h=/code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i,eg=H.domEventHandlers({paste:(e,t)=>{let{main:n}=t.state.selection;if(n.empty)return!1;let r=e.clipboardData?.getData(`text/plain`);if(!r||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(r)||(/^www\./.test(r)&&(r=`https://`+r),!Fh.isActiveAt(t.state,n.from,1)))return!1;let i=Y(t.state),a=!1;return i.iterate({from:n.from,to:n.to,enter:e=>{(e.from>n.from||$h.test(e.name))&&(a=!0)},leave:e=>{e.to<n.to&&(a=!0)}}),a?!1:(t.dispatch({changes:[{from:n.from,insert:`[`},{from:n.to,insert:`](${r})`}],userEvent:`input.paste`,scrollIntoView:!0}),!0)}}),tg=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=og(e.state,n.from);return r.line?rg(e):r.block?ag(e):!1};function ng(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let i=e(t,n);return i?(r(n.update(i)),!0):!1}}const rg=ng(ug,0),ig=ng(lg,0),ag=ng((e,t)=>lg(e,t,cg(t)),0);function og(e,t){let n=e.languageDataAt(`commentTokens`,t,1);return n.length?n[0]:{}}function sg(e,{open:t,close:n},r,i){let a=e.sliceDoc(r-50,r),o=e.sliceDoc(i,i+50),s=/\s*$/.exec(a)[0].length,c=/^\s*/.exec(o)[0].length,l=a.length-s;if(a.slice(l-t.length,l)==t&&o.slice(c,c+n.length)==n)return{open:{pos:r-s,margin:s&&1},close:{pos:i+c,margin:c&&1}};let u,d;i-r<=100?u=d=e.sliceDoc(r,i):(u=e.sliceDoc(r,r+50),d=e.sliceDoc(i-50,i));let f=/^\s*/.exec(u)[0].length,p=/\s*$/.exec(d)[0].length,m=d.length-p-n.length;return u.slice(f,f+t.length)==t&&d.slice(m,m+n.length)==n?{open:{pos:r+f+t.length,margin:+!!/\s/.test(u.charAt(f+t.length))},close:{pos:i-p-n.length,margin:+!!/\s/.test(d.charAt(m-1))}}:null}function cg(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),i=n.to<=r.to?r:e.doc.lineAt(n.to);i.from>r.from&&i.from==n.to&&(i=n.to==r.to+1?r:e.doc.lineAt(n.to-1));let a=t.length-1;a>=0&&t[a].to>r.from?t[a].to=i.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return t}function lg(e,t,n=t.selection.ranges){let r=n.map(e=>og(t,e.from).block);if(!r.every(e=>e))return null;let i=n.map((e,n)=>sg(t,r[n],e.from,e.to));if(e!=2&&!i.every(e=>e))return{changes:t.changes(n.map((e,t)=>i[t]?[]:[{from:e.from,insert:r[t].open+` `},{from:e.to,insert:` `+r[t].close}]))};if(e!=1&&i.some(e=>e)){let e=[];for(let t=0,n;t<i.length;t++)if(n=i[t]){let i=r[t],{open:a,close:o}=n;e.push({from:a.pos-i.open.length,to:a.pos+a.margin},{from:o.pos-o.margin,to:o.pos+i.close.length})}return{changes:e}}return null}function ug(e,t,n=t.selection.ranges){let r=[],i=-1;ranges:for(let{from:e,to:a}of n){let n=r.length,o=1e9,s;for(let n=e;n<=a;){let c=t.doc.lineAt(n);if(s==null&&(s=og(t,c.from).line,!s))continue ranges;if(c.from>i&&(e==a||a>c.from)){i=c.from;let e=/^\s*/.exec(c.text)[0].length,t=e==c.length,n=c.text.slice(e,e+s.length)==s?e:-1;e<c.text.length&&e<o&&(o=e),r.push({line:c,comment:n,token:s,indent:e,empty:t,single:!1})}n=c.to+1}if(o<1e9)for(let e=n;e<r.length;e++)r[e].indent<r[e].line.text.length&&(r[e].indent=o);r.length==n+1&&(r[n].single=!0)}if(e!=2&&r.some(e=>e.comment<0&&(!e.empty||e.single))){let e=[];for(let{line:t,token:n,indent:i,empty:a,single:o}of r)(o||!a)&&e.push({from:t.from+i,insert:n+` `});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}else if(e!=1&&r.some(e=>e.comment>=0)){let e=[];for(let{line:t,comment:n,token:i}of r)if(n>=0){let r=t.from+n,a=r+i.length;t.text[a-t.from]==` `&&a++,e.push({from:r,to:a})}return{changes:e}}return null}const dg=Rt.define(),fg=Rt.define(),pg=M.define(),mg=M.define({combine(e){return tn(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}}),hg=bt.define({create(){return Ng.empty},update(e,t){let n=t.state.facet(mg),r=t.annotation(dg);if(r){let i=Sg.fromTransaction(t,r.selection),a=r.side,o=a==0?e.undone:e.done;return o=i?Cg(o,o.length,n.minDepth,i):Og(o,t.startState.selection),new Ng(a==0?r.rest:o,a==0?o:r.rest)}let i=t.annotation(fg);if((i==`full`||i==`before`)&&(e=e.isolate()),t.annotation(Vt.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let a=Sg.fromTransaction(t),o=t.annotation(Vt.time),s=t.annotation(Vt.userEvent);return a?e=e.addChanges(a,o,s,n,t):t.selection&&(e=e.addSelection(t.startState.selection,o,s,n.newGroupDelay)),(i==`full`||i==`after`)&&(e=e.isolate()),e},toJSON(e){return{done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}},fromJSON(e){return new Ng(e.done.map(Sg.fromJSON),e.undone.map(Sg.fromJSON))}});function gg(e={}){return[hg,mg.of(e),H.domEventHandlers({beforeinput(e,t){let n=e.inputType==`historyUndo`?vg:e.inputType==`historyRedo`?yg:null;return n?(e.preventDefault(),n(t)):!1}})]}function _g(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let i=n.field(hg,!1);if(!i)return!1;let a=i.pop(e,n,t);return a?(r(a),!0):!1}}const vg=_g(0,!1),yg=_g(1,!1),bg=_g(0,!0),xg=_g(1,!0);var Sg=class e{constructor(e,t,n,r,i){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=i}setSelAfter(t){return new e(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){return{changes:this.changes?.toJSON(),mapped:this.mapped?.toJSON(),startSelection:this.startSelection?.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(t){return new e(t.changes&&it.fromJSON(t.changes),[],t.mapped&&rt.fromJSON(t.mapped),t.startSelection&&j.fromJSON(t.startSelection),t.selectionsAfter.map(j.fromJSON))}static fromTransaction(t,n){let r=Dg;for(let e of t.startState.facet(pg)){let n=e(t);n.length&&(r=r.concat(n))}return!r.length&&t.changes.empty?null:new e(t.changes.invert(t.startState.doc),r,void 0,n||t.startState.selection,Dg)}static selection(t){return new e(void 0,Dg,void 0,void 0,t)}};function Cg(e,t,n,r){let i=t+1>n+20?t-n-1:0,a=e.slice(i,t);return a.push(r),a}function wg(e,t){let n=[],r=!1;return e.iterChangedRanges((e,t)=>n.push(e,t)),t.iterChangedRanges((e,t,i,a)=>{for(let e=0;e<n.length;){let t=n[e++],o=n[e++];a>=t&&i<=o&&(r=!0)}}),r}function Tg(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((e,n)=>e.empty!=t.ranges[n].empty).length===0}function Eg(e,t){return e.length?t.length?e.concat(t):e:t}const Dg=[];function Og(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-200));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),Cg(e,e.length-1,1e9,n.setSelAfter(r)))}else return[Sg.selection([t])]}function kg(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function Ag(e,t){if(!e.length)return e;let n=e.length,r=Dg;for(;n;){let i=jg(e[n-1],t,r);if(i.changes&&!i.changes.empty||i.effects.length){let t=e.slice(0,n);return t[n-1]=i,t}else t=i.mapped,n--,r=i.selectionsAfter}return r.length?[Sg.selection(r)]:Dg}function jg(e,t,n){let r=Eg(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):Dg,n);if(!e.changes)return Sg.selection(r);let i=e.changes.map(t),a=t.mapDesc(e.changes,!0),o=e.mapped?e.mapped.composeDesc(a):a;return new Sg(i,N.mapEffects(e.effects,t),o,e.startSelection.map(a),r)}const Mg=/^(input\.type|delete)($|\.)/;var Ng=class e{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new e(this.done,this.undone):this}addChanges(t,n,r,i,a){let o=this.done,s=o[o.length-1];return o=s&&s.changes&&!s.changes.empty&&t.changes&&(!r||Mg.test(r))&&(!s.selectionsAfter.length&&n-this.prevTime<i.newGroupDelay&&i.joinToEvent(a,wg(s.changes,t.changes))||r==`input.type.compose`)?Cg(o,o.length-1,i.minDepth,new Sg(t.changes.compose(s.changes),Eg(N.mapEffects(t.effects,s.changes),s.effects),s.mapped,s.startSelection,Dg)):Cg(o,o.length,i.minDepth,t),new e(o,Dg,n,r)}addSelection(t,n,r,i){let a=this.done.length?this.done[this.done.length-1].selectionsAfter:Dg;return a.length>0&&n-this.prevTime<i&&r==this.prevUserEvent&&r&&/^select($|\.)/.test(r)&&Tg(a[a.length-1],t)?this:new e(Og(this.done,t),this.undone,n,r)}addMapping(t){return new e(Ag(this.done,t),Ag(this.undone,t),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=e==0?this.done:this.undone;if(r.length==0)return null;let i=r[r.length-1],a=i.selectionsAfter[0]||(i.startSelection?i.startSelection.map(i.changes.invertedDesc,1):t.selection);if(n&&i.selectionsAfter.length)return t.update({selection:i.selectionsAfter[i.selectionsAfter.length-1],annotations:dg.of({side:e,rest:kg(r),selection:a}),userEvent:e==0?`select.undo`:`select.redo`,scrollIntoView:!0});if(i.changes){let n=r.length==1?Dg:r.slice(0,r.length-1);return i.mapped&&(n=Ag(n,i.mapped)),t.update({changes:i.changes,selection:i.startSelection,effects:i.effects,annotations:dg.of({side:e,rest:n,selection:a}),filter:!1,userEvent:e==0?`undo`:`redo`,scrollIntoView:!0})}else return null}};Ng.empty=new Ng(Dg,Dg);const Pg=[{key:`Mod-z`,run:vg,preventDefault:!0},{key:`Mod-y`,mac:`Mod-Shift-z`,run:yg,preventDefault:!0},{linux:`Ctrl-Shift-z`,run:yg,preventDefault:!0},{key:`Mod-u`,run:bg,preventDefault:!0},{key:`Alt-u`,mac:`Mod-Shift-u`,run:xg,preventDefault:!0}];function Fg(e,t){return j.create(e.ranges.map(t),e.mainIndex)}function Ig(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:`select`})}function Lg({state:e,dispatch:t},n){let r=Fg(e.selection,n);return r.eq(e.selection,!0)?!1:(t(Ig(e,r)),!0)}function Rg(e,t){return j.cursor(t?e.to:e.from)}function zg(e,t){return Lg(e,n=>n.empty?e.moveByChar(n,t):Rg(n,t))}function Bg(e){return e.textDirectionAt(e.state.selection.main.head)==R.LTR}const Vg=e=>zg(e,!Bg(e)),Hg=e=>zg(e,Bg(e));function Ug(e,t){return Lg(e,n=>n.empty?e.moveByGroup(n,t):Rg(n,t))}const Wg=e=>Ug(e,!Bg(e)),Gg=e=>Ug(e,Bg(e));typeof Intl<`u`&&Intl.Segmenter;function Kg(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function qg(e,t,n){let r=Y(e).resolveInner(t.head),i=n?U.closedBy:U.openedBy;for(let a=t.head;;){let t=n?r.childAfter(a):r.childBefore(a);if(!t)break;Kg(e,t,i)?r=t:a=n?t.to:t.from}let a=r.type.prop(i),o,s;return s=a&&(o=n?xu(e,r.from,1):xu(e,r.to,-1))&&o.matched?n?o.end.to:o.end.from:n?r.to:r.from,j.cursor(s,n?-1:1)}const Jg=e=>Lg(e,t=>qg(e.state,t,!Bg(e))),Yg=e=>Lg(e,t=>qg(e.state,t,Bg(e)));function Xg(e,t){return Lg(e,n=>{if(!n.empty)return Rg(n,t);let r=e.moveVertically(n,t);return r.head==n.head?e.moveToLineBoundary(n,t):r})}const Zg=e=>Xg(e,!1),Qg=e=>Xg(e,!0);function $g(e){let t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,n=0,r=0,i;if(t){for(let t of e.state.facet(H.scrollMargins)){let i=t(e);i?.top&&(n=Math.max(i?.top,n)),i?.bottom&&(r=Math.max(i?.bottom,r))}i=e.scrollDOM.clientHeight-n-r}else i=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:n,marginBottom:r,selfScroll:t,height:Math.max(e.defaultLineHeight,i-5)}}function e_(e,t){let n=$g(e),{state:r}=e,i=Fg(r.selection,r=>r.empty?e.moveVertically(r,t,n.height):Rg(r,t));if(i.eq(r.selection))return!1;let a;if(n.selfScroll){let t=e.coordsAtPos(r.selection.main.head),o=e.scrollDOM.getBoundingClientRect(),s=o.top+n.marginTop,c=o.bottom-n.marginBottom;t&&t.top>s&&t.bottom<c&&(a=H.scrollIntoView(i.main.head,{y:`start`,yMargin:t.top-s}))}return e.dispatch(Ig(r,i),{effects:a}),!0}const t_=e=>e_(e,!1),n_=e=>e_(e,!0);function r_(e,t,n){let r=e.lineBlockAt(t.head),i=e.moveToLineBoundary(t,n);if(i.head==t.head&&i.head!=(n?r.to:r.from)&&(i=e.moveToLineBoundary(t,n,!1)),!n&&i.head==r.from&&r.length){let n=/^\s*/.exec(e.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;n&&t.head!=r.from+n&&(i=j.cursor(r.from+n))}return i}const i_=e=>Lg(e,t=>r_(e,t,!0)),a_=e=>Lg(e,t=>r_(e,t,!1)),o_=e=>Lg(e,t=>r_(e,t,!Bg(e))),s_=e=>Lg(e,t=>r_(e,t,Bg(e))),c_=e=>Lg(e,t=>j.cursor(e.lineBlockAt(t.head).from,1)),l_=e=>Lg(e,t=>j.cursor(e.lineBlockAt(t.head).to,-1));function u_(e,t,n){let r=!1,i=Fg(e.selection,t=>{let i=xu(e,t.head,-1)||xu(e,t.head,1)||t.head>0&&xu(e,t.head-1,1)||t.head<e.doc.length&&xu(e,t.head+1,-1);if(!i||!i.end)return t;r=!0;let a=i.start.from==t.head?i.end.to:i.end.from;return n?j.range(t.anchor,a):j.cursor(a)});return r?(t(Ig(e,i)),!0):!1}const d_=({state:e,dispatch:t})=>u_(e,t,!1);function f_(e,t,n){let r=Fg(e.state.selection,e=>{e.undirectional&&e.head>=e.anchor!=t&&(e=j.range(e.head,e.anchor));let r=n(e);return j.range(e.anchor,r.head,r.goalColumn,r.bidiLevel||void 0,r.assoc)});return r.eq(e.state.selection)?!1:(e.dispatch(Ig(e.state,r)),!0)}function p_(e,t){return f_(e,t,n=>e.moveByChar(n,t))}const m_=e=>p_(e,!Bg(e)),h_=e=>p_(e,Bg(e));function g_(e,t){return f_(e,t,n=>e.moveByGroup(n,t))}const __=e=>g_(e,!Bg(e)),v_=e=>g_(e,Bg(e)),y_=e=>{let t=!Bg(e);return f_(e,t,n=>qg(e.state,n,t))},b_=e=>{let t=Bg(e);return f_(e,t,n=>qg(e.state,n,t))};function x_(e,t){return f_(e,t,n=>e.moveVertically(n,t))}const S_=e=>x_(e,!1),C_=e=>x_(e,!0);function w_(e,t){return f_(e,t,n=>e.moveVertically(n,t,$g(e).height))}const T_=e=>w_(e,!1),E_=e=>w_(e,!0),D_=e=>f_(e,!0,t=>r_(e,t,!0)),O_=e=>f_(e,!1,t=>r_(e,t,!1)),k_=e=>{let t=!Bg(e);return f_(e,t,n=>r_(e,n,t))},A_=e=>{let t=Bg(e);return f_(e,t,n=>r_(e,n,t))},j_=e=>f_(e,!1,t=>j.cursor(e.lineBlockAt(t.head).from)),M_=e=>f_(e,!0,t=>j.cursor(e.lineBlockAt(t.head).to)),N_=({state:e,dispatch:t})=>(t(Ig(e,{anchor:0})),!0),P_=({state:e,dispatch:t})=>(t(Ig(e,{anchor:e.doc.length})),!0),F_=({state:e,dispatch:t})=>(t(Ig(e,{anchor:e.selection.main.anchor,head:0})),!0),I_=({state:e,dispatch:t})=>(t(Ig(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),L_=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:`select`})),!0),R_=({state:e,dispatch:t})=>{let n=rv(e).map(({from:t,to:n})=>j.undirectionalRange(t,Math.min(n+1,e.doc.length)));return t(e.update({selection:j.create(n),userEvent:`select`})),!0},z_=({state:e,dispatch:t})=>{let n=Fg(e.selection,t=>{let n=Y(e),r=n.resolveStack(t.from,1);if(t.empty){let e=n.resolveStack(t.from,-1);e.node.from>=r.node.from&&e.node.to<=r.node.to&&(r=e)}for(let e=r;e;e=e.next){let{node:n}=e;if((n.from<t.from&&n.to>=t.to||n.to>t.to&&n.from<=t.from)&&e.next)return j.undirectionalRange(n.from,n.to)}return t});return n.eq(e.selection)?!1:(t(Ig(e,n)),!0)};function B_(e,t){let{state:n}=e,r=n.selection,i=n.selection.ranges.slice();for(let r of n.selection.ranges){let a=n.doc.lineAt(r.head);if(t?a.to<e.state.doc.length:a.from>0)for(let n=r;;){let r=e.moveVertically(n,t);if(r.head<a.from||r.head>a.to){i.some(e=>e.head==r.head)||i.push(r);break}else if(r.head==n.head)break;else n=r}}return i.length==r.ranges.length?!1:(e.dispatch(Ig(n,j.create(i,i.length-1))),!0)}const V_=e=>B_(e,!1),H_=e=>B_(e,!0),U_=({state:e,dispatch:t})=>{let n=e.selection,r=null;return n.ranges.length>1?r=j.create([n.main]):n.main.empty||(r=j.create([j.cursor(n.main.head)])),r?(t(Ig(e,r)),!0):!1};function W_(e,t){if(e.state.readOnly)return!1;let n=`delete.selection`,{state:r}=e,i=r.changeByRange(r=>{let{from:i,to:a}=r;if(i==a){let o=t(r);o<i?(n=`delete.backward`,o=G_(e,o,!1)):o>i&&(n=`delete.forward`,o=G_(e,o,!0)),i=Math.min(i,o),a=Math.max(a,o)}else i=G_(e,i,!1),a=G_(e,a,!0);return i==a?{range:r}:{changes:{from:i,to:a},range:j.cursor(i,i<r.head?-1:1)}});return i.changes.empty?!1:(e.dispatch(r.update(i,{scrollIntoView:!0,userEvent:n,effects:n==`delete.selection`?H.announce.of(r.phrase(`Selection deleted`)):void 0})),!0)}function G_(e,t,n){if(e instanceof H)for(let r of e.state.facet(H.atomicRanges).map(t=>t(e)))r.between(t,t,(e,r)=>{e<t&&r>t&&(t=n?r:e)});return t}const K_=(e,t,n)=>W_(e,r=>{let i=r.from,{state:a}=e,o=a.doc.lineAt(i),s,c;if(n&&!t&&i>o.from&&i<o.from+200&&!/[^ \t]/.test(s=o.text.slice(0,i-o.from))){if(s[s.length-1]==` `)return i-1;let e=xn(s,a.tabSize)%Gl(a)||Gl(a);for(let t=0;t<e&&s[s.length-1-t]==` `;t++)i--;c=i}else c=Xe(o.text,i-o.from,t,t)+o.from,c==i&&o.number!=(t?a.doc.lines:1)?c+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(o.text.slice(c-o.from,i-o.from))&&(c=Xe(o.text,c-o.from,!1,!1)+o.from);return c}),q_=e=>K_(e,!1,!0),J_=e=>K_(e,!0,!1),Y_=(e,t)=>W_(e,n=>{let r=n.head,{state:i}=e,a=i.doc.lineAt(r),o=i.charCategorizer(r);for(let e=null;;){if(r==(t?a.to:a.from)){r==n.head&&a.number!=(t?i.doc.lines:1)&&(r+=t?1:-1);break}let s=Xe(a.text,r-a.from,t)+a.from,c=a.text.slice(Math.min(r,s)-a.from,Math.max(r,s)-a.from),l=o(c);if(e!=null&&l!=e)break;(c!=` `||r!=n.head)&&(e=l),r=s}return r}),X_=e=>Y_(e,!1),Z_=e=>Y_(e,!0),Q_=e=>W_(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),$_=e=>W_(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),ev=e=>W_(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),tv=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:A.of([``,``])},range:j.cursor(e.from)}));return t(e.update(n,{scrollIntoView:!0,userEvent:`input`})),!0},nv=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(t=>{if(!t.empty||t.from==0||t.from==e.doc.length)return{range:t};let n=t.from,r=e.doc.lineAt(n),i=n==r.from?n-1:Xe(r.text,n-r.from,!1)+r.from,a=n==r.to?n+1:Xe(r.text,n-r.from,!0)+r.from;return{changes:{from:i,to:a,insert:e.doc.slice(n,a).append(e.doc.slice(i,n))},range:j.cursor(a)}});return n.changes.empty?!1:(t(e.update(n,{scrollIntoView:!0,userEvent:`move.character`})),!0)};function rv(e){let t=[],n=-1;for(let r of e.selection.ranges){let i=e.doc.lineAt(r.from),a=e.doc.lineAt(r.to);if(!r.empty&&r.to==a.from&&(a=e.doc.lineAt(r.to-1)),n>=i.number){let e=t[t.length-1];e.to=a.to,e.ranges.push(r)}else t.push({from:i.from,to:a.to,ranges:[r]});n=a.number+1}return t}function iv(e,t,n){if(e.readOnly)return!1;let r=[],i=[];for(let t of rv(e)){if(n?t.to==e.doc.length:t.from==0)continue;let a=e.doc.lineAt(n?t.to+1:t.from-1),o=a.length+1;if(n){r.push({from:t.to,to:a.to},{from:t.from,insert:a.text+e.lineBreak});for(let n of t.ranges)i.push(j.range(Math.min(e.doc.length,n.anchor+o),Math.min(e.doc.length,n.head+o)))}else{r.push({from:a.from,to:t.from},{from:t.to,insert:e.lineBreak+a.text});for(let e of t.ranges)i.push(j.range(e.anchor-o,e.head-o))}}return r.length?(t(e.update({changes:r,scrollIntoView:!0,selection:j.create(i,e.selection.mainIndex),userEvent:`move.line`})),!0):!1}const av=({state:e,dispatch:t})=>iv(e,t,!1),ov=({state:e,dispatch:t})=>iv(e,t,!0);function sv(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of rv(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});let i=e.changes(r);return t(e.update({changes:i,selection:e.selection.map(i,n?1:-1),scrollIntoView:!0,userEvent:`input.copyline`})),!0}const cv=({state:e,dispatch:t})=>sv(e,t,!1),lv=({state:e,dispatch:t})=>sv(e,t,!0),uv=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(rv(t).map(({from:e,to:n})=>(e>0?e--:n<t.doc.length&&n++,{from:e,to:n}))),r=Fg(t.selection,t=>{let n;if(e.lineWrapping){let r=e.lineBlockAt(t.head),i=e.coordsAtPos(t.head,t.assoc||1);i&&(n=r.bottom+e.documentTop-i.bottom+e.defaultLineHeight/2)}return e.moveVertically(t,!0,n)}).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:`delete.line`}),!0};function dv(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n=Y(e).resolveInner(t),r=n.childBefore(t),i=n.childAfter(t),a;return r&&i&&r.to<=t&&i.from>=t&&(a=r.type.prop(U.closedBy))&&a.indexOf(i.name)>-1&&e.doc.lineAt(r.to).from==e.doc.lineAt(i.from).from&&!/\S/.test(e.sliceDoc(r.to,i.from))?{from:r.to,to:i.from}:null}const fv=mv(!1),pv=mv(!0);function mv(e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let r=t.changeByRange(n=>{let{from:r,to:i}=n,a=t.doc.lineAt(r),o=!e&&r==i&&dv(t,r);e&&(r=i=(i<=a.to?a:t.doc.lineAt(i)).to);let s=new Jl(t,{simulateBreak:r,simulateDoubleBreak:!!o}),c=ql(s,r);for(c??=xn(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize);i<a.to&&/\s/.test(a.text[i-a.from]);)i++;o?{from:r,to:i}=o:r>a.from&&r<a.from+100&&!/\S/.test(a.text.slice(0,r))&&(r=a.from);let l=[``,Kl(t,c)];return o&&l.push(Kl(t,s.lineIndent(a.from,-1))),{changes:{from:r,to:i,insert:A.of(l)},range:j.cursor(r+1+l[1].length)}});return n(t.update(r,{scrollIntoView:!0,userEvent:`input`})),!0}}function hv(e,t){let n=-1;return e.changeByRange(r=>{let i=[];for(let a=r.from;a<=r.to;){let o=e.doc.lineAt(a);o.number>n&&(r.empty||r.to>o.from)&&(t(o,i,r),n=o.number),a=o.to+1}let a=e.changes(i);return{changes:i,range:j.range(a.mapPos(r.anchor,1),a.mapPos(r.head,1))}})}const gv=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new Jl(e,{overrideIndentation:e=>n[e]??-1}),i=hv(e,(t,i,a)=>{let o=ql(r,t.from);if(o==null)return;/\S/.test(t.text)||(o=0);let s=/^\s*/.exec(t.text)[0],c=Kl(e,o);(s!=c||a.from<t.from+s.length)&&(n[t.from]=o,i.push({from:t.from,to:t.from+s.length,insert:c}))});return i.changes.empty||t(e.update(i,{userEvent:`indent`})),!0},_v=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(hv(e,(t,n)=>{n.push({from:t.from,insert:e.facet(Wl)})}),{userEvent:`input.indent`})),!0),vv=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(hv(e,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let i=xn(r,e.tabSize),a=0,o=Kl(e,Math.max(0,i-Gl(e)));for(;a<r.length&&a<o.length&&r.charCodeAt(a)==o.charCodeAt(a);)a++;n.push({from:t.from+a,to:t.from+r.length,insert:o.slice(a)})}),{userEvent:`delete.dedent`})),!0),yv=e=>(e.setTabFocusMode(),!0),bv=[{key:`Ctrl-b`,run:Vg,shift:m_,preventDefault:!0},{key:`Ctrl-f`,run:Hg,shift:h_},{key:`Ctrl-p`,run:Zg,shift:S_},{key:`Ctrl-n`,run:Qg,shift:C_},{key:`Ctrl-a`,run:c_,shift:j_},{key:`Ctrl-e`,run:l_,shift:M_},{key:`Ctrl-d`,run:J_},{key:`Ctrl-h`,run:q_},{key:`Ctrl-k`,run:Q_},{key:`Ctrl-Alt-h`,run:X_},{key:`Ctrl-o`,run:tv},{key:`Ctrl-t`,run:nv},{key:`Ctrl-v`,run:n_}],xv=[{key:`ArrowLeft`,run:Vg,shift:m_,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:Wg,shift:__,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:o_,shift:k_,preventDefault:!0},{key:`ArrowRight`,run:Hg,shift:h_,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:Gg,shift:v_,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:s_,shift:A_,preventDefault:!0},{key:`ArrowUp`,run:Zg,shift:S_,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:N_,shift:F_},{mac:`Ctrl-ArrowUp`,run:t_,shift:T_},{key:`ArrowDown`,run:Qg,shift:C_,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:P_,shift:I_},{mac:`Ctrl-ArrowDown`,run:n_,shift:E_},{key:`PageUp`,run:t_,shift:T_},{key:`PageDown`,run:n_,shift:E_},{key:`Home`,run:a_,shift:O_,preventDefault:!0},{key:`Mod-Home`,run:N_,shift:F_},{key:`End`,run:i_,shift:D_,preventDefault:!0},{key:`Mod-End`,run:P_,shift:I_},{key:`Enter`,run:fv,shift:fv},{key:`Mod-a`,run:L_},{key:`Backspace`,run:q_,shift:q_,preventDefault:!0},{key:`Delete`,run:J_,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:X_,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:Z_,preventDefault:!0},{mac:`Mod-Backspace`,run:$_,preventDefault:!0},{mac:`Mod-Delete`,run:ev,preventDefault:!0}].concat(bv.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),Sv=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:Jg,shift:y_},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:Yg,shift:b_},{key:`Alt-ArrowUp`,run:av},{key:`Shift-Alt-ArrowUp`,run:cv},{key:`Alt-ArrowDown`,run:ov},{key:`Shift-Alt-ArrowDown`,run:lv},{key:`Mod-Alt-ArrowUp`,run:V_},{key:`Mod-Alt-ArrowDown`,run:H_},{key:`Escape`,run:U_},{key:`Mod-Enter`,run:pv},{key:`Alt-l`,mac:`Ctrl-l`,run:R_},{key:`Mod-i`,run:z_,preventDefault:!0},{key:`Mod-[`,run:vv},{key:`Mod-]`,run:_v},{key:`Mod-Alt-\\`,run:gv},{key:`Shift-Mod-k`,run:uv},{key:`Shift-Mod-\\`,run:d_},{key:`Mod-/`,run:tg},{key:`Alt-A`,mac:`Ctrl-A`,run:ig},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:yv}].concat(xv),Cv=`var(--dsw-alias-brand-primary, #3e63dd)`,wv=`color-mix(in srgb, var(--dsw-alias-brand-primary, #3e63dd) 55%, transparent)`,Tv=`var(--dsw-alias-label-dimmed, #999)`,Ev=`ui-monospace, "Cascadia Mono", Consolas, "SF Mono", Menlo, monospace`,Dv=du.define([{tag:[J.heading1,J.heading2,J.heading3,J.heading4,J.heading5,J.heading6],color:Cv,fontWeight:`700`},{tag:J.processingInstruction,color:wv},{tag:J.monospace,fontFamily:Ev,backgroundColor:`color-mix(in srgb, var(--dsw-alias-label-secondary, #888) 12%, transparent)`,borderRadius:`4px`,padding:`0 3px`},{tag:J.content,fontFamily:Ev,backgroundColor:`color-mix(in srgb, var(--dsw-alias-label-secondary, #888) 8%, transparent)`},{tag:J.strong,fontWeight:`700`},{tag:J.emphasis,fontStyle:`italic`},{tag:J.strikethrough,textDecoration:`line-through`,opacity:`.75`},{tag:J.link,color:Cv,textDecoration:`underline`},{tag:J.url,color:wv,textDecoration:`underline dotted`},{tag:J.quote,fontStyle:`italic`,color:`var(--dsw-alias-label-secondary, #888)`},{tag:J.contentSeparator,color:Tv,textDecoration:`line-through`},{tag:J.comment,color:Tv}]);function Ov(e={}){let t=document.createElement(`div`);t.className=`dsh-tw-note-editor`;let n=new H({parent:t,state:P.create({doc:``,extensions:[H.lineWrapping,gg(),Yh({base:Fh}),hu(Dv),Zs(),ac(e.placeholder??``),Fs.of([...Sv,...Pg,{key:`Mod-Enter`,run:()=>(e.onSave?.(),!0)}]),H.updateListener.of(t=>{t.docChanged&&e.onChange?.()})]})});return{el:t,view:n,getValue:()=>n.state.doc.toString(),setValue(e){n.dispatch({changes:{from:0,to:n.state.doc.length,insert:e}})},insertAtCaret(e){let{from:t}=n.state.selection.main,r=`${t===n.state.doc.lineAt(t).from?``:`
611
611
  `}${e}\n`;n.dispatch({changes:{from:t,insert:r},selection:{anchor:t+r.length},scrollIntoView:!0}),n.focus()},focus:()=>n.focus()}}const kv=`dsh-tw-note-draft-v1`;function Av(){try{let e=localStorage.getItem(kv);if(e===null)return null;let t=JSON.parse(e);return typeof t.text!=`string`||typeof t.title!=`string`?null:{text:t.text,title:t.title,tags:Array.isArray(t.tags)?t.tags.filter(e=>typeof e==`string`):[],savedAt:typeof t.savedAt==`number`?t.savedAt:0}}catch{return null}}function jv(e){try{localStorage.setItem(kv,JSON.stringify(e))}catch{}}function Mv(){try{localStorage.removeItem(kv)}catch{}}function Nv(e){return e<10?`0${e}`:String(e)}function Pv(e=new Date){return`${e.getFullYear()}-${Nv(e.getMonth()+1)}-${Nv(e.getDate())} ${Nv(e.getHours())}:${Nv(e.getMinutes())}`}function Fv(e){if(e===null)return``;let t=new Date(e).getTime();if(Number.isNaN(t))return``;let n=Date.now()-t,r=Math.floor(n/6e4);if(r<1)return`刚刚`;if(r<60)return`${r}分钟前`;let i=Math.floor(r/60);if(i<24)return`${i}小时前`;let a=Math.floor(i/24);return a<30?`${a}天前`:new Date(t).toLocaleDateString(`zh-CN`)}async function Iv(){let e={showQuickNote:!0,defaultTag:`inbox`};try{let t=await fetch(`/dsh-tiddlywiki/status`,{signal:AbortSignal.timeout(5e3)});if(!t.ok)return e;let n=await t.json();return{showQuickNote:n.ui?.showQuickNote!==!1,defaultTag:n.note?.tag??`inbox`}}catch{return e}}function Lv(e={}){let t=document.createElement(`div`);t.className=`dsh-tw-note-tags`;let n=document.createElement(`div`);n.className=`dsh-tw-note-chips`;let r=document.createElement(`input`);r.className=`dsh-tw-note-taginput`,r.placeholder=`tag(可多选,自动补全)`;let i=document.createElement(`div`);i.className=`dsh-tw-note-tagsuggest`,i.hidden=!0,t.append(n,r,i);let a=[],o=()=>{i.hidden=!0},s=()=>{e.onChange?.()},c=()=>{n.replaceChildren();for(let e of a){let t=document.createElement(`span`);t.className=`dsh-tw-note-tagchip`,t.textContent=e;let r=document.createElement(`span`);r.className=`dsh-tw-note-tagchip-x`,r.textContent=`×`,r.title=`移除 tag「${e}」`,r.addEventListener(`click`,t=>{t.stopPropagation();let n=a.indexOf(e);n>=0&&(a.splice(n,1),c(),s())}),t.append(r),n.append(t)}},l=e=>{let t=e.trim();t.length===0||a.includes(t)||(a.push(t),r.value=``,c(),o(),r.focus(),s())},u=()=>{for(let e of r.value.split(/\s+/))l(e)},d=[],f,p=()=>(f??=fetch(`/dsh-tiddlywiki/tags`,{signal:AbortSignal.timeout(5e3)}).then(e=>e.ok?e.json():Promise.resolve({})).then(e=>[...e.tags??[]].sort((e,t)=>e.localeCompare(t,`zh`))).catch(()=>[]),f.then(e=>{d=e}),f),m=()=>{let e=r.value.trim().toLowerCase(),t=d.filter(t=>!a.includes(t)&&(e.length===0||t.toLowerCase().includes(e))).slice(0,8);i.replaceChildren();for(let e of t){let t=document.createElement(`div`);t.className=`dsh-tw-note-tagsuggest-item`,t.textContent=e,t.addEventListener(`mousedown`,t=>{t.preventDefault(),l(e)}),i.append(t)}i.hidden=t.length===0};return r.addEventListener(`focus`,()=>{p().then(m)}),r.addEventListener(`input`,()=>{d.length===0?p().then(m):m()}),r.addEventListener(`keydown`,e=>{e.key===`Enter`||e.key===`,`?(e.preventDefault(),u()):e.key===`Backspace`&&r.value.length===0&&a.length>0?(a.pop(),c(),s()):e.key===`Escape`&&o()}),document.addEventListener(`click`,e=>{t.contains(e.target)||o()},!0),{el:t,getTags:()=>(u(),[...a]),setDefault:e=>{if(a.length===0){let t=e.trim();t.length>0&&(a.push(t),c())}},setTags:e=>{a.length=0;for(let t of Array.isArray(e)?e:[]){let e=typeof t==`string`?t.trim():``;e.length>0&&!a.includes(e)&&a.push(e)}r.value=``,c(),o()}}}async function Rv(e,t){if(e.size>67108864){O(`文件过大(≤ 64MB)`);return}try{let n=await fetch(`/dsh-tiddlywiki/upload?name=${encodeURIComponent(e.name)}`,{method:`POST`,headers:{"content-type":e.type||`application/octet-stream`},body:e,signal:AbortSignal.timeout(12e4)}),r=await n.json().catch(()=>null);if(!n.ok||r?.ok!==!0){O(`上传失败:${r?.error??`HTTP ${n.status}`}`);return}let i=r.name??e.name,a=e.type.startsWith(`image/`)?`![${i}](${r.url})`:`[${i}](${r.url})`;t.insertAtCaret(a),O(`已上传「${i}」并插入链接`)}catch(e){O(`上传失败:${e instanceof Error?e.message:String(e)}`)}}function zv(){let e,t=!1,n=!1,r=`inbox`,i,a=!1,o=()=>{e!==void 0&&(e.titleInput.value=Pv())},s=()=>{t||!n||e===void 0||(i!==void 0&&(clearTimeout(i),i=void 0),i=window.setTimeout(()=>{if(i=void 0,e===void 0)return;let t=e.editor.getValue(),n=e.titleInput.value.trim();if(t.trim().length===0&&n.length===0){Mv();return}jv({text:t,title:n,tags:e.tagEditor.getTags(),savedAt:Date.now()})},500))},c=()=>{e!==void 0&&(e.draftBanner.hidden=!0)},l=()=>{a=!1,e!==void 0&&(e.recentWrap.hidden=!0)},u=async t=>{try{let n=await fetch(`/dsh-tiddlywiki/get?title=${encodeURIComponent(t)}`,{signal:AbortSignal.timeout(1e4)}),r=await n.json().catch(()=>null);if(!n.ok||r?.ok!==!0||typeof r.title!=`string`){O(`读取失败:${r?.notFound===!0?`不存在`:r?.error??`HTTP ${n.status}`}`);return}if(e===void 0)return;e.editor.setValue(r.text??``),e.titleInput.value=r.title,e.tagEditor.setTags(r.tags??[]),c(),l(),O(`已载入「${r.title}」`),e.editor.focus()}catch(e){O(`读取失败:${e instanceof Error?e.message:String(e)}`)}},d=()=>{if(e===void 0)return;if(a){l();return}a=!0,e.recentWrap.hidden=!1,e.recentWrap.textContent=``;let t=document.createElement(`div`);t.className=`dsh-tw-note-recent-muted`,t.textContent=`加载中…`,e.recentWrap.append(t),(async()=>{try{let t=await(await fetch(`/dsh-tiddlywiki/recent?limit=15`,{signal:AbortSignal.timeout(1e4)})).json().catch(()=>null);if(!a||e===void 0)return;e.recentWrap.replaceChildren();let n=t?.ok===!0?t.items??[]:[];if(n.length===0){let n=document.createElement(`div`);n.className=`dsh-tw-note-recent-muted`,n.textContent=t?.ok===!0?`暂无笔记`:`加载失败:${t?.error??`未知`}`,e.recentWrap.append(n);return}for(let t of n){let n=document.createElement(`div`);n.className=`dsh-tw-note-recent-item`,n.title=t.snippet||t.title;let r=document.createElement(`span`);r.className=`dsh-tw-note-recent-name`,r.textContent=t.title;let i=document.createElement(`span`);i.className=`dsh-tw-note-recent-meta`;let a=[Fv(t.modified)];t.tags.length>0&&a.unshift(t.tags.slice(0,3).join(`,`)),i.textContent=a.join(` · `),n.append(r,i),n.addEventListener(`click`,()=>{u(t.title)}),e.recentWrap.append(n)}}catch(t){if(!a||e===void 0)return;e.recentWrap.replaceChildren();let n=document.createElement(`div`);n.className=`dsh-tw-note-recent-muted`,n.textContent=`加载失败:${t instanceof Error?t.message:String(t)}`,e.recentWrap.append(n)}})()},f=()=>{if(e!==void 0)return;let t=document.createElement(`div`);t.className=`dsh-tw-note`,t.hidden=!0;let r=document.createElement(`div`);r.className=`dsh-tw-note-card`;let i=document.createElement(`div`);i.className=`dsh-tw-note-head`;let a=document.createElement(`span`);a.className=`dsh-tw-note-label`,a.textContent=`📝 快速笔记`;let o=document.createElement(`button`);o.type=`button`,o.className=`dsh-tw-note-close`,o.title=`收起`,o.textContent=`✕`,i.append(a,o);let u=document.createElement(`div`);u.className=`dsh-tw-note-draft`,u.hidden=!0;let f=document.createElement(`span`);f.className=`dsh-tw-note-draft-text`,f.textContent=`已恢复未保存草稿`;let p=document.createElement(`button`);p.type=`button`,p.className=`dsh-tw-note-draft-discard`,p.textContent=`丢弃`,u.append(f,p);let m=document.createElement(`div`);m.className=`dsh-tw-note-fields`;let h=document.createElement(`input`);h.className=`dsh-tw-note-title`,h.placeholder=`标题(默认时间戳)`;let g=Lv({onChange:s});m.append(h,g.el),h.addEventListener(`input`,s);let _,v=Ov({placeholder:`写点东西… Markdown 高亮,可 📎/拖入文件
612
612
  Ctrl+Enter 保存`,onSave:()=>{_?.()},onChange:s}),y=document.createElement(`button`);y.type=`button`,y.className=`dsh-tw-note-upload`,y.title=`上传文件到 wiki 并插入 Markdown 链接(也可直接拖入编辑器)`,y.textContent=`📎 上传`;let b=document.createElement(`input`);b.type=`file`,b.multiple=!0,b.hidden=!0,y.addEventListener(`click`,()=>{b.click()}),b.addEventListener(`change`,()=>{for(let e of Array.from(b.files??[]))Rv(e,v);b.value=``});let x=0;v.el.addEventListener(`dragenter`,e=>{e.preventDefault(),x++,v.el.classList.add(`dsh-tw-note-drop`)}),v.el.addEventListener(`dragover`,e=>{e.preventDefault()}),v.el.addEventListener(`dragleave`,e=>{e.preventDefault(),x=Math.max(0,x-1),x===0&&v.el.classList.remove(`dsh-tw-note-drop`)}),v.el.addEventListener(`drop`,e=>{e.preventDefault(),x=0,v.el.classList.remove(`dsh-tw-note-drop`);let t=e.dataTransfer?.files;if(!(t===void 0||t.length===0))for(let e of Array.from(t))Rv(e,v)});let S=document.createElement(`div`);S.className=`dsh-tw-note-foot`;let C=document.createElement(`div`);C.className=`dsh-tw-note-foot-left`;let w=document.createElement(`span`);w.className=`dsh-tw-note-hint`,w.textContent=`Ctrl+Enter`;let T=document.createElement(`button`);T.type=`button`,T.className=`dsh-tw-note-recent-btn`,T.title=`最近修改的笔记,点击载入继续编辑`,T.textContent=`🕘 最近`,T.addEventListener(`click`,d),C.append(y,T,w);let ee=document.createElement(`div`);ee.className=`dsh-tw-note-foot-right`;let E=document.createElement(`button`);E.type=`button`,E.className=`dsh-tw-note-edit`,E.title=`保存并在 TiddlyWiki 原生编辑器中打开`,E.textContent=`✏️ 在 TW 中编辑`;let D=document.createElement(`button`);D.type=`button`,D.className=`dsh-tw-note-save`,D.textContent=`保存`,ee.append(E,D),S.append(C,ee);let te=document.createElement(`div`);te.className=`dsh-tw-note-recent`,te.hidden=!0,r.append(i,u,m,v.el,S),t.append(r,te),document.body.append(t),e={root:t,card:r,editor:v,titleInput:h,tagEditor:g,saveBtn:D,editBtn:E,draftBanner:u,recentBtn:T,recentWrap:te};let ne=()=>{n=!1,t.hidden=!0,l()},re=()=>{Mv(),c(),v.setValue(``),h.value=Pv(),g.setTags([]),ne()};_=async()=>{let e=v.getValue().trim();if(e.length===0){O(`内容为空,未保存`);return}D.disabled=!0,D.textContent=`保存中…`;try{let t=await fetch(`/dsh-tiddlywiki/note`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({title:h.value.trim(),tags:g.getTags(),text:e}),signal:AbortSignal.timeout(1e4)}),n=await t.json().catch(()=>null);if(!t.ok||n?.ok!==!0){O(`保存失败:${n?.error??`HTTP ${t.status}`}`);return}re(),O(`已保存「${n.title??h.value}」`)}catch(e){O(`保存失败:${e instanceof Error?e.message:String(e)}`)}finally{D.disabled=!1,D.textContent=`保存`}},D.addEventListener(`click`,()=>{_?.()});let ie=async()=>{let e=h.value.trim().length>0?h.value.trim():Pv(),t=v.getValue(),n=g.getTags();E.disabled=!0,E.textContent=`打开中…`;try{let r=await fetch(`/dsh-tiddlywiki/edit`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({title:e,tags:n,text:t}),signal:AbortSignal.timeout(1e4)}),i=await r.json().catch(()=>null);if(!r.ok||i?.ok!==!0){O(`打开失败:${i?.error??`HTTP ${r.status}`}`);return}if(typeof i.twUrl!=`string`||typeof i.draftTitle!=`string`){O(`打开失败:服务未返回编辑器地址`);return}Mv(),c(),Te(`${new URL(i.twUrl,location.origin).href}#${encodeURIComponent(i.draftTitle)}`,i.title??e),O(`已在弹出窗口打开「${i.title??e}」编辑器`)}catch(e){O(`打开失败:${e instanceof Error?e.message:String(e)}`)}finally{E.disabled=!1,E.textContent=`✏️ 在 TW 中编辑`}};E.addEventListener(`click`,()=>{ie()}),o.addEventListener(`click`,ne),document.addEventListener(`click`,e=>{if(!n)return;let r=e.target;t.contains(r)||te.contains(r)||ne()},!0),p.addEventListener(`click`,()=>{Mv(),c(),v.setValue(``),h.value=Pv(),g.setTags([]),O(`已丢弃草稿`)})};return{async open(){if(t||(f(),e===void 0||n))return;n=!0,e.root.hidden=!1;let i=Av();i!==null&&(i.text.trim().length>0||i.title.trim().length>0)?(e.editor.setValue(i.text),e.titleInput.value=i.title,e.tagEditor.setTags(i.tags),e.draftBanner.hidden=!1):(o(),r=(await Iv()).defaultTag,e.tagEditor.setDefault(r)),e.editor.focus()},close(){e!==void 0&&(n=!1,e.root.hidden=!0,l())},async toggle(){n?this.close():await this.open()},isOpen(){return n},dispose(){t=!0,i!==void 0&&(clearTimeout(i),i=void 0),e?.editor.view.destroy(),e?.root.remove(),document.querySelector(`.dsh-tw-toast`)?.remove(),e=void 0}}}function Bv(e){return e<10?`0${e}`:String(e)}function Vv(e){return`${Bv(e.getHours())}:${Bv(e.getMinutes())}`}async function Hv(){try{let e=await fetch(`/dsh-tiddlywiki/status`,{signal:AbortSignal.timeout(8e3)});return e.ok?await e.json():null}catch{return null}}function Uv(e,t){let n=e?.git,r=[`同步知识库`],i=`offline`,a=`离线`;if(n==null||n.exists!==!0)r.push(`git 仓库不可用`);else{r.push(`分支 ${n.branch??`?`}`),typeof n.lastCommit==`string`&&r.push(n.lastCommit);let e=typeof n.behind==`number`?n.behind:0,t=typeof n.ahead==`number`?n.ahead:0;t>0&&r.push(`领先 ${t}`),e>0&&r.push(`落后 ${e}`),n.dirty===!0?(i=`dirty`,a=`待提交`,r.push(`有 ${n.dirtyFiles?.length??0} 个未提交改动`)):e>0?(i=`behind`,a=`可更新`):(i=`clean`,a=`已同步`)}return t!==void 0&&r.push(`上次同步 ${Vv(t)}`),{state:i,label:a,tooltip:r.join(` · `),...t===void 0?{}:{lastSync:t}}}function Wv(){let e={state:`offline`,label:`离线`,tooltip:`同步知识库`},t,n,r=!1,i=new Set,a=()=>{for(let e of[...i])e()},o=n=>{let r=Uv(n,t);(r.state!==e.state||r.tooltip!==e.tooltip)&&(e=r,a())},s=async()=>{o(await Hv())};return s(),n=window.setInterval(()=>{s()},3e4),{getState:()=>e,trigger:async()=>{if(r)return e;r=!0,e={...e,state:`syncing`,label:`同步中…`},a();try{let e=await fetch(`/dsh-tiddlywiki/sync`,{method:`POST`,signal:AbortSignal.timeout(12e4)}),n=await e.json().catch(()=>null);if(t=new Date,n===null||n.ok!==!0)O(`同步失败:${n?.error??n?.message??`HTTP ${e.status}`}`);else{let e=``;n.push&&n.push!==`nothing to commit`&&(e=`(${n.push})`),n.changed===!0&&(e+=n.restarted===!0?`,TW 已重启`:`,TW 未自动重启`,n.restartError&&(e+=`(${n.restartError})`)),O(`同步完成:${n.message??`OK`}${e}`)}await s()}catch(e){O(`同步失败:${e instanceof Error?e.message:String(e)}`)}finally{r=!1,await s()}return e},subscribe(e){return i.add(e),()=>{i.delete(e)}},dispose(){n!==void 0&&(clearInterval(n),n=void 0),i.clear()}}}const Gv=`/dsh-tiddlywiki/status`;async function Kv(){try{let e=await fetch(Gv,{signal:AbortSignal.timeout(5e3)});if(!e.ok)return{showQuickNote:!0,showPanelStatus:!0,showSyncButton:!0};let t=await e.json();return{showQuickNote:t.ui?.showQuickNote!==!1,showPanelStatus:t.ui?.showPanelStatus!==!1,showSyncButton:t.ui?.showSyncButton!==!1}}catch{return{showQuickNote:!0,showPanelStatus:!0,showSyncButton:!0}}}async function qv(){try{let e=await fetch(Gv,{signal:AbortSignal.timeout(8e3)});if(!e.ok)return{state:`failed`,text:`状态不可达`};let t=await e.json();return t.status===`running`?{state:`running`,text:`TW 在线 · ${t.url??``}`}:t.status===`starting`?{state:`starting`,text:`TW 启动中…`}:{state:`failed`,text:t.error??`TW 状态:${t.status??`?`}`}}catch{return{state:`failed`,text:`状态不可达`}}}function Jv(e,t,n){let r=!1,i,a,o,s,c,l,u,d=!1,f,p,m=()=>{d=!1,s!==void 0&&(s.hidden=!0)},h=()=>{let e=n.getState();o!==void 0&&(o.dataset.state=e.state),a!==void 0&&(a.title=`知识库 · ${e.tooltip}`),f!==void 0&&(f.dataset.state=e.state),p!==void 0&&(p.textContent=e.tooltip)},g=async()=>{let e=await qv();r||(c!==void 0&&(c.textContent=e.text),l!==void 0&&(l.dataset.state=e.state))},_=_=>{if(r)return;if(i=document.createElement(`div`),i.className=`dsh-tw-fab-wrap`,s=document.createElement(`div`),s.className=`dsh-tw-fab-menu`,s.hidden=!0,_.showPanelStatus){let e=document.createElement(`div`);e.className=`dsh-tw-fab-status`,l=document.createElement(`span`),l.className=`dsh-tw-fab-status-dot`,l.dataset.state=`unknown`,c=document.createElement(`span`),c.className=`dsh-tw-fab-status-text`,c.textContent=`TiddlyWiki 服务…`,e.append(l,c),s.append(e)}if(_.showSyncButton){let e=document.createElement(`div`);e.className=`dsh-tw-fab-status`,f=document.createElement(`span`),f.className=`dsh-tw-fab-status-dot`,f.dataset.state=n.getState().state,p=document.createElement(`span`),p.className=`dsh-tw-fab-status-text`,p.textContent=n.getState().tooltip,e.append(f,p),s.append(e)}if(_.showQuickNote){let e=document.createElement(`button`);e.type=`button`,e.className=`dsh-tw-fab-item`,e.textContent=`📝 快速笔记`,e.addEventListener(`click`,()=>{m(),t.toggle()}),s.append(e)}if(_.showPanelStatus){u=document.createElement(`span`),u.textContent=`打开 TW 面板`;let t=document.createElement(`button`);t.type=`button`,t.className=`dsh-tw-fab-item`,t.append(document.createTextNode(`🖥 `),u),t.addEventListener(`click`,()=>{m(),e.toggle()}),s.append(t);let n=document.createElement(`button`);n.type=`button`,n.className=`dsh-tw-fab-item`,n.textContent=`🔄 重载 TW 面板`,n.addEventListener(`click`,()=>{m(),document.dispatchEvent(new CustomEvent(`dsh-tw-panel-reload`)),g()}),s.append(n)}if(_.showSyncButton){let e=document.createElement(`button`);e.type=`button`,e.className=`dsh-tw-fab-item`,e.textContent=`🔁 同步`,e.addEventListener(`click`,()=>{m(),n.trigger()}),s.append(e)}a=document.createElement(`button`),a.type=`button`,a.className=`dsh-tw-fab`,a.setAttribute(`aria-label`,`TiddlyWiki 知识库`);let v=document.createElement(`span`);v.className=`dsh-tw-fab-icon`,v.innerHTML=`<svg viewBox="0 0 16 16" width="17" height="17" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 2.5h8a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1z"/><path d="M6 6h4M6 8.5h2.5"/></svg>`,o=document.createElement(`span`),o.className=`dsh-tw-fab-dot`,o.dataset.state=n.getState().state,a.append(v,o),a.addEventListener(`click`,()=>{if(s!==void 0){if(d){m();return}d=!0,s.hidden=!1,h(),g()}}),i.append(s,a),document.body.append(i),h(),document.addEventListener(`click`,e=>{if(!d)return;let t=e.target;i!==void 0&&i.contains(t)||m()},!0)},v=e.subscribe(()=>{u!==void 0&&(u.textContent=e.isOpen()?`收起 TW 面板`:`打开 TW 面板`)}),y=n.subscribe(h);return(async()=>{let e=await Kv();r||!e.showQuickNote&&!e.showPanelStatus&&!e.showSyncButton||_(e)})(),()=>{r=!0,v(),y(),i?.remove()}}const Yv=`/dsh-tiddlywiki/admin/info`,Xv=`/dsh-tiddlywiki/admin/seeds/run`;function $(e,t,n){let r=document.createElement(e);return t!==void 0&&(r.className=t),n!==void 0&&(r.textContent=n),r}async function Zv(e,t){let n=await fetch(e,{...t,signal:AbortSignal.timeout(15e3)}),r=await n.json().catch(()=>({}));if(!n.ok){let e=r.error??`HTTP ${n.status}`;throw Error(e)}return r}function Qv(e){let t=!1;e.classList.add(`dsh-tw-settings`);let n=$(`div`,`dsh-tw-settings-row dsh-tw-settings-status`),r=$(`div`,`dsh-tw-settings-body`);e.append(n,r);let i=[],a=async()=>{try{let e=await Zv(`/dsh-tiddlywiki/admin/state`);if(t)return;$v(n,e,a),ry(r,e,a)}catch(e){if(t)return;r.replaceChildren(),n.replaceChildren();let i=$(`div`,`dsh-tw-settings-error`,`加载配置失败:${e instanceof Error?e.message:String(e)}`),o=$(`button`,`dsh-tw-settings-btn`,`重试`);o.type=`button`,o.addEventListener(`click`,()=>{a()}),r.append(i,o)}};return a(),i.push(()=>{t=!0,e.replaceChildren(),e.classList.remove(`dsh-tw-settings`)}),()=>{for(let e of i.splice(0))e()}}function $v(e,t,n){e.replaceChildren();let r=t.server??{},i=r.status??`unknown`,a=$(`span`,`dsh-tw-settings-chip`,i);a.dataset.state=i;let o=$(`span`,`dsh-tw-settings-muted`,[r.url===void 0?``:`TW ${r.url}`,t.git?.branch===void 0?``:`git ${t.git.branch}`,t.git?.lastCommit===void 0?``:t.git.lastCommit,t.git?.dirty===!0?`有未提交改动`:``].filter(Boolean).join(` · `)),s=$(`button`,`dsh-tw-settings-btn`,`同步`);s.type=`button`,s.title=`git 同步(pull → commit → push)`,s.addEventListener(`click`,()=>{s.disabled=!0,s.textContent=`同步中…`,(async()=>{try{let e=await fetch(`/dsh-tiddlywiki/sync`,{method:`POST`,signal:AbortSignal.timeout(12e4)}),t=await e.json().catch(()=>null);if(!e.ok||t?.ok!==!0)O(`同步失败:${t?.error??t?.message??`HTTP ${e.status}`}`);else{let e=``;t.changed===!0&&(e+=t.restarted===!0?`,TW 已重启`:`,TW 未自动重启`,t.restartError&&(e+=`(${t.restartError})`)),O(`同步完成:${t.message??`OK`}${e}`)}}catch(e){O(`同步失败:${e instanceof Error?e.message:String(e)}`)}finally{s.disabled=!1,s.textContent=`同步`,n()}})()});let c=$(`button`,`dsh-tw-settings-btn`,`重启 TW`);c.type=`button`,c.addEventListener(`click`,()=>{c.disabled=!0,c.textContent=`重启中…`,(async()=>{try{await Zv(`/dsh-tiddlywiki/admin/restart`,{method:`POST`}),O(`TW 已重启`)}catch(e){O(`重启失败:${e instanceof Error?e.message:String(e)}`)}finally{c.disabled=!1,c.textContent=`重启 TW`,n()}})()}),e.append(a,o,s,c)}function ey(e,t,n){let r=$(`section`,`dsh-tw-settings-section`);r.append($(`h3`,`dsh-tw-settings-h`,`常规配置`));let i=t.note??{},a=t.git??{},o=t.ui??{},s=[],c=(e,t,n)=>{let i=$(`input`,`dsh-tw-settings-input`);i.value=n;let a=$(`label`,`dsh-tw-settings-field`);a.append($(`span`,`dsh-tw-settings-label`,t),i),s.push({key:e,input:i,initial:n,read:()=>i.value.trim(),changed:()=>i.value.trim()!==n}),r.append(a)},l=(e,t,n)=>{let i=$(`input`,`dsh-tw-settings-check`);i.type=`checkbox`,i.checked=n;let a=$(`label`,`dsh-tw-settings-field dsh-tw-settings-field-check`);a.append(i,$(`span`,`dsh-tw-settings-label`,t)),s.push({key:e,input:i,initial:n,read:()=>i.checked,changed:()=>i.checked!==n}),r.append(a)},u=(e,t,n)=>{let i=$(`input`,`dsh-tw-settings-input`);i.type=`number`,i.value=String(n);let a=$(`label`,`dsh-tw-settings-field`);a.append($(`span`,`dsh-tw-settings-label`,t),i),s.push({key:e,input:i,initial:n,read:()=>Number(i.value)||n,changed:()=>(Number(i.value)||n)!==n}),r.append(a)};c(`note.tag`,`快速笔记默认 tag`,typeof i.tag==`string`?i.tag:`inbox`),l(`git.autoCommit`,`自动 commit(防抖)`,a.autoCommit!==!1),u(`git.debounceMs`,`自动 commit 防抖(ms)`,typeof a.debounceMs==`number`?a.debounceMs:6e4),c(`git.remote`,`git 远端(空=仅本地)`,typeof a.remote==`string`?a.remote:``),c(`git.branch`,`git 分支`,typeof a.branch==`string`?a.branch:`main`),l(`ui.showQuickNote`,`显示「知识库」按钮里的「快速笔记」入口`,o.showQuickNote!==!1),l(`ui.showPanelStatus`,`显示「知识库」按钮里的 TW 面板/重载入口与状态行`,o.showPanelStatus!==!1),l(`ui.showSyncButton`,`显示「知识库」按钮里的「同步」入口与 git 状态点`,o.showSyncButton!==!1),l(`ui.followDshTheme`,`嵌入式 TW 跟随 DSH 深浅主题(暗色时自动切深色 palette,不写回 wiki)`,o.followDshTheme!==!1),c(`ui.darkPalette`,`暗色时 TW palette(tiddler 标题)`,typeof o.darkPalette==`string`&&o.darkPalette.length>0?o.darkPalette:`$:/palettes/CupertinoDark`);let d=o.allArticles??{};u(`ui.allArticles.pageSize`,`「所有文章」每页条数`,typeof d.pageSize==`number`?d.pageSize:10);let f=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`保存配置`);f.type=`button`,f.addEventListener(`click`,()=>{f.disabled=!0,(async()=>{let e={};for(let t of s){if(!t.changed())continue;let n=t.key.split(`.`),r=e;for(let e=0;e<n.length;e++){let i=n[e];if(i===void 0)break;if(e===n.length-1)r[i]=t.read();else{let e=r[i]??{};r[i]=e,r=e}}}try{await Zv(`/dsh-tiddlywiki/admin/config`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}),O(`配置已保存`),n()}catch(e){O(`保存失败:${e instanceof Error?e.message:String(e)}`)}finally{f.disabled=!1}})()}),r.append(f),e.append(r)}function ty(e,t,n,r){let i=n?.plugins??[],a=n?.themes??[],o=n?.languages??[],s=new Set(t?.plugins??[]),c=new Set(t?.themes??[]),l=new Set(t?.languages??[]),u=$(`section`,`dsh-tw-settings-section`);u.append($(`h3`,`dsh-tw-settings-h`,`插件管理(自带官方插件)`));let d=$(`input`,`dsh-tw-settings-input dsh-tw-settings-search`);d.placeholder=`搜索插件…`;let f=$(`div`,`dsh-tw-settings-list`),p=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`应用插件(重启 TW)`);p.type=`button`;let m=e=>{f.replaceChildren();let t=e.toLowerCase();for(let e of i){if(t.length>0&&!`${e.label} ${e.name} ${e.description}`.toLowerCase().includes(t))continue;let n=$(`input`,`dsh-tw-settings-check`);n.type=`checkbox`,n.checked=s.has(e.name),n.addEventListener(`change`,()=>{n.checked?s.add(e.name):s.delete(e.name)});let r=$(`label`,`dsh-tw-settings-row dsh-tw-settings-plugin`),i=$(`span`,`dsh-tw-settings-name`,e.label);i.title=e.name;let a=$(`span`,`dsh-tw-settings-muted`,e.description||e.name);r.append(n,i,a),f.append(r)}};d.addEventListener(`input`,()=>m(d.value)),p.addEventListener(`click`,()=>{p.disabled=!0,(async()=>{try{await Zv(Yv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({plugins:[...s]})}),O(`插件已应用,TW 已重启`),r()}catch(e){O(`应用失败:${e instanceof Error?e.message:String(e)}`),p.disabled=!1}})()}),m(``),u.append(d,f,p),e.append(u);let h=$(`section`,`dsh-tw-settings-section`);h.append($(`h3`,`dsh-tw-settings-h`,`主题管理(自带主题)`));let g=$(`div`,`dsh-tw-settings-muted`,`「加载」= TW 里可用的主题(可多选,依赖链自动带上,如 heavier 会带 snowwhite+vanilla);「活动」= 当前视觉主题(单选,自动加入加载集)。应用后重启 TW。`),_=$(`div`,`dsh-tw-settings-row dsh-tw-settings-head`);_.append($(`span`,`dsh-tw-settings-col`,`加载`),$(`span`,`dsh-tw-settings-col`,`活动`),$(`span`,`dsh-tw-settings-name`,`主题`));let v=t?.themes??[],y=v.length>0?v[v.length-1]:`tiddlywiki/vanilla`,b=$(`div`,`dsh-tw-settings-list`);for(let e of a){let t=$(`input`,`dsh-tw-settings-check`);t.type=`checkbox`,t.checked=c.has(e.name),t.title=`加载该主题`,t.addEventListener(`change`,()=>{t.checked?c.add(e.name):c.delete(e.name)});let n=$(`input`,`dsh-tw-settings-check`);n.type=`radio`,n.name=`dsh-tw-active-theme`,n.checked=e.name===y,n.title=`设为活动主题`,n.addEventListener(`change`,()=>{n.checked&&(y=e.name)});let r=$(`span`,`dsh-tw-settings-name`,e.label);r.title=e.name;let i=$(`span`,`dsh-tw-settings-muted`,e.description||e.name),a=$(`div`,`dsh-tw-settings-row dsh-tw-settings-plugin`);a.append(t,n,r,i),b.append(a)}let x=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`应用主题(重启 TW)`);x.type=`button`,x.addEventListener(`click`,()=>{x.disabled=!0,(async()=>{try{await Zv(Yv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({themes:[...c],themeActive:y})}),O(`主题已应用,TW 已重启`),r()}catch(e){O(`应用失败:${e instanceof Error?e.message:String(e)}`),x.disabled=!1}})()}),h.append(g,_,b,x),e.append(h);let S=$(`section`,`dsh-tw-settings-section`);S.append($(`h3`,`dsh-tw-settings-h`,`语言管理(自带官方语言包)`));let C=$(`div`,`dsh-tw-settings-muted`,`勾选启用语言插件并重启 TW;如中文请选 zh-Hans(简体)或 zh-CN。`),w=$(`div`,`dsh-tw-settings-list`);for(let e of o){let t=$(`input`,`dsh-tw-settings-check`);t.type=`checkbox`,t.checked=l.has(e.name),t.addEventListener(`change`,()=>{t.checked?l.add(e.name):l.delete(e.name)});let n=$(`label`,`dsh-tw-settings-row dsh-tw-settings-plugin`),r=$(`span`,`dsh-tw-settings-name`,e.label);r.title=e.name;let i=$(`span`,`dsh-tw-settings-muted`,e.description||e.name);n.append(t,r,i),w.append(n)}let T=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`应用语言(重启 TW)`);T.type=`button`,T.addEventListener(`click`,()=>{T.disabled=!0,(async()=>{try{await Zv(Yv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({languages:[...l]})}),O(`语言已应用,TW 已重启`),r()}catch(e){O(`应用失败:${e instanceof Error?e.message:String(e)}`),T.disabled=!1}})()}),S.append(C,w,T),e.append(S)}function ny(e){let t=$(`section`,`dsh-tw-settings-section`);t.append($(`h3`,`dsh-tw-settings-h`,`初始化(一次性预置)`));let n=$(`div`,`dsh-tw-settings-muted`,`这些是插件与 dsh 联动、需要在 wiki 里预置的 tiddler/配置。「发送给 Agent 按钮」和「TW 前端 API 基址」是功能必需项,启动时自动写入(只写缺失,不覆盖你的改动);其余为可选项,默认不自动写入、也不会强绑定——需要时点「重新初始化」写入,不想要了可随时「反初始化」移除。`),r=$(`div`,`dsh-tw-settings-list`),i=$(`div`,`dsh-tw-settings-muted`),a=`/dsh-tiddlywiki/admin/seeds/remove`,o=async()=>{try{let e=await Zv(`/dsh-tiddlywiki/admin/seeds`);if(e.ok!==!0||!Array.isArray(e.items))throw Error(e.error??`获取失败`);r.replaceChildren();let t=0,n=0;for(let i of e.items){i.present&&(t+=1),i.removable&&(n+=1);let e=$(`span`,`dsh-tw-settings-chip`,i.present?`✓`:`✗`);e.dataset.state=i.present?`ok`:`missing`,e.title=i.present?`已存在`:`缺失`;let s=$(`span`,`dsh-tw-settings-name`,i.title);s.title=i.id;let c=$(`span`,`dsh-tw-settings-muted`,i.detail??i.description),l=$(`button`,`dsh-tw-settings-btn`,`重新初始化`);l.type=`button`,l.title=`强制重写「${i.title}」的内置内容(会覆盖当前 tiddler)`,l.addEventListener(`click`,()=>{l.disabled=!0,l.textContent=`执行中…`,(async()=>{try{let e=await fetch(Xv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:i.id,force:!0}),signal:AbortSignal.timeout(3e4)}),t=await e.json().catch(()=>null);!e.ok||t?.ok!==!0?O(`重新初始化失败:${t?.error??t?.results?.[0]?.error??`HTTP ${e.status}`}`):O(`已重新初始化「${i.title}」`),o()}catch(e){O(`重新初始化失败:${e instanceof Error?e.message:String(e)}`)}finally{l.disabled=!1,l.textContent=`重新初始化`}})()});let u=$(`div`,`dsh-tw-settings-row dsh-tw-settings-plugin`);if(u.append(e,s,c,l),i.removable){let e=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-danger`,`反初始化`);e.type=`button`,e.title=`移除「${i.title}」写入的 tiddler 与 marker(恢复未初始化状态)`,e.addEventListener(`click`,()=>{window.confirm(`确定反初始化「${i.title}」?将删除它写入的 tiddler(含其一次性 marker),需要时可用「重新初始化」恢复。`)&&(e.disabled=!0,e.textContent=`移除中…`,(async()=>{try{let e=await fetch(a,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({id:i.id}),signal:AbortSignal.timeout(3e4)}),t=await e.json().catch(()=>null);!e.ok||t?.ok!==!0?O(`反初始化失败:${t?.error??t?.results?.[0]?.error??`HTTP ${e.status}`}`):O(`已反初始化「${i.title}」`),o()}catch(e){O(`反初始化失败:${e instanceof Error?e.message:String(e)}`)}finally{e.disabled=!1,e.textContent=`反初始化`}})())}),u.append(e)}r.append(u)}i.textContent=`共 ${e.items.length} 项,${t} 项已就绪;可移除 ${n} 项`}catch(e){i.textContent=`加载初始化状态失败:${e instanceof Error?e.message:String(e)}`}},s=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-primary`,`全部重新初始化`);s.type=`button`,s.title=`强制重写所有一次性预置内容(含可选 seed,会覆盖当前 tiddler/配置)`,s.addEventListener(`click`,()=>{s.disabled=!0,s.textContent=`执行中…`,(async()=>{try{let e=await fetch(Xv,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({force:!0}),signal:AbortSignal.timeout(6e4)}),t=await e.json().catch(()=>null);!e.ok||t?.ok!==!0?O(`重新初始化失败:${t?.error??`HTTP ${e.status}`}`):O(`全部已重新初始化`),o()}catch(e){O(`重新初始化失败:${e instanceof Error?e.message:String(e)}`)}finally{s.disabled=!1,s.textContent=`全部重新初始化`}})()});let c=$(`button`,`dsh-tw-settings-btn dsh-tw-settings-danger`,`全部反初始化`);c.type=`button`,c.title=`移除所有可选 seed 写入的 tiddler 与 marker(功能必需项保留)`,c.addEventListener(`click`,()=>{window.confirm(`确定全部反初始化?将删除所有可选 seed 写入的 tiddler(含一次性 marker)。功能必需项(发送给 Agent 按钮 / TW 前端 API 基址)会保留。`)&&(c.disabled=!0,c.textContent=`移除中…`,(async()=>{try{let e=await fetch(a,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({}),signal:AbortSignal.timeout(6e4)}),t=await e.json().catch(()=>null);!e.ok||t?.ok!==!0?O(`反初始化失败:${t?.error??`HTTP ${e.status}`}`):O(`全部可选 seed 已反初始化`),o()}catch(e){O(`反初始化失败:${e instanceof Error?e.message:String(e)}`)}finally{c.disabled=!1,c.textContent=`全部反初始化`}})())}),t.append(n,i,r,s,c),e.append(t),o()}function ry(e,t,n){e.replaceChildren(),ey(e,t.config??{},n),ty(e,t.info,t.catalog,n),ny(e)}function iy(){let e=c.useRef(null);return c.useEffect(()=>{let t=e.current;return t===null?void 0:Qv(t)},[]),c.createElement(`div`,{ref:e})}const ay={tiddlywiki_get:`读取笔记`,tiddlywiki_search:`检索笔记`,tiddlywiki_recent:`最近修改`,tiddlywiki_list_tags:`标签列表`,tiddlywiki_put:`写入笔记`,tiddlywiki_batch_put:`批量写入`,tiddlywiki_rename:`重命名笔记`,tiddlywiki_delete:`删除笔记`,tiddlywiki_git_sync:`git 同步`,tiddlywiki_git_resolve:`git 冲突解决`};function oy(e){return typeof e==`object`&&!!e&&e.kind===`tool-result`}function sy(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.call==`object`&&t.call!==null){let e=t.call;if(typeof e.name==`string`&&typeof e.argsRaw==`string`)return e}let n=e;return typeof n.name==`string`&&typeof n.argsRaw==`string`?{name:n.name,argsRaw:n.argsRaw}:null}function cy(e){try{let t=JSON.parse(e);return typeof t==`object`&&t&&!Array.isArray(t)?t:{}}catch{return{}}}function ly(e){return Array.isArray(e)?e.filter(e=>typeof e?.text==`string`).map(e=>e.text).join(`
613
- `):``}function uy(e){return typeof e==`string`?e:``}async function dy(e){try{let t=await fetch(e,{signal:AbortSignal.timeout(1e4)});if(!t.ok)return null;let n=await t.json();return typeof n==`object`&&n?n:null}catch{return null}}async function fy(e){try{let t=await fetch(`/dsh-tiddlywiki/tw/render`,{method:`POST`,headers:{"content-type":`application/json`,"x-requested-with":`TiddlyWiki`},body:JSON.stringify({title:e}),signal:AbortSignal.timeout(1e4)});return t.ok?await t.text():null}catch{return null}}function py(e,t){let[n,r]=c.useState({loading:!0,data:null});return c.useEffect(()=>{let t=!0;return r({loading:!0,data:null}),Promise.resolve(e()).then(e=>{t&&r({loading:!1,data:e})},()=>{t&&r({loading:!1,data:null})}),()=>{t=!1}},t),n}function my(e){return t=>{t.preventDefault(),t.stopPropagation(),ge(e)}}function hy(e){let t=ay[e.toolName]??e.toolName,n=c.createElement(`div`,{className:`dsh-tw-toolcard-head`},c.createElement(`span`,{className:`dsh-tw-toolcard-badge`},t),e.title!==void 0&&e.title.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-title`,title:e.title},e.title):null,e.onOpen===void 0?null:c.createElement(`button`,{type:`button`,className:`dsh-tw-toolcard-open`,onClick:e.onOpen},`在 TW 打开`)),r=e.subtitle!==void 0||e.tags!==void 0&&e.tags.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-meta`},e.subtitle===void 0?null:c.createElement(`span`,{className:`dsh-tw-toolcard-sub`},e.subtitle),e.tags!==void 0&&e.tags.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-tags`},...e.tags.map(e=>c.createElement(`span`,{className:`dsh-tw-toolcard-tag`,key:e},e))):null):null;return c.createElement(`div`,{className:`dsh-tw-toolcard`},n,r,c.createElement(`div`,{className:`dsh-tw-toolcard-body`},e.children),e.foot!==void 0&&e.foot!==null?c.createElement(`div`,{className:`dsh-tw-toolcard-foot`},e.foot):null)}function gy(e){let{title:t}=e,{loading:n,data:r}=py(async()=>{let[e,n]=await Promise.all([dy(`/dsh-tiddlywiki/get?title=${encodeURIComponent(t)}`),fy(t)]);return{get:e,html:n}},[t]),i=r?.get??null,a=r?.html??null,o;o=n?c.createElement(`div`,{className:`dsh-tw-toolcard-loading`},`渲染中…`):i!==null&&i.notFound===!0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`tiddler「${t}」不存在`):typeof a==`string`&&a.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-native`,dangerouslySetInnerHTML:{__html:a}}):i!==null&&typeof i.text==`string`&&i.text.length>0?c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},i.text):c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`wiki 服务不可用`);let s=Array.isArray(i?.tags)?i.tags.filter(e=>typeof e==`string`):[],l=typeof i?.modified==`string`?i.modified:void 0;return c.createElement(hy,{toolName:e.toolName,title:t,subtitle:e.subtitle,tags:s,onOpen:my(t),foot:l===void 0?void 0:`修改于 ${l}`},o)}function _y(e){return c.createElement(`a`,{className:`dsh-tw-toolcard-row`,href:`/dsh-tiddlywiki/tw/#${encodeURIComponent(e.title)}`,onClick:my(e.title),title:e.title},c.createElement(`span`,{className:`dsh-tw-toolcard-row-title`},e.title),e.tags!==void 0&&e.tags.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-row-tags`},e.tags.slice(0,4).join(` · `)):null,typeof e.modified==`string`&&e.modified.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-row-meta`},e.modified):null)}function vy(e){let t=e.rows.slice(0,60),n;return n=t.length===0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},e.fallbackText):c.createElement(`div`,{className:`dsh-tw-toolcard-list`},...t.map((e,t)=>c.createElement(_y,{key:`${e.title}-${t}`,...e}))),c.createElement(hy,{toolName:e.toolName,title:e.title,subtitle:e.subtitle},n)}function yy(e){let t=uy(e.args.query),n=new URLSearchParams;if(t.length>0&&n.set(`query`,t),Array.isArray(e.args.tags))for(let t of e.args.tags)typeof t==`string`&&t.length>0&&n.append(`tags`,t);typeof e.args.tag==`string`&&e.args.tag.length>0&&n.set(`tag`,e.args.tag),typeof e.args.since==`string`&&e.args.since.length>0&&n.set(`since`,e.args.since),typeof e.args.type==`string`&&e.args.type.length>0&&n.set(`type`,e.args.type),typeof e.args.limit==`number`&&n.set(`limit`,String(e.args.limit));let r=n.toString(),i=py(()=>dy(`/dsh-tiddlywiki/search?${r}`),[r]).data,a=(Array.isArray(i?.items)?i.items:[]).map(e=>({title:uy(e.title),tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):[],modified:typeof e.modified==`string`?e.modified:null})),o=typeof i?.total==`number`?i.total:void 0,s=`关键词「${t||`(全部)`}」${o===void 0?``:` · 共 ${o} 条`}`;return c.createElement(vy,{toolName:e.toolName,title:t.length>0?t:`检索`,subtitle:s,rows:a,fallbackText:`没有匹配的笔记`})}function by(e){let t=new URLSearchParams;typeof e.args.limit==`number`&&t.set(`limit`,String(e.args.limit)),typeof e.args.since==`string`&&e.args.since.length>0&&t.set(`since`,e.args.since);let n=t.toString(),r=py(()=>dy(`/dsh-tiddlywiki/recent?${n}`),[n]).data,i=(Array.isArray(r?.items)?r.items:[]).map(e=>({title:uy(e.title),tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):[],modified:typeof e.modified==`string`?e.modified:null}));return c.createElement(vy,{toolName:e.toolName,title:`最近修改`,subtitle:i.length>0?`最近 ${i.length} 条`:``,rows:i,fallbackText:`暂无笔记`})}function xy(e){let t=(Array.isArray(e.args.items)?e.args.items:[]).map(e=>typeof e==`object`&&e&&typeof e.title==`string`?uy(e.title):null).filter(e=>e!==null&&e.length>0).map(e=>({title:e}));return c.createElement(vy,{toolName:e.toolName,title:`批量写入`,subtitle:t.length>0?`写入 ${t.length} 篇`:`(参数中没有可解析的 items)`,rows:t,fallbackText:`没有可展示的笔记`})}function Sy(e){let t=py(()=>dy(`/dsh-tiddlywiki/tags`),[]).data,n=(Array.isArray(t?.items)?t.items:[]).map(e=>({tag:uy(e.tag),count:typeof e.count==`number`?e.count:0})),r;return r=n.length===0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`暂无标签`):c.createElement(`div`,{className:`dsh-tw-toolcard-tags-wrap`},...n.map(e=>c.createElement(`span`,{className:`dsh-tw-toolcard-tag`,key:e.tag},`${e.tag} · ${e.count}`))),c.createElement(hy,{toolName:e.toolName,title:`标签`,subtitle:`共 ${n.length} 个`},r)}function Cy(e){let t=e.text.trim().length>0?c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},e.text):c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`(无结果)`);return c.createElement(hy,{toolName:e.toolName},t)}function wy(e){let t=e.title.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`已删除 tiddler「${e.title}」`):c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},e.text||`(已删除)`);return c.createElement(hy,{toolName:e.toolName,title:e.title.length>0?e.title:void 0},t)}function Ty(e,t){switch(e){case`tiddlywiki_get`:case`tiddlywiki_put`:case`tiddlywiki_delete`:return uy(t.title);case`tiddlywiki_rename`:return uy(t.newTitle);case`tiddlywiki_search`:return uy(t.query);case`tiddlywiki_recent`:case`tiddlywiki_list_tags`:case`tiddlywiki_batch_put`:case`tiddlywiki_git_sync`:case`tiddlywiki_git_resolve`:return``;default:return``}}function Ey(e){let t=e.block,n=e.toolName,r=oy(t),i=sy(t),a=n!==void 0&&n.length>0?n:i?.name??``,o=cy(i?.argsRaw??``),s=r?ly(t.content):``;if(i===null)return c.createElement(hy,{toolName:a},c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},s||`(无调用信息)`));if(!r)return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`div`,{className:`dsh-tw-toolcard-pending`},`处理中…`));if(t.isError===!0)return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`div`,{className:`dsh-tw-toolcard-error`},s||`工具调用失败`));switch(a){case`tiddlywiki_get`:return c.createElement(gy,{toolName:a,title:uy(o.title),subtitle:`读取`});case`tiddlywiki_put`:return c.createElement(gy,{toolName:a,title:uy(o.title),subtitle:`已写入`});case`tiddlywiki_rename`:return c.createElement(gy,{toolName:a,title:uy(o.newTitle),subtitle:`已重命名「${uy(o.oldTitle)}」→`});case`tiddlywiki_delete`:return c.createElement(wy,{toolName:a,title:uy(o.title),text:s});case`tiddlywiki_batch_put`:return c.createElement(xy,{toolName:a,args:o,text:s});case`tiddlywiki_search`:return c.createElement(yy,{toolName:a,args:o,text:s});case`tiddlywiki_recent`:return c.createElement(by,{toolName:a,args:o,text:s});case`tiddlywiki_list_tags`:return c.createElement(Sy,{toolName:a,text:s});case`tiddlywiki_git_sync`:case`tiddlywiki_git_resolve`:return c.createElement(Cy,{toolName:a,text:s});default:return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},s||`(完成)`))}}const Dy=[`tiddlywiki_get`,`tiddlywiki_search`,`tiddlywiki_recent`,`tiddlywiki_list_tags`,`tiddlywiki_put`,`tiddlywiki_batch_put`,`tiddlywiki_rename`,`tiddlywiki_delete`,`tiddlywiki_git_sync`,`tiddlywiki_git_resolve`];function Oy(e){let t=[];for(let n of Dy)try{let r=e.register({name:`tool.call.toolview`,id:`dsh-tiddlywiki-toolview-${n}`,key:n,order:20,label:`TiddlyWiki: ${n}`},Ey);t.push(r)}catch(e){console.error(`[dsh-tiddlywiki] register toolview ${n} failed:`,e)}return t}function ky(){let e=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`a`);if(n===null)return;let r=(n.getAttribute(`href`)??``).match(/^\/dsh-tiddlywiki\/tw\/#(.+)$/);if(r===null||r[1]===void 0)return;e.preventDefault(),e.stopPropagation();let i=r[1];try{i=decodeURIComponent(i)}catch{}ge(i)};return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}const Ay=[`slots`];function jy(e){try{u();let t=new d,n=[];try{let e=zv(),r=Wv();n.push(()=>e.dispose()),n.push(()=>r.dispose()),n.push(g(t)),n.push(xe(t)),n.push(Jv(t,e,r)),n.push(Ee)}catch(e){console.error(`[dsh-tiddlywiki] mount failed:`,e)}try{e.slots!==void 0&&n.push(...Oy(e.slots))}catch(e){console.error(`[dsh-tiddlywiki] tool views failed:`,e)}try{n.push(ky())}catch(e){console.error(`[dsh-tiddlywiki] wiki link interceptor failed:`,e)}try{let t=e.slots?.inject(`settings.section`,()=>e.slots?.register({name:`settings.section`,id:`dsh-tiddlywiki`,order:50,label:`TiddlyWiki 知识库`},iy));t!==void 0&&n.push(t)}catch(e){console.error(`[dsh-tiddlywiki] settings section failed:`,e)}e.effect?.(()=>()=>{for(let e of n.splice(0))e()},`dsh-tiddlywiki: client mount`)}catch(e){console.error(`[dsh-tiddlywiki] client half failed to start:`,e)}}exports.apply=jy,exports.inject=Ay,exports.name=`dsh-tiddlywiki/client`;
613
+ `):``}function uy(e){return typeof e==`string`?e:``}async function dy(e){try{let t=await fetch(e,{signal:AbortSignal.timeout(1e4)});if(!t.ok)return null;let n=await t.json();return typeof n==`object`&&n?n:null}catch{return null}}async function fy(e){try{let t=await fetch(`/dsh-tiddlywiki/tw/render`,{method:`POST`,headers:{"content-type":`application/json`,"x-requested-with":`TiddlyWiki`},body:JSON.stringify({title:e}),signal:AbortSignal.timeout(1e4)});return t.ok?await t.text():null}catch{return null}}function py(e,t){let[n,r]=c.useState({loading:!0,data:null});return c.useEffect(()=>{let t=!0;return r({loading:!0,data:null}),Promise.resolve(e()).then(e=>{t&&r({loading:!1,data:e})},()=>{t&&r({loading:!1,data:null})}),()=>{t=!1}},t),n}function my(e){return t=>{t.preventDefault(),t.stopPropagation(),ge(e)}}function hy(e){let t=ay[e.toolName]??e.toolName,n=c.createElement(`div`,{className:`dsh-tw-toolcard-head`},c.createElement(`span`,{className:`dsh-tw-toolcard-badge`},t),e.title!==void 0&&e.title.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-title`,title:e.title},e.title):null,e.onOpen===void 0?null:c.createElement(`button`,{type:`button`,className:`dsh-tw-toolcard-open`,onClick:e.onOpen},`在 TW 打开`)),r=e.subtitle!==void 0||e.tags!==void 0&&e.tags.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-meta`},e.subtitle===void 0?null:c.createElement(`span`,{className:`dsh-tw-toolcard-sub`},e.subtitle),e.tags!==void 0&&e.tags.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-tags`},...e.tags.map(e=>c.createElement(`span`,{className:`dsh-tw-toolcard-tag`,key:e},e))):null):null;return c.createElement(`div`,{className:`dsh-tw-toolcard`},n,r,c.createElement(`div`,{className:`dsh-tw-toolcard-body`},e.children),e.foot!==void 0&&e.foot!==null?c.createElement(`div`,{className:`dsh-tw-toolcard-foot`},e.foot):null)}function gy(e){let{title:t}=e,{loading:n,data:r}=py(async()=>{let[e,n]=await Promise.all([dy(`/dsh-tiddlywiki/get?title=${encodeURIComponent(t)}`),fy(t)]);return{get:e,html:n}},[t]),i=r?.get??null,a=r?.html??null,o;o=n?c.createElement(`div`,{className:`dsh-tw-toolcard-loading`},`渲染中…`):i!==null&&i.notFound===!0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`tiddler「${t}」不存在`):typeof a==`string`&&a.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-native`,dangerouslySetInnerHTML:{__html:a}}):i!==null&&typeof i.text==`string`&&i.text.length>0?c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},i.text):c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`wiki 服务不可用`);let s=Array.isArray(i?.tags)?i.tags.filter(e=>typeof e==`string`):[],l=typeof i?.modified==`string`?i.modified:void 0;return c.createElement(hy,{toolName:e.toolName,title:t,subtitle:e.subtitle,tags:s,onOpen:my(t),foot:l===void 0?void 0:`修改于 ${l}`},o)}function _y(e){return c.createElement(`a`,{className:`dsh-tw-toolcard-row`,href:`/dsh-tiddlywiki/tw/#${encodeURIComponent(e.title)}`,onClick:my(e.title),title:e.title},c.createElement(`span`,{className:`dsh-tw-toolcard-row-title`},e.title),e.tags!==void 0&&e.tags.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-row-tags`},e.tags.slice(0,4).join(` · `)):null,typeof e.modified==`string`&&e.modified.length>0?c.createElement(`span`,{className:`dsh-tw-toolcard-row-meta`},e.modified):null)}function vy(e){let t=e.rows.slice(0,60),n;return n=t.length===0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},e.fallbackText):c.createElement(`div`,{className:`dsh-tw-toolcard-list`},...t.map((e,t)=>c.createElement(_y,{key:`${e.title}-${t}`,...e}))),c.createElement(hy,{toolName:e.toolName,title:e.title,subtitle:e.subtitle},n)}function yy(e){let t=uy(e.args.query),n=new URLSearchParams;if(t.length>0&&n.set(`query`,t),Array.isArray(e.args.tags))for(let t of e.args.tags)typeof t==`string`&&t.length>0&&n.append(`tags`,t);typeof e.args.tag==`string`&&e.args.tag.length>0&&n.set(`tag`,e.args.tag),typeof e.args.since==`string`&&e.args.since.length>0&&n.set(`since`,e.args.since),typeof e.args.type==`string`&&e.args.type.length>0&&n.set(`type`,e.args.type),typeof e.args.limit==`number`&&n.set(`limit`,String(e.args.limit));let r=n.toString(),i=py(()=>dy(`/dsh-tiddlywiki/search?${r}`),[r]).data,a=(Array.isArray(i?.items)?i.items:[]).map(e=>({title:uy(e.title),tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):[],modified:typeof e.modified==`string`?e.modified:null})),o=typeof i?.total==`number`?i.total:void 0,s=`关键词「${t||`(全部)`}」${o===void 0?``:` · 共 ${o} 条`}`;return c.createElement(vy,{toolName:e.toolName,title:t.length>0?t:`检索`,subtitle:s,rows:a,fallbackText:`没有匹配的笔记`})}function by(e){let t=new URLSearchParams;typeof e.args.limit==`number`&&t.set(`limit`,String(e.args.limit)),typeof e.args.since==`string`&&e.args.since.length>0&&t.set(`since`,e.args.since);let n=t.toString(),r=py(()=>dy(`/dsh-tiddlywiki/recent?${n}`),[n]).data,i=(Array.isArray(r?.items)?r.items:[]).map(e=>({title:uy(e.title),tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):[],modified:typeof e.modified==`string`?e.modified:null}));return c.createElement(vy,{toolName:e.toolName,title:`最近修改`,subtitle:i.length>0?`最近 ${i.length} 条`:``,rows:i,fallbackText:`暂无笔记`})}function xy(e){let t=(Array.isArray(e.args.items)?e.args.items:[]).map(e=>typeof e==`object`&&e&&typeof e.title==`string`?uy(e.title):null).filter(e=>e!==null&&e.length>0).map(e=>({title:e}));return c.createElement(vy,{toolName:e.toolName,title:`批量写入`,subtitle:t.length>0?`写入 ${t.length} 篇`:`(参数中没有可解析的 items)`,rows:t,fallbackText:`没有可展示的笔记`})}function Sy(e){let t=py(()=>dy(`/dsh-tiddlywiki/tags`),[]).data,n=(Array.isArray(t?.items)?t.items:[]).map(e=>({tag:uy(e.tag),count:typeof e.count==`number`?e.count:0})),r;return r=n.length===0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`暂无标签`):c.createElement(`div`,{className:`dsh-tw-toolcard-tags-wrap`},...n.map(e=>c.createElement(`span`,{className:`dsh-tw-toolcard-tag`,key:e.tag},`${e.tag} · ${e.count}`))),c.createElement(hy,{toolName:e.toolName,title:`标签`,subtitle:`共 ${n.length} 个`},r)}function Cy(e){let t=e.text.trim().length>0?c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},e.text):c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`(无结果)`);return c.createElement(hy,{toolName:e.toolName},t)}function wy(e){let t=e.title.length>0?c.createElement(`div`,{className:`dsh-tw-toolcard-empty`},`已删除 tiddler「${e.title}」`):c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},e.text||`(已删除)`);return c.createElement(hy,{toolName:e.toolName,title:e.title.length>0?e.title:void 0},t)}function Ty(e,t){switch(e){case`tiddlywiki_get`:case`tiddlywiki_put`:case`tiddlywiki_delete`:return uy(t.title);case`tiddlywiki_rename`:return uy(t.newTitle);case`tiddlywiki_search`:return uy(t.query);case`tiddlywiki_recent`:case`tiddlywiki_list_tags`:case`tiddlywiki_batch_put`:case`tiddlywiki_git_sync`:case`tiddlywiki_git_resolve`:return``;default:return``}}function Ey(e){let t=e.block,n=e.toolName,r=oy(t),i=sy(t),a=n!==void 0&&n.length>0?n:i?.name??``,o=cy(i?.argsRaw??``),s=r?ly(t.content):``;if(i===null)return c.createElement(hy,{toolName:a},c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},s||`(无调用信息)`));if(!r)return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`div`,{className:`dsh-tw-toolcard-pending`},`处理中…`));if(t.isError===!0)return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`div`,{className:`dsh-tw-toolcard-error`},s||`工具调用失败`));switch(a){case`tiddlywiki_get`:return c.createElement(gy,{toolName:a,title:uy(o.title),subtitle:`读取`});case`tiddlywiki_put`:return c.createElement(gy,{toolName:a,title:uy(o.title),subtitle:`已写入`});case`tiddlywiki_rename`:return c.createElement(gy,{toolName:a,title:uy(o.newTitle),subtitle:`已重命名「${uy(o.oldTitle)}」→`});case`tiddlywiki_delete`:return c.createElement(wy,{toolName:a,title:uy(o.title),text:s});case`tiddlywiki_batch_put`:return c.createElement(xy,{toolName:a,args:o,text:s});case`tiddlywiki_search`:return c.createElement(yy,{toolName:a,args:o,text:s});case`tiddlywiki_recent`:return c.createElement(by,{toolName:a,args:o,text:s});case`tiddlywiki_list_tags`:return c.createElement(Sy,{toolName:a,text:s});case`tiddlywiki_git_sync`:case`tiddlywiki_git_resolve`:return c.createElement(Cy,{toolName:a,text:s});default:return c.createElement(hy,{toolName:a,title:Ty(a,o)},c.createElement(`pre`,{className:`dsh-tw-toolcard-fallback`},s||`(完成)`))}}const Dy=[`tiddlywiki_get`,`tiddlywiki_search`,`tiddlywiki_recent`,`tiddlywiki_list_tags`,`tiddlywiki_put`,`tiddlywiki_batch_put`,`tiddlywiki_rename`,`tiddlywiki_delete`,`tiddlywiki_git_sync`,`tiddlywiki_git_resolve`];function Oy(e){let t=[];for(let n of Dy)try{let r=e.inject(`tool.call.toolview`,()=>e.register({name:`tool.call.toolview`,id:`dsh-tiddlywiki-toolview-${n}`,key:n,order:20,label:`TiddlyWiki: ${n}`},Ey));r!==void 0&&t.push(r)}catch(e){console.error(`[dsh-tiddlywiki] register toolview ${n} failed:`,e)}return t}function ky(){let e=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`a`);if(n===null)return;let r=(n.getAttribute(`href`)??``).match(/^\/dsh-tiddlywiki\/tw\/#(.+)$/);if(r===null||r[1]===void 0)return;e.preventDefault(),e.stopPropagation();let i=r[1];try{i=decodeURIComponent(i)}catch{}ge(i)};return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}const Ay=[`slots`];function jy(e){try{u();let t=new d,n=[];try{let e=zv(),r=Wv();n.push(()=>e.dispose()),n.push(()=>r.dispose()),n.push(g(t)),n.push(xe(t)),n.push(Jv(t,e,r)),n.push(Ee)}catch(e){console.error(`[dsh-tiddlywiki] mount failed:`,e)}try{e.slots!==void 0&&n.push(...Oy(e.slots))}catch(e){console.error(`[dsh-tiddlywiki] tool views failed:`,e)}try{n.push(ky())}catch(e){console.error(`[dsh-tiddlywiki] wiki link interceptor failed:`,e)}try{let t=e.slots?.inject(`settings.section`,()=>e.slots?.register({name:`settings.section`,id:`dsh-tiddlywiki`,order:50,label:`TiddlyWiki 知识库`},iy));t!==void 0&&n.push(t)}catch(e){console.error(`[dsh-tiddlywiki] settings section failed:`,e)}e.effect?.(()=>()=>{for(let e of n.splice(0))e()},`dsh-tiddlywiki: client mount`)}catch(e){console.error(`[dsh-tiddlywiki] client half failed to start:`,e)}}exports.apply=jy,exports.inject=Ay,exports.name=`dsh-tiddlywiki/client`;
614
614
  return module.exports;
615
615
  }
616
616
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-tiddlywiki",
3
3
  "description": "TiddlyWiki 5 as the DSH persistent knowledge base: tiddlywiki_* agent tools (search with filters/recent/tags/batch/rename + git sync & conflict resolve), a full TiddlyWiki editor embedded in the GUI center column (same-origin proxy, works over Tailscale/LAN/domain), a quick-note card with draft auto-save & recent-notes picker behind a single knowledge FAB, and git-based sync with auto-commit. Mounts via the official dsh plugin system — no DSH source changes.",
4
- "version": "0.16.0",
4
+ "version": "0.16.2",
5
5
  "type": "module",
6
6
  "keywords": [
7
7
  "dsh",
@@ -263,21 +263,50 @@ export function mountPanel(state: PanelState): () => void {
263
263
  * Preferred: same-origin `contentWindow.location.hash` — a hashchange INSIDE
264
264
  * the frame (no reload), TW's story handler opens the tiddler. Fallback: a
265
265
  * full `iframe.src` reload with the hash (TW auto-saves drafts, acceptable).
266
+ *
267
+ * TW registers its hashchange listener in a STARTUP module that runs after
268
+ * the iframe's `load` event, so setting `location.hash` right on load is a
269
+ * no-op (hash lost → TW stays on its home page). We therefore wait for TW to
270
+ * become ready inside the frame (the `$tw` global appears once boot settles)
271
+ * before setting the hash; if it never does (service down / slow boot) we
272
+ * fall back to a full reload with the hash, which TW processes at startup.
273
+ * A newer open request supersedes an in-flight wait.
266
274
  */
267
275
  const applyPendingHash = (): void => {
268
276
  if (pendingHash === null || iframe === undefined || !frameLoaded) return
269
277
  const hash = pendingHash
270
- pendingHash = null
271
- try {
272
- const win = iframe.contentWindow
273
- if (win === null) throw new Error('iframe window unavailable')
274
- if (win.location.hash === hash) return
275
- win.location.hash = hash
276
- } catch {
277
- const base = iframe.src.split('#')[0]
278
- if (iframe.src === `${base}${hash}`) return
279
- iframe.src = `${base}${hash}`
278
+ const win = iframe.contentWindow
279
+ if (win === null) {
280
+ fallbackLoad(hash)
281
+ return
282
+ }
283
+ const tryOnce = (attempt: number): void => {
284
+ if (pendingHash !== hash) return // superseded by a newer request
285
+ const frameTw = win as { $tw?: unknown }
286
+ if (typeof frameTw.$tw !== 'object' || frameTw.$tw === null) {
287
+ if (attempt < 40) {
288
+ window.setTimeout(() => tryOnce(attempt + 1), 150)
289
+ return
290
+ }
291
+ fallbackLoad(hash)
292
+ return
293
+ }
294
+ pendingHash = null
295
+ try {
296
+ if (win.location.hash === hash) return
297
+ win.location.hash = hash
298
+ } catch {
299
+ fallbackLoad(hash)
300
+ }
280
301
  }
302
+ tryOnce(0)
303
+ }
304
+
305
+ const fallbackLoad = (hash: string): void => {
306
+ if (iframe === undefined) return
307
+ if (pendingHash === hash) pendingHash = null
308
+ const base = iframe.src.split('#')[0]
309
+ if (iframe.src !== `${base}${hash}`) iframe.src = `${base}${hash}`
281
310
  }
282
311
 
283
312
  const onOpenTiddler = (event: Event): void => {
@@ -543,19 +543,29 @@ export const TOOL_VIEW_KEYS: readonly string[] = [
543
543
 
544
544
  /**
545
545
  * Register the tool card under every key. Returns an array of disposers.
546
- * The slot face: `slots.register({ name, id, key, order, label }, component)`.
546
+ *
547
+ * `tool.call.toolview` is a CHILD slot (declared by an entry inside
548
+ * `conversation.chat.node`), so a bare `slots.register` throws
549
+ * `slot "tool.call.toolview" is not declared (a parent entry's children table
550
+ * must declare it)` when it runs before the parent declaration. Each key must
551
+ * therefore be wrapped in `slots.inject('tool.call.toolview', cb)`, which runs
552
+ * `cb` synchronously when the declaration already exists and otherwise waits
553
+ * for it — the same pattern `settings.section` uses.
547
554
  */
548
555
  export function registerToolViews(slots: {
556
+ inject(key: string, callback: () => () => void): (() => void) | undefined
549
557
  register(opts: { name: string; id: string; key: string; order?: number; label?: string }, component: unknown): () => void
550
558
  }): Array<() => void> {
551
559
  const disposers: Array<() => void> = []
552
560
  for (const key of TOOL_VIEW_KEYS) {
553
561
  try {
554
- const remove = slots.register(
555
- { name: 'tool.call.toolview', id: `dsh-tiddlywiki-toolview-${key}`, key, order: 20, label: `TiddlyWiki: ${key}` },
556
- TiddlywikiToolView,
562
+ const remove = slots.inject('tool.call.toolview', () =>
563
+ slots.register(
564
+ { name: 'tool.call.toolview', id: `dsh-tiddlywiki-toolview-${key}`, key, order: 20, label: `TiddlyWiki: ${key}` },
565
+ TiddlywikiToolView,
566
+ ),
557
567
  )
558
- disposers.push(remove)
568
+ if (remove !== undefined) disposers.push(remove)
559
569
  } catch (error) {
560
570
  console.error(`[dsh-tiddlywiki] register toolview ${key} failed:`, error)
561
571
  }