UNPKG

wiki-plugin-solo

Version:
14 lines (13 loc) 4.19 kB
/* wiki-plugin-solo - 0.1.30-1 - Thu, 18 Dec 2025 20:24:36 GMT */ (()=>{function b(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\*(.+?)\*/g,"<i>$1</i>")}function x(e){let n=[...document.querySelectorAll(".item")],s=n.indexOf(e.get(0));return n.slice(0,s).filter(c=>c.classList.contains("aspect-source")).map(c=>{let t=c.closest(".page").id.replaceAll(/-/g," "),i=c.aspectData&&c.aspectData()||[];return{source:t,aspects:i}})}function f(e){return e.replace(/^(https?:)\/([^\/])/,`$1//${location.host}/$2`)}function S(e,{text:n,aspects:s=[]}){let o=[],c=n.split(/\r?\n/).map(t=>{var i;if(i=t.match(/^ASSETS$/))t='ASSETS <i onclick=doassets(event) style="cursor:pointer;">continue</i>',o.push(new Promise(l=>{window.doassets=async a=>{let r=E(e),{site:u,dir:L,file:w}=r[0],d=await h(`${u}/${L}/${w}`).then(y=>({source:w,aspects:y}));console.log({have:d}),a.target.outerHTML=`<br> &nbsp; ${r.length} sources, ${d.aspects.length} aspects`,l(d)}}));else if(i=t.match(/^LINK (\w+) (https?:\S+.jsonl)$/)){let l=h(f(i[2])).then(a=>({source:i[1],aspects:a}));o.push(l),t=`LINK <a href="${f(i[2])}" target=_blank>${i[1]} <img src="/images/external-link-ltr-icon.png"></a>`}else if(i=t.match(/^LINEUP$/)){let l=x(e);o.push(...l),t=`LINEUP<br> &nbsp; ${l.length} sources, ${l.map(a=>a.aspects.length).toString()||"no"} aspects`}else if(i=t.match(/^INCLUDED(.*)$/)){let l=i[1].trim()||"included";o.push({source:l,aspects:s}),t=`INCLUDED${i[1]}<br> &nbsp; ${s.length} aspects`}else t=`<font color=gray>${b(t)}</font>`;return t}).join("<br>");return console.log({graphs:o}),{output:c,graphs:o}}function E(e){let n=[...e.get(0).parentElement.children].filter(o=>o.classList.contains("assets-source")).map(o=>o.assetsData());console.log({sources:n});let s=n.map(o=>Object.entries(o).map(([c,t])=>Object.entries(t).map(([i,l])=>l.filter(a=>a.endsWith(".jsonl")).map(a=>({dir:c,site:i,file:a}))))).flat(3);return console.log({want:s}),s}async function h(e){return(await fetch(e).then(o=>o.text())).trim().split(/\n/).map(o=>JSON.parse(o))}var g,p=[],k;async function D(e,n){k=e.parents(".page").data("key"),g=S(e,n),e.append(` <div style="background-color:#eee;padding:15px;"> <p>${g.output}</p> </div>`),p=await Promise.all(g.graphs),console.log({todo:p});let s=p.filter(o=>o.source=="included").map(o=>o.aspects).flat();s.length&&(e.addClass("aspect-source"),e.get(0).aspectData=()=>s),e.find("div").append(` <p><button onclick="window.plugins.solo.dopopup(event)"> view in solo </button></p>`)}var I=e=>{let n={type:"batch",sources:p,pageKey:k},s=window.open("/plugins/solo/dialog/#","solo","popup,height=720,width=1280");s.location.pathname!="/plugins/solo/dialog/"?(console.log("launching new dialog"),s.addEventListener("load",o=>{console.log("launched and loaded"),s.postMessage(n,window.origin)})):(console.log("reusing existing dialog"),s.postMessage(n,window.origin))};function N(e,n){return e.dblclick(()=>wiki.textEditor(e,n))}function m(e){if(!e.data)return;let{data:n}=e;if(n?.action=="publishSourceData"&&n?.name=="aspect"){wiki.debug&&console.log("soloListener - source update",{event:e,data:n});return}if(!e.source.opener||e.source.location.pathname!=="/plugins/solo/dialog/"){wiki.debug&&console.log("soloListener - not for us",{event:e});return}wiki.debug&&console.log("soloListener - ours",{event:e});let{action:s,keepLineup:o=!1,pageKey:c=null,title:t=null,context:i=null,page:l=null}=n,a=null;switch(c!=null&&(a=o?null:$(".page").filter((r,u)=>$(u).data("key")==c)),s){case"doInternalLink":wiki.pageHandler.context=i,wiki.doInternalLink(t,a);break;case"showResult":let r=o?{}:{$page:a};wiki.showResult(wiki.newPage(l),r);break;default:console.error({where:"soloListener",message:"unknown action",data:n})}}typeof window<"u"&&window!==null&&(typeof window.soloListener<"u"||window.soloListener==null)&&(console.log("**** Adding solo listener"),window.soloListener=m,window.addEventListener("message",m));typeof window<"u"&&window!==null&&(window.plugins.solo={emit:D,bind:N,dopopup:I});var v=typeof window>"u"?{expand:b}:void 0;})(); //# sourceMappingURL=solo.js.map