mcp-memory-bucket 0.5.5 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{index-DEOIrixV.js → index-Cr5jNKWL.js} +199 -115
- package/dist/client/index.html +1 -1
- package/dist/src/attachments/repository.js +81 -0
- package/dist/src/attachments/storage.js +71 -0
- package/dist/src/attachments/tools.js +85 -0
- package/dist/src/attachments/types.js +1 -0
- package/dist/src/config.js +3 -0
- package/dist/src/memory/repository.js +6 -0
- package/dist/src/server.js +4 -0
- package/dist/src/skills/repository.js +1 -0
- package/dist/src/store/db.js +4 -0
- package/dist/src/store/sync.js +8 -4
- package/dist/src/web/routes.js +85 -2
- package/package.json +1 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const n of i)if(n.type==="childList")for(const
|
|
1
|
+
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const n of i)if(n.type==="childList")for(const o of n.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const n={};return i.integrity&&(n.integrity=i.integrity),i.referrerPolicy&&(n.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?n.credentials="include":i.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function s(i){if(i.ep)return;i.ep=!0;const n=t(i);fetch(i.href,n)}})();/**
|
|
2
2
|
* @license
|
|
3
3
|
* Copyright 2019 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
-
*/const ee=globalThis,ke=ee.ShadowRoot&&(ee.ShadyCSS===void 0||ee.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ve=Symbol(),Ie=new WeakMap;let
|
|
5
|
+
*/const ee=globalThis,ke=ee.ShadowRoot&&(ee.ShadyCSS===void 0||ee.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ve=Symbol(),Ie=new WeakMap;let at=class{constructor(e,t,s){if(this._$cssResult$=!0,s!==ve)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(ke&&e===void 0){const s=t!==void 0&&t.length===1;s&&(e=Ie.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),s&&Ie.set(t,e))}return e}toString(){return this.cssText}};const zt=r=>new at(typeof r=="string"?r:r+"",void 0,ve),O=(r,...e)=>{const t=r.length===1?r[0]:e.reduce((s,i,n)=>s+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+r[n+1],r[0]);return new at(t,r,ve)},Pt=(r,e)=>{if(ke)r.adoptedStyleSheets=e.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const t of e){const s=document.createElement("style"),i=ee.litNonce;i!==void 0&&s.setAttribute("nonce",i),s.textContent=t.cssText,r.appendChild(s)}},Oe=ke?r=>r:r=>r instanceof CSSStyleSheet?(e=>{let t="";for(const s of e.cssRules)t+=s.cssText;return zt(t)})(r):r;/**
|
|
6
6
|
* @license
|
|
7
7
|
* Copyright 2017 Google LLC
|
|
8
8
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
9
|
-
*/const{is:Lt,defineProperty:Dt,getOwnPropertyDescriptor:It,getOwnPropertyNames:Ot,getOwnPropertySymbols:Mt,getPrototypeOf:Nt}=Object,ne=globalThis,Me=ne.trustedTypes,Ft=Me?Me.emptyScript:"",qt=ne.reactiveElementPolyfillSupport,
|
|
9
|
+
*/const{is:Lt,defineProperty:Dt,getOwnPropertyDescriptor:It,getOwnPropertyNames:Ot,getOwnPropertySymbols:Mt,getPrototypeOf:Nt}=Object,ne=globalThis,Me=ne.trustedTypes,Ft=Me?Me.emptyScript:"",qt=ne.reactiveElementPolyfillSupport,W=(r,e)=>r,ue={toAttribute(r,e){switch(e){case Boolean:r=r?Ft:null;break;case Object:case Array:r=r==null?r:JSON.stringify(r)}return r},fromAttribute(r,e){let t=r;switch(e){case Boolean:t=r!==null;break;case Number:t=r===null?null:Number(r);break;case Object:case Array:try{t=JSON.parse(r)}catch{t=null}}return t}},lt=(r,e)=>!Lt(r,e),Ne={attribute:!0,type:String,converter:ue,reflect:!1,useDefault:!1,hasChanged:lt};Symbol.metadata??=Symbol("metadata"),ne.litPropertyMetadata??=new WeakMap;let F=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=Ne){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){const s=Symbol(),i=this.getPropertyDescriptor(e,s,t);i!==void 0&&Dt(this.prototype,e,i)}}static getPropertyDescriptor(e,t,s){const{get:i,set:n}=It(this.prototype,e)??{get(){return this[t]},set(o){this[t]=o}};return{get:i,set(o){const a=i?.call(this);n?.call(this,o),this.requestUpdate(e,a,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Ne}static _$Ei(){if(this.hasOwnProperty(W("elementProperties")))return;const e=Nt(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(W("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(W("properties"))){const t=this.properties,s=[...Ot(t),...Mt(t)];for(const i of s)this.createProperty(i,t[i])}const e=this[Symbol.metadata];if(e!==null){const t=litPropertyMetadata.get(e);if(t!==void 0)for(const[s,i]of t)this.elementProperties.set(s,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);i!==void 0&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const s=new Set(e.flat(1/0).reverse());for(const i of s)t.unshift(Oe(i))}else e!==void 0&&t.push(Oe(e));return t}static _$Eu(e,t){const s=t.attribute;return s===!1?void 0:typeof s=="string"?s:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const s of t.keys())this.hasOwnProperty(s)&&(e.set(s,this[s]),delete this[s]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Pt(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,s){this._$AK(e,s)}_$ET(e,t){const s=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,s);if(i!==void 0&&s.reflect===!0){const n=(s.converter?.toAttribute!==void 0?s.converter:ue).toAttribute(t,s.type);this._$Em=e,n==null?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(e,t){const s=this.constructor,i=s._$Eh.get(e);if(i!==void 0&&this._$Em!==i){const n=s.getPropertyOptions(i),o=typeof n.converter=="function"?{fromAttribute:n.converter}:n.converter?.fromAttribute!==void 0?n.converter:ue;this._$Em=i;const a=o.fromAttribute(t,n.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(e,t,s,i=!1,n){if(e!==void 0){const o=this.constructor;if(i===!1&&(n=this[e]),s??=o.getPropertyOptions(e),!((s.hasChanged??lt)(n,t)||s.useDefault&&s.reflect&&n===this._$Ej?.get(e)&&!this.hasAttribute(o._$Eu(e,s))))return;this.C(e,t,s)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,t,{useDefault:s,reflect:i,wrapped:n},o){s&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,o??t??this[e]),n!==!0||o!==void 0)||(this._$AL.has(e)||(this.hasUpdated||s||(t=void 0),this._$AL.set(e,t)),i===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[i,n]of this._$Ep)this[i]=n;this._$Ep=void 0}const s=this.constructor.elementProperties;if(s.size>0)for(const[i,n]of s){const{wrapped:o}=n,a=this[i];o!==!0||this._$AL.has(i)||a===void 0||this.C(i,void 0,n,a)}}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(s=>s.hostUpdate?.()),this.update(t)):this._$EM()}catch(s){throw e=!1,this._$EM(),s}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(e){}firstUpdated(e){}};F.elementStyles=[],F.shadowRootOptions={mode:"open"},F[W("elementProperties")]=new Map,F[W("finalized")]=new Map,qt?.({ReactiveElement:F}),(ne.reactiveElementVersions??=[]).push("2.1.2");/**
|
|
10
10
|
* @license
|
|
11
11
|
* Copyright 2017 Google LLC
|
|
12
12
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
13
|
-
*/const $e=globalThis,Fe=r=>r,te=$e.trustedTypes,qe=te?te.createPolicy("lit-html",{createHTML:r=>r}):void 0,ct="$lit$",
|
|
14
|
-
\f\r]`,j=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Ue=/-->/g,He=/>/g,
|
|
15
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),Be=/'/g,je=/"/g,pt=/^(?:script|style|textarea|title)$/i,Bt=r=>(e,...t)=>({_$litType$:r,strings:e,values:t}),h=Bt(1),D=Symbol.for("lit-noChange"),
|
|
13
|
+
*/const $e=globalThis,Fe=r=>r,te=$e.trustedTypes,qe=te?te.createPolicy("lit-html",{createHTML:r=>r}):void 0,ct="$lit$",R=`lit$${Math.random().toFixed(9).slice(2)}$`,ht="?"+R,Ut=`<${ht}>`,L=document,Q=()=>L.createComment(""),V=r=>r===null||typeof r!="object"&&typeof r!="function",ye=Array.isArray,Ht=r=>ye(r)||typeof r?.[Symbol.iterator]=="function",he=`[
|
|
14
|
+
\f\r]`,j=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Ue=/-->/g,He=/>/g,E=RegExp(`>|${he}(?:([^\\s"'>=/]+)(${he}*=${he}*(?:[^
|
|
15
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),Be=/'/g,je=/"/g,pt=/^(?:script|style|textarea|title)$/i,Bt=r=>(e,...t)=>({_$litType$:r,strings:e,values:t}),h=Bt(1),D=Symbol.for("lit-noChange"),b=Symbol.for("lit-nothing"),Ke=new WeakMap,P=L.createTreeWalker(L,129);function dt(r,e){if(!ye(r)||!r.hasOwnProperty("raw"))throw Error("invalid template strings array");return qe!==void 0?qe.createHTML(e):e}const jt=(r,e)=>{const t=r.length-1,s=[];let i,n=e===2?"<svg>":e===3?"<math>":"",o=j;for(let a=0;a<t;a++){const l=r[a];let c,d,p=-1,g=0;for(;g<l.length&&(o.lastIndex=g,d=o.exec(l),d!==null);)g=o.lastIndex,o===j?d[1]==="!--"?o=Ue:d[1]!==void 0?o=He:d[2]!==void 0?(pt.test(d[2])&&(i=RegExp("</"+d[2],"g")),o=E):d[3]!==void 0&&(o=E):o===E?d[0]===">"?(o=i??j,p=-1):d[1]===void 0?p=-2:(p=o.lastIndex-d[2].length,c=d[1],o=d[3]===void 0?E:d[3]==='"'?je:Be):o===je||o===Be?o=E:o===Ue||o===He?o=j:(o=E,i=void 0);const k=o===E&&r[a+1].startsWith("/>")?" ":"";n+=o===j?l+Ut:p>=0?(s.push(c),l.slice(0,p)+ct+l.slice(p)+R+k):l+R+(p===-2?a:k)}return[dt(r,n+(r[t]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),s]};let ge=class ut{constructor({strings:e,_$litType$:t},s){let i;this.parts=[];let n=0,o=0;const a=e.length-1,l=this.parts,[c,d]=jt(e,t);if(this.el=ut.createElement(c,s),P.currentNode=this.el.content,t===2||t===3){const p=this.el.content.firstChild;p.replaceWith(...p.childNodes)}for(;(i=P.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(const p of i.getAttributeNames())if(p.endsWith(ct)){const g=d[o++],k=i.getAttribute(p).split(R),m=/([.?@])?(.*)/.exec(g);l.push({type:1,index:n,name:m[2],strings:k,ctor:m[1]==="."?Zt:m[1]==="?"?Wt:m[1]==="@"?Qt:oe}),i.removeAttribute(p)}else p.startsWith(R)&&(l.push({type:6,index:n}),i.removeAttribute(p));if(pt.test(i.tagName)){const p=i.textContent.split(R),g=p.length-1;if(g>0){i.textContent=te?te.emptyScript:"";for(let k=0;k<g;k++)i.append(p[k],Q()),P.nextNode(),l.push({type:2,index:++n});i.append(p[g],Q())}}}else if(i.nodeType===8)if(i.data===ht)l.push({type:2,index:n});else{let p=-1;for(;(p=i.data.indexOf(R,p+1))!==-1;)l.push({type:7,index:n}),p+=R.length-1}n++}}static createElement(e,t){const s=L.createElement("template");return s.innerHTML=e,s}};function q(r,e,t=r,s){if(e===D)return e;let i=s!==void 0?t._$Co?.[s]:t._$Cl;const n=V(e)?void 0:e._$litDirective$;return i?.constructor!==n&&(i?._$AO?.(!1),n===void 0?i=void 0:(i=new n(r),i._$AT(r,t,s)),s!==void 0?(t._$Co??=[])[s]=i:t._$Cl=i),i!==void 0&&(e=q(r,i._$AS(r,e.values),i,s)),e}let Kt=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:t},parts:s}=this._$AD,i=(e?.creationScope??L).importNode(t,!0);P.currentNode=i;let n=P.nextNode(),o=0,a=0,l=s[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new Y(n,n.nextSibling,this,e):l.type===1?c=new l.ctor(n,l.name,l.strings,this,e):l.type===6&&(c=new Vt(n,this,e)),this._$AV.push(c),l=s[++a]}o!==l?.index&&(n=P.nextNode(),o++)}return P.currentNode=L,i}p(e){let t=0;for(const s of this._$AV)s!==void 0&&(s.strings!==void 0?(s._$AI(e,s,t),t+=s.strings.length-2):s._$AI(e[t])),t++}};class Y{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,s,i){this.type=2,this._$AH=b,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=s,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=q(this,e,t),V(e)?e===b||e==null||e===""?(this._$AH!==b&&this._$AR(),this._$AH=b):e!==this._$AH&&e!==D&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Ht(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==b&&V(this._$AH)?this._$AA.nextSibling.data=e:this.T(L.createTextNode(e)),this._$AH=e}$(e){const{values:t,_$litType$:s}=e,i=typeof s=="number"?this._$AC(e):(s.el===void 0&&(s.el=ge.createElement(dt(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===i)this._$AH.p(t);else{const n=new Kt(i,this),o=n.u(this.options);n.p(t),this.T(o),this._$AH=n}}_$AC(e){let t=Ke.get(e.strings);return t===void 0&&Ke.set(e.strings,t=new ge(e)),t}k(e){ye(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let s,i=0;for(const n of e)i===t.length?t.push(s=new Y(this.O(Q()),this.O(Q()),this,this.options)):s=t[i],s._$AI(n),i++;i<t.length&&(this._$AR(s&&s._$AB.nextSibling,i),t.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){const s=Fe(e).nextSibling;Fe(e).remove(),e=s}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}}let oe=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,s,i,n){this.type=1,this._$AH=b,this._$AN=void 0,this.element=e,this.name=t,this._$AM=i,this.options=n,s.length>2||s[0]!==""||s[1]!==""?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=b}_$AI(e,t=this,s,i){const n=this.strings;let o=!1;if(n===void 0)e=q(this,e,t,0),o=!V(e)||e!==this._$AH&&e!==D,o&&(this._$AH=e);else{const a=e;let l,c;for(e=n[0],l=0;l<n.length-1;l++)c=q(this,a[s+l],t,l),c===D&&(c=this._$AH[l]),o||=!V(c)||c!==this._$AH[l],c===b?e=b:e!==b&&(e+=(c??"")+n[l+1]),this._$AH[l]=c}o&&!i&&this.j(e)}j(e){e===b?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}},Zt=class extends oe{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===b?void 0:e}},Wt=class extends oe{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==b)}},Qt=class extends oe{constructor(e,t,s,i,n){super(e,t,s,i,n),this.type=5}_$AI(e,t=this){if((e=q(this,e,t,0)??b)===D)return;const s=this._$AH,i=e===b&&s!==b||e.capture!==s.capture||e.once!==s.once||e.passive!==s.passive,n=e!==b&&(s===b||i);i&&this.element.removeEventListener(this.name,this,s),n&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Vt=class{constructor(e,t,s){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(e){q(this,e)}};const Yt=$e.litHtmlPolyfillSupport;Yt?.(ge,Y),($e.litHtmlVersions??=[]).push("3.3.3");const Gt=(r,e,t)=>{const s=t?.renderBefore??e;let i=s._$litPart$;if(i===void 0){const n=t?.renderBefore??null;s._$litPart$=i=new Y(e.insertBefore(Q(),n),n,void 0,t??{})}return i._$AI(r),i};/**
|
|
16
16
|
* @license
|
|
17
17
|
* Copyright 2017 Google LLC
|
|
18
18
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
19
|
-
*/const we=globalThis;let _=class extends F{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Gt(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return D}};_._$litElement$=!0,_.finalized=!0,we.litElementHydrateSupport?.({LitElement:_});const Jt=we.litElementPolyfillSupport;Jt?.({LitElement:_});(we.litElementVersions??=[]).push("4.2.2");var gt;let pe=0;const
|
|
20
|
-
↳ while computing ${this._debugParent??"root"}`);this.#s=!0,this.#
|
|
19
|
+
*/const we=globalThis;let _=class extends F{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Gt(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return D}};_._$litElement$=!0,_.finalized=!0,we.litElementHydrateSupport?.({LitElement:_});const Jt=we.litElementPolyfillSupport;Jt?.({LitElement:_});(we.litElementVersions??=[]).push("4.2.2");var gt;let pe=0;const Ze=new Set;function Xt(r){pe++;try{r()}finally{pe--,pe===0&&es()}}function es(){const r=new Set(Ze);Ze.clear();for(const e of r)e()}function ts(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function ss(r){return r&&typeof r.deref=="function"}class _e{static#e=0;#t;#s;#r=new Set;#i=gt.#e++;name;constructor(e,t){this.#t=e,this.#s=e,this.name=t}_get(){return u.activeConsumer&&u.activeConsumer.track(this),this.#t}_set(e){return ts(e,this.#t)?(this.#s=this.#t,this.#t=e,this._notify(),!0):!1}subscribe(e,t=!1){let s=e;return t&&(s=new WeakRef(e)),this.#r.add(s),()=>this.#r.delete(s)}_notify(){const e=[...this.#r];for(const t of e){let s;if(ss(t)){if(s=t.deref(),!s){this.#r.delete(t);continue}}else s=t;s()}}get id(){return this.#i}get previousValue(){return this.#s}toString(){return this.name?`${this.constructor.name}(${this.name})`:`${this.constructor.name}#${this.id}`}}gt=_e;class u extends _e{static#e=[];constructor(e,t){super(e,t)}static get activeConsumer(){return this.#e[this.#e.length-1]}static push(e){this.#e.push(e)}static pop(){this.#e.pop()}get(){return this._get()}set(e){Xt(()=>{this._set(e)})}get value(){return this.get()}set value(e){this.set(e)}update(e){this.set(e(this.get()))}}class is extends _e{#e;#t=!0;#s=!1;#r=new Map;_debugParent;#i;#d=()=>{this.#t||(this.#t=!0,this._notify())};constructor(e,t,s){super(void 0,t),this.#e=e,this.#i=s?.weak??!0}track(e){if(this.#r.has(e))return;const t=e.subscribe(this.#d,this.#i);this.#r.set(e,t)}dispose(){this.#o()}#o(){for(const e of this.#r.values())e();this.#r.clear()}get(){if(u.activeConsumer&&u.activeConsumer.track(this),!this.#t)return this._get();if(this.#s)throw new Error(`Cycle detected in ${this}
|
|
20
|
+
↳ while computing ${this._debugParent??"root"}`);this.#s=!0,this.#o(),u.push(this);try{const e=this.#e();this._set(e)}finally{u.pop(),this.#t=!1,this.#s=!1}return this._get()}get value(){return this.get()}set value(e){throw new Error(`Cannot set value of Computed ${this}. Computed values are read-only.`)}subscribe(e,t=!1){const s=super.subscribe(e,t);return u.activeConsumer||this.get(),s}}class ae{#e;#t=new Map;_debugParent;constructor(e){this.#e=e,e.addController(this);const t=e,s=t.update,i=this;t.update=function(n){u.push(i);try{s.call(this,n)}finally{u.pop()}}}track(e){this.#t.has(e)||this.#t.set(e,e.subscribe(this.#s,!0))}#s=()=>{this.#e.requestUpdate()};hostUpdate(){for(const e of this.#t.values())e();this.#t.clear()}hostDisconnected(){for(const e of this.#t.values())e();this.#t.clear()}toString(){const e=this.#e;return`SignalWatcher(${e?.localName??e?.tagName??e?.constructor?.name??"unknown"})`}}const rs=new Intl.DateTimeFormat("en-CA",{year:"numeric",month:"2-digit",day:"2-digit"});function ns(r){if(!r)return"unknown age";const e=new Date(r);return Number.isNaN(e.getTime())?"unknown age":rs.format(e)}function os(r){const e=[],t=new Map,s=[];for(const n of r){if(n._table!=="memory_docs"){s.push(n);continue}t.has(n.name)||(t.set(n.name,[]),e.push(n.name)),t.get(n.name).push(n)}const i=e.map(n=>({key:n,items:t.get(n)}));return s.length>0&&i.push({key:null,items:s}),i}class as extends _{static{this.properties={results:{attribute:!1},showFolder:{attribute:!1},onSelect:{attribute:!1},selectedIds:{attribute:!1},onToggleSelect:{attribute:!1},onKeyClick:{attribute:!1}}}static{this.styles=O`
|
|
21
21
|
:host { display: block; }
|
|
22
22
|
.count-header {
|
|
23
23
|
padding: 8px 14px;
|
|
@@ -40,6 +40,11 @@
|
|
|
40
40
|
gap: 6px;
|
|
41
41
|
}
|
|
42
42
|
.key-group-count { opacity: 0.6; font-weight: 400; }
|
|
43
|
+
.key-group-link {
|
|
44
|
+
background: none; border: none; padding: 0; margin: 0; font: inherit; font-weight: 700;
|
|
45
|
+
color: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 2px;
|
|
46
|
+
}
|
|
47
|
+
.key-group-link:hover { opacity: 0.8; }
|
|
43
48
|
.row { padding: 10px 14px; border-bottom: 1px solid var(--border); cursor: pointer; display: flex; gap: 8px; }
|
|
44
49
|
.row:hover { background: var(--hover); }
|
|
45
50
|
.row.deprecated { opacity: 0.55; }
|
|
@@ -69,8 +74,18 @@
|
|
|
69
74
|
.empty { padding: 24px; opacity: 0.6; font-size: 13px; }
|
|
70
75
|
`}render(){return!this.results||this.results.length===0?h`<div class="empty">No results.</div>`:h`
|
|
71
76
|
<div class="count-header">${this.results.length} result${this.results.length===1?"":"s"}</div>
|
|
72
|
-
${
|
|
73
|
-
${e.key?h`<div class="key-group-header"
|
|
77
|
+
${os(this.results).map(e=>h`
|
|
78
|
+
${e.key?h`<div class="key-group-header">
|
|
79
|
+
🔑
|
|
80
|
+
<button
|
|
81
|
+
class="key-group-link"
|
|
82
|
+
title="Search for this key"
|
|
83
|
+
@click=${()=>this.onKeyClick?.(e.key)}
|
|
84
|
+
>
|
|
85
|
+
${e.key}
|
|
86
|
+
</button>
|
|
87
|
+
<span class="key-group-count">(${e.items.length})</span>
|
|
88
|
+
</div>`:""}
|
|
74
89
|
${e.items.map(t=>this.#e(t))}
|
|
75
90
|
`)}
|
|
76
91
|
`}#e(e){const t=e._table==="skills"&&e.folder==="builtin";return h`
|
|
@@ -98,79 +113,79 @@
|
|
|
98
113
|
</div>
|
|
99
114
|
</div>
|
|
100
115
|
</div>
|
|
101
|
-
`}}customElements.define("result-list",
|
|
102
|
-
]`).replace("lheading",mt).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},ws=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,_s=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,kt=/^( {2,}|\\)\n(?!\s*$)/,Ss=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,T=/[\p{P}\p{S}]/u,U=/[\s\p{P}\p{S}]/u,J=/[^\s\p{P}\p{S}]/u,As=f(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,U).getRegex(),Ts=/[\p{Pi}\p{Ps}"']/u,vt=/(?!~)[\p{P}\p{S}]/u,Cs=/(?!~)[\s\p{P}\p{S}]/u,
|
|
116
|
+
`}}customElements.define("result-list",as);function Se(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var M=Se();function ft(r){M=r}var z={exec:()=>null};function N(r){let e=[];return t=>{let s=Math.max(0,Math.min(3,t-1)),i=e[s];return i||(i=r(s),e[s]=i),i}}function f(r,e=""){let t=typeof r=="string"?r:r.source,s={replace:(i,n)=>{let o=typeof n=="string"?n:n.source;return o=o.replace(v.caret,"$1"),t=t.replace(i,o),s},getRegex:()=>new RegExp(t,e)};return s}var ls=((r="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+r)}catch{return!1}})(),v={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:r=>new RegExp(`^( {0,3}${r})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:N(r=>new RegExp(`^ {0,${r}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:N(r=>new RegExp(`^ {0,${r}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:N(r=>new RegExp(`^ {0,${r}}(?:\`\`\`|~~~)`)),headingBeginRegex:N(r=>new RegExp(`^ {0,${r}}#`)),htmlBeginRegex:N(r=>new RegExp(`^ {0,${r}}<(?:[a-z].*>|!--)`,"i")),blockquoteBeginRegex:N(r=>new RegExp(`^ {0,${r}}>`))},cs=/^(?:[ \t]*(?:\n|$))+/,hs=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,ps=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,G=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ds=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ae=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,bt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,mt=f(bt).replace(/bull/g,Ae).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),us=f(bt).replace(/bull/g,Ae).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Te=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,gs=/^[^\n]+/,Ce=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,fs=f(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ce).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),bs=f(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Ae).getRegex(),le="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Re=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,ms=f("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Re).replace("tag",le).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),xt=r=>f(Te).replace("hr",G).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",r).replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",le).getRegex(),xs=xt(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),ks=xt(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),vs=f(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ks).getRegex(),Ee={blockquote:vs,code:hs,def:fs,fences:ps,heading:ds,hr:G,html:ms,lheading:mt,list:bs,newline:cs,paragraph:xs,table:z,text:gs},We=f("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",G).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",le).getRegex(),$s={...Ee,lheading:us,table:We,paragraph:f(Te).replace("hr",G).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",We).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",le).getRegex()},ys={...Ee,html:f(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Re).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:z,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:f(Te).replace("hr",G).replace("heading",` *#{1,6} *[^
|
|
117
|
+
]`).replace("lheading",mt).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},ws=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,_s=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,kt=/^( {2,}|\\)\n(?!\s*$)/,Ss=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,T=/[\p{P}\p{S}]/u,U=/[\s\p{P}\p{S}]/u,J=/[^\s\p{P}\p{S}]/u,As=f(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,U).getRegex(),Ts=/[\p{Pi}\p{Ps}"']/u,vt=/(?!~)[\p{P}\p{S}]/u,Cs=/(?!~)[\s\p{P}\p{S}]/u,Rs=/(?:[^\s\p{P}\p{S}]|~)/u,Es=f(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",ls?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),$t=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,zs=f($t,"u").replace(/punct/g,T).getRegex(),Ps=f($t,"u").replace(/punct/g,vt).getRegex(),Ls=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Ds=f(Ls,"u").replace(/openQuote/g,Ts).replace(/punct/g,T).getRegex(),yt="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Is=f(yt,"gu").replace(/notPunctSpace/g,J).replace(/punctSpace/g,U).replace(/punct/g,T).getRegex(),Os=f(yt,"gu").replace(/notPunctSpace/g,Rs).replace(/punctSpace/g,Cs).replace(/punct/g,vt).getRegex(),Ms="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",Ns=f(Ms,"gu").replace(/notPunctSpace/g,J).replace(/punctSpace/g,U).replace(/punct/g,T).getRegex(),Fs=f("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,J).replace(/punctSpace/g,U).replace(/punct/g,T).getRegex(),qs="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",Us=f(qs,"gu").replace(/notPunctSpace/g,J).replace(/punctSpace/g,U).replace(/punct/g,T).getRegex(),Hs=f(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,T).getRegex(),Bs="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",js=f(Bs,"gu").replace(/notPunctSpace/g,J).replace(/punctSpace/g,U).replace(/punct/g,T).getRegex(),Ks=f(/\\(punct)/,"gu").replace(/punct/g,T).getRegex(),Zs=f(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Ws=f(Re).replace("(?:-->|$)","-->").getRegex(),Qs=f("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Ws).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),se=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Vs=f(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",se).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),wt=f(/^!?\[(label)\]\[(ref)\]/).replace("label",se).replace("ref",Ce).getRegex(),_t=f(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ce).getRegex(),Ys=f("reflink|nolink(?!\\()","g").replace("reflink",wt).replace("nolink",_t).getRegex(),Qe=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,ze={_backpedal:z,anyPunctuation:Ks,autolink:Zs,blockSkip:Es,br:kt,code:_s,del:z,delLDelim:z,delRDelim:z,emStrongLDelim:zs,emStrongRDelimAst:Is,emStrongRDelimUnd:Fs,escape:ws,link:Vs,nolink:_t,punctuation:As,reflink:wt,reflinkSearch:Ys,tag:Qs,text:Ss,url:z},Gs={...ze,emStrongLDelim:Ds,emStrongRDelimAst:Ns,emStrongRDelimUnd:Us,link:f(/^!?\[(label)\]\((.*?)\)/).replace("label",se).getRegex(),reflink:f(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",se).getRegex()},fe={...ze,emStrongRDelimAst:Os,emStrongLDelim:Ps,delLDelim:Hs,delRDelim:js,url:f(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Qe).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:f(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Qe).getRegex()},Js={...fe,br:f(kt).replace("{2,}","*").getRegex(),text:f(fe.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},X={normal:Ee,gfm:$s,pedantic:ys},K={normal:ze,gfm:fe,breaks:Js,pedantic:Gs},Xs={"&":"&","<":"<",">":">",'"':""","'":"'"},Ve=r=>Xs[r];function A(r,e){if(e){if(v.escapeTest.test(r))return r.replace(v.escapeReplace,Ve)}else if(v.escapeTestNoEncode.test(r))return r.replace(v.escapeReplaceNoEncode,Ve);return r}function Ye(r){try{r=encodeURI(r).replace(v.percentDecode,"%")}catch{return null}return r}function Ge(r,e){let t=r.replace(v.findPipe,(n,o,a)=>{let l=!1,c=o;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),s=t.split(v.splitPipe),i=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length<e;)s.push("");for(;i<s.length;i++)s[i]=s[i].trim().replace(v.slashPipe,"|");return s}function C(r,e,t){let s=r.length;if(s===0)return"";let i=0;for(;i<s&&r.charAt(s-i-1)===e;)i++;return r.slice(0,s-i)}function Je(r){let e=r.split(`
|
|
103
118
|
`),t=e.length-1;for(;t>=0&&v.blankLine.test(e[t]);)t--;return e.length-t<=2?r:e.slice(0,t+1).join(`
|
|
104
|
-
`)}function ei(r,e){if(r.indexOf(e[1])===-1)return-1;let t=0;for(let s=0;s<r.length;s++)if(r[s]==="\\")s++;else if(r[s]===e[0])t++;else if(r[s]===e[1]&&(t--,t<0))return s;return t>0?-2:-1}function ti(r,e=0){let t=e,s="";for(let i of r)if(i===" "){let n=4-t%4;s+=" ".repeat(n),t+=n}else s+=i,t++;return s}function Xe(r,e,t,s,i){let n=e.href,
|
|
105
|
-
`).map(n=>{let
|
|
119
|
+
`)}function ei(r,e){if(r.indexOf(e[1])===-1)return-1;let t=0;for(let s=0;s<r.length;s++)if(r[s]==="\\")s++;else if(r[s]===e[0])t++;else if(r[s]===e[1]&&(t--,t<0))return s;return t>0?-2:-1}function ti(r,e=0){let t=e,s="";for(let i of r)if(i===" "){let n=4-t%4;s+=" ".repeat(n),t+=n}else s+=i,t++;return s}function Xe(r,e,t,s,i){let n=e.href,o=e.title||null,a=r[1].replace(i.other.outputLinkReplace,"$1");s.state.inLink=!0;let l={type:r[0].charAt(0)==="!"?"image":"link",raw:t,href:n,title:o,text:a,tokens:s.inlineTokens(a)};return s.state.inLink=!1,l}function si(r,e,t){let s=r.match(t.other.indentCodeCompensation);if(s===null)return e;let i=s[1];return e.split(`
|
|
120
|
+
`).map(n=>{let o=n.match(t.other.beginningSpace);if(o===null)return n;let[a]=o;return a.length>=i.length?n.slice(i.length):n}).join(`
|
|
106
121
|
`)}var ie=class{options;rules;lexer;constructor(r){this.options=r||M}space(r){let e=this.rules.block.newline.exec(r);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(r){let e=this.rules.block.code.exec(r);if(e){let t=this.options.pedantic?e[0]:Je(e[0]),s=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:s}}}fences(r){let e=this.rules.block.fences.exec(r);if(e){let t=e[0],s=si(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:s}}}heading(r){let e=this.rules.block.heading.exec(r);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let s=C(t,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(t=s.trim())}return{type:"heading",raw:C(e[0],`
|
|
107
122
|
`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(r){let e=this.rules.block.hr.exec(r);if(e)return{type:"hr",raw:C(e[0],`
|
|
108
123
|
`)}}blockquote(r){let e=this.rules.block.blockquote.exec(r);if(e){let t=C(e[0],`
|
|
109
124
|
`).split(`
|
|
110
|
-
`),s="",i="",n=[];for(;t.length>0;){let
|
|
125
|
+
`),s="",i="",n=[];for(;t.length>0;){let o=!1,a=[],l;for(l=0;l<t.length;l++)if(this.rules.other.blockquoteStart.test(t[l]))a.push(t[l]),o=!0;else if(!o)a.push(t[l]);else break;t=t.slice(l);let c=a.join(`
|
|
111
126
|
`),d=c.replace(this.rules.other.blockquoteSetextReplace,`
|
|
112
127
|
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");s=s?`${s}
|
|
113
128
|
${c}`:c,i=i?`${i}
|
|
114
|
-
${d}`:d;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(d,n,!0),this.lexer.state.top=p,t.length===0)break;let g=n.at(-1);if(g?.type==="code")break;if(g?.type==="blockquote"){let k=g,
|
|
129
|
+
${d}`:d;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(d,n,!0),this.lexer.state.top=p,t.length===0)break;let g=n.at(-1);if(g?.type==="code")break;if(g?.type==="blockquote"){let k=g,m=t.join(`
|
|
115
130
|
`),S=k.raw+`
|
|
116
|
-
`+
|
|
117
|
-
${
|
|
131
|
+
`+m.replace(this.rules.other.blockquoteSetextReplace2,""),H=this.blockquote(S);n[n.length-1]=H,s=`${s}
|
|
132
|
+
${m}`,i=i.substring(0,i.length-k.text.length)+H.text;break}else if(g?.type==="list"){let k=g,m=k.raw+`
|
|
118
133
|
`+t.join(`
|
|
119
|
-
`),S=this.list(
|
|
120
|
-
`);continue}}return{type:"blockquote",raw:s,tokens:n,text:i}}}list(r){let e=this.rules.block.list.exec(r);if(e){let t=e[1].trim(),s=t.length>1,i={type:"list",raw:"",ordered:s,start:s?+t.slice(0,-1):"",loose:!1,items:[]};t=s?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=s?t:"[*+-]");let n=this.rules.other.listItemRegex(t),
|
|
134
|
+
`),S=this.list(m);n[n.length-1]=S,s=s.substring(0,s.length-g.raw.length)+S.raw,i=i.substring(0,i.length-k.raw.length)+S.raw,t=m.substring(n.at(-1).raw.length).split(`
|
|
135
|
+
`);continue}}return{type:"blockquote",raw:s,tokens:n,text:i}}}list(r){let e=this.rules.block.list.exec(r);if(e){let t=e[1].trim(),s=t.length>1,i={type:"list",raw:"",ordered:s,start:s?+t.slice(0,-1):"",loose:!1,items:[]};t=s?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=s?t:"[*+-]");let n=this.rules.other.listItemRegex(t),o=!1;for(;r;){let l=!1,c="",d="";if(!(e=n.exec(r))||this.rules.block.hr.test(r))break;c=e[0],r=r.substring(c.length);let p=ti(e[2].split(`
|
|
121
136
|
`,1)[0],e[1].length),g=r.split(`
|
|
122
|
-
`,1)[0],k=!p.trim(),
|
|
123
|
-
`,r=r.substring(g.length+1),l=!0),!l){let S=this.rules.other.nextBulletRegex(
|
|
124
|
-
`,1)[0],B;if(g=ce,this.options.pedantic?(g=g.replace(this.rules.other.listReplaceNesting," "),B=g):B=g.replace(this.rules.other.tabCharGlobal," "),Le.test(g)||De.test(g)||
|
|
125
|
-
`+B.slice(
|
|
137
|
+
`,1)[0],k=!p.trim(),m=0;if(this.options.pedantic?(m=2,d=p.trimStart()):k?m=e[1].length+1:(m=p.search(this.rules.other.nonSpaceChar),m=m>4?1:m,d=p.slice(m),m+=e[1].length),k&&this.rules.other.blankLine.test(g)&&(c+=g+`
|
|
138
|
+
`,r=r.substring(g.length+1),l=!0),!l){let S=this.rules.other.nextBulletRegex(m),H=this.rules.other.hrRegex(m),Le=this.rules.other.fencesBeginRegex(m),De=this.rules.other.headingBeginRegex(m),Rt=this.rules.other.htmlBeginRegex(m),Et=this.rules.other.blockquoteBeginRegex(m);for(;r;){let ce=r.split(`
|
|
139
|
+
`,1)[0],B;if(g=ce,this.options.pedantic?(g=g.replace(this.rules.other.listReplaceNesting," "),B=g):B=g.replace(this.rules.other.tabCharGlobal," "),Le.test(g)||De.test(g)||Rt.test(g)||Et.test(g)||S.test(g)||H.test(g))break;if(B.search(this.rules.other.nonSpaceChar)>=m||!g.trim())d+=`
|
|
140
|
+
`+B.slice(m);else{if(k||p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||Le.test(p)||De.test(p)||H.test(p))break;d+=`
|
|
126
141
|
`+g}k=!g.trim(),c+=ce+`
|
|
127
|
-
`,r=r.substring(ce.length+1),p=B.slice(
|
|
142
|
+
`,r=r.substring(ce.length+1),p=B.slice(m)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(o=!0)),i.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),i.raw+=c}let a=i.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!i.loose){let c=l.tokens.filter(p=>p.type==="space"),d=c.length>0&&c.some(p=>this.rules.other.anyLine.test(p.raw));i.loose=d}for(let l of i.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let p=this.lexer.inlineQueue.length-1;p>=0;p--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[p].src)){this.lexer.inlineQueue[p].src=this.lexer.inlineQueue[p].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(l.raw);if(d){let p={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};l.checked=p.checked,i.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=p.raw+l.tokens[0].raw,l.tokens[0].text=p.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(p)):l.tokens.unshift({type:"paragraph",raw:p.raw,text:p.raw,tokens:[p]}):l.tokens.unshift(p)}}else l.task&&(l.task=!1)}if(i.loose)for(let l of i.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return i}}html(r){let e=this.rules.block.html.exec(r);if(e){let t=Je(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(r){let e=this.rules.block.def.exec(r);if(e){let t=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),s=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:C(e[0],`
|
|
128
143
|
`),href:s,title:i}}}table(r){let e=this.rules.block.table.exec(r);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=Ge(e[1]),s=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
129
144
|
`):[],n={type:"table",raw:C(e[0],`
|
|
130
|
-
`),header:[],align:[],rows:[]};if(t.length===s.length){for(let
|
|
145
|
+
`),header:[],align:[],rows:[]};if(t.length===s.length){for(let o of s)this.rules.other.tableAlignRight.test(o)?n.align.push("right"):this.rules.other.tableAlignCenter.test(o)?n.align.push("center"):this.rules.other.tableAlignLeft.test(o)?n.align.push("left"):n.align.push(null);for(let o=0;o<t.length;o++)n.header.push({text:t[o],tokens:this.lexer.inline(t[o]),header:!0,align:n.align[o]});for(let o of i)n.rows.push(Ge(o,n.header.length).map((a,l)=>({text:a,tokens:this.lexer.inline(a),header:!1,align:n.align[l]})));return n}}lheading(r){let e=this.rules.block.lheading.exec(r);if(e){let t=e[1].trim();return{type:"heading",raw:C(e[0],`
|
|
131
146
|
`),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(r){let e=this.rules.block.paragraph.exec(r);if(e){let t=e[1].charAt(e[1].length-1)===`
|
|
132
|
-
`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(r){let e=this.rules.block.text.exec(r);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(r){let e=this.rules.inline.escape.exec(r);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(r){let e=this.rules.inline.tag.exec(r);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(r){let e=this.rules.inline.link.exec(r);if(e){let t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;let n=C(t.slice(0,-1),"\\");if((t.length-n.length)%2===0)return}else{let n=ei(e[2],"()");if(n===-2)return;if(n>-1){let
|
|
133
|
-
`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let s=this.inlineQueue[t];this.inlineTokens(s.src,s.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],s=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(v.tabCharGlobal," ").replace(v.spaceLine,""));let i=1/0;for(;e;){if(e.length<i)i=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let n;if(this.options.extensions?.block?.some(
|
|
134
|
-
`:t.push(n);continue}if(n=this.tokenizer.code(e)){e=e.substring(n.raw.length);let
|
|
147
|
+
`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(r){let e=this.rules.block.text.exec(r);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(r){let e=this.rules.inline.escape.exec(r);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(r){let e=this.rules.inline.tag.exec(r);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(r){let e=this.rules.inline.link.exec(r);if(e){let t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;let n=C(t.slice(0,-1),"\\");if((t.length-n.length)%2===0)return}else{let n=ei(e[2],"()");if(n===-2)return;if(n>-1){let o=(e[0].indexOf("!")===0?5:4)+e[1].length+n;e[2]=e[2].substring(0,n),e[0]=e[0].substring(0,o).trim(),e[3]=""}}let s=e[2],i="";if(this.options.pedantic){let n=this.rules.other.pedanticHrefTitle.exec(s);n&&(s=n[1],i=n[3])}else i=e[3]?e[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(t)?s=s.slice(1):s=s.slice(1,-1)),Xe(e,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(r,e){let t;if((t=this.rules.inline.reflink.exec(r))||(t=this.rules.inline.nolink.exec(r))){let s=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=e[s.toLowerCase()];if(!i){let n=t[0].charAt(0);return{type:"text",raw:n,text:n}}return Xe(t,i,t[0],this.lexer,this.rules)}}emStrong(r,e,t=""){let s=this.rules.inline.emStrongLDelim.exec(r);if(!(!s||!s[1]&&!s[2]&&!s[3]&&!s[4]||s[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[3])||!t||this.rules.inline.punctuation.exec(t))){let i=[...s[0]].length-1,n,o,a=i,l=0,c=s[0][0],d=t===c,p=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,e=e.slice(-1*r.length+i);(s=p.exec(e))!==null;){if(n=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!n)continue;if(o=[...n].length,s[3]||s[4]){a+=o;continue}else if(s[5]||s[6]){if(i%3&&!((i+o)%3)){l+=o;continue}if(d)break}if(a-=o,a>0)continue;o=Math.min(o,o+a+l);let g=[...s[0]][0].length,k=r.slice(0,i+s.index+g+o);if(Math.min(i,o)%2){let S=k.slice(1,-1);return{type:"em",raw:k,text:S,tokens:this.lexer.inlineTokens(S)}}let m=k.slice(2,-2);return{type:"strong",raw:k,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(r){let e=this.rules.inline.code.exec(r);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(t),i=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return s&&i&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(r){let e=this.rules.inline.br.exec(r);if(e)return{type:"br",raw:e[0]}}del(r,e,t=""){let s=this.rules.inline.delLDelim.exec(r);if(s&&(!s[1]||!t||this.rules.inline.punctuation.exec(t))){let i=[...s[0]].length-1,n,o,a=i,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*r.length+i);(s=l.exec(e))!==null;){if(n=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!n||(o=[...n].length,o!==i))continue;if(s[3]||s[4]){a+=o;continue}if(a-=o,a>0)continue;o=Math.min(o,o+a);let c=[...s[0]][0].length,d=r.slice(0,i+s.index+c+o),p=d.slice(i,-i);return{type:"del",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}}}autolink(r){let e=this.rules.inline.autolink.exec(r);if(e){let t,s;return e[2]==="@"?(t=e[1],s="mailto:"+t):(t=e[1],s=t),{type:"link",raw:e[0],text:t,href:s,tokens:[{type:"text",raw:t,text:t}]}}}url(r){let e;if(e=this.rules.inline.url.exec(r)){let t,s;if(e[2]==="@")t=e[0],s="mailto:"+t;else{let i;do i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(i!==e[0]);t=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:t,href:s,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(r){let e=this.rules.inline.text.exec(r);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},y=class be{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||M,this.options.tokenizer=this.options.tokenizer||new ie,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:v,block:X.normal,inline:K.normal};this.options.pedantic?(t.block=X.pedantic,t.inline=K.pedantic):this.options.gfm&&(t.block=X.gfm,this.options.breaks?t.inline=K.breaks:t.inline=K.gfm),this.tokenizer.rules=t}static get rules(){return{block:X,inline:K}}static lex(e,t){return new be(t).lex(e)}static lexInline(e,t){return new be(t).inlineTokens(e)}lex(e){e=e.replace(v.carriageReturn,`
|
|
148
|
+
`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let s=this.inlineQueue[t];this.inlineTokens(s.src,s.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],s=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(v.tabCharGlobal," ").replace(v.spaceLine,""));let i=1/0;for(;e;){if(e.length<i)i=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let n;if(this.options.extensions?.block?.some(a=>(n=a.call({lexer:this},e,t))?(e=e.substring(n.raw.length),t.push(n),!0):!1))continue;if(n=this.tokenizer.space(e)){e=e.substring(n.raw.length);let a=t.at(-1);n.raw.length===1&&a!==void 0?a.raw+=`
|
|
149
|
+
`:t.push(n);continue}if(n=this.tokenizer.code(e)){e=e.substring(n.raw.length);let a=t.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
135
150
|
`)?"":`
|
|
136
|
-
`)+n.raw,
|
|
137
|
-
`+n.text,this.inlineQueue.at(-1).src=
|
|
151
|
+
`)+n.raw,a.text+=`
|
|
152
|
+
`+n.text,this.inlineQueue.at(-1).src=a.text):t.push(n);continue}if(n=this.tokenizer.fences(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.heading(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.hr(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.blockquote(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.list(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.html(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.def(e)){e=e.substring(n.raw.length);let a=t.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
138
153
|
`)?"":`
|
|
139
|
-
`)+n.raw,
|
|
140
|
-
`+n.raw,this.inlineQueue.at(-1).src=
|
|
154
|
+
`)+n.raw,a.text+=`
|
|
155
|
+
`+n.raw,this.inlineQueue.at(-1).src=a.text):this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title},t.push(n));continue}if(n=this.tokenizer.table(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.lheading(e)){e=e.substring(n.raw.length),t.push(n);continue}let o=e;if(this.options.extensions?.startBlock){let a=1/0,l=e.slice(1),c;this.options.extensions.startBlock.forEach(d=>{c=d.call({lexer:this},l),typeof c=="number"&&c>=0&&(a=Math.min(a,c))}),a<1/0&&a>=0&&(o=e.substring(0,a+1))}if(this.state.top&&(n=this.tokenizer.paragraph(o))){let a=t.at(-1);s&&a?.type==="paragraph"?(a.raw+=(a.raw.endsWith(`
|
|
141
156
|
`)?"":`
|
|
142
|
-
`)+n.raw,
|
|
143
|
-
`+n.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=
|
|
157
|
+
`)+n.raw,a.text+=`
|
|
158
|
+
`+n.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(n),s=o.length!==e.length,e=e.substring(n.raw.length);continue}if(n=this.tokenizer.text(e)){e=e.substring(n.raw.length);let a=t.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
144
159
|
`)?"":`
|
|
145
|
-
`)+n.raw,
|
|
146
|
-
`+n.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=
|
|
160
|
+
`)+n.raw,a.text+=`
|
|
161
|
+
`+n.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(n);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let s=e;if(this.tokens.links){let a=Object.keys(this.tokens.links);a.length>0&&(s=s.replace(this.tokenizer.rules.inline.reflinkSearch,l=>a.includes(l.slice(l.lastIndexOf("[")+1,-1))?"["+"a".repeat(l.length-2)+"]":l))}s=s.replace(this.tokenizer.rules.inline.anyPunctuation,a=>"+".repeat(a.length)),s=s.replace(this.tokenizer.rules.inline.blockSkip,(a,l,c)=>{let d=c?c.length:0;return a.slice(0,d)+"["+"a".repeat(a.length-d-2)+"]"}),s=this.options.hooks?.emStrongMask?.call({lexer:this},s)??s;let i=!1,n="",o=1/0;for(;e;){if(e.length<o)o=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}i||(n=""),i=!1;let a;if(this.options.extensions?.inline?.some(c=>(a=c.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=t.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,s,n)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,s,n)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let l=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),p;this.options.extensions.startInline.forEach(g=>{p=g.call({lexer:this},d),typeof p=="number"&&p>=0&&(c=Math.min(c,p))}),c<1/0&&c>=0&&(l=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(l)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(n=a.raw.slice(-1)),i=!0;let c=t.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},re=class{options;parser;constructor(r){this.options=r||M}space(r){return""}code({text:r,lang:e,escaped:t}){let s=(e||"").match(v.notSpaceStart)?.[0],i=r.replace(v.endingNewline,"")+`
|
|
147
162
|
`;return s?'<pre><code class="language-'+A(s)+'">'+(t?i:A(i,!0))+`</code></pre>
|
|
148
163
|
`:"<pre><code>"+(t?i:A(i,!0))+`</code></pre>
|
|
149
164
|
`}blockquote({tokens:r}){return`<blockquote>
|
|
150
165
|
${this.parser.parse(r)}</blockquote>
|
|
151
166
|
`}html({text:r}){return r}def(r){return""}heading({tokens:r,depth:e}){return`<h${e}>${this.parser.parseInline(r)}</h${e}>
|
|
152
167
|
`}hr(r){return`<hr>
|
|
153
|
-
`}list(r){let e=r.ordered,t=r.start,s="";for(let
|
|
168
|
+
`}list(r){let e=r.ordered,t=r.start,s="";for(let o=0;o<r.items.length;o++){let a=r.items[o];s+=this.listitem(a)}let i=e?"ol":"ul",n=e&&t!==1?' start="'+t+'"':"";return"<"+i+n+`>
|
|
154
169
|
`+s+"</"+i+`>
|
|
155
170
|
`}listitem(r){return`<li>${this.parser.parse(r.tokens)}</li>
|
|
156
171
|
`}checkbox({checked:r}){return"<input "+(r?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:r}){return`<p>${this.parser.parseInline(r)}</p>
|
|
157
|
-
`}table(r){let e="",t="";for(let i=0;i<r.header.length;i++)t+=this.tablecell(r.header[i]);e+=this.tablerow({text:t});let s="";for(let i=0;i<r.rows.length;i++){let n=r.rows[i];t="";for(let
|
|
172
|
+
`}table(r){let e="",t="";for(let i=0;i<r.header.length;i++)t+=this.tablecell(r.header[i]);e+=this.tablerow({text:t});let s="";for(let i=0;i<r.rows.length;i++){let n=r.rows[i];t="";for(let o=0;o<n.length;o++)t+=this.tablecell(n[o]);s+=this.tablerow({text:t})}return s&&(s=`<tbody>${s}</tbody>`),`<table>
|
|
158
173
|
<thead>
|
|
159
174
|
`+e+`</thead>
|
|
160
175
|
`+s+`</table>
|
|
161
176
|
`}tablerow({text:r}){return`<tr>
|
|
162
177
|
${r}</tr>
|
|
163
178
|
`}tablecell(r){let e=this.parser.parseInline(r.tokens),t=r.header?"th":"td";return(r.align?`<${t} align="${r.align}">`:`<${t}>`)+e+`</${t}>
|
|
164
|
-
`}strong({tokens:r}){return`<strong>${this.parser.parseInline(r)}</strong>`}em({tokens:r}){return`<em>${this.parser.parseInline(r)}</em>`}codespan({text:r}){return`<code>${A(r,!0)}</code>`}br(r){return"<br>"}del({tokens:r}){return`<del>${this.parser.parseInline(r)}</del>`}link({href:r,title:e,tokens:t}){let s=this.parser.parseInline(t),i=Ye(r);if(i===null)return s;r=i;let n='<a href="'+r+'"';return e&&(n+=' title="'+A(e)+'"'),n+=">"+s+"</a>",n}image({href:r,title:e,text:t,tokens:s}){s&&(t=this.parser.parseInline(s,this.parser.textRenderer));let i=Ye(r);if(i===null)return A(t);r=i;let n=`<img src="${r}" alt="${A(t)}"`;return e&&(n+=` title="${A(e)}"`),n+=">",n}text(r){return"tokens"in r&&r.tokens?this.parser.parseInline(r.tokens):"escaped"in r&&r.escaped?r.text:A(r.text)}},Pe=class{strong({text:r}){return r}em({text:r}){return r}codespan({text:r}){return r}del({text:r}){return r}html({text:r}){return r}text({text:r}){return r}link({text:r}){return""+r}image({text:r}){return""+r}br(){return""}checkbox({raw:r}){return r}},w=class me{options;renderer;textRenderer;constructor(e){this.options=e||M,this.options.renderer=this.options.renderer||new re,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Pe}static parse(e,t){return new me(t).parse(e)}static parseInline(e,t){return new me(t).parseInline(e)}parse(e){this.renderer.parser=this;let t="";for(let s=0;s<e.length;s++){let i=e[s];if(this.options.extensions?.renderers?.[i.type]){let
|
|
165
|
-
Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error occurred:</p><pre>"+A(t.message+"",!0)+"</pre>";return e?Promise.resolve(s):s}if(e)return Promise.reject(t);throw t}}},I=new ii;function x(r,e){return I.parse(r,e)}x.options=x.setOptions=function(r){return I.setOptions(r),x.defaults=I.defaults,ft(x.defaults),x};x.getDefaults=Se;x.defaults=M;function ri(...r){return I.use(...r),x.defaults=I.defaults,ft(x.defaults),x}x.use=ri;x.walkTokens=function(r,e){return I.walkTokens(r,e)};x.parseInline=I.parseInline;x.Parser=w;x.parser=w.parse;x.Renderer=re;x.TextRenderer=Pe;x.Lexer=y;x.lexer=y.lex;x.Tokenizer=ie;x.Hooks=
|
|
179
|
+
`}strong({tokens:r}){return`<strong>${this.parser.parseInline(r)}</strong>`}em({tokens:r}){return`<em>${this.parser.parseInline(r)}</em>`}codespan({text:r}){return`<code>${A(r,!0)}</code>`}br(r){return"<br>"}del({tokens:r}){return`<del>${this.parser.parseInline(r)}</del>`}link({href:r,title:e,tokens:t}){let s=this.parser.parseInline(t),i=Ye(r);if(i===null)return s;r=i;let n='<a href="'+r+'"';return e&&(n+=' title="'+A(e)+'"'),n+=">"+s+"</a>",n}image({href:r,title:e,text:t,tokens:s}){s&&(t=this.parser.parseInline(s,this.parser.textRenderer));let i=Ye(r);if(i===null)return A(t);r=i;let n=`<img src="${r}" alt="${A(t)}"`;return e&&(n+=` title="${A(e)}"`),n+=">",n}text(r){return"tokens"in r&&r.tokens?this.parser.parseInline(r.tokens):"escaped"in r&&r.escaped?r.text:A(r.text)}},Pe=class{strong({text:r}){return r}em({text:r}){return r}codespan({text:r}){return r}del({text:r}){return r}html({text:r}){return r}text({text:r}){return r}link({text:r}){return""+r}image({text:r}){return""+r}br(){return""}checkbox({raw:r}){return r}},w=class me{options;renderer;textRenderer;constructor(e){this.options=e||M,this.options.renderer=this.options.renderer||new re,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Pe}static parse(e,t){return new me(t).parse(e)}static parseInline(e,t){return new me(t).parseInline(e)}parse(e){this.renderer.parser=this;let t="";for(let s=0;s<e.length;s++){let i=e[s];if(this.options.extensions?.renderers?.[i.type]){let o=i,a=this.options.extensions.renderers[o.type].call({parser:this},o);if(a!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(o.type)){t+=a||"";continue}}let n=i;switch(n.type){case"space":{t+=this.renderer.space(n);break}case"hr":{t+=this.renderer.hr(n);break}case"heading":{t+=this.renderer.heading(n);break}case"code":{t+=this.renderer.code(n);break}case"table":{t+=this.renderer.table(n);break}case"blockquote":{t+=this.renderer.blockquote(n);break}case"list":{t+=this.renderer.list(n);break}case"checkbox":{t+=this.renderer.checkbox(n);break}case"html":{t+=this.renderer.html(n);break}case"def":{t+=this.renderer.def(n);break}case"paragraph":{t+=this.renderer.paragraph(n);break}case"text":{t+=this.renderer.text(n);break}default:{let o='Token with "'+n.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let s="";for(let i=0;i<e.length;i++){let n=e[i];if(this.options.extensions?.renderers?.[n.type]){let a=this.options.extensions.renderers[n.type].call({parser:this},n);if(a!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(n.type)){s+=a||"";continue}}let o=n;switch(o.type){case"escape":{s+=t.text(o);break}case"html":{s+=t.html(o);break}case"link":{s+=t.link(o);break}case"image":{s+=t.image(o);break}case"checkbox":{s+=t.checkbox(o);break}case"strong":{s+=t.strong(o);break}case"em":{s+=t.em(o);break}case"codespan":{s+=t.codespan(o);break}case"br":{s+=t.br(o);break}case"del":{s+=t.del(o);break}case"text":{s+=t.text(o);break}default:{let a='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return s}},Z=class{options;block;constructor(r){this.options=r||M}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(r){return r}postprocess(r){return r}processAllTokens(r){return r}emStrongMask(r){return r}provideLexer(r=this.block){return r?y.lex:y.lexInline}provideParser(r=this.block){return r?w.parse:w.parseInline}},ii=class{defaults=Se();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=w;Renderer=re;TextRenderer=Pe;Lexer=y;Tokenizer=ie;Hooks=Z;constructor(...r){this.use(...r)}walkTokens(r,e){let t=[];for(let s of r)switch(t=t.concat(e.call(this,s)),s.type){case"table":{let i=s;for(let n of i.header)t=t.concat(this.walkTokens(n.tokens,e));for(let n of i.rows)for(let o of n)t=t.concat(this.walkTokens(o.tokens,e));break}case"list":{let i=s;t=t.concat(this.walkTokens(i.items,e));break}default:{let i=s;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(n=>{let o=i[n].flat(1/0);t=t.concat(this.walkTokens(o,e))}):i.tokens&&(t=t.concat(this.walkTokens(i.tokens,e)))}}return t}use(...r){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return r.forEach(t=>{let s={...t};if(s.async=this.defaults.async||s.async||!1,t.extensions&&(t.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let n=e.renderers[i.name];n?e.renderers[i.name]=function(...o){let a=i.renderer.apply(this,o);return a===!1&&(a=n.apply(this,o)),a}:e.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let n=e[i.level];n?n.unshift(i.tokenizer):e[i.level]=[i.tokenizer],i.start&&(i.level==="block"?e.startBlock?e.startBlock.push(i.start):e.startBlock=[i.start]:i.level==="inline"&&(e.startInline?e.startInline.push(i.start):e.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(e.childTokens[i.name]=i.childTokens)}),s.extensions=e),t.renderer){let i=this.defaults.renderer||new re(this.defaults);for(let n in t.renderer){if(!(n in i))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;let o=n,a=t.renderer[o],l=i[o];i[o]=(...c)=>{let d=a.apply(i,c);return d===!1&&(d=l.apply(i,c)),d||""}}s.renderer=i}if(t.tokenizer){let i=this.defaults.tokenizer||new ie(this.defaults);for(let n in t.tokenizer){if(!(n in i))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;let o=n,a=t.tokenizer[o],l=i[o];i[o]=(...c)=>{let d=a.apply(i,c);return d===!1&&(d=l.apply(i,c)),d}}s.tokenizer=i}if(t.hooks){let i=this.defaults.hooks||new Z;for(let n in t.hooks){if(!(n in i))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;let o=n,a=t.hooks[o],l=i[o];Z.passThroughHooks.has(n)?i[o]=c=>{if(this.defaults.async&&Z.passThroughHooksRespectAsync.has(n))return(async()=>{let p=await a.call(i,c);return l.call(i,p)})();let d=a.call(i,c);return l.call(i,d)}:i[o]=(...c)=>{if(this.defaults.async)return(async()=>{let p=await a.apply(i,c);return p===!1&&(p=await l.apply(i,c)),p})();let d=a.apply(i,c);return d===!1&&(d=l.apply(i,c)),d}}s.hooks=i}if(t.walkTokens){let i=this.defaults.walkTokens,n=t.walkTokens;s.walkTokens=function(o){let a=[];return a.push(n.call(this,o)),i&&(a=a.concat(i.call(this,o))),a}}this.defaults={...this.defaults,...s}}),this}setOptions(r){return this.defaults={...this.defaults,...r},this}lexer(r,e){return y.lex(r,e??this.defaults)}parser(r,e){return w.parse(r,e??this.defaults)}parseMarkdown(r){return(e,t)=>{let s={...t},i={...this.defaults,...s},n=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&s.async===!1)return n(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return n(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return n(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(i.hooks&&(i.hooks.options=i,i.hooks.block=r),i.async)return(async()=>{let o=i.hooks?await i.hooks.preprocess(e):e,a=await(i.hooks?await i.hooks.provideLexer(r):r?y.lex:y.lexInline)(o,i),l=i.hooks?await i.hooks.processAllTokens(a):a;i.walkTokens&&await Promise.all(this.walkTokens(l,i.walkTokens));let c=await(i.hooks?await i.hooks.provideParser(r):r?w.parse:w.parseInline)(l,i);return i.hooks?await i.hooks.postprocess(c):c})().catch(n);try{i.hooks&&(e=i.hooks.preprocess(e));let o=(i.hooks?i.hooks.provideLexer(r):r?y.lex:y.lexInline)(e,i);i.hooks&&(o=i.hooks.processAllTokens(o)),i.walkTokens&&this.walkTokens(o,i.walkTokens);let a=(i.hooks?i.hooks.provideParser(r):r?w.parse:w.parseInline)(o,i);return i.hooks&&(a=i.hooks.postprocess(a)),a}catch(o){return n(o)}}}onError(r,e){return t=>{if(t.message+=`
|
|
180
|
+
Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error occurred:</p><pre>"+A(t.message+"",!0)+"</pre>";return e?Promise.resolve(s):s}if(e)return Promise.reject(t);throw t}}},I=new ii;function x(r,e){return I.parse(r,e)}x.options=x.setOptions=function(r){return I.setOptions(r),x.defaults=I.defaults,ft(x.defaults),x};x.getDefaults=Se;x.defaults=M;function ri(...r){return I.use(...r),x.defaults=I.defaults,ft(x.defaults),x}x.use=ri;x.walkTokens=function(r,e){return I.walkTokens(r,e)};x.parseInline=I.parseInline;x.Parser=w;x.parser=w.parse;x.Renderer=re;x.TextRenderer=Pe;x.Lexer=y;x.lexer=y.lex;x.Tokenizer=ie;x.Hooks=Z;x.parse=x;x.options;x.setOptions;x.walkTokens;x.parseInline;w.parse;y.lex;/**
|
|
166
181
|
* @license
|
|
167
182
|
* Copyright 2017 Google LLC
|
|
168
183
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
169
|
-
*/const ni={CHILD:2},
|
|
184
|
+
*/const ni={CHILD:2},oi=r=>(...e)=>({_$litDirective$:r,values:e});class ai{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,s){this._$Ct=e,this._$AM=t,this._$Ci=s}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}/**
|
|
170
185
|
* @license
|
|
171
186
|
* Copyright 2017 Google LLC
|
|
172
187
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
173
|
-
*/class xe extends
|
|
188
|
+
*/class xe extends ai{constructor(e){if(super(e),this.it=b,e.type!==ni.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===b||e==null)return this._t=void 0,this.it=e;if(e===D)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;const t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}}xe.directiveName="unsafeHTML",xe.resultType=1;const li=oi(xe);let et=0;class ci extends _{static{this.properties={tags:{attribute:!1},active:{attribute:!1},onToggle:{attribute:!1},allowCreate:{attribute:!1},width:{attribute:!1}}}#e=new u("");#t=new u(!1);#s=new u(-1);#r;#i;static{this.styles=O`
|
|
174
189
|
:host {
|
|
175
190
|
display: inline-block;
|
|
176
191
|
position: relative;
|
|
@@ -284,7 +299,7 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
284
299
|
.option input { margin: 0; pointer-events: none; }
|
|
285
300
|
.empty { padding: 6px 8px; opacity: 0.6; font-style: italic; font-size: 12px; }
|
|
286
301
|
.create-option { color: var(--accent); font-style: italic; }
|
|
287
|
-
`}constructor(){super(),new
|
|
302
|
+
`}constructor(){super(),new ae(this),this.tags=[],this.active=[],this.onToggle=()=>{},this.allowCreate=!1,this.#r=`--tag-multiselect-${++et}`,this.#i=`tag-multiselect-listbox-${et}`}willUpdate(){this.style.width=this.width??""}#d=e=>{e.composedPath().includes(this)||this.#c()};connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.#d)}disconnectedCallback(){document.removeEventListener("click",this.#d),super.disconnectedCallback()}get#o(){const e=this.#e.value.trim().toLowerCase();return e?this.tags.filter(t=>t.toLowerCase().includes(e)):this.tags}#a(){this.#t.set(!0),this.updateComplete.then(()=>{this.renderRoot.querySelector(".menu")?.showPopover()})}#c(){this.#t.set(!1),this.#s.set(-1),this.renderRoot.querySelector(".menu")?.hidePopover()}#h(){this.#t.value?this.#c():(this.#a(),this.renderRoot.querySelector(".input")?.focus())}#n(e){this.#e.set(e.target.value),this.#s.set(-1),this.#a()}#p(e){this.onToggle(e),this.#e.set(""),this.#s.set(-1)}get#u(){if(!this.allowCreate)return!1;const e=this.#e.value.trim();return e.length>0&&!this.tags.includes(e)&&!this.active.includes(e)}#f(e){e.stopPropagation(),this.active.forEach(t=>this.onToggle(t)),this.#e.set(""),this.renderRoot.querySelector(".input")?.focus(),this.#a()}#b(e){const t=this.#o;if(e.key==="ArrowDown")e.preventDefault(),this.#a(),t.length&&this.#s.set((this.#s.value+1)%t.length);else if(e.key==="ArrowUp")e.preventDefault(),this.#a(),t.length&&this.#s.set((this.#s.value-1+t.length)%t.length);else if(e.key==="Enter"||this.allowCreate&&e.key===","){const s=t[this.#s.value];s!==void 0?(e.preventDefault(),this.#p(s)):this.#u&&(e.preventDefault(),this.#p(this.#e.value.trim()))}else if(e.key==="Backspace"&&!this.#e.value&&this.active.length>0){const s=this.active[this.active.length-1];s!==void 0&&this.onToggle(s)}else e.key==="Escape"&&this.#c()}render(){const e=this.active,t=this.#o,s=this.#t.value,i=this.#s.value;return h`
|
|
288
303
|
<div class="field" style=${`anchor-name: ${this.#r}`}>
|
|
289
304
|
<div class="chips-and-input">
|
|
290
305
|
${e.map(n=>h`
|
|
@@ -303,8 +318,8 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
303
318
|
placeholder=${e.length===0?"Filter by tag…":""}
|
|
304
319
|
.value=${this.#e.value}
|
|
305
320
|
@input=${n=>this.#n(n)}
|
|
306
|
-
@focus=${()=>this.#
|
|
307
|
-
@click=${()=>this.#
|
|
321
|
+
@focus=${()=>this.#a()}
|
|
322
|
+
@click=${()=>this.#a()}
|
|
308
323
|
@keydown=${n=>this.#b(n)}
|
|
309
324
|
/>
|
|
310
325
|
</div>
|
|
@@ -327,13 +342,13 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
327
342
|
popover="manual"
|
|
328
343
|
style=${`position-anchor: ${this.#r}`}
|
|
329
344
|
>
|
|
330
|
-
${t.length?t.map((n,
|
|
345
|
+
${t.length?t.map((n,o)=>h`
|
|
331
346
|
<li
|
|
332
|
-
id=${`${this.#i}-opt-${
|
|
347
|
+
id=${`${this.#i}-opt-${o}`}
|
|
333
348
|
role="option"
|
|
334
349
|
aria-selected=${e.includes(n)}
|
|
335
|
-
class=${
|
|
336
|
-
@mousedown=${
|
|
350
|
+
class=${o===i?"option highlighted":"option"}
|
|
351
|
+
@mousedown=${a=>a.preventDefault()}
|
|
337
352
|
@click=${()=>this.#p(n)}
|
|
338
353
|
>
|
|
339
354
|
<input type="checkbox" .checked=${e.includes(n)} tabindex="-1" />
|
|
@@ -436,7 +451,7 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
436
451
|
.option.selected { font-weight: 600; }
|
|
437
452
|
.empty { padding: 6px 8px; opacity: 0.6; font-style: italic; font-size: 12px; }
|
|
438
453
|
.create-option { color: var(--accent); font-style: italic; }
|
|
439
|
-
`}constructor(){super(),new
|
|
454
|
+
`}constructor(){super(),new ae(this),this.options=[],this.value="",this.onChange=()=>{},this.#r=`--status-select-${++tt}`,this.#i=`status-select-listbox-${tt}`}#d=e=>{e.composedPath().includes(this)||this.#c()};connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.#d)}disconnectedCallback(){document.removeEventListener("click",this.#d),super.disconnectedCallback()}get#o(){const e=this.#e.value.trim().toLowerCase();return!e||e===this.value.trim().toLowerCase()?this.options:this.options.filter(t=>t.toLowerCase().includes(e))}#a(){this.#e.set(this.value),this.#t.set(!0),this.updateComplete.then(()=>{this.renderRoot.querySelector(".menu")?.showPopover()})}#c(){this.#t.set(!1),this.#s.set(-1),this.#e.set(this.value),this.renderRoot.querySelector(".menu")?.hidePopover()}#h(){this.#t.value?this.#c():(this.#a(),this.renderRoot.querySelector(".input")?.focus())}#n(e){this.#e.set(e.target.value),this.#s.set(-1),this.#t.value||this.#a()}#p(e){return e.trim().toLowerCase().replace(/\s+/g,"-")}#u(e){const t=this.#p(e);if(!t)return this.#c();this.onChange(t),this.#e.set(t),this.#s.set(-1),this.#c()}get#f(){const e=this.#p(this.#e.value);return e.length>0&&!this.options.some(t=>t.toLowerCase()===e)}get#b(){return this.#o.length+(this.#f?1:0)}#m(e){const t=this.#b;if(e.key==="ArrowDown")e.preventDefault(),this.#a(),t&&this.#s.set((this.#s.value+1)%t);else if(e.key==="ArrowUp")e.preventDefault(),this.#a(),t&&this.#s.set((this.#s.value-1+t)%t);else if(e.key==="Enter"){e.preventDefault();const s=this.#o,i=s[this.#s.value];i!==void 0?this.#u(i):this.#s.value===s.length&&this.#f?this.#u(this.#e.value):this.#e.value.trim()&&this.#u(this.#e.value)}else e.key==="Escape"&&(e.preventDefault(),this.#c())}render(){const e=this.value,t=this.#o,s=this.#t.value,i=this.#s.value;return h`
|
|
440
455
|
<div class="field" style=${`anchor-name: ${this.#r}`}>
|
|
441
456
|
<input
|
|
442
457
|
class="input"
|
|
@@ -447,8 +462,8 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
447
462
|
aria-activedescendant=${i>=0?`${this.#i}-opt-${i}`:""}
|
|
448
463
|
.value=${s?this.#e.value:e}
|
|
449
464
|
@input=${n=>this.#n(n)}
|
|
450
|
-
@focus=${()=>this.#
|
|
451
|
-
@click=${()=>this.#
|
|
465
|
+
@focus=${()=>this.#a()}
|
|
466
|
+
@click=${()=>this.#a()}
|
|
452
467
|
@keydown=${n=>this.#m(n)}
|
|
453
468
|
@blur=${()=>{this.#t.value&&this.#e.value.trim()&&this.#p(this.#e.value)!==e?this.#u(this.#e.value):this.#c()}}
|
|
454
469
|
/>
|
|
@@ -469,13 +484,13 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
469
484
|
popover="manual"
|
|
470
485
|
style=${`position-anchor: ${this.#r}`}
|
|
471
486
|
>
|
|
472
|
-
${t.map((n,
|
|
487
|
+
${t.map((n,o)=>h`
|
|
473
488
|
<li
|
|
474
|
-
id=${`${this.#i}-opt-${
|
|
489
|
+
id=${`${this.#i}-opt-${o}`}
|
|
475
490
|
role="option"
|
|
476
491
|
aria-selected=${n===e}
|
|
477
|
-
class=${`option ${n===e?"selected":""} ${
|
|
478
|
-
@mousedown=${
|
|
492
|
+
class=${`option ${n===e?"selected":""} ${o===i?"highlighted":""}`}
|
|
493
|
+
@mousedown=${a=>a.preventDefault()}
|
|
479
494
|
@click=${()=>this.#u(n)}
|
|
480
495
|
>
|
|
481
496
|
${n}
|
|
@@ -600,7 +615,7 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
600
615
|
>
|
|
601
616
|
${this.text}
|
|
602
617
|
</div>
|
|
603
|
-
`}}customElements.define("help-tooltip",gi);const st="mem-bucket-detail-view-mode";function fi(r){return new Intl.DateTimeFormat("en-CA",{year:"numeric",month:"2-digit",day:"2-digit"}).format(new Date(r))}const bi=["stable","beta","unreviewed"],mi=["active","shipped","abandoned"],it=["plan","spec","sql","testing-todo","discovery","session-summary","other"],xi=["ticket","freeform"],$={description:"What this doc is / does, shown in search results and list views. For skills, this is also the only thing an agent sees before deciding whether to load the full body — so state both what it does and when to use it.",tags:"Free-form keywords used to filter and search. Not the only thing matched during full-text search, but the fastest way to narrow a list view.",status:`Lifecycle state — stable/beta/unreviewed for skills, active/shipped/abandoned for memory docs. Skills default to "unreviewed" if left unset, so low-trust content doesn't read as equivalent to a reviewed pattern.`,name:"The skill's identifier — becomes its containing folder name on disk. Lowercase letters, numbers, and hyphens only.",owner:"Who authored or maintains this skill — a person or team name, free text.",extends:"Name of another skill this one builds on or specializes, if any. Leave blank if it doesn't extend anything.",trigger_phrases:"Extra keyword phrases beyond the description that should surface this skill in search — phrasings a user might type that don't literally appear in the description text.",key:"The lookup handle for this memory doc — usually a ticket ID, sometimes a free-form name. One key can have several docs attached (a plan, a spec, session notes) all retrievable together.",key_type:'"ticket" if the key is a real ticket ID, "freeform" for a name like "Spot Chart Design".',doc_type:"What kind of content this is — shapes how it should be read (a plan reads differently than raw SQL or a session summary).",related_to:"Another key this doc relates to, if any — free text, not validated against existing keys."};function rt(r){return{description:r.description??"",tags:r.tags??[],status:r.status??"",name:r.name??"",owner:r.owner??"",extends:r.extends??"",trigger_phrases:r.trigger_phrases??[],key:r.key??"",key_type:r.key_type??"",doc_type:r.doc_type??"",related_to:r.related_to??""}}class ki extends _{constructor(){super(...arguments),this._viewMode=localStorage.getItem(st)??"markdown",this._editing=!1,this._draft=null,this._addingFrontmatter=!1,this._renaming=!1,this._renameValue=""}static{this.properties={selected:{attribute:!1},onChanged:{attribute:!1},facets:{attribute:!1},onTagClick:{attribute:!1},onFolderClick:{attribute:!1},onDateClick:{attribute:!1},_doc:{state:!0},_viewMode:{state:!0},_editing:{state:!0},_draft:{state:!0},_addingFrontmatter:{state:!0},_renaming:{state:!0},_renameValue:{state:!0}}}static{this.styles=O`
|
|
618
|
+
`}}customElements.define("help-tooltip",gi);const st="mem-bucket-detail-view-mode";function fi(r){return new Intl.DateTimeFormat("en-CA",{year:"numeric",month:"2-digit",day:"2-digit"}).format(new Date(r))}const bi=["stable","beta","unreviewed"],mi=["active","shipped","abandoned"],it=["plan","spec","sql","testing-todo","discovery","session-summary","other"],xi=["ticket","freeform"],$={description:"What this doc is / does, shown in search results and list views. For skills, this is also the only thing an agent sees before deciding whether to load the full body — so state both what it does and when to use it.",tags:"Free-form keywords used to filter and search. Not the only thing matched during full-text search, but the fastest way to narrow a list view.",status:`Lifecycle state — stable/beta/unreviewed for skills, active/shipped/abandoned for memory docs. Skills default to "unreviewed" if left unset, so low-trust content doesn't read as equivalent to a reviewed pattern.`,name:"The skill's identifier — becomes its containing folder name on disk. Lowercase letters, numbers, and hyphens only.",owner:"Who authored or maintains this skill — a person or team name, free text.",extends:"Name of another skill this one builds on or specializes, if any. Leave blank if it doesn't extend anything.",trigger_phrases:"Extra keyword phrases beyond the description that should surface this skill in search — phrasings a user might type that don't literally appear in the description text.",key:"The lookup handle for this memory doc — usually a ticket ID, sometimes a free-form name. One key can have several docs attached (a plan, a spec, session notes) all retrievable together.",key_type:'"ticket" if the key is a real ticket ID, "freeform" for a name like "Spot Chart Design".',doc_type:"What kind of content this is — shapes how it should be read (a plan reads differently than raw SQL or a session summary).",related_to:"Another key this doc relates to, if any — free text, not validated against existing keys."};function rt(r){return{description:r.description??"",tags:r.tags??[],status:r.status??"",name:r.name??"",owner:r.owner??"",extends:r.extends??"",trigger_phrases:r.trigger_phrases??[],key:r.key??"",key_type:r.key_type??"",doc_type:r.doc_type??"",related_to:r.related_to??""}}class ki extends _{constructor(){super(...arguments),this._viewMode=localStorage.getItem(st)??"markdown",this._editing=!1,this._draft=null,this._addingFrontmatter=!1,this._renaming=!1,this._renameValue=""}static{this.properties={selected:{attribute:!1},onChanged:{attribute:!1},facets:{attribute:!1},onTagClick:{attribute:!1},onFolderClick:{attribute:!1},onDateClick:{attribute:!1},onKeyClick:{attribute:!1},_doc:{state:!0},_viewMode:{state:!0},_editing:{state:!0},_draft:{state:!0},_addingFrontmatter:{state:!0},_renaming:{state:!0},_renameValue:{state:!0}}}static{this.styles=O`
|
|
604
619
|
:host { display: block; padding: 16px; }
|
|
605
620
|
h2 { margin: 0 0 4px; font-size: 16px; }
|
|
606
621
|
.title-row {
|
|
@@ -611,6 +626,17 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
611
626
|
margin-bottom: 10px;
|
|
612
627
|
}
|
|
613
628
|
.title-row h2 { margin: 0; }
|
|
629
|
+
.title-link {
|
|
630
|
+
background: none; border: none; padding: 0; margin: 0; font: inherit; font-weight: inherit;
|
|
631
|
+
color: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 3px;
|
|
632
|
+
text-align: left;
|
|
633
|
+
}
|
|
634
|
+
.title-link:hover { opacity: 0.8; }
|
|
635
|
+
.key-link {
|
|
636
|
+
background: none; border: none; padding: 0; margin: 0; font: inherit;
|
|
637
|
+
color: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 2px;
|
|
638
|
+
}
|
|
639
|
+
.key-link:hover { opacity: 0.8; }
|
|
614
640
|
.pill {
|
|
615
641
|
border: 1px solid var(--border-strong);
|
|
616
642
|
border-radius: 999px;
|
|
@@ -675,6 +701,33 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
675
701
|
.info-grid .date-value:hover { opacity: 0.75; }
|
|
676
702
|
.info-grid .hint { opacity: 0.5; font-style: italic; }
|
|
677
703
|
.bare-notice { font-size: 12px; opacity: 0.6; font-style: italic; margin-bottom: 12px; }
|
|
704
|
+
.attachments-section {
|
|
705
|
+
font-size: 12px;
|
|
706
|
+
margin-bottom: 12px;
|
|
707
|
+
}
|
|
708
|
+
.attachments-section h4 {
|
|
709
|
+
margin: 0 0 6px;
|
|
710
|
+
font-size: 10.5px;
|
|
711
|
+
text-transform: uppercase;
|
|
712
|
+
letter-spacing: 0.04em;
|
|
713
|
+
opacity: 0.55;
|
|
714
|
+
font-weight: 600;
|
|
715
|
+
}
|
|
716
|
+
.attachments-section ul {
|
|
717
|
+
list-style: none;
|
|
718
|
+
margin: 0;
|
|
719
|
+
padding: 0;
|
|
720
|
+
display: flex;
|
|
721
|
+
flex-direction: column;
|
|
722
|
+
gap: 4px;
|
|
723
|
+
}
|
|
724
|
+
.attachment-meta { opacity: 0.55; font-size: 11px; }
|
|
725
|
+
.attachment-download {
|
|
726
|
+
opacity: 0.55;
|
|
727
|
+
text-decoration: none;
|
|
728
|
+
margin-left: 2px;
|
|
729
|
+
}
|
|
730
|
+
.attachment-download:hover { opacity: 1; }
|
|
678
731
|
.source-path {
|
|
679
732
|
font-family: monospace;
|
|
680
733
|
font-size: 11px;
|
|
@@ -849,7 +902,7 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
849
902
|
color: inherit;
|
|
850
903
|
}
|
|
851
904
|
.hint { font-size: 11px; opacity: 0.6; }
|
|
852
|
-
`}updated(e){e.has("selected")&&this.selected&&(this._editing=!1,this._addingFrontmatter=!1,this._renaming=!1,this.#e(),this.scrollTop=0)}async#e(){const{table:e,id:t}=this.selected,s=await fetch(`/api/entries/${e}/${encodeURIComponent(t)}`);this._doc=s.ok?await s.json():null,await this.updateComplete,this.shadowRoot?.querySelector(".markdown-body")?.scrollTo(0,0),this.shadowRoot?.querySelector("pre")?.scrollTo(0,0)}#t(){this._doc?.source_path&&navigator.clipboard?.writeText(this._doc.source_path)}#s(e){this._viewMode=e,localStorage.setItem(st,e)}async#r(){const{table:e,id:t}=this.selected,s=!this._doc?.deprecated;await fetch(`/api/entries/${e}/${encodeURIComponent(t)}/deprecated`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({deprecated:s})}),await this.#e(),this.onChanged?.()}async#i(){const{table:e,id:t}=this.selected,s=!this._doc?.paused;await fetch(`/api/entries/${e}/${encodeURIComponent(t)}/paused`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({paused:s})}),await this.#e(),this.onChanged?.()}async#d(){if(!window.confirm("Delete this doc? This can't be undone."))return;const{table:e,id:t}=this.selected;await fetch(`/api/entries/${e}/${encodeURIComponent(t)}`,{method:"DELETE"}),this._doc=null,this.onChanged?.()}#
|
|
905
|
+
`}updated(e){e.has("selected")&&this.selected&&(this._editing=!1,this._addingFrontmatter=!1,this._renaming=!1,this.#e(),this.scrollTop=0)}async#e(){const{table:e,id:t}=this.selected,s=await fetch(`/api/entries/${e}/${encodeURIComponent(t)}`);this._doc=s.ok?await s.json():null,await this.updateComplete,this.shadowRoot?.querySelector(".markdown-body")?.scrollTo(0,0),this.shadowRoot?.querySelector("pre")?.scrollTo(0,0)}async refresh(){if(!this.selected||this._editing||this._addingFrontmatter||this._renaming)return;const{table:e,id:t}=this.selected,s=await fetch(`/api/entries/${e}/${encodeURIComponent(t)}`);if(!s.ok)return;const n=(this.shadowRoot?.querySelector(".markdown-body")??this.shadowRoot?.querySelector("pre"))?.scrollTop??0;this._doc=await s.json(),await this.updateComplete;const o=this.shadowRoot?.querySelector(".markdown-body")??this.shadowRoot?.querySelector("pre");o&&(o.scrollTop=n)}#t(){this._doc?.source_path&&navigator.clipboard?.writeText(this._doc.source_path)}#s(e){this._viewMode=e,localStorage.setItem(st,e)}async#r(){const{table:e,id:t}=this.selected,s=!this._doc?.deprecated;await fetch(`/api/entries/${e}/${encodeURIComponent(t)}/deprecated`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({deprecated:s})}),await this.#e(),this.onChanged?.()}async#i(){const{table:e,id:t}=this.selected,s=!this._doc?.paused;await fetch(`/api/entries/${e}/${encodeURIComponent(t)}/paused`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({paused:s})}),await this.#e(),this.onChanged?.()}async#d(){if(!window.confirm("Delete this doc? This can't be undone."))return;const{table:e,id:t}=this.selected;await fetch(`/api/entries/${e}/${encodeURIComponent(t)}`,{method:"DELETE"}),this._doc=null,this.onChanged?.()}#o(){this._doc&&(this._draft=rt(this._doc),this._editing=!0,this._addingFrontmatter=!1)}#a(){this._doc&&(this._draft=rt(this._doc),this._addingFrontmatter=!0,this._editing=!1)}#c(e){this._draft&&(this._draft={...this._draft,doc_type:e},this._addingFrontmatter=!1,this._editing=!0)}#h(){this._editing=!1,this._addingFrontmatter=!1,this._draft=null}#n(e){this._draft&&(this._draft={...this._draft,...e})}#p(e){if(!this._draft)return;const t=this._draft.tags.includes(e)?this._draft.tags.filter(s=>s!==e):[...this._draft.tags,e];this.#n({tags:t})}#u(e){if(!this._draft)return;const t=this._draft.trigger_phrases.includes(e)?this._draft.trigger_phrases.filter(s=>s!==e):[...this._draft.trigger_phrases,e];this.#n({trigger_phrases:t})}async#f(){if(!this._draft||!this.selected)return;const{table:e,id:t}=this.selected,s=e==="skills",i={description:this._draft.description,tags:this._draft.tags,status:this._draft.status};s?(i.owner=this._draft.owner||null,i.extends=this._draft.extends||null,i.trigger_phrases=this._draft.trigger_phrases):(i.key=this._draft.key,i.key_type=this._draft.key_type,i.doc_type=this._draft.doc_type,i.related_to=this._draft.related_to||null);const n=await fetch(`/api/entries/${e}/${encodeURIComponent(t)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({frontmatter:i})});if(!n.ok){const o=await n.json().catch(()=>({}));window.alert(`Save failed: ${o.error??n.statusText}`);return}this._editing=!1,this._draft=null,await this.#e(),this.onChanged?.()}async#b(){if(!this.selected||!this._doc||this.selected.table!=="memory_docs")return;const{table:e,id:t}=this.selected;if(!window.confirm(`Delete frontmatter for "${this._doc.key}"?
|
|
853
906
|
|
|
854
907
|
This removes the doc's key, tags, and status — it drops out of key-based lookup and full-text search, and becomes a plain unmanaged file, until frontmatter is added again.`))return;const i=await fetch(`/api/entries/${e}/${encodeURIComponent(t)}/frontmatter`,{method:"DELETE"});if(!i.ok){const n=await i.json().catch(()=>({}));window.alert(`Delete failed: ${n.error??i.statusText}`);return}this._doc=null,this.selected=null,this.onChanged?.()}#m(){this._doc&&(this._renameValue=this._doc.name??"",this._renaming=!0)}async#k(){if(!this._doc||!this._renameValue.trim())return;const e=this._renameValue.trim();if(e===this._doc.name){this._renaming=!1;return}const t=await fetch(`/api/entries/skills/${encodeURIComponent(this._doc.name)}/rename`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({new_name:e})});if(!t.ok){const s=await t.json().catch(()=>({}));window.alert(`Rename failed: ${s.error??t.statusText}`);return}this._renaming=!1,this.selected={table:"skills",id:e},await this.#e(),this.onChanged?.()}#x(){return h`
|
|
855
908
|
<div class="edit-form">
|
|
@@ -971,9 +1024,13 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
971
1024
|
<button class="cancel" @click=${()=>this.#h()}>Cancel</button>
|
|
972
1025
|
</div>
|
|
973
1026
|
</div>
|
|
974
|
-
`}#g(e){return h`
|
|
1027
|
+
`}#g(e,t){const s=t?void 0:e.key;return h`
|
|
975
1028
|
<div class="title-row">
|
|
976
|
-
<h2
|
|
1029
|
+
<h2>
|
|
1030
|
+
${s?h`<button class="title-link" title="Search for key '${s}'" @click=${()=>this.onKeyClick?.(s)}>
|
|
1031
|
+
${e.name??s??e.id}
|
|
1032
|
+
</button>`:e.name??e.key??e.id}
|
|
1033
|
+
</h2>
|
|
977
1034
|
<button class="pill folder-pill" title="Filter by folder '${e.folder}'" @click=${()=>this.onFolderClick?.(e.folder)}>
|
|
978
1035
|
📁 ${e.folder}
|
|
979
1036
|
</button>
|
|
@@ -994,19 +1051,23 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
994
1051
|
${e.deprecated||e.paused?h`
|
|
995
1052
|
<dt>Flags</dt>
|
|
996
1053
|
<dd>
|
|
997
|
-
${e.deprecated?h`<span class="pill warn-pill">deprecated</span>`:
|
|
998
|
-
${e.paused?h`<span class="pill muted-pill">paused</span>`:
|
|
1054
|
+
${e.deprecated?h`<span class="pill warn-pill">deprecated</span>`:b}
|
|
1055
|
+
${e.paused?h`<span class="pill muted-pill">paused</span>`:b}
|
|
999
1056
|
</dd>
|
|
1000
|
-
`:
|
|
1057
|
+
`:b}
|
|
1001
1058
|
|
|
1002
1059
|
${t?h`
|
|
1003
1060
|
${e.owner?h`<dt>Owner</dt>
|
|
1004
|
-
<dd>${e.owner}</dd>`:
|
|
1061
|
+
<dd>${e.owner}</dd>`:b}
|
|
1005
1062
|
${e.extends?h`<dt>Extends</dt>
|
|
1006
|
-
<dd>${e.extends}</dd>`:
|
|
1063
|
+
<dd>${e.extends}</dd>`:b}
|
|
1007
1064
|
`:h`
|
|
1008
1065
|
<dt>Key</dt>
|
|
1009
|
-
<dd
|
|
1066
|
+
<dd>
|
|
1067
|
+
<button class="key-link" title="Search for this key" @click=${()=>e.key&&this.onKeyClick?.(e.key)}>
|
|
1068
|
+
${e.key}
|
|
1069
|
+
</button>
|
|
1070
|
+
</dd>
|
|
1010
1071
|
|
|
1011
1072
|
<dt>Key type</dt>
|
|
1012
1073
|
<dd>${e.key_type}</dd>
|
|
@@ -1015,7 +1076,7 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1015
1076
|
<dd>${e.doc_type}</dd>
|
|
1016
1077
|
|
|
1017
1078
|
${e.related_to?h`<dt>Related to</dt>
|
|
1018
|
-
<dd>${e.related_to}</dd>`:
|
|
1079
|
+
<dd>${e.related_to}</dd>`:b}
|
|
1019
1080
|
`}
|
|
1020
1081
|
|
|
1021
1082
|
<dt>Created</dt>
|
|
@@ -1025,17 +1086,37 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1025
1086
|
>`:h`<span class="hint">unknown</span>`}
|
|
1026
1087
|
</dd>
|
|
1027
1088
|
</dl>
|
|
1028
|
-
`}
|
|
1029
|
-
|
|
1089
|
+
`}#w(e,t){const s=new x.Renderer,i=s.link.bind(s);return s.link=n=>{if(typeof n.href=="string"&&n.href.startsWith("attachment://")){const o=n.href.slice(13);return i({...n,href:`/api/entries/${e}/${encodeURIComponent(t)}/attachments/${encodeURIComponent(o)}`})}return i(n)},s}#S(e,t){return e.attachments?.length?h`
|
|
1090
|
+
<div class="attachments-section">
|
|
1091
|
+
<h4>Attachments</h4>
|
|
1092
|
+
<ul>
|
|
1093
|
+
${e.attachments.map(s=>h`
|
|
1094
|
+
<li>
|
|
1095
|
+
<a href="/api/entries/${t}/${encodeURIComponent(e.id)}/attachments/${encodeURIComponent(s.filename)}/view" target="_blank" rel="noopener"
|
|
1096
|
+
>${s.filename}</a
|
|
1097
|
+
>
|
|
1098
|
+
<span class="attachment-meta">(${s.mime_type}, ${s.size} bytes)</span>
|
|
1099
|
+
<a
|
|
1100
|
+
class="attachment-download"
|
|
1101
|
+
href="/api/entries/${t}/${encodeURIComponent(e.id)}/attachments/${encodeURIComponent(s.filename)}"
|
|
1102
|
+
title="Download"
|
|
1103
|
+
>⇩</a
|
|
1104
|
+
>
|
|
1105
|
+
</li>
|
|
1106
|
+
`)}
|
|
1107
|
+
</ul>
|
|
1108
|
+
</div>
|
|
1109
|
+
`:b}render(){if(!this.selected)return h`<div class="empty">Select an entry to view its details.</div>`;if(!this._doc)return b;const e=this._doc,t=this.selected.table==="skills",s=t&&e.folder==="builtin",i=!t&&e.has_frontmatter===!1;return this._addingFrontmatter?h`${this.#g(e,t)}${this.#x()}`:this._editing&&this._draft?h`${this.#g(e,t)}${this.#v(t)}`:h`
|
|
1110
|
+
${this.#g(e,t)}
|
|
1030
1111
|
${i?h`<div class="bare-notice">No frontmatter — this is a plain, unmanaged file.</div>`:this.#y(e,t)}
|
|
1031
|
-
${s?
|
|
1112
|
+
${s?b:h`
|
|
1032
1113
|
<div class="actions">
|
|
1033
|
-
${i?h`<button class="primary" @click=${()=>this.#
|
|
1034
|
-
<button @click=${()=>this.#
|
|
1035
|
-
${t?h`<button @click=${()=>this.#m()}>Rename</button>`:
|
|
1114
|
+
${i?h`<button class="primary" @click=${()=>this.#a()}>Add frontmatter</button>`:h`
|
|
1115
|
+
<button @click=${()=>this.#o()}>Edit</button>
|
|
1116
|
+
${t?h`<button @click=${()=>this.#m()}>Rename</button>`:b}
|
|
1036
1117
|
<button @click=${()=>this.#r()}>${e.deprecated?"Un-deprecate":"Mark deprecated"}</button>
|
|
1037
1118
|
<button @click=${()=>this.#i()}>${e.paused?"Resume":"Pause"}</button>
|
|
1038
|
-
${t?
|
|
1119
|
+
${t?b:h`<button class="danger" @click=${()=>this.#b()}>Delete frontmatter</button>`}
|
|
1039
1120
|
`}
|
|
1040
1121
|
<button class="danger" @click=${()=>this.#d()}>Delete</button>
|
|
1041
1122
|
</div>
|
|
@@ -1050,8 +1131,9 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1050
1131
|
<button @click=${()=>this.#k()}>Save</button>
|
|
1051
1132
|
<button @click=${()=>this._renaming=!1}>Cancel</button>
|
|
1052
1133
|
</div>
|
|
1053
|
-
`:
|
|
1134
|
+
`:b}
|
|
1054
1135
|
`}
|
|
1136
|
+
${this.#S(e,this.selected.table)}
|
|
1055
1137
|
<div class="view-toggle">
|
|
1056
1138
|
<button
|
|
1057
1139
|
class=${this._viewMode==="markdown"?"active":""}
|
|
@@ -1066,9 +1148,9 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1066
1148
|
Raw
|
|
1067
1149
|
</button>
|
|
1068
1150
|
</div>
|
|
1069
|
-
${this._viewMode==="markdown"?h`<div class="markdown-body">${li(x.parse(e.body??"",{async:!1}))}</div>`:h`<pre>${e.raw_file??e.body}</pre>`}
|
|
1151
|
+
${this._viewMode==="markdown"?h`<div class="markdown-body">${li(x.parse(e.body??"",{async:!1,renderer:this.#w(this.selected.table,e.id)}))}</div>`:h`<pre>${e.raw_file??e.body}</pre>`}
|
|
1070
1152
|
<div class="source-path" title="click to copy" @click=${()=>this.#t()}>${e.source_path}</div>
|
|
1071
|
-
`}}customElements.define("detail-panel",ki);class vi extends _{static{this.properties={defaultKind:{attribute:!1},lockKind:{attribute:!1},onAdded:{attribute:!1},onCancel:{attribute:!1}}}#e=new u("skill");#t=new u("");#s=new u([]);#r=new u(null);#i=new u("");#d=new u("");#
|
|
1153
|
+
`}}customElements.define("detail-panel",ki);class vi extends _{static{this.properties={defaultKind:{attribute:!1},lockKind:{attribute:!1},onAdded:{attribute:!1},onCancel:{attribute:!1}}}#e=new u("skill");#t=new u("");#s=new u([]);#r=new u(null);#i=new u("");#d=new u("");#o=new u("");#a=new u(!1);#c=new u(!1);#h=new u(!1);#n=new u("");static{this.styles=O`
|
|
1072
1154
|
:host { display: block; }
|
|
1073
1155
|
.backdrop {
|
|
1074
1156
|
position: fixed; inset: 0; background: var(--overlay);
|
|
@@ -1151,7 +1233,7 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1151
1233
|
border-radius: 6px; cursor: pointer; font-size: 13px;
|
|
1152
1234
|
}
|
|
1153
1235
|
.error { color: var(--danger); font-size: 12px; }
|
|
1154
|
-
`}constructor(){super(),new
|
|
1236
|
+
`}constructor(){super(),new ae(this),this.defaultKind="skill",this.lockKind=!1}connectedCallback(){super.connectedCallback(),this.#e.set(this.defaultKind),this.#p()}async#p(e){const t=new URLSearchParams;e&&t.set("path",e),this.#c.value&&t.set("hidden","1");const s=await fetch(`/api/fs/list?${t.toString()}`);if(!s.ok){this.#o.set((await s.json()).error??"failed to list directory");return}const i=await s.json();this.#t.set(i.path),this.#r.set(i.parent),this.#s.set(i.entries),this.#o.set(""),this.renderRoot.querySelector(".browser")?.scrollTo(0,0)}#u(){this.#c.set(!this.#c.value),this.#p(this.#t.value)}#f(){this.#n.set(""),this.#h.set(!0)}#b(){this.#h.set(!1),this.#n.set("")}async#m(){const e=this.#n.value.trim();if(e){this.#o.set("");try{const t=await fetch("/api/fs/mkdir",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:this.#t.value,name:e})}),s=await t.json();if(!t.ok){this.#o.set(s.error??"failed to create folder");return}this.#h.set(!1),this.#n.set(""),await this.#p(this.#t.value)}catch(t){this.#o.set(t.message)}}}#k(){this.#i.set(this.#t.value),this.#d.value||this.#d.set(this.#t.value.split("/").filter(Boolean).pop()??"")}async#x(){const e=this.#i.value||this.#t.value;if(e){this.#a.set(!0),this.#o.set("");try{const t=await fetch("/api/folders",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kind:this.#e.value,name:this.#d.value||void 0,path:e})}),s=await t.json();if(!t.ok){this.#o.set(s.error??"failed to add folder");return}this.onAdded()}finally{this.#a.set(!1)}}}render(){const e=this.#s.value;return h`
|
|
1155
1237
|
<div class="backdrop" @click=${t=>t.target===t.currentTarget&&this.onCancel()}>
|
|
1156
1238
|
<div class="modal">
|
|
1157
1239
|
<div class="header"><h2>Add a folder</h2></div>
|
|
@@ -1214,21 +1296,21 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1214
1296
|
@input=${t=>this.#d.set(t.target.value)}
|
|
1215
1297
|
/>
|
|
1216
1298
|
</div>
|
|
1217
|
-
${this.#
|
|
1299
|
+
${this.#o.value?h`<div class="error">${this.#o.value}</div>`:""}
|
|
1218
1300
|
<div class="actions">
|
|
1219
1301
|
<button class="secondary" @click=${()=>this.onCancel()}>Cancel</button>
|
|
1220
1302
|
<button
|
|
1221
1303
|
class="primary"
|
|
1222
|
-
?disabled=${!this.#i.value||this.#
|
|
1304
|
+
?disabled=${!this.#i.value||this.#a.value}
|
|
1223
1305
|
@click=${()=>this.#x()}
|
|
1224
1306
|
>
|
|
1225
|
-
${this.#
|
|
1307
|
+
${this.#a.value?"Adding…":"Add folder"}
|
|
1226
1308
|
</button>
|
|
1227
1309
|
</div>
|
|
1228
1310
|
</div>
|
|
1229
1311
|
</div>
|
|
1230
1312
|
</div>
|
|
1231
|
-
`}}customElements.define("add-folder-modal",vi);const $i=[{value:"all",label:"All"},{value:"skill",label:"Skills"},{value:"memory",label:"Memories"}],nt=[{value:"all",label:"Show all"},{value:"hide",label:"Hide"},{value:"only",label:"Only"}],yi={tags:[],statuses:[],owners:[],doc_types:[],key_types:[],folders:[]},wi={skill:[],memory:[]},St="mem-bucket-split-pct",At=20,Tt=80;function _i(){const r=Number(localStorage.getItem(St));return Number.isFinite(r)&&r>=At&&r<=Tt?r:40}const Ct="mem-bucket-theme",de=["system","light","dark"],Si={system:"◐",light:"☀",dark:"☾"},Ai={system:"Auto",light:"Light",dark:"Dark"};function Ti(){const r=localStorage.getItem(Ct);return r==="light"||r==="dark"?r:"system"}function
|
|
1313
|
+
`}}customElements.define("add-folder-modal",vi);const $i=[{value:"all",label:"All"},{value:"skill",label:"Skills"},{value:"memory",label:"Memories"}],nt=[{value:"all",label:"Show all"},{value:"hide",label:"Hide"},{value:"only",label:"Only"}],yi={tags:[],statuses:[],owners:[],doc_types:[],key_types:[],folders:[]},wi={skill:[],memory:[]},St="mem-bucket-split-pct",At=20,Tt=80;function _i(){const r=Number(localStorage.getItem(St));return Number.isFinite(r)&&r>=At&&r<=Tt?r:40}const Ct="mem-bucket-theme",de=["system","light","dark"],Si={system:"◐",light:"☀",dark:"☾"},Ai={system:"Auto",light:"Light",dark:"Dark"};function Ti(){const r=localStorage.getItem(Ct);return r==="light"||r==="dark"?r:"system"}function ot(r){r==="system"?document.documentElement.removeAttribute("data-theme"):document.documentElement.setAttribute("data-theme",r)}function Ci(){const r=location.hash.slice(1);if(!r)return{};const e=new URLSearchParams(r),t={},s=e.get("q");s&&(t.query=s);const i=e.get("type");(i==="skill"||i==="memory"||i==="all")&&(t.typeFilter=i);const n=e.getAll("tag");n.length&&(t.activeTags=n);const o=e.getAll("folder");o.length&&(t.activeFolders=o);const a=e.get("sort");a&&(t.sort=a);const l=e.get("deprecated");l==="0"?t.deprecatedFilter="hide":l==="1"&&(t.deprecatedFilter="only");const c=e.get("paused");c==="0"?t.pausedFilter="hide":c==="1"&&(t.pausedFilter="only");const d=e.get("date_from");d&&(t.dateFrom=d);const p=e.get("date_to");return p&&(t.dateTo=p),t}class Ri extends _{static{this.styles=O`
|
|
1232
1314
|
:host { display: flex; flex-direction: column; height: 100vh; }
|
|
1233
1315
|
.theme-toggle {
|
|
1234
1316
|
position: fixed;
|
|
@@ -1433,27 +1515,27 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1433
1515
|
cursor: pointer;
|
|
1434
1516
|
}
|
|
1435
1517
|
.bulk-bar button.danger { border-color: var(--danger); color: var(--danger); }
|
|
1436
|
-
`}#e=Ci();#t=new u(this.#e.query??"");#s=new u(this.#e.typeFilter??"all");#r=new u(this.#e.activeTags??[]);#i=new u(this.#e.activeFolders??[]);#d=new u([]);#
|
|
1518
|
+
`}#e=Ci();#t=new u(this.#e.query??"");#s=new u(this.#e.typeFilter??"all");#r=new u(this.#e.activeTags??[]);#i=new u(this.#e.activeFolders??[]);#d=new u([]);#o=new u(yi);#a=new u(null);#c=new u(wi);#h=new u(!1);#n=new u("");#p=new u(!1);#u=new u(_i());#f=new u(!1);#b=new u(this.#e.sort??"mtime_desc");#m=new u(this.#e.deprecatedFilter??"all");#k=new u(this.#e.pausedFilter??"all");#x=new u(this.#e.dateFrom??"");#v=new u(this.#e.dateTo??"");#g=new u(new Set);#y=new u(Ti());#w=new u(!1);#S=e=>this.#N(e);#C=()=>this.#F();constructor(){super(),new ae(this),ot(this.#y.value)}#D(e){this.#y.set(e),localStorage.setItem(Ct,e),ot(e)}#I(){const e=de[(de.indexOf(this.#y.value)+1)%de.length];this.#D(e)}async#O(){if(!this.#w.value){this.#w.set(!0);try{await fetch("/api/rebuild-cache",{method:"POST"}),await Promise.all([this.#_(),this.#$(),this.#l()])}finally{this.#w.set(!1)}}}#M(e){e.preventDefault(),this.#f.set(!0),document.addEventListener("pointermove",this.#S),document.addEventListener("pointerup",this.#C)}#N(e){const t=this.renderRoot.querySelector(".body-region");if(!t)return;const s=t.getBoundingClientRect(),i=(e.clientX-s.left)/s.width*100;this.#u.set(Math.min(Tt,Math.max(At,i)))}#F(){this.#f.set(!1),document.removeEventListener("pointermove",this.#S),document.removeEventListener("pointerup",this.#C),localStorage.setItem(St,String(this.#u.value))}#q=new is(()=>{const e=new URLSearchParams;this.#s.value!=="all"&&e.set("type",this.#s.value),this.#t.value.trim()&&e.set("q",this.#t.value.trim());for(const t of this.#r.value)e.append("tag",t);for(const t of this.#i.value)e.append("folder",t);return this.#b.value!=="mtime_desc"&&e.set("sort",this.#b.value),this.#m.value==="hide"?e.set("deprecated","0"):this.#m.value==="only"&&e.set("deprecated","1"),this.#k.value==="hide"?e.set("paused","0"):this.#k.value==="only"&&e.set("paused","1"),this.#x.value&&e.set("date_from",this.#x.value),this.#v.value&&e.set("date_to",this.#v.value),e.toString()});#A=()=>this.#U();connectedCallback(){super.connectedCallback(),this.#l(),this.#$(),this.#_(),window.addEventListener("focus",this.#A),document.addEventListener("visibilitychange",this.#A)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("focus",this.#A),document.removeEventListener("visibilitychange",this.#A)}#U(){document.visibilityState==="visible"&&(this.#l(),this.#$(),this.#_(),this.renderRoot.querySelector("detail-panel")?.refresh?.())}async#l(){const e=this.#q.value;history.replaceState(null,"",e?`#${e}`:location.pathname+location.search);const t=await fetch(`/api/entries?${e}`);this.#d.set(await t.json()),this.renderRoot.querySelector("result-list")?.scrollTo(0,0)}async#$(){const e=this.#s.value==="all"?"":`?type=${this.#s.value}`,t=await fetch(`/api/facets${e}`);this.#o.set(await t.json())}async#_(){const e=await fetch("/api/folders");this.#c.set(await e.json()),this.#p.set(!0)}#H(e){const t=this.#i.value;this.#i.set(t.includes(e)?t.filter(s=>s!==e):[...t,e]),this.#l()}async#B(e,t){if(t.stopPropagation(),window.prompt(`Type "${e.name}" to remove this ${e.kind} folder (files on disk are untouched):`)===e.name){this.#n.set(e.name);try{await fetch(`/api/folders/${e.kind}/${encodeURIComponent(e.name)}`,{method:"DELETE"}),this.#i.set(this.#i.value.filter(i=>i!==e.name)),await Promise.all([this.#_(),this.#$(),this.#l()])}finally{this.#n.set("")}}}#R(){this.#h.set(!1),this.#_(),this.#$(),this.#l()}#j(){return[...this.#c.value.skill,...this.#c.value.memory]}#K(e){this.#s.set(e),this.#r.set([]),this.#$(),this.#l()}#Z(e){const t=this.#r.value;this.#r.set(t.includes(e)?t.filter(s=>s!==e):[...t,e]),this.#l()}#W(e){this.#r.value.includes(e)||this.#r.set([...this.#r.value,e]),this.#l()}#Q(e){this.#i.value.includes(e)||this.#i.set([...this.#i.value,e]),this.#l()}#V(e){this.#x.set(e),this.#v.set(e),this.#l()}#Y(e){this.#t.set(e.target.value),this.#l()}#E(e){this.#t.set(e),this.#l()}#G(){this.#t.set(""),this.#l()}#J(e){this.#a.set({table:e._table,id:e.id})}#X(e){this.#b.set(e.target.value),this.#l()}#ee(e){this.#m.set(e.target.value),this.#l()}#te(e){this.#k.set(e.target.value),this.#l()}#se(e){this.#x.set(e.target.value),this.#l()}#ie(e){this.#v.set(e.target.value),this.#l()}#re(){this.#x.set(""),this.#v.set(""),this.#l()}#ne(e){const t=new Set(this.#g.value);t.has(e.id)?t.delete(e.id):t.add(e.id),this.#g.set(t)}#oe(){return new Map(this.#d.value.map(e=>[e.id,e]))}#T(){const e=new Map,t=this.#oe();for(const s of this.#g.value){const i=t.get(s);if(!i)continue;const n=e.get(i._table)??[];n.push(s),e.set(i._table,n)}return e}async#z(e){const t=this.#T();await Promise.all([...t.entries()].map(([s,i])=>fetch(`/api/entries/${s}/bulk/deprecated`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:i,deprecated:e})}))),this.#g.set(new Set),await this.#l()}async#P(e){const t=this.#T();await Promise.all([...t.entries()].map(([s,i])=>fetch(`/api/entries/${s}/bulk/paused`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:i,paused:e})}))),this.#g.set(new Set),await this.#l()}async#ae(){if(!window.confirm(`Delete ${this.#g.value.size} doc(s)? This can't be undone.`))return;const e=this.#T();await Promise.all([...e.entries()].map(([t,s])=>fetch(`/api/entries/${t}/bulk/delete`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:s})}))),this.#g.set(new Set),await this.#l()}#L(){const e=this.#y.value;return h`
|
|
1437
1519
|
<button
|
|
1438
1520
|
class="theme-toggle"
|
|
1439
1521
|
title=${`Theme: ${Ai[e]} (click to change)`}
|
|
1440
1522
|
aria-label="Toggle color theme"
|
|
1441
|
-
@click=${()=>this.#
|
|
1523
|
+
@click=${()=>this.#I()}
|
|
1442
1524
|
>
|
|
1443
1525
|
${Si[e]}
|
|
1444
1526
|
</button>
|
|
1445
|
-
`}#
|
|
1527
|
+
`}#le(){const e=this.#w.value;return h`
|
|
1446
1528
|
<button
|
|
1447
1529
|
class=${`reindex-toggle${e?" spinning":""}`}
|
|
1448
1530
|
title=${e?"Reindexing…":"Rebuild cache from disk"}
|
|
1449
1531
|
aria-label="Rebuild cache from disk"
|
|
1450
1532
|
?disabled=${e}
|
|
1451
|
-
@click=${()=>this.#
|
|
1533
|
+
@click=${()=>this.#O()}
|
|
1452
1534
|
>
|
|
1453
1535
|
♻
|
|
1454
1536
|
</button>
|
|
1455
|
-
`}render(){const e=this.#
|
|
1456
|
-
${this.#
|
|
1537
|
+
`}render(){const e=this.#o.value,t=this.#j();return this.#p.value&&t.length===0&&!this.#h.value?h`
|
|
1538
|
+
${this.#L()}
|
|
1457
1539
|
<div class="first-run">
|
|
1458
1540
|
<h1>No folders configured yet</h1>
|
|
1459
1541
|
<p>
|
|
@@ -1465,25 +1547,25 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1465
1547
|
${this.#h.value?h`<add-folder-modal
|
|
1466
1548
|
.defaultKind=${"skill"}
|
|
1467
1549
|
.lockKind=${!1}
|
|
1468
|
-
.onAdded=${()=>this.#
|
|
1550
|
+
.onAdded=${()=>this.#R()}
|
|
1469
1551
|
.onCancel=${()=>this.#h.set(!1)}
|
|
1470
1552
|
></add-folder-modal>`:""}
|
|
1471
1553
|
`:h`
|
|
1472
|
-
${this.#
|
|
1473
|
-
${this.#
|
|
1554
|
+
${this.#le()}
|
|
1555
|
+
${this.#L()}
|
|
1474
1556
|
<div class="folders-bar">
|
|
1475
1557
|
<span class="filter-label">Folders:</span>
|
|
1476
1558
|
${t.map(s=>h`
|
|
1477
1559
|
<button
|
|
1478
1560
|
class="folder-chip ${this.#i.value.includes(s.name)?"active":""}"
|
|
1479
1561
|
title=${s.path}
|
|
1480
|
-
@click=${()=>this.#
|
|
1562
|
+
@click=${()=>this.#H(s.name)}
|
|
1481
1563
|
>
|
|
1482
1564
|
📁 ${s.name}
|
|
1483
1565
|
<span
|
|
1484
1566
|
class="remove"
|
|
1485
1567
|
title="Remove folder"
|
|
1486
|
-
@click=${i=>this.#
|
|
1568
|
+
@click=${i=>this.#B(s,i)}
|
|
1487
1569
|
>${this.#n.value===s.name?"…":"✕"}</span
|
|
1488
1570
|
>
|
|
1489
1571
|
</button>
|
|
@@ -1497,14 +1579,14 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1497
1579
|
type="search"
|
|
1498
1580
|
placeholder="Search descriptions, bodies, tags..."
|
|
1499
1581
|
.value=${this.#t.value}
|
|
1500
|
-
@input=${s=>this.#
|
|
1582
|
+
@input=${s=>this.#Y(s)}
|
|
1501
1583
|
/>
|
|
1502
1584
|
${this.#t.value?h`
|
|
1503
1585
|
<button
|
|
1504
1586
|
class="search-clear-btn"
|
|
1505
1587
|
title="Clear search"
|
|
1506
1588
|
aria-label="Clear search"
|
|
1507
|
-
@click=${()=>this.#
|
|
1589
|
+
@click=${()=>this.#G()}
|
|
1508
1590
|
>
|
|
1509
1591
|
✕
|
|
1510
1592
|
</button>
|
|
@@ -1514,7 +1596,7 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1514
1596
|
${$i.map(s=>h`
|
|
1515
1597
|
<button
|
|
1516
1598
|
class=${this.#s.value===s.value?"active":""}
|
|
1517
|
-
@click=${()=>this.#
|
|
1599
|
+
@click=${()=>this.#K(s.value)}
|
|
1518
1600
|
>
|
|
1519
1601
|
${s.label}
|
|
1520
1602
|
</button>
|
|
@@ -1534,39 +1616,39 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1534
1616
|
type="date"
|
|
1535
1617
|
aria-label="From date"
|
|
1536
1618
|
.value=${this.#x.value}
|
|
1537
|
-
@change=${s=>this.#
|
|
1619
|
+
@change=${s=>this.#se(s)}
|
|
1538
1620
|
/>
|
|
1539
1621
|
<span class="date-range-sep">–</span>
|
|
1540
1622
|
<input
|
|
1541
1623
|
type="date"
|
|
1542
1624
|
aria-label="To date"
|
|
1543
1625
|
.value=${this.#v.value}
|
|
1544
|
-
@change=${s=>this.#
|
|
1626
|
+
@change=${s=>this.#ie(s)}
|
|
1545
1627
|
/>
|
|
1546
1628
|
${this.#x.value||this.#v.value?h`
|
|
1547
1629
|
<button
|
|
1548
1630
|
class="date-range-clear"
|
|
1549
1631
|
title="Clear date range"
|
|
1550
1632
|
aria-label="Clear date range"
|
|
1551
|
-
@click=${()=>this.#
|
|
1633
|
+
@click=${()=>this.#re()}
|
|
1552
1634
|
>
|
|
1553
1635
|
✕
|
|
1554
1636
|
</button>
|
|
1555
1637
|
`:""}
|
|
1556
1638
|
</div>
|
|
1557
1639
|
<span class="filter-label">Sort:</span>
|
|
1558
|
-
<select .value=${this.#b.value} @change=${s=>this.#
|
|
1640
|
+
<select .value=${this.#b.value} @change=${s=>this.#X(s)}>
|
|
1559
1641
|
<option value="mtime_desc">Recently touched</option>
|
|
1560
1642
|
<option value="mtime_asc">Least recently touched</option>
|
|
1561
1643
|
<option value="created_at_asc">Oldest first</option>
|
|
1562
1644
|
<option value="name_asc">Name</option>
|
|
1563
1645
|
</select>
|
|
1564
1646
|
<span class="filter-label">Deprecated:</span>
|
|
1565
|
-
<select .value=${this.#m.value} @change=${s=>this.#
|
|
1647
|
+
<select .value=${this.#m.value} @change=${s=>this.#ee(s)}>
|
|
1566
1648
|
${nt.map(s=>h`<option value=${s.value}>${s.label}</option>`)}
|
|
1567
1649
|
</select>
|
|
1568
1650
|
<span class="filter-label">Paused:</span>
|
|
1569
|
-
<select .value=${this.#k.value} @change=${s=>this.#
|
|
1651
|
+
<select .value=${this.#k.value} @change=${s=>this.#te(s)}>
|
|
1570
1652
|
${nt.map(s=>h`<option value=${s.value}>${s.label}</option>`)}
|
|
1571
1653
|
</select>
|
|
1572
1654
|
</div>
|
|
@@ -1574,10 +1656,10 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1574
1656
|
${this.#g.value.size>0?h`
|
|
1575
1657
|
<div class="bulk-bar">
|
|
1576
1658
|
<span>${this.#g.value.size} selected</span>
|
|
1577
|
-
<button @click=${()=>this.#
|
|
1578
|
-
<button @click=${()=>this.#
|
|
1579
|
-
<button @click=${()=>this.#
|
|
1580
|
-
<button @click=${()=>this.#
|
|
1659
|
+
<button @click=${()=>this.#z(!0)}>Mark deprecated</button>
|
|
1660
|
+
<button @click=${()=>this.#z(!1)}>Un-deprecate</button>
|
|
1661
|
+
<button @click=${()=>this.#P(!0)}>Pause</button>
|
|
1662
|
+
<button @click=${()=>this.#P(!1)}>Resume</button>
|
|
1581
1663
|
<button class="danger" @click=${()=>this.#ae()}>Delete</button>
|
|
1582
1664
|
<button @click=${()=>this.#g.set(new Set)}>Clear</button>
|
|
1583
1665
|
</div>
|
|
@@ -1587,27 +1669,29 @@ This removes the doc's key, tags, and status — it drops out of key-based looku
|
|
|
1587
1669
|
style=${`width: ${this.#u.value}%; border-right: 1px solid var(--border);`}
|
|
1588
1670
|
.results=${this.#d.value}
|
|
1589
1671
|
.showFolder=${t.length>1}
|
|
1590
|
-
.onSelect=${s=>this.#
|
|
1672
|
+
.onSelect=${s=>this.#J(s)}
|
|
1591
1673
|
.selectedIds=${this.#g.value}
|
|
1592
|
-
.onToggleSelect=${s=>this.#
|
|
1674
|
+
.onToggleSelect=${s=>this.#ne(s)}
|
|
1675
|
+
.onKeyClick=${s=>this.#E(s)}
|
|
1593
1676
|
></result-list>
|
|
1594
1677
|
<div
|
|
1595
1678
|
class="splitter ${this.#f.value?"dragging":""}"
|
|
1596
|
-
@pointerdown=${s=>this.#
|
|
1679
|
+
@pointerdown=${s=>this.#M(s)}
|
|
1597
1680
|
></div>
|
|
1598
1681
|
<detail-panel
|
|
1599
|
-
.selected=${this.#
|
|
1682
|
+
.selected=${this.#a.value}
|
|
1600
1683
|
.facets=${e}
|
|
1601
1684
|
.onChanged=${()=>{this.#l(),this.#$()}}
|
|
1602
|
-
.onTagClick=${s=>this.#
|
|
1685
|
+
.onTagClick=${s=>this.#W(s)}
|
|
1603
1686
|
.onFolderClick=${s=>this.#Q(s)}
|
|
1604
|
-
.onDateClick=${s=>this.#
|
|
1687
|
+
.onDateClick=${s=>this.#V(s)}
|
|
1688
|
+
.onKeyClick=${s=>this.#E(s)}
|
|
1605
1689
|
></detail-panel>
|
|
1606
1690
|
</div>
|
|
1607
1691
|
${this.#h.value?h`<add-folder-modal
|
|
1608
1692
|
.defaultKind=${"skill"}
|
|
1609
1693
|
.lockKind=${!1}
|
|
1610
|
-
.onAdded=${()=>this.#
|
|
1694
|
+
.onAdded=${()=>this.#R()}
|
|
1611
1695
|
.onCancel=${()=>this.#h.set(!1)}
|
|
1612
1696
|
></add-folder-modal>`:""}
|
|
1613
|
-
`}}customElements.define("mem-bucket-app",
|
|
1697
|
+
`}}customElements.define("mem-bucket-app",Ri);
|