tosijs-ui 1.0.9 → 1.0.10
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/README.md +1 -1
- package/dist/iife.js +29 -29
- package/dist/iife.js.map +9 -9
- package/dist/index.js +6 -6
- package/dist/index.js.map +7 -7
- package/dist/localize.d.ts +9 -5
- package/dist/pop-float.d.ts +1 -0
- package/package.json +8 -10
package/dist/iife.js.map
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../node_modules/tosijs/dist/module.js", "../src/ab-test.ts", "../src/via-tag.ts", "../src/icon-data.ts", "../src/icons.ts", "../src/babylon-3d.ts", "../src/bodymovin-player.ts", "../src/carousel.ts", "../src/code-editor.ts", "../src/color-input.ts", "../src/track-drag.ts", "../src/float.ts", "../src/pop-float.ts", "../src/make-sorter.ts", "../src/select.ts", "../src/localize.ts", "../src/match-shortcut.ts", "../src/menu.ts", "../src/drag-and-drop.ts", "../src/data-table.ts", "../src/dialog.ts", "../src/editable-rect.ts", "../src/filter-builder.ts", "../src/form.ts", "../src/gamepad.ts", "../src/tab-selector.ts", "../src/live-example.ts", "../src/mapbox.ts", "../node_modules/marked/lib/marked.esm.js", "../src/markdown-viewer.ts", "../src/month.ts", "../src/notifications.ts", "../src/password-strength.ts", "../src/rating.ts", "../src/rich-text.ts", "../src/segmented.ts", "../src/side-nav.ts", "../src/size-break.ts", "../src/sizer.ts", "../src/tag-list.ts", "../src/version.ts", "../src/index-iife.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"var H={debug:!1,perf:!1};function C(n){if(n==null||typeof n!==\"object\")return n;if(n instanceof Set)return new Set(n);else if(Array.isArray(n))return n.map(C);let e={};for(let o in n){let i=n[o];if(n!=null&&typeof n===\"object\")e[o]=C(i);else e[o]=i}return e}var un=\"-xin-data\",L=`.${un}`,pn=\"-xin-event\",yn=`.${pn}`,b=\"xinPath\",O=\"xinValue\",Yn=\"xinSet\",Jn=\"xinObserve\",Vn=\"xinBind\",_n=\"xinOn\",M=(n)=>{return n&&n[b]||void 0};function w(n){return typeof n===\"object\"&&n!==null?n[O]||n:n}var $=new WeakMap,v=new WeakMap;var z=(n)=>{let e=n.cloneNode();if(e instanceof Element){let o=v.get(n),i=$.get(n);if(o!=null)v.set(e,C(o));if(i!=null)$.set(e,C(i))}for(let o of Array.from(n instanceof HTMLTemplateElement?n.content.childNodes:n.childNodes))if(o instanceof Element||o instanceof DocumentFragment)e.appendChild(z(o));else e.appendChild(o.cloneNode());return e},U=new WeakMap,mn=(n)=>{let e=document.body.parentElement;while(n.parentElement!=null&&n.parentElement!==e){let o=U.get(n);if(o!=null)return o;n=n.parentElement}return!1};var Un=Symbol(\"observer should be removed\"),N=[],nn=[],xn=!1,hn,bn;class Gn{description;test;callback;constructor(n,e){let o=typeof e===\"string\"?`\"${e}\"`:`function ${e.name}`,i;if(typeof n===\"string\")this.test=(t)=>typeof t===\"string\"&&t!==\"\"&&(n.startsWith(t)||t.startsWith(n)),i=`test = \"${n}\"`;else if(n instanceof RegExp)this.test=n.test.bind(n),i=`test = \"${n.toString()}\"`;else if(n instanceof Function)this.test=n,i=`test = function ${n.name}`;else throw Error(\"expect listener test to be a string, RegExp, or test function\");if(this.description=`${i}, ${o}`,typeof e===\"function\")this.callback=e;else throw Error(\"expect callback to be a path or function\");N.push(this)}}var Zn=async()=>{if(hn===void 0)return;await hn},ge=()=>{if(H.perf)console.time(\"xin async update\");let n=Array.from(nn);for(let e of n)N.filter((o)=>{let i;try{i=o.test(e)}catch(t){throw Error(`Listener ${o.description} threw \"${t}\" at \"${e}\"`)}if(i===Un)return G(o),!1;return i}).forEach((o)=>{let i;try{i=o.callback(e)}catch(t){console.error(`Listener ${o.description} threw \"${t}\" handling \"${e}\"`)}if(i===Un)G(o)});if(nn.splice(0),xn=!1,typeof bn===\"function\")bn();if(H.perf)console.timeEnd(\"xin async update\")},W=(n)=>{let e=typeof n===\"string\"?n:M(n);if(e===void 0)throw console.error(\"touch was called on an invalid target\",n),Error(\"touch was called on an invalid target\");if(xn===!1)hn=new Promise((o)=>{bn=o}),xn=setTimeout(ge);if(nn.find((o)=>e.startsWith(o))==null)nn.push(e)},wn=(n,e)=>{return new Gn(n,e)},G=(n)=>{let e=N.indexOf(n);if(e>-1)N.splice(e,1);else throw Error(\"unobserve failed, listener not found\")};var Te=(n)=>{try{return JSON.stringify(n)}catch(e){return\"{has circular references}\"}},gn=(...n)=>Error(n.map(Te).join(\" \"));var Xe=()=>new Date(parseInt(\"1000000000\",36)+Date.now()).valueOf().toString(36).slice(1),Se=0,Ee=()=>(parseInt(\"10000\",36)+ ++Se).toString(36).slice(-5),ke=()=>Xe()+Ee(),Xn=Symbol(\"delete\"),Kn=Symbol(\"new-object\"),Tn=Symbol(\"automatic-index\");function Rn(n){if(n===\"\")return[];if(Array.isArray(n))return n;else{let e=[];while(n.length>0){let o=n.search(/\\[[^\\]]+\\]/);if(o===-1){e.push(n.split(\".\"));break}else{let i=n.slice(0,o);if(n=n.slice(o),i!==\"\")e.push(i.split(\".\"));if(o=n.indexOf(\"]\")+1,e.push(n.slice(1,o-1)),n.slice(o,o+1)===\".\")o+=1;n=n.slice(o)}}return e}}var D=new WeakMap;function Nn(n,e){if(D.get(n)===void 0)D.set(n,{});if(D.get(n)[e]===void 0)D.get(n)[e]={};let o=D.get(n)[e];if(e===\"_auto_\")n.forEach((i,t)=>{if(i[Tn]===void 0)i[Tn]=ke();o[i[Tn]+\"\"]=t});else n.forEach((i,t)=>{o[I(i,e)+\"\"]=t});return o}function Ce(n,e){if(D.get(n)===void 0||D.get(n)[e]===void 0)return Nn(n,e);else return D.get(n)[e]}function ve(n,e,o){o=o+\"\";let i=Ce(n,e)[o];if(i===void 0||I(n[i],e)+\"\"!==o)i=Nn(n,e)[o];return i}function Me(n,e,o){if(n[e]===void 0&&o!==void 0)n[e]=o;return n[e]}function ne(n,e,o,i){let t=e!==\"\"?ve(n,e,o):o;if(i===Xn)return n.splice(t,1),D.delete(n),Symbol(\"deleted\");else if(i===Kn){if(e===\"\"&&n[t]===void 0)n[t]={}}else if(i!==void 0)if(t!==void 0)n[t]=i;else if(e!==\"\"&&I(i,e)+\"\"===o+\"\")n.push(i),t=n.length-1;else throw Error(`byIdPath insert failed at [${e}=${o}]`);return n[t]}function qn(n){if(!Array.isArray(n))throw gn(\"setByPath failed: expected array, found\",n)}function Qn(n){if(n==null||!(n instanceof Object))throw gn(\"setByPath failed: expected Object, found\",n)}function I(n,e){let o=Rn(e),i=n,t,s,r,c;for(t=0,s=o.length;i!==void 0&&t<s;t++){let d=o[t];if(Array.isArray(d))for(r=0,c=d.length;i!==void 0&&r<c;r++){let l=d[r];i=i[l]}else if(i.length===0){if(i=i[Number(d.slice(1))],d[0]!==\"=\")return}else if(d.includes(\"=\")){let[l,...p]=d.split(\"=\");i=ne(i,l,p.join(\"=\"))}else r=parseInt(d,10),i=i[r]}return i}function ee(n,e,o){let i=n;if(e===\"\")throw Error(\"setByPath cannot be used to set the root object\");let t=Rn(e);while(i!=null&&t.length>0){let s=t.shift();if(typeof s===\"string\"){let r=s.indexOf(\"=\");if(r>-1){if(r===0)Qn(i);else qn(i);let c=s.slice(0,r),d=s.slice(r+1);if(i=ne(i,c,d,t.length>0?Kn:o),t.length===0)return!0}else{qn(i);let c=parseInt(s,10);if(t.length>0)i=i[c];else{if(o!==Xn){if(i[c]===o)return!1;i[c]=o}else i.splice(c,1);return!0}}}else if(Array.isArray(s)&&s.length>0){Qn(i);while(s.length>0){let r=s.shift();if(s.length>0||t.length>0)i=Me(i,r,s.length>0?{}:[]);else{if(o!==Xn){if(i[r]===o)return!1;i[r]=o}else{if(!Object.prototype.hasOwnProperty.call(i,r))return!1;delete i[r]}return!0}}}else throw Error(`setByPath failed, bad path ${e}`)}throw Error(`setByPath(${n}, ${e}, ${o}) failed`)}var De=[\"sort\",\"splice\",\"copyWithin\",\"fill\",\"pop\",\"push\",\"reverse\",\"shift\",\"unshift\"],En={},Fe=!0,Le=/^\\.?([^.[\\](),])+(\\.[^.[\\](),]+|\\[\\d+\\]|\\[[^=[\\](),]*=[^[\\]()]+\\])*$/,Be=(n)=>Le.test(n),A=(n=\"\",e=\"\")=>{if(n===\"\")return e;else if(e.match(/^\\d+$/)!==null||e.includes(\"=\"))return`${n}[${e}]`;else return`${n}.${e}`},He={string(n){return new String(n)},boolean(n){return new Boolean(n)},bigint(n){return n},symbol(n){return n},number(n){return new Number(n)}};function Sn(n,e){let o=typeof n;if(n===void 0||o===\"object\"||o===\"function\")return n;else return new Proxy(He[typeof n](n),Y(e,!0))}var Y=(n,e)=>({get(o,i){switch(i){case b:return n;case O:return o.valueOf?o.valueOf():o;case Yn:return(r)=>f[n]=r;case Jn:return(r)=>{let c=wn(n,r);return()=>G(c)};case _n:return(r,c)=>P(r,c,w(o));case Vn:return(r,c,d)=>{g(r,n,c,d)}}if(typeof i===\"symbol\")return o[i];let t=i,s=t.match(/^([^.[]+)\\.(.+)$/)??t.match(/^([^\\]]+)(\\[.+)/)??t.match(/^(\\[[^\\]]+\\])\\.(.+)$/)??t.match(/^(\\[[^\\]]+\\])\\[(.+)$/);if(s!==null){let[,r,c]=s,d=A(n,r),l=I(o,r);return l!==null&&typeof l===\"object\"?new Proxy(l,Y(d,e))[c]:l}if(t.startsWith(\"[\")&&t.endsWith(\"]\"))t=t.substring(1,t.length-1);if(!Array.isArray(o)&&o[t]!==void 0||Array.isArray(o)&&t.includes(\"=\")){let r;if(t.includes(\"=\")){let[c,d]=t.split(\"=\");r=o.find((l)=>`${I(l,c)}`===d)}else r=o[t];if(r instanceof Object){let c=A(n,t);return new Proxy(r instanceof Function?r.bind(o):r,Y(c,e))}else return e?Sn(r,A(n,t)):r}else if(Array.isArray(o)){let r=o[t];return typeof r===\"function\"?(...c)=>{let d=r.apply(o,c);if(De.includes(t))W(n);return d}:typeof r===\"object\"?new Proxy(r,Y(A(n,t),e)):e?Sn(r,A(n,t)):r}else return e?Sn(o[t],A(n,t)):o[t]},set(o,i,t){t=w(t);let s=i!==O?A(n,i):n;if(Fe&&!Be(s))throw Error(`setting invalid path ${s}`);if(w(f[s])!==t&&ee(En,s,t))W(s);return!0}}),Z=(n,e)=>{let o=typeof e===\"function\"?e:f[e];if(typeof o!==\"function\")throw Error(`observe expects a function or path to a function, ${e} is neither`);return wn(n,o)},f=new Proxy(En,Y(\"\",!1)),J=new Proxy(En,Y(\"\",!0));var kn=(n,e)=>{let o=new Event(e);n.dispatchEvent(o)},ie=(n)=>{if(n instanceof HTMLInputElement)return n.type;else if(n instanceof HTMLSelectElement&&n.hasAttribute(\"multiple\"))return\"multi-select\";else return\"other\"},te=(n,e)=>{switch(ie(n)){case\"radio\":n.checked=n.value===e;break;case\"checkbox\":n.checked=!!e;break;case\"date\":n.valueAsDate=new Date(e);break;case\"multi-select\":for(let o of Array.from(n.querySelectorAll(\"option\")))o.selected=e[o.value];break;default:n.value=e}},re=(n)=>{switch(ie(n)){case\"radio\":{let e=n.parentElement?.querySelector(`[name=\"${n.name}\"]:checked`);return e!=null?e.value:null}case\"checkbox\":return n.checked;case\"date\":return n.valueAsDate?.toISOString();case\"multi-select\":return Array.from(n.querySelectorAll(\"option\")).reduce((e,o)=>{return e[o.value]=o.selected,e},{});default:return n.value}},{ResizeObserver:oe}=globalThis,q=oe!=null?new oe((n)=>{for(let e of n){let o=e.target;kn(o,\"resize\")}}):{observe(){},unobserve(){}},Cn=(n,e,o=!0)=>{if(n!=null&&e!=null)if(typeof e===\"string\")n.textContent=e;else if(Array.isArray(e))e.forEach((i)=>{n.append(i instanceof Node&&o?z(i):i)});else if(e instanceof Node)n.append(o?z(e):e);else throw Error(\"expect text content or document node\")};var vn=(n,e=250)=>{let o;return(...i)=>{if(o!==void 0)clearTimeout(o);o=setTimeout(()=>{n(...i)},e)}},en=(n,e=250)=>{let o,i=Date.now()-e,t=!1;return(...s)=>{if(clearTimeout(o),o=setTimeout(()=>{n(...s),i=Date.now()},e),!t&&Date.now()-i>=e){t=!0;try{n(...s),i=Date.now()}finally{t=!1}}}};var on=Symbol(\"list-binding\"),$e=16,Oe=100;function se(n,e){let o=Array.from(n.querySelectorAll(L));if(n.matches(L))o.unshift(n);for(let i of o){let t=v.get(i);for(let s of t){if(s.path.startsWith(\"^\"))s.path=`${e}${s.path.substring(1)}`;if(s.binding.toDOM!=null)s.binding.toDOM(i,f[s.path])}}}class ce{boundElement;listTop;listBottom;template;options;itemToElement;_array=[];_update;_previousSlice;static filterBoundObservers=new WeakMap;constructor(n,e,o={}){if(this.boundElement=n,this.itemToElement=new WeakMap,n.children.length!==1)throw Error(\"ListBinding expects an element with exactly one child element\");if(n.children[0]instanceof HTMLTemplateElement){let i=n.children[0];if(i.content.children.length!==1)throw Error(\"ListBinding expects a template with exactly one child element\");this.template=z(i.content.children[0])}else this.template=n.children[0],this.template.remove();if(this.options=o,this.listTop=document.createElement(\"div\"),this.listBottom=document.createElement(\"div\"),this.listTop.classList.add(\"virtual-list-padding\"),this.listBottom.classList.add(\"virtual-list-padding\"),this.boundElement.append(this.listTop),this.boundElement.append(this.listBottom),o.virtual!=null)q.observe(this.boundElement),this._update=en(()=>{this.update(this._array,!0)},$e),this.boundElement.addEventListener(\"scroll\",this._update),this.boundElement.addEventListener(\"resize\",this._update)}visibleSlice(){let{virtual:n,hiddenProp:e,visibleProp:o}=this.options,i=this._array;if(e!==void 0)i=i.filter((d)=>d[e]!==!0);if(o!==void 0)i=i.filter((d)=>d[o]===!0);if(this.options.filter&&this.needle!==void 0)i=this.options.filter(i,this.needle);let t=0,s=i.length-1,r=0,c=0;if(n!=null&&this.boundElement instanceof HTMLElement){let d=this.boundElement.offsetWidth,l=this.boundElement.offsetHeight;if(n.visibleColumns==null)n.visibleColumns=n.width!=null?Math.max(1,Math.floor(d/n.width)):1;let p=Math.ceil(l/n.height)+(n.rowChunkSize||1),S=Math.ceil(i.length/n.visibleColumns),E=n.visibleColumns*p,y=Math.floor(this.boundElement.scrollTop/n.height);if(y>S-p+1)y=Math.max(0,S-p+1);if(n.rowChunkSize)y-=y%n.rowChunkSize;t=y*n.visibleColumns,s=t+E-1,r=y*n.height,c=Math.max((S-p)*n.height-r,0)}return{items:i,firstItem:t,lastItem:s,topBuffer:r,bottomBuffer:c}}needle;filter=en((n)=>{if(this.needle!==n)this.needle=n,this.update(this._array)},Oe);update(n,e){if(n==null)n=[];this._array=n;let{hiddenProp:o,visibleProp:i}=this.options,t=M(n),s=this.visibleSlice();this.boundElement.classList.toggle(\"-xin-empty-list\",s.items.length===0);let r=this._previousSlice,{firstItem:c,lastItem:d,topBuffer:l,bottomBuffer:p}=s;if(o===void 0&&i===void 0&&e===!0&&r!=null&&c===r.firstItem&&d===r.lastItem)return;this._previousSlice=s;let S=0,E=0,y=0;for(let u of Array.from(this.boundElement.children)){if(u===this.listTop||u===this.listBottom)continue;let k=U.get(u);if(k==null)u.remove();else{let h=s.items.indexOf(k);if(h<c||h>d)u.remove(),this.itemToElement.delete(k),U.delete(u),S++}}this.listTop.style.height=String(l)+\"px\",this.listBottom.style.height=String(p)+\"px\";let x=[],{idPath:ln}=this.options;for(let u=c;u<=d;u++){let k=s.items[u];if(k===void 0)continue;let h=this.itemToElement.get(w(k));if(h==null){if(y++,h=z(this.template),typeof k===\"object\")this.itemToElement.set(w(k),h),U.set(h,w(k));if(this.boundElement.insertBefore(h,this.listBottom),ln!=null){let fn=k[ln],we=`${t}[${ln}=${fn}]`;se(h,we)}else{let fn=`${t}[${u}]`;se(h,fn)}}x.push(h)}let R=null;for(let u of x){if(u.previousElementSibling!==R)if(E++,R?.nextElementSibling!=null)this.boundElement.insertBefore(u,R.nextElementSibling);else this.boundElement.insertBefore(u,this.listBottom);R=u}if(H.perf)console.log(t,\"updated\",{removed:S,created:y,moved:E})}}var de=(n,e,o)=>{let i=n[on];if(i===void 0)i=new ce(n,e,o),n[on]=i;return i};var{document:Q,MutationObserver:ae}=globalThis,Mn=(n,e)=>{let o=v.get(n);if(o==null)return;for(let i of o){let{binding:t,options:s}=i,{path:r}=i,{toDOM:c}=t;if(c!=null){if(r.startsWith(\"^\")){let d=mn(n);if(d!=null&&d[b]!=null)r=i.path=`${d[b]}${r.substring(1)}`;else throw console.error(`Cannot resolve relative binding ${r}`,n,\"is not part of a list\"),Error(`Cannot resolve relative binding ${r}`)}if(e==null||r.startsWith(e))c(n,f[r],s)}}};if(ae!=null)new ae((e)=>{e.forEach((o)=>{Array.from(o.addedNodes).forEach((i)=>{if(i instanceof Element)Array.from(i.querySelectorAll(L)).forEach((t)=>Mn(t))})})}).observe(Q.body,{subtree:!0,childList:!0});Z(()=>!0,(n)=>{let e=Array.from(Q.querySelectorAll(L));for(let o of e)Mn(o,n)});var le=(n)=>{let e=n.target.closest(L);while(e!=null){let o=v.get(e);for(let i of o){let{binding:t,path:s}=i,{fromDOM:r}=t;if(r!=null){let c;try{c=r(e,i.options)}catch(d){throw console.error(\"Cannot get value from\",e,\"via\",i),Error(\"Cannot obtain value fromDOM\")}if(c!=null){let d=f[s];if(d==null)f[s]=c;else{let l=d[b]!=null?d[O]:d,p=c[b]!=null?c[O]:c;if(l!==p)f[s]=p}}}}e=e.parentElement.closest(L)}};if(globalThis.document!=null)Q.body.addEventListener(\"change\",le,!0),Q.body.addEventListener(\"input\",le,!0);function g(n,e,o,i){if(n instanceof DocumentFragment)throw Error(\"bind cannot bind to a DocumentFragment\");let t;if(typeof e===\"object\"&&e[b]===void 0&&i===void 0){let{value:c}=e;t=typeof c===\"string\"?c:c[b],i=e,delete i.value}else t=typeof e===\"string\"?e:e[b];if(t==null)throw Error(\"bind requires a path or object with xin Proxy\");let{toDOM:s}=o;n.classList?.add(un);let r=v.get(n);if(r==null)r=[],v.set(n,r);if(r.push({path:t,binding:o,options:i}),s!=null&&!t.startsWith(\"^\"))W(t);if(i?.filter&&i?.needle)g(n,i.needle,{toDOM(c,d){console.log({needle:d}),c[on]?.filter(d)}});return n}var fe=new Set,ze=(n)=>{let e=n?.target.closest(yn),o=!1,i=new Proxy(n,{get(s,r){if(r===\"stopPropagation\")return()=>{n.stopPropagation(),o=!0};else{let c=s[r];return typeof c===\"function\"?c.bind(s):c}}}),t=new Set;while(!o&&e!=null){let r=$.get(e)[n.type]||t;for(let c of r){if(typeof c===\"function\")c(i);else{let d=f[c];if(typeof d===\"function\")d(i);else throw Error(`no event handler found at path ${c}`)}if(o)continue}e=e.parentElement!=null?e.parentElement.closest(yn):null}};function P(n,e,o){let i=$.get(n);if(n.classList.add(pn),i==null)i={},$.set(n,i);if(!i[e])i[e]=new Set;if(i[e].add(o),!fe.has(e))fe.add(e),Q.body.addEventListener(e,ze,!0);return()=>{i[e].delete(o)}}var tn={value:{toDOM:te,fromDOM(n){return re(n)}},text:{toDOM(n,e){n.textContent=e}},enabled:{toDOM(n,e){n.disabled=!e}},disabled:{toDOM(n,e){n.disabled=Boolean(e)}},list:{toDOM(n,e,o){de(n,e,o).update(e)}}};var Ae=180/Math.PI,Pe=Math.PI/180;function T(n,e,o){return o<n?NaN:e<n?n:e>o?o:e}function F(n,e,o,i=!0){if(i)o=T(0,o,1);return o*(e-n)+n}var je={RADIANS_TO_DEGREES:Ae,DEGREES_TO_RADIANS:Pe,clamp:T,lerp:F};function Dn(n,e=document.body){let o=getComputedStyle(e);if(n.endsWith(\")\")&&n.startsWith(\"var(\"))n=n.slice(4,-1);return o.getPropertyValue(n).trim()}var We=(n,e,o)=>{return(0.299*n+0.587*e+0.114*o)/255},j=(n)=>(\"00\"+Math.round(Number(n)).toString(16)).slice(-2);class ue{h;s;l;constructor(n,e,o){n/=255,e/=255,o/=255;let i=Math.max(n,e,o),t=i-Math.min(n,e,o),s=t!==0?i===n?(e-o)/t:i===e?2+(o-n)/t:4+(n-e)/t:0;this.h=60*s<0?60*s+360:60*s,this.s=t!==0?i<=0.5?t/(2*i-t):t/(2-(2*i-t)):0,this.l=(2*i-t)/2}}var V=globalThis.document!==void 0?globalThis.document.createElement(\"span\"):void 0;class a{r;g;b;a;static fromVar(n,e=document.body){return a.fromCss(Dn(n,e))}static fromCss(n){let e=n;if(V instanceof HTMLSpanElement)V.style.color=\"black\",V.style.color=n,document.body.appendChild(V),e=getComputedStyle(V).color,V.remove();let[o,i,t,s]=e.match(/[\\d.]+/g)||[\"0\",\"0\",\"0\",\"0\"],r=e.startsWith(\"color(srgb\")?255:1;return new a(Number(o)*r,Number(i)*r,Number(t)*r,s==null?1:Number(s))}static fromHsl(n,e,o,i=1){let t,s,r;if(e===0)t=s=r=o;else{let d=(E,y,x)=>{if(x<0)x+=1;if(x>1)x-=1;if(x<0.16666666666666666)return E+(y-E)*6*x;if(x<0.5)return y;if(x<0.6666666666666666)return E+(y-E)*(0.6666666666666666-x)*6;return E},l=o<0.5?o*(1+e):o+e-o*e,p=2*o-l,S=(n%360+360)%360/360;t=d(p,l,S+0.3333333333333333),s=d(p,l,S),r=d(p,l,S-0.3333333333333333)}let c=new a(t*255,s*255,r*255,i);return c.hslCached={h:(n%360+360)%360,s:e,l:o},c}static black=new a(0,0,0);static white=new a(255,255,255);constructor(n,e,o,i=1){this.r=T(0,n,255),this.g=T(0,e,255),this.b=T(0,o,255),this.a=T(0,i,1)}get inverse(){return new a(255-this.r,255-this.g,255-this.b,this.a)}get inverseLuminance(){let{h:n,s:e,l:o}=this._hsl;return a.fromHsl(n,e,1-o,this.a)}get opaque(){return this.a===1?this:new a(this.r,this.g,this.b,1)}contrasting(n=1){return this.opaque.blend(this.brightness>0.5?a.black:a.white,n)}get rgb(){let{r:n,g:e,b:o}=this;return`rgb(${n.toFixed(0)},${e.toFixed(0)},${o.toFixed(0)})`}get rgba(){let{r:n,g:e,b:o,a:i}=this;return`rgba(${n.toFixed(0)},${e.toFixed(0)},${o.toFixed(0)},${i.toFixed(2)})`}get RGBA(){return[this.r/255,this.g/255,this.b/255,this.a]}get ARGB(){return[this.a,this.r/255,this.g/255,this.b/255]}hslCached;get _hsl(){if(this.hslCached==null)this.hslCached=new ue(this.r,this.g,this.b);return this.hslCached}get hsl(){let{h:n,s:e,l:o}=this._hsl;return`hsl(${n.toFixed(0)}deg ${(e*100).toFixed(0)}% ${(o*100).toFixed(0)}%)`}get hsla(){let{h:n,s:e,l:o}=this._hsl;return`hsl(${n.toFixed(0)}deg ${(e*100).toFixed(0)}% ${(o*100).toFixed(0)}% / ${(this.a*100).toFixed(0)}%)`}get mono(){let n=this.brightness*255;return new a(n,n,n)}get brightness(){return We(this.r,this.g,this.b)}get html(){return this.toString()}toString(){return this.a===1?\"#\"+j(this.r)+j(this.g)+j(this.b):\"#\"+j(this.r)+j(this.g)+j(this.b)+j(Math.floor(255*this.a))}brighten(n){let{h:e,s:o,l:i}=this._hsl,t=T(0,i+n*(1-i),1);return a.fromHsl(e,o,t,this.a)}darken(n){let{h:e,s:o,l:i}=this._hsl,t=T(0,i*(1-n),1);return a.fromHsl(e,o,t,this.a)}saturate(n){let{h:e,s:o,l:i}=this._hsl,t=T(0,o+n*(1-o),1);return a.fromHsl(e,t,i,this.a)}desaturate(n){let{h:e,s:o,l:i}=this._hsl,t=T(0,o*(1-n),1);return a.fromHsl(e,t,i,this.a)}rotate(n){let{h:e,s:o,l:i}=this._hsl,t=(e+360+n)%360;return a.fromHsl(t,o,i,this.a)}opacity(n){let{h:e,s:o,l:i}=this._hsl;return a.fromHsl(e,o,i,n)}swatch(){return console.log(`%c %c ${this.html}, ${this.rgba}`,`background-color: ${this.html}`,\"background-color: transparent\"),this}blend(n,e){return new a(F(this.r,n.r,e),F(this.g,n.g,e),F(this.b,n.b,e),F(this.a,n.a,e))}static blendHue(n,e,o){let i=(e-n+720)%360;if(i<180)return n+o*i;else return n-(360-i)*o}mix(n,e){let o=this._hsl,i=n._hsl;return a.fromHsl(o.s===0?i.h:i.s===0?o.h:a.blendHue(o.h,i.h,e),F(o.s,i.s,e),F(o.l,i.l,e),F(this.a,n.a,e))}colorMix(n,e){return a.fromCss(`color-mix(in hsl, ${this.html}, ${n.html} ${(e*100).toFixed(0)}%)`)}}function X(n){return n.replace(/[A-Z]/g,(e)=>{return`-${e.toLocaleLowerCase()}`})}function pe(n){return n.replace(/-([a-z])/g,(e,o)=>{return o.toLocaleUpperCase()})}var Ie=\"http://www.w3.org/1998/Math/MathML\",Ye=\"http://www.w3.org/2000/svg\",rn={},ye=(n,e,o)=>{let i=$n(X(e),o);if(i.prop.startsWith(\"--\"))n.style.setProperty(i.prop,i.value);else n.style[e]=i.value},Je=(n)=>{return{toDOM(e,o){ye(e,n,o)}}},me=(n,e,o)=>{if(e===\"style\")if(typeof o===\"object\")for(let i of Object.keys(o))if(M(o[i]))g(n,o[i],Je(i));else ye(n,i,o[i]);else n.setAttribute(\"style\",o);else if(n[e]!==void 0){let{MathMLElement:i}=globalThis;if(n instanceof SVGElement||i!==void 0&&n instanceof i)n.setAttribute(e,o);else n[e]=o}else{let i=X(e);if(i===\"class\")o.split(\" \").forEach((t)=>{n.classList.add(t)});else if(n[i]!==void 0)n[i]=o;else if(typeof o===\"boolean\")o?n.setAttribute(i,\"\"):n.removeAttribute(i);else n.setAttribute(i,o)}},Ve=(n)=>{return{toDOM(e,o){me(e,n,o)}}},_e=(n,e,o)=>{if(e===\"apply\")o(n);else if(e.match(/^on[A-Z]/)!=null){let i=e.substring(2).toLowerCase();P(n,i,o)}else if(e===\"bind\")if((typeof o.binding===\"string\"?tn[o.binding]:o.binding)!==void 0&&o.value!==void 0)g(n,o.value,o.binding instanceof Function?{toDOM:o.binding}:o.binding);else throw Error(\"bad binding\");else if(e.match(/^bind[A-Z]/)!=null){let i=e.substring(4,5).toLowerCase()+e.substring(5),t=tn[i];if(t!==void 0)g(n,o,t);else throw Error(`${e} is not allowed, bindings.${i} is not defined`)}else if(M(o))g(n,o,Ve(e));else me(n,e,o)},Fn=(n,...e)=>{if(rn[n]===void 0){let[t,s]=n.split(\"|\");if(s===void 0)rn[n]=globalThis.document.createElement(t);else rn[n]=globalThis.document.createElementNS(s,t)}let o=rn[n].cloneNode(),i={};for(let t of e)if(t instanceof Element||t instanceof DocumentFragment||typeof t===\"string\"||typeof t===\"number\")if(o instanceof HTMLTemplateElement)o.content.append(t);else o.append(t);else if(M(t))o.append(m.span({bindText:t}));else Object.assign(i,t);for(let t of Object.keys(i)){let s=i[t];_e(o,t,s)}return o},Ln=(...n)=>{let e=globalThis.document.createDocumentFragment();for(let o of n)e.append(o);return e},m=new Proxy({fragment:Ln},{get(n,e){if(e=e.replace(/[A-Z]/g,(o)=>`-${o.toLocaleLowerCase()}`),n[e]===void 0)n[e]=(...o)=>Fn(e,...o);return n[e]},set(){throw Error(\"You may not add new properties to elements\")}}),Bn=new Proxy({fragment:Ln},{get(n,e){if(n[e]===void 0)n[e]=(...o)=>Fn(`${e}|${Ye}`,...o);return n[e]},set(){throw Error(\"You may not add new properties to elements\")}}),Hn=new Proxy({fragment:Ln},{get(n,e){if(n[e]===void 0)n[e]=(...o)=>Fn(`${e}|${Ie}`,...o);return n[e]},set(){throw Error(\"You may not add new properties to elements\")}});function Ue(n,e){let o=m.style(_(e));o.id=n,document.head.append(o)}var Ge=[\"animation-iteration-count\",\"flex\",\"flex-base\",\"flex-grow\",\"flex-shrink\",\"opacity\",\"order\",\"tab-size\",\"widows\",\"z-index\",\"zoom\"],$n=(n,e)=>{if(typeof e===\"number\"&&!Ge.includes(n))e=`${e}px`;if(n.startsWith(\"_\"))if(n.startsWith(\"__\"))n=\"--\"+n.substring(2),e=`var(${n}-default, ${e})`;else n=\"--\"+n.substring(1);return{prop:n,value:String(e)}},Ze=(n,e,o)=>{if(o===void 0)return\"\";if(o instanceof a)o=o.html;let i=$n(e,o);return`${n} ${i.prop}: ${i.value};`},xe=(n,e,o=\"\")=>{let i=X(n);if(typeof e===\"object\"&&!(e instanceof a)){let t=Object.keys(e).map((s)=>xe(s,e[s],`${o} `)).join(`\n`);return`${o} ${n} {\n${t}\n${o} }`}else return Ze(o,i,e)},_=(n,e=\"\")=>{return Object.keys(n).map((i)=>{let t=n[i];if(typeof t===\"string\"){if(i===\"@import\")return`@import url('${t}');`;throw Error(\"top-level string value only allowed for `@import`\")}let s=Object.keys(t).map((r)=>xe(r,t[r])).join(`\n`);return`${e}${i} {\n${s}\n}`}).join(`\n\n`)},qe=(n)=>{console.warn(\"initVars is deprecated. Just use _ and __ prefixes instead.\");let e={};for(let o of Object.keys(n)){let i=n[o],t=X(o);e[`--${t}`]=typeof i===\"number\"&&i!==0?String(i)+\"px\":i}return e},Qe=(n)=>{let e={};for(let o of Object.keys(n)){let i=n[o];if(i instanceof a)e[o]=i.inverseLuminance;else if(typeof i===\"string\"&&i.match(/^(#[0-9a-fA-F]{3}|rgba?\\(|hsla?\\()/))e[o]=a.fromCss(i).inverseLuminance}return e},sn=new Proxy({},{get(n,e){if(n[e]===void 0){let o=\"--\"+X(e);n[e]=(i)=>`var(${o}, ${i})`}return n[e]}}),On=new Proxy({},{get(n,e){if(e===\"default\")return sn;if(n[e]==null){e=X(e);let[,o,,i,t,s]=e.match(/^([-\\w]*?)((_)?(\\d+)(\\w?))?$/)||[\"\",e],r=`--${o}`;if(t!=null){let c=i==null?Number(t)/100:-Number(t)/100;switch(s){case\"b\":{let d=a.fromVar(r);n[e]=c>0?d.brighten(c).rgba:d.darken(-c).rgba}break;case\"s\":{let d=a.fromVar(r);n[e]=c>0?d.saturate(c).rgba:d.desaturate(-c).rgba}break;case\"h\":{let d=a.fromVar(r);n[e]=d.rotate(c*100).rgba}break;case\"o\":{let d=a.fromVar(r);n[e]=d.opacity(c).rgba}break;case\"\":n[e]=`calc(var(${r}) * ${c})`;break;default:throw console.error(s),Error(`Unrecognized method ${s} for css variable ${r}`)}}else n[e]=`var(${r})`}return n[e]}});var Ke=0;function zn(){return`custom-elt${(Ke++).toString(36)}`}var he=0,K={};function Re(n,e){let o=K[n],i=_(e).replace(/:host\\b/g,n);K[n]=o?o+`\n`+i:i}function Ne(n){if(K[n])document.head.append(m.style({id:n+\"-component\"},K[n]));delete K[n]}class B extends HTMLElement{static elements=m;static _elementCreator;instanceId;styleNode;static styleSpec;static styleNode;content=m.slot();isSlotted;static _tagName=null;static get tagName(){return this._tagName}static StyleNode(n){return console.warn(\"StyleNode is deprecated, just assign static styleSpec: XinStyleSheet to the class directly\"),m.style(_(n))}static elementCreator(n={}){let e=this;if(e._elementCreator==null){let{tag:o,styleSpec:i}=n,t=n!=null?o:null;if(t==null)if(typeof e.name===\"string\"&&e.name!==\"\"){if(t=X(e.name),t.startsWith(\"-\"))t=t.slice(1)}else t=zn();if(customElements.get(t)!=null)console.warn(`${t} is already defined`);if(t.match(/\\w+(-\\w+)+/)==null)console.warn(`${t} is not a legal tag for a custom-element`),t=zn();while(customElements.get(t)!==void 0)t=zn();if(e._tagName=t,i!==void 0)Re(t,i);window.customElements.define(t,this,n),e._elementCreator=m[t]}return e._elementCreator}initAttributes(...n){let e={},o={};new MutationObserver((t)=>{let s=!1;if(t.forEach((r)=>{s=!!(r.attributeName&&n.includes(pe(r.attributeName)))}),s&&this.queueRender!==void 0)this.queueRender(!1)}).observe(this,{attributes:!0}),n.forEach((t)=>{e[t]=C(this[t]);let s=X(t);Object.defineProperty(this,t,{enumerable:!1,get(){if(typeof e[t]===\"boolean\")return this.hasAttribute(s);else if(this.hasAttribute(s))return typeof e[t]===\"number\"?parseFloat(this.getAttribute(s)):this.getAttribute(s);else if(o[t]!==void 0)return o[t];else return e[t]},set(r){if(typeof e[t]===\"boolean\"){if(r!==this[t]){if(r)this.setAttribute(s,\"\");else this.removeAttribute(s);this.queueRender()}}else if(typeof e[t]===\"number\"){if(r!==parseFloat(this[t]))this.setAttribute(s,r),this.queueRender()}else if(typeof r===\"object\"||`${r}`!==`${this[t]}`){if(r===null||r===void 0||typeof r===\"object\")this.removeAttribute(s);else this.setAttribute(s,r);this.queueRender(),o[t]=r}}})})}initValue(){let n=Object.getOwnPropertyDescriptor(this,\"value\");if(n===void 0||n.get!==void 0||n.set!==void 0)return;let e=this.hasAttribute(\"value\")?this.getAttribute(\"value\"):C(this.value);delete this.value,Object.defineProperty(this,\"value\",{enumerable:!1,get(){return e},set(o){if(e!==o)e=o,this.queueRender(!0)}})}_parts;get parts(){let n=this.shadowRoot!=null?this.shadowRoot:this;if(this._parts==null)this._parts=new Proxy({},{get(e,o){if(e[o]===void 0){let i=n.querySelector(`[part=\"${o}\"]`);if(i==null)i=n.querySelector(o);if(i==null)throw Error(`elementRef \"${o}\" does not exist!`);i.removeAttribute(\"data-ref\"),e[o]=i}return e[o]}});return this._parts}constructor(){super();he+=1,this.initAttributes(\"hidden\"),this.instanceId=`${this.tagName.toLocaleLowerCase()}-${he}`,this._value=C(this.defaultValue)}connectedCallback(){if(Ne(this.constructor.tagName),this.hydrate(),this.role!=null)this.setAttribute(\"role\",this.role);if(this.onResize!==void 0){if(q.observe(this),this._onResize==null)this._onResize=this.onResize.bind(this);this.addEventListener(\"resize\",this._onResize)}if(this.value!=null&&this.getAttribute(\"value\")!=null)this._value=this.getAttribute(\"value\");this.queueRender()}disconnectedCallback(){q.unobserve(this)}_changeQueued=!1;_renderQueued=!1;queueRender(n=!1){if(!this._hydrated)return;if(!this._changeQueued)this._changeQueued=n;if(!this._renderQueued)this._renderQueued=!0,requestAnimationFrame(()=>{if(this._changeQueued)kn(this,\"change\");this._changeQueued=!1,this._renderQueued=!1,this.render()})}_hydrated=!1;hydrate(){if(!this._hydrated){this.initValue();let n=typeof this.content!==\"function\",e=typeof this.content===\"function\"?this.content():this.content,{styleSpec:o}=this.constructor,{styleNode:i}=this.constructor;if(o)i=this.constructor.styleNode=m.style(_(o)),delete this.constructor.styleNode;if(this.styleNode)console.warn(this,\"styleNode is deprecrated, use static styleNode or statc styleSpec instead\"),i=this.styleNode;if(i){let t=this.attachShadow({mode:\"open\"});t.appendChild(i.cloneNode(!0)),Cn(t,e,n)}else if(e!==null){let t=Array.from(this.childNodes);Cn(this,e,n),this.isSlotted=this.querySelector(\"slot,xin-slot\")!==void 0;let s=Array.from(this.querySelectorAll(\"slot\"));if(s.length>0)s.forEach(An.replaceSlot);if(t.length>0){let r={\"\":this};Array.from(this.querySelectorAll(\"xin-slot\")).forEach((c)=>{r[c.name]=c}),t.forEach((c)=>{let d=r[\"\"],l=c instanceof Element?r[c.slot]:d;(l!==void 0?l:d).append(c)})}}this._hydrated=!0}}render(){}}class An extends B{name=\"\";content=null;static replaceSlot(n){let e=document.createElement(\"xin-slot\");if(n.name!==\"\")e.setAttribute(\"name\",n.name);n.replaceWith(e)}constructor(){super();this.initAttributes(\"name\")}}var fi=An.elementCreator({tag:\"xin-slot\"});var no=(n=()=>!0)=>{let e=localStorage.getItem(\"xin-state\");if(e!=null){let i=JSON.parse(e);for(let t of Object.keys(i).filter(n))if(f[t]!==void 0)Object.assign(f[t],i[t]);else f[t]=i[t]}let o=vn(()=>{let i={},t=w(f);for(let s of Object.keys(t).filter(n))i[s]=t[s];localStorage.setItem(\"xin-state\",JSON.stringify(i)),console.log(\"xin state saved to localStorage\")},500);Z(n,o)};var Pn=\"1.0.9\";function be(n){return Object.assign(J,n),J}function cn(n){return console.warn(\"boxedProxy is deprecated, please use tosi() instead\"),be(n)}function jn(n,e=!1){if(e)return console.warn(\"xinProxy(..., true) is deprecated; use tosi(...) instead\"),cn(n);return Object.keys(n).forEach((o)=>{f[o]=n[o]}),f}var eo={};async function dn(n,e){let{type:o,styleSpec:i}=await e(n,{Color:a,Component:B,elements:m,svgElements:Bn,mathML:Hn,varDefault:sn,vars:On,xin:f,boxed:J,xinProxy:jn,boxedProxy:cn,makeComponent:dn,bind:g,on:P,version:Pn}),t={type:o,creator:o.elementCreator({tag:n,styleSpec:i})};return eo[n]=t,t}var Wn={},oo=(n)=>import(n);class an extends B{tag=\"anon-elt\";src=\"\";property=\"default\";loaded;blueprintLoaded=(n)=>{};async packaged(){let{tag:n,src:e,property:o}=this,i=`${n}.${o}:${e}`;if(!this.loaded){if(Wn[i]===void 0)Wn[i]=oo(e).then((t)=>{let s=t[o];return dn(n,s)});else console.log(`using cached ${n} with signature ${i}`);this.loaded=await Wn[i],this.blueprintLoaded(this.loaded)}return this.loaded}constructor(){super();this.initAttributes(\"tag\",\"src\",\"property\")}}var io=an.elementCreator({tag:\"xin-blueprint\",styleSpec:{\":host\":{display:\"none\"}}});class In extends B{allLoaded=()=>{};constructor(){super()}async load(){let e=Array.from(this.querySelectorAll(an.tagName)).filter((o)=>o.src).map((o)=>o.packaged());await Promise.all(e),this.allLoaded()}connectedCallback(){super.connectedCallback(),this.load()}}var to=In.elementCreator({tag:\"xin-loader\",styleSpec:{\":host\":{display:\"none\"}}});export{w as xinValue,jn as xinProxy,M as xinPath,f as xin,Pn as version,On as vars,sn as varDefault,Zn as updates,G as unobserve,Mn as touchElement,W as touch,be as tosi,en as throttle,Bn as svgElements,H as settings,P as on,Z as observe,Hn as mathML,dn as makeComponent,Qe as invertLuminance,qe as initVars,no as hotReload,mn as getListItem,Dn as getCssVar,m as elements,vn as debounce,_ as css,cn as boxedProxy,J as boxed,to as blueprintLoader,io as blueprint,tn as bindings,g as bind,Ue as StyleSheet,je as MoreMath,B as Component,a as Color,In as BlueprintLoader,an as Blueprint};\n\n//# debugId=DE5C1AD762F3244564756E2164756E21\n//# sourceMappingURL=module.js.map\n",
|
|
5
|
+
"var P={debug:!1,perf:!1};function S(e){if(e==null||typeof e!==\"object\")return e;if(e instanceof Set)return new Set(e);else if(Array.isArray(e))return e.map(S);let n={};for(let o in e){let t=e[o];if(e!=null&&typeof e===\"object\")n[o]=S(t);else n[o]=t}return n}var ue=\"-xin-data\",B=`.${ue}`,pe=\"-xin-event\",ye=`.${pe}`,b=\"xinPath\",$=\"xinValue\",Je=\"xinObserve\",Ge=\"xinBind\",qe=\"xinOn\",G=Symbol(\"list-binding\"),N=Symbol(\"list-instance\"),H=(e)=>{return e&&e[b]||void 0};function E(e){return typeof e===\"object\"&&e!==null?e[$]||e:e}var O=new WeakMap,L=new WeakMap;var z=(e)=>{let n=e.cloneNode();if(n instanceof Element){let o=L.get(e),t=O.get(e);if(o!=null)L.set(n,S(o));if(t!=null)O.set(n,S(t))}for(let o of Array.from(e instanceof HTMLTemplateElement?e.content.childNodes:e.childNodes))if(o instanceof Element||o instanceof DocumentFragment)n.appendChild(z(o));else n.appendChild(o.cloneNode());return n};var Qe=Symbol(\"observer should be removed\"),ee=[],ne=[],xe=!1,he,be;class Ze{description;test;callback;constructor(e,n){let o=typeof n===\"string\"?`\"${n}\"`:`function ${n.name}`,t;if(typeof e===\"string\")this.test=(r)=>typeof r===\"string\"&&r!==\"\"&&(e.startsWith(r)||r.startsWith(e)),t=`test = \"${e}\"`;else if(e instanceof RegExp)this.test=e.test.bind(e),t=`test = \"${e.toString()}\"`;else if(e instanceof Function)this.test=e,t=`test = function ${e.name}`;else throw Error(\"expect listener test to be a string, RegExp, or test function\");if(this.description=`${t}, ${o}`,typeof n===\"function\")this.callback=n;else throw Error(\"expect callback to be a path or function\");ee.push(this)}}var Ke=async()=>{if(he===void 0)return;await he},Cn=()=>{if(P.perf)console.time(\"xin async update\");let e=Array.from(ne);for(let n of e)ee.filter((o)=>{let t;try{t=o.test(n)}catch(r){throw Error(`Listener ${o.description} threw \"${r}\" at \"${n}\"`)}if(t===Qe)return q(o),!1;return t}).forEach((o)=>{let t;try{t=o.callback(n)}catch(r){console.error(`Listener ${o.description} threw \"${r}\" handling \"${n}\"`)}if(t===Qe)q(o)});if(ne.splice(0),xe=!1,typeof be===\"function\")be();if(P.perf)console.timeEnd(\"xin async update\")},Y=(e)=>{let n=typeof e===\"string\"?e:H(e);if(n===void 0)throw console.error(\"touch was called on an invalid target\",e),Error(\"touch was called on an invalid target\");if(xe===!1)he=new Promise((o)=>{be=o}),xe=setTimeout(Cn);if(ne.find((o)=>n.startsWith(o))==null)ne.push(n)},Ee=(e,n)=>{return new Ze(e,n)},q=(e)=>{let n=ee.indexOf(e);if(n>-1)ee.splice(n,1);else throw Error(\"unobserve failed, listener not found\")};var Xn=(e)=>{try{return JSON.stringify(e)}catch(n){return\"{has circular references}\"}},Te=(...e)=>Error(e.map(Xn).join(\" \"));var Mn=()=>new Date(parseInt(\"1000000000\",36)+Date.now()).valueOf().toString(36).slice(1),Sn=0,Ln=()=>(parseInt(\"10000\",36)+ ++Sn).toString(36).slice(-5),Hn=()=>Mn()+Ln(),we=Symbol(\"delete\"),Ne=Symbol(\"new-object\"),ge=Symbol(\"automatic-index\");function en(e){if(e===\"\")return[];if(Array.isArray(e))return e;else{let n=[];while(e.length>0){let o=e.search(/\\[[^\\]]+\\]/);if(o===-1){n.push(e.split(\".\"));break}else{let t=e.slice(0,o);if(e=e.slice(o),t!==\"\")n.push(t.split(\".\"));if(o=e.indexOf(\"]\")+1,n.push(e.slice(1,o-1)),e.slice(o,o+1)===\".\")o+=1;e=e.slice(o)}}return n}}var k=new WeakMap;function nn(e,n){if(k.get(e)===void 0)k.set(e,{});if(k.get(e)[n]===void 0)k.get(e)[n]={};let o=k.get(e)[n];if(n===\"_auto_\")e.forEach((t,r)=>{if(t[ge]===void 0)t[ge]=Hn();o[t[ge]+\"\"]=r});else e.forEach((t,r)=>{o[V(t,n)+\"\"]=r});return o}function kn(e,n){if(k.get(e)===void 0||k.get(e)[n]===void 0)return nn(e,n);else return k.get(e)[n]}function vn(e,n,o){o=o+\"\";let t=kn(e,n)[o];if(t===void 0||V(e[t],n)+\"\"!==o)t=nn(e,n)[o];return t}function Bn(e,n,o){if(e[n]===void 0&&o!==void 0)e[n]=o;return e[n]}function on(e,n,o,t){let r=n!==\"\"?vn(e,n,o):o;if(t===we)return e.splice(r,1),k.delete(e),Symbol(\"deleted\");else if(t===Ne){if(n===\"\"&&e[r]===void 0)e[r]={}}else if(t!==void 0)if(r!==void 0)e[r]=t;else if(n!==\"\"&&V(t,n)+\"\"===o+\"\")e.push(t),r=e.length-1;else throw Error(`byIdPath insert failed at [${n}=${o}]`);return e[r]}function Re(e){if(!Array.isArray(e))throw Te(\"setByPath failed: expected array, found\",e)}function _e(e){if(e==null||!(e instanceof Object))throw Te(\"setByPath failed: expected Object, found\",e)}function V(e,n){let o=en(n),t=e,r,s,i,c;for(r=0,s=o.length;t!==void 0&&r<s;r++){let l=o[r];if(Array.isArray(l))for(i=0,c=l.length;t!==void 0&&i<c;i++){let m=l[i];t=t[m]}else if(t.length===0){if(t=t[Number(l.slice(1))],l[0]!==\"=\")return}else if(l.includes(\"=\")){let[m,...u]=l.split(\"=\");t=on(t,m,u.join(\"=\"))}else i=parseInt(l,10),t=t[i]}return t}function tn(e,n,o){let t=e;if(n===\"\")throw Error(\"setByPath cannot be used to set the root object\");let r=en(n);while(t!=null&&r.length>0){let s=r.shift();if(typeof s===\"string\"){let i=s.indexOf(\"=\");if(i>-1){if(i===0)_e(t);else Re(t);let c=s.slice(0,i),l=s.slice(i+1);if(t=on(t,c,l,r.length>0?Ne:o),r.length===0)return!0}else{Re(t);let c=parseInt(s,10);if(r.length>0)t=t[c];else{if(o!==we){if(t[c]===o)return!1;t[c]=o}else t.splice(c,1);return!0}}}else if(Array.isArray(s)&&s.length>0){_e(t);while(s.length>0){let i=s.shift();if(s.length>0||r.length>0)t=Bn(t,i,s.length>0?{}:[]);else{if(o!==we){if(t[i]===o)return!1;t[i]=o}else{if(!Object.prototype.hasOwnProperty.call(t,i))return!1;delete t[i]}return!0}}}else throw Error(`setByPath failed, bad path ${n}`)}throw Error(`setByPath(${e}, ${n}, ${o}) failed`)}var Ce=(e,n)=>{let o=new Event(n);e.dispatchEvent(o)},sn=(e)=>{if(e instanceof HTMLInputElement)return e.type;else if(e instanceof HTMLSelectElement&&e.hasAttribute(\"multiple\"))return\"multi-select\";else return\"other\"},cn=(e,n)=>{switch(sn(e)){case\"radio\":e.checked=e.value===n;break;case\"checkbox\":e.checked=!!n;break;case\"date\":e.valueAsDate=new Date(n);break;case\"multi-select\":for(let o of Array.from(e.querySelectorAll(\"option\")))o.selected=n[o.value];break;default:e.value=n}},ln=(e)=>{switch(sn(e)){case\"radio\":{let n=e.parentElement?.querySelector(`[name=\"${e.name}\"]:checked`);return n!=null?n.value:null}case\"checkbox\":return e.checked;case\"date\":return e.valueAsDate?.toISOString();case\"multi-select\":return Array.from(e.querySelectorAll(\"option\")).reduce((n,o)=>{return n[o.value]=o.selected,n},{});default:return e.value}},{ResizeObserver:rn}=globalThis,Q=rn!=null?new rn((e)=>{for(let n of e){let o=n.target;Ce(o,\"resize\")}}):{observe(){},unobserve(){}},Xe=(e,n,o=!0)=>{if(e!=null&&n!=null)if(typeof n===\"string\")e.textContent=n;else if(Array.isArray(n))n.forEach((t)=>{e.append(t instanceof Node&&o?z(t):t)});else if(n instanceof Node)e.append(o?z(n):n);else throw Error(\"expect text content or document node\")};var Me=(e,n=250)=>{let o;return(...t)=>{if(o!==void 0)clearTimeout(o);o=setTimeout(()=>{e(...t)},n)}},oe=(e,n=250)=>{let o,t=Date.now()-n,r=!1;return(...s)=>{if(clearTimeout(o),o=setTimeout(()=>{e(...s),t=Date.now()},n),!r&&Date.now()-t>=n){r=!0;try{e(...s),t=Date.now()}finally{r=!1}}}};var Dn=16,Fn=100;function an(e,n){let o=Array.from(e.querySelectorAll(B));if(e.matches(B))o.unshift(e);for(let t of o){let r=L.get(t);for(let s of r){if(s.path.startsWith(\"^\"))s.path=`${n}${s.path.substring(1)}`;if(s.binding.toDOM!=null)s.binding.toDOM(t,d[s.path])}}}class mn{boundElement;listTop;listBottom;template;options;itemToElement;array=[];_update;_previousSlice;static filterBoundObservers=new WeakMap;constructor(e,n,o={}){if(this.boundElement=e,this.itemToElement=new WeakMap,e.children.length!==1)throw Error(\"ListBinding expects an element with exactly one child element\");if(e.children[0]instanceof HTMLTemplateElement){let t=e.children[0];if(t.content.children.length!==1)throw Error(\"ListBinding expects a template with exactly one child element\");this.template=z(t.content.children[0])}else this.template=e.children[0],this.template.remove();if(this.options=o,this.listTop=document.createElement(\"div\"),this.listBottom=document.createElement(\"div\"),this.listTop.classList.add(\"virtual-list-padding\"),this.listBottom.classList.add(\"virtual-list-padding\"),this.boundElement.append(this.listTop),this.boundElement.append(this.listBottom),o.virtual!=null)Q.observe(this.boundElement),this._update=oe(()=>{this.update(this.array,!0)},Dn),this.boundElement.addEventListener(\"scroll\",this._update),this.boundElement.addEventListener(\"resize\",this._update)}visibleSlice(){let{virtual:e,hiddenProp:n,visibleProp:o}=this.options,t=this.array;if(n!==void 0)t=t.filter((l)=>l[n]!==!0);if(o!==void 0)t=t.filter((l)=>l[o]===!0);if(this.options.filter&&this.needle!==void 0)t=this.options.filter(t,this.needle);let r=0,s=t.length-1,i=0,c=0;if(e!=null&&this.boundElement instanceof HTMLElement){let l=this.boundElement.offsetWidth,m=this.boundElement.offsetHeight;if(e.visibleColumns==null)e.visibleColumns=e.width!=null?Math.max(1,Math.floor(l/e.width)):1;let u=Math.ceil(m/e.height)+(e.rowChunkSize||1),C=Math.ceil(t.length/e.visibleColumns),X=e.visibleColumns*u,y=Math.floor(this.boundElement.scrollTop/e.height);if(y>C-u+1)y=Math.max(0,C-u+1);if(e.rowChunkSize)y-=y%e.rowChunkSize;r=y*e.visibleColumns,s=r+X-1,i=y*e.height,c=Math.max((C-u)*e.height-i,0)}return{items:t,firstItem:r,lastItem:s,topBuffer:i,bottomBuffer:c}}needle;filter=oe((e)=>{if(this.needle!==e)this.needle=e,this.update(this.array)},Fn);update(e,n){if(e==null)e=[];this.array=e;let{hiddenProp:o,visibleProp:t}=this.options,r=H(e),s=this.visibleSlice();this.boundElement.classList.toggle(\"-xin-empty-list\",s.items.length===0);let i=this._previousSlice,{firstItem:c,lastItem:l,topBuffer:m,bottomBuffer:u}=s;if(o===void 0&&t===void 0&&n===!0&&i!=null&&c===i.firstItem&&l===i.lastItem)return;this._previousSlice=s;let C=0,X=0,y=0;for(let p of Array.from(this.boundElement.children)){if(p===this.listTop||p===this.listBottom)continue;let M=p[N];if(M==null)p.remove();else{let h=s.items.indexOf(M);if(h<c||h>l)p.remove(),this.itemToElement.delete(M),C++}}this.listTop.style.height=String(m)+\"px\",this.listBottom.style.height=String(u)+\"px\";let x=[],{idPath:de}=this.options;for(let p=c;p<=l;p++){let M=s.items[p];if(M===void 0)continue;let h=this.itemToElement.get(E(M));if(h==null){if(y++,h=z(this.template),typeof M===\"object\")this.itemToElement.set(E(M),h),h[N]=E(M);if(this.boundElement.insertBefore(h,this.listBottom),de!=null){let fe=M[de],wn=`${r}[${de}=${fe}]`;an(h,wn)}else{let fe=`${r}[${p}]`;an(h,fe)}}x.push(h)}let _=null;for(let p of x){if(p.previousElementSibling!==_)if(X++,_?.nextElementSibling!=null)this.boundElement.insertBefore(p,_.nextElementSibling);else this.boundElement.insertBefore(p,this.listBottom);_=p}if(P.perf)console.log(r,\"updated\",{removed:C,created:y,moved:X})}}var te=(e,n,o)=>{let t=e[G];if(n&&t===void 0)t=new mn(e,n,o),e[G]=t;return t},Se=(e)=>{let n;while(!(n=e[N])&&e&&e.parentElement)e=e.parentElement;return n?{element:e,item:n}:void 0},Le=(e)=>{let n=Se(e);return n?n.item:void 0},Pn=(e)=>{let n=Se(e);if(!n)return console.error(\"deleteListItem failed, element is not part of a list instance\",e),!1;let o=te(n.element.parentElement);if(!o.options.idPath)return console.error(\"deleteListItem failed, list binding has no idPath\",e.parentElement,o),!1;let t=o.array.indexOf(n.item);if(t>-1)return o.array.splice(t,1),!0;return!1};var re={value:{toDOM:cn,fromDOM(e){return ln(e)}},text:{toDOM(e,n){e.textContent=n}},enabled:{toDOM(e,n){e.disabled=!n}},disabled:{toDOM(e,n){e.disabled=Boolean(n)}},list:{toDOM(e,n,o){te(e,n,o).update(n)}}};function T(e){return e.replace(/[A-Z]/g,(n)=>{return`-${n.toLocaleLowerCase()}`})}function dn(e){return e.replace(/-([a-z])/g,(n,o)=>{return o.toLocaleUpperCase()})}var On=180/Math.PI,$n=Math.PI/180;function g(e,n,o){return o<e?NaN:n<e?e:n>o?o:n}function v(e,n,o,t=!0){if(t)o=g(0,o,1);return o*(n-e)+e}var zn={RADIANS_TO_DEGREES:On,DEGREES_TO_RADIANS:$n,clamp:g,lerp:v};function He(e,n=document.body){let o=getComputedStyle(n);if(e.endsWith(\")\")&&e.startsWith(\"var(\"))e=e.slice(4,-1);return o.getPropertyValue(e).trim()}var An=(e,n,o)=>{return(0.299*e+0.587*n+0.114*o)/255},A=(e)=>(\"00\"+Math.round(Number(e)).toString(16)).slice(-2);class fn{h;s;l;constructor(e,n,o){e/=255,n/=255,o/=255;let t=Math.max(e,n,o),r=t-Math.min(e,n,o),s=r!==0?t===e?(n-o)/r:t===n?2+(o-e)/r:4+(e-n)/r:0;this.h=60*s<0?60*s+360:60*s,this.s=r!==0?t<=0.5?r/(2*t-r):r/(2-(2*t-r)):0,this.l=(2*t-r)/2}}var U=globalThis.document!==void 0?globalThis.document.createElement(\"span\"):void 0;class a{r;g;b;a;static fromVar(e,n=document.body){return a.fromCss(He(e,n))}static fromCss(e){let n=e;if(U instanceof HTMLSpanElement)U.style.color=\"black\",U.style.color=e,document.body.appendChild(U),n=getComputedStyle(U).color,U.remove();let[o,t,r,s]=n.match(/[\\d.]+/g)||[\"0\",\"0\",\"0\",\"0\"],i=n.startsWith(\"color(srgb\")?255:1;return new a(Number(o)*i,Number(t)*i,Number(r)*i,s==null?1:Number(s))}static fromHsl(e,n,o,t=1){let r,s,i;if(n===0)r=s=i=o;else{let l=(X,y,x)=>{if(x<0)x+=1;if(x>1)x-=1;if(x<0.16666666666666666)return X+(y-X)*6*x;if(x<0.5)return y;if(x<0.6666666666666666)return X+(y-X)*(0.6666666666666666-x)*6;return X},m=o<0.5?o*(1+n):o+n-o*n,u=2*o-m,C=(e%360+360)%360/360;r=l(u,m,C+0.3333333333333333),s=l(u,m,C),i=l(u,m,C-0.3333333333333333)}let c=new a(r*255,s*255,i*255,t);return c.hslCached={h:(e%360+360)%360,s:n,l:o},c}static black=new a(0,0,0);static white=new a(255,255,255);constructor(e,n,o,t=1){this.r=g(0,e,255),this.g=g(0,n,255),this.b=g(0,o,255),this.a=g(0,t,1)}get inverse(){return new a(255-this.r,255-this.g,255-this.b,this.a)}get inverseLuminance(){let{h:e,s:n,l:o}=this._hsl;return a.fromHsl(e,n,1-o,this.a)}get opaque(){return this.a===1?this:new a(this.r,this.g,this.b,1)}contrasting(e=1){return this.opaque.blend(this.brightness>0.5?a.black:a.white,e)}get rgb(){let{r:e,g:n,b:o}=this;return`rgb(${e.toFixed(0)},${n.toFixed(0)},${o.toFixed(0)})`}get rgba(){let{r:e,g:n,b:o,a:t}=this;return`rgba(${e.toFixed(0)},${n.toFixed(0)},${o.toFixed(0)},${t.toFixed(2)})`}get RGBA(){return[this.r/255,this.g/255,this.b/255,this.a]}get ARGB(){return[this.a,this.r/255,this.g/255,this.b/255]}hslCached;get _hsl(){if(this.hslCached==null)this.hslCached=new fn(this.r,this.g,this.b);return this.hslCached}get hsl(){let{h:e,s:n,l:o}=this._hsl;return`hsl(${e.toFixed(0)}deg ${(n*100).toFixed(0)}% ${(o*100).toFixed(0)}%)`}get hsla(){let{h:e,s:n,l:o}=this._hsl;return`hsl(${e.toFixed(0)}deg ${(n*100).toFixed(0)}% ${(o*100).toFixed(0)}% / ${(this.a*100).toFixed(0)}%)`}get mono(){let e=this.brightness*255;return new a(e,e,e)}get brightness(){return An(this.r,this.g,this.b)}get html(){return this.toString()}toString(){return this.a===1?\"#\"+A(this.r)+A(this.g)+A(this.b):\"#\"+A(this.r)+A(this.g)+A(this.b)+A(Math.floor(255*this.a))}brighten(e){let{h:n,s:o,l:t}=this._hsl,r=g(0,t+e*(1-t),1);return a.fromHsl(n,o,r,this.a)}darken(e){let{h:n,s:o,l:t}=this._hsl,r=g(0,t*(1-e),1);return a.fromHsl(n,o,r,this.a)}saturate(e){let{h:n,s:o,l:t}=this._hsl,r=g(0,o+e*(1-o),1);return a.fromHsl(n,r,t,this.a)}desaturate(e){let{h:n,s:o,l:t}=this._hsl,r=g(0,o*(1-e),1);return a.fromHsl(n,r,t,this.a)}rotate(e){let{h:n,s:o,l:t}=this._hsl,r=(n+360+e)%360;return a.fromHsl(r,o,t,this.a)}opacity(e){let{h:n,s:o,l:t}=this._hsl;return a.fromHsl(n,o,t,e)}swatch(){return console.log(`%c %c ${this.html}, ${this.rgba}`,`background-color: ${this.html}`,\"background-color: transparent\"),this}blend(e,n){return new a(v(this.r,e.r,n),v(this.g,e.g,n),v(this.b,e.b,n),v(this.a,e.a,n))}static blendHue(e,n,o){let t=(n-e+720)%360;if(t<180)return e+o*t;else return e-(360-t)*o}mix(e,n){let o=this._hsl,t=e._hsl;return a.fromHsl(o.s===0?t.h:t.s===0?o.h:a.blendHue(o.h,t.h,n),v(o.s,t.s,n),v(o.l,t.l,n),v(this.a,e.a,n))}colorMix(e,n){return a.fromCss(`color-mix(in hsl, ${this.html}, ${e.html} ${(n*100).toFixed(0)}%)`)}}function jn(e,n){let o=f.style(I(n));o.id=e,document.head.append(o)}var Wn=[\"animation-iteration-count\",\"flex\",\"flex-base\",\"flex-grow\",\"flex-shrink\",\"opacity\",\"order\",\"tab-size\",\"widows\",\"z-index\",\"zoom\"],ke=(e,n)=>{if(typeof n===\"number\"&&!Wn.includes(e))n=`${n}px`;if(e.startsWith(\"_\"))if(e.startsWith(\"__\"))e=\"--\"+e.substring(2),n=`var(${e}-default, ${n})`;else e=\"--\"+e.substring(1);return{prop:e,value:String(n)}},Yn=(e,n,o)=>{if(o===void 0)return\"\";if(o instanceof a)o=o.html;let t=ke(n,o);return`${e} ${t.prop}: ${t.value};`},un=(e,n,o=\"\")=>{let t=T(e);if(typeof n===\"object\"&&!(n instanceof a)){let r=Object.keys(n).map((s)=>un(s,n[s],`${o} `)).join(`\n`);return`${o} ${e} {\n${r}\n${o} }`}else return Yn(o,t,n)},I=(e,n=\"\")=>{return Object.keys(e).map((t)=>{let r=e[t];if(typeof r===\"string\"){if(t===\"@import\")return`@import url('${r}');`;throw Error(\"top-level string value only allowed for `@import`\")}let s=Object.keys(r).map((i)=>un(i,r[i])).join(`\n`);return`${n}${t} {\n${s}\n}`}).join(`\n\n`)},Vn=(e)=>{console.warn(\"initVars is deprecated. Just use _ and __ prefixes instead.\");let n={};for(let o of Object.keys(e)){let t=e[o],r=T(o);n[`--${r}`]=typeof t===\"number\"&&t!==0?String(t)+\"px\":t}return n},Un=(e)=>{let n={};for(let o of Object.keys(e)){let t=e[o];if(t instanceof a)n[o]=t.inverseLuminance;else if(typeof t===\"string\"&&t.match(/^(#[0-9a-fA-F]{3}|rgba?\\(|hsla?\\()/))n[o]=a.fromCss(t).inverseLuminance}return n},ie=new Proxy({},{get(e,n){if(e[n]===void 0){let o=\"--\"+T(n);e[n]=(t)=>`var(${o}, ${t})`}return e[n]}}),ve=new Proxy({},{get(e,n){if(n===\"default\")return ie;if(e[n]==null){n=T(n);let[,o,,t,r,s]=n.match(/^([-\\w]*?)((_)?(\\d+)(\\w?))?$/)||[\"\",n],i=`--${o}`;if(r!=null){let c=t==null?Number(r)/100:-Number(r)/100;switch(s){case\"b\":{let l=a.fromVar(i);e[n]=c>0?l.brighten(c).rgba:l.darken(-c).rgba}break;case\"s\":{let l=a.fromVar(i);e[n]=c>0?l.saturate(c).rgba:l.desaturate(-c).rgba}break;case\"h\":{let l=a.fromVar(i);e[n]=l.rotate(c*100).rgba}break;case\"o\":{let l=a.fromVar(i);e[n]=l.opacity(c).rgba}break;case\"\":e[n]=`calc(var(${i}) * ${c})`;break;default:throw console.error(s),Error(`Unrecognized method ${s} for css variable ${i}`)}}else e[n]=`var(${i})`}return e[n]}});var pn=\"http://www.w3.org/1998/Math/MathML\",yn=\"http://www.w3.org/2000/svg\";var se={},xn=(e,n,o)=>{let t=ke(T(n),o);if(t.prop.startsWith(\"--\"))e.style.setProperty(t.prop,t.value);else e.style[n]=t.value},In=(e)=>{return{toDOM(n,o){xn(n,e,o)}}},hn=(e,n,o)=>{if(n===\"style\")if(typeof o===\"object\")for(let t of Object.keys(o))if(H(o[t]))w(e,o[t],In(t));else xn(e,t,o[t]);else e.setAttribute(\"style\",o);else if(e[n]!==void 0){let{MathMLElement:t}=globalThis;if(e instanceof SVGElement||t!==void 0&&e instanceof t)e.setAttribute(n,o);else e[n]=o}else{let t=T(n);if(t===\"class\")o.split(\" \").forEach((r)=>{e.classList.add(r)});else if(e[t]!==void 0)e[t]=o;else if(typeof o===\"boolean\")o?e.setAttribute(t,\"\"):e.removeAttribute(t);else e.setAttribute(t,o)}},Jn=(e)=>{return{toDOM(n,o){hn(n,e,o)}}},Gn=(e,n,o)=>{if(n===\"apply\")o(e);else if(n.match(/^on[A-Z]/)!=null){let t=n.substring(2).toLowerCase();j(e,t,o)}else if(n===\"bind\")if((typeof o.binding===\"string\"?re[o.binding]:o.binding)!==void 0&&o.value!==void 0)w(e,o.value,o.binding instanceof Function?{toDOM:o.binding}:o.binding);else throw Error(\"bad binding\");else if(n.match(/^bind[A-Z]/)!=null){let t=n.substring(4,5).toLowerCase()+n.substring(5),r=re[t];if(r!==void 0)w(e,o,r);else throw Error(`${n} is not allowed, bindings.${t} is not defined`)}else if(H(o))w(e,o,Jn(n));else hn(e,n,o)},Be=(e,...n)=>{if(se[e]===void 0){let[r,s]=e.split(\"|\");if(s===void 0)se[e]=globalThis.document.createElement(r);else se[e]=globalThis.document.createElementNS(s,r)}let o=se[e].cloneNode(),t={};for(let r of n)if(r instanceof Element||r instanceof DocumentFragment||typeof r===\"string\"||typeof r===\"number\")if(o instanceof HTMLTemplateElement)o.content.append(r);else o.append(r);else if(H(r))o.append(f.span({bindText:r}));else Object.assign(t,r);for(let r of Object.keys(t)){let s=t[r];Gn(o,r,s)}return o},De=(...e)=>{let n=globalThis.document.createDocumentFragment();for(let o of e)n.append(o);return n},f=new Proxy({fragment:De},{get(e,n){if(n=n.replace(/[A-Z]/g,(o)=>`-${o.toLocaleLowerCase()}`),e[n]===void 0)e[n]=(...o)=>Be(n,...o);return e[n]},set(){throw Error(\"You may not add new properties to elements\")}}),Fe=new Proxy({fragment:De},{get(e,n){if(e[n]===void 0)e[n]=(...o)=>Be(`${n}|${yn}`,...o);return e[n]},set(){throw Error(\"You may not add new properties to elements\")}}),Pe=new Proxy({fragment:De},{get(e,n){if(e[n]===void 0)e[n]=(...o)=>Be(`${n}|${pn}`,...o);return e[n]},set(){throw Error(\"You may not add new properties to elements\")}});var qn=[\"sort\",\"splice\",\"copyWithin\",\"fill\",\"pop\",\"push\",\"reverse\",\"shift\",\"unshift\"],ze={},Qn=!0,Zn=/^\\.?([^.[\\](),])+(\\.[^.[\\](),]+|\\[\\d+\\]|\\[[^=[\\](),]*=[^[\\]()]+\\])*$/,Kn=(e)=>Zn.test(e),W=(e=\"\",n=\"\")=>{if(e===\"\")return n;else if(n.match(/^\\d+$/)!==null||n.includes(\"=\"))return`${e}[${n}]`;else return`${e}.${n}`},Rn={string(e){return new String(e)},boolean(e){return new Boolean(e)},bigint(e){return e},symbol(e){return e},number(e){return new Number(e)}},$e=Symbol(\"undefined\");function Oe(e,n){if(e===void 0||e===null)return new Proxy({[$e]:e===null?\"null\":\"undefined\"},D(n,!0));let o=typeof e;if(o===\"object\"||o===\"function\")return e;else return new Proxy(Rn[typeof e](e),D(n,!0))}var _n=()=>new Proxy({},D(\"^\",!0)),D=(e,n)=>({get(o,t){switch(t){case b:case\"tosiPath\":return e;case $:case\"tosiValue\":return o[$e]?o[$e]===\"null\"?null:void 0:o.valueOf?o.valueOf():o;case Je:case\"tosiObserve\":return(i)=>{let c=Ee(e,i);return()=>q(c)};case qe:case\"tosiOn\":return(i,c)=>j(i,c,E(o));case Ge:case\"tosiBind\":return(i,c,l)=>{w(i,e,c,l)};case\"tosiBinding\":return(i)=>({bind:{value:e,binding:i}});case\"tosiListBinding\":return(i=({span:l})=>l({bindText:\"^\"}),c={})=>[{bindList:{value:e,...c}},f.template(i(f,_n()))]}if(typeof t===\"symbol\")return o[t];let r=t,s=r.match(/^([^.[]+)\\.(.+)$/)??r.match(/^([^\\]]+)(\\[.+)/)??r.match(/^(\\[[^\\]]+\\])\\.(.+)$/)??r.match(/^(\\[[^\\]]+\\])\\[(.+)$/);if(s!==null){let[,i,c]=s,l=W(e,i),m=V(o,i);return m!==null&&typeof m===\"object\"?new Proxy(m,D(l,n))[c]:m}if(r.startsWith(\"[\")&&r.endsWith(\"]\"))r=r.substring(1,r.length-1);if(!Array.isArray(o)&&o[r]!==void 0||Array.isArray(o)&&r.includes(\"=\")){let i;if(r.includes(\"=\")){let[c,l]=r.split(\"=\");i=o.find((m)=>`${V(m,c)}`===l)}else i=o[r];if(i instanceof Object){let c=W(e,r);return new Proxy(i instanceof Function?i.bind(o):i,D(c,n))}else return n?Oe(i,W(e,r)):i}else if(Array.isArray(o)){let i=o[r];return typeof i===\"function\"?(...c)=>{let l=i.apply(o,c);if(qn.includes(r))Y(e);return l}:typeof i===\"object\"?new Proxy(i,D(W(e,r),n)):n?Oe(i,W(e,r)):i}else return n?Oe(o[r],W(e,r)):o[r]},set(o,t,r){r=E(r);let s=t!==$?W(e,t):e;if(Qn&&!Kn(s))throw Error(`setting invalid path ${s}`);if(E(d[s])!==r&&tn(ze,s,r))Y(s);return!0}}),Z=(e,n)=>{let o=typeof n===\"function\"?n:d[n];if(typeof o!==\"function\")throw Error(`observe expects a function or path to a function, ${n} is neither`);return Ee(e,o)},d=new Proxy(ze,D(\"\",!1)),J=new Proxy(ze,D(\"\",!0));var{document:K,MutationObserver:bn}=globalThis,Ae=(e,n)=>{let o=L.get(e);if(o==null)return;for(let t of o){let{binding:r,options:s}=t,{path:i}=t,{toDOM:c}=r;if(c!=null){if(i.startsWith(\"^\")){let l=Le(e);if(l!=null&&l[b]!=null)i=t.path=`${l[b]}${i.substring(1)}`;else throw console.error(`Cannot resolve relative binding ${i}`,e,\"is not part of a list\"),Error(`Cannot resolve relative binding ${i}`)}if(n==null||i.startsWith(n))c(e,d[i],s)}}};if(bn!=null)new bn((n)=>{n.forEach((o)=>{Array.from(o.addedNodes).forEach((t)=>{if(t instanceof Element)Array.from(t.querySelectorAll(B)).forEach((r)=>Ae(r))})})}).observe(K.body,{subtree:!0,childList:!0});Z(()=>!0,(e)=>{let n=Array.from(K.querySelectorAll(B));for(let o of n)Ae(o,e)});var En=(e)=>{let n=e.target.closest(B);while(n!=null){let o=L.get(n);for(let t of o){let{binding:r,path:s}=t,{fromDOM:i}=r;if(i!=null){let c;try{c=i(n,t.options)}catch(l){throw console.error(\"Cannot get value from\",n,\"via\",t),Error(\"Cannot obtain value fromDOM\")}if(c!=null){let l=d[s];if(l==null)d[s]=c;else{let m=l[b]!=null?l[$]:l,u=c[b]!=null?c[$]:c;if(m!==u)d[s]=u}}}}n=n.parentElement.closest(B)}};if(globalThis.document!=null)K.body.addEventListener(\"change\",En,!0),K.body.addEventListener(\"input\",En,!0);function w(e,n,o,t){if(e instanceof DocumentFragment)throw Error(\"bind cannot bind to a DocumentFragment\");let r;if(typeof n===\"object\"&&n[b]===void 0&&t===void 0){let{value:c}=n;r=typeof c===\"string\"?c:c[b],t=n,delete t.value}else r=typeof n===\"string\"?n:n[b];if(r==null)throw Error(\"bind requires a path or object with xin Proxy\");let{toDOM:s}=o;e.classList?.add(ue);let i=L.get(e);if(i==null)i=[],L.set(e,i);if(i.push({path:r,binding:o,options:t}),s!=null&&!r.startsWith(\"^\"))Y(r);if(t?.filter&&t?.needle)w(e,t.needle,{toDOM(c,l){console.log({needle:l}),c[G]?.filter(l)}});return e}var Tn=new Set,Nn=(e)=>{let n=e?.target.closest(ye),o=!1,t=new Proxy(e,{get(s,i){if(i===\"stopPropagation\")return()=>{e.stopPropagation(),o=!0};else{let c=s[i];return typeof c===\"function\"?c.bind(s):c}}}),r=new Set;while(!o&&n!=null){let i=O.get(n)[e.type]||r;for(let c of i){if(typeof c===\"function\")c(t);else{let l=d[c];if(typeof l===\"function\")l(t);else throw Error(`no event handler found at path ${c}`)}if(o)continue}n=n.parentElement!=null?n.parentElement.closest(ye):null}};function j(e,n,o){let t=O.get(e);if(e.classList.add(pe),t==null)t={},O.set(e,t);if(!t[n])t[n]=new Set;if(t[n].add(o),!Tn.has(n))Tn.add(n),K.body.addEventListener(n,Nn,!0);return()=>{t[n].delete(o)}}var eo=0;function je(){return`custom-elt${(eo++).toString(36)}`}var gn=0,R={};function no(e,n){let o=R[e],t=I(n).replace(/:host\\b/g,e);R[e]=o?o+`\n`+t:t}function oo(e){if(R[e])document.head.append(f.style({id:e+\"-component\"},R[e]));delete R[e]}class F extends HTMLElement{static elements=f;static _elementCreator;instanceId;styleNode;static styleSpec;static styleNode;content=f.slot();isSlotted;static _tagName=null;static get tagName(){return this._tagName}static StyleNode(e){return console.warn(\"StyleNode is deprecated, just assign static styleSpec: XinStyleSheet to the class directly\"),f.style(I(e))}static elementCreator(e={}){let n=this;if(n._elementCreator==null){let{tag:o,styleSpec:t}=e,r=e!=null?o:null;if(r==null)if(typeof n.name===\"string\"&&n.name!==\"\"){if(r=T(n.name),r.startsWith(\"-\"))r=r.slice(1)}else r=je();if(customElements.get(r)!=null)console.warn(`${r} is already defined`);if(r.match(/\\w+(-\\w+)+/)==null)console.warn(`${r} is not a legal tag for a custom-element`),r=je();while(customElements.get(r)!==void 0)r=je();if(n._tagName=r,t!==void 0)no(r,t);window.customElements.define(r,this,e),n._elementCreator=f[r]}return n._elementCreator}initAttributes(...e){let n={},o={};new MutationObserver((r)=>{let s=!1;if(r.forEach((i)=>{s=!!(i.attributeName&&e.includes(dn(i.attributeName)))}),s&&this.queueRender!==void 0)this.queueRender(!1)}).observe(this,{attributes:!0}),e.forEach((r)=>{n[r]=S(this[r]);let s=T(r);Object.defineProperty(this,r,{enumerable:!1,get(){if(typeof n[r]===\"boolean\")return this.hasAttribute(s);else if(this.hasAttribute(s))return typeof n[r]===\"number\"?parseFloat(this.getAttribute(s)):this.getAttribute(s);else if(o[r]!==void 0)return o[r];else return n[r]},set(i){if(typeof n[r]===\"boolean\"){if(i!==this[r]){if(i)this.setAttribute(s,\"\");else this.removeAttribute(s);this.queueRender()}}else if(typeof n[r]===\"number\"){if(i!==parseFloat(this[r]))this.setAttribute(s,i),this.queueRender()}else if(typeof i===\"object\"||`${i}`!==`${this[r]}`){if(i===null||i===void 0||typeof i===\"object\")this.removeAttribute(s);else this.setAttribute(s,i);this.queueRender(),o[r]=i}}})})}initValue(){let e=Object.getOwnPropertyDescriptor(this,\"value\");if(e===void 0||e.get!==void 0||e.set!==void 0)return;let n=this.hasAttribute(\"value\")?this.getAttribute(\"value\"):S(this.value);delete this.value,Object.defineProperty(this,\"value\",{enumerable:!1,get(){return n},set(o){if(n!==o)n=o,this.queueRender(!0)}})}_parts;get parts(){let e=this.shadowRoot!=null?this.shadowRoot:this;if(this._parts==null)this._parts=new Proxy({},{get(n,o){if(n[o]===void 0){let t=e.querySelector(`[part=\"${o}\"]`);if(t==null)t=e.querySelector(o);if(t==null)throw Error(`elementRef \"${o}\" does not exist!`);t.removeAttribute(\"data-ref\"),n[o]=t}return n[o]}});return this._parts}constructor(){super();gn+=1,this.initAttributes(\"hidden\"),this.instanceId=`${this.tagName.toLocaleLowerCase()}-${gn}`,this._value=S(this.defaultValue)}connectedCallback(){if(oo(this.constructor.tagName),this.hydrate(),this.role!=null)this.setAttribute(\"role\",this.role);if(this.onResize!==void 0){if(Q.observe(this),this._onResize==null)this._onResize=this.onResize.bind(this);this.addEventListener(\"resize\",this._onResize)}if(this.value!=null&&this.getAttribute(\"value\")!=null)this._value=this.getAttribute(\"value\");this.queueRender()}disconnectedCallback(){Q.unobserve(this)}_changeQueued=!1;_renderQueued=!1;queueRender(e=!1){if(!this._hydrated)return;if(!this._changeQueued)this._changeQueued=e;if(!this._renderQueued)this._renderQueued=!0,requestAnimationFrame(()=>{if(this._changeQueued)Ce(this,\"change\");this._changeQueued=!1,this._renderQueued=!1,this.render()})}_hydrated=!1;hydrate(){if(!this._hydrated){this.initValue();let e=typeof this.content!==\"function\",n=typeof this.content===\"function\"?this.content(f):this.content,{styleSpec:o}=this.constructor,{styleNode:t}=this.constructor;if(o)t=this.constructor.styleNode=f.style(I(o)),delete this.constructor.styleNode;if(this.styleNode)console.warn(this,\"styleNode is deprecrated, use static styleNode or statc styleSpec instead\"),t=this.styleNode;if(t){let r=this.attachShadow({mode:\"open\"});r.appendChild(t.cloneNode(!0)),Xe(r,n,e)}else if(n!==null){let r=Array.from(this.childNodes);Xe(this,n,e),this.isSlotted=this.querySelector(\"slot,xin-slot\")!==void 0;let s=Array.from(this.querySelectorAll(\"slot\"));if(s.length>0)s.forEach(We.replaceSlot);if(r.length>0){let i={\"\":this};Array.from(this.querySelectorAll(\"xin-slot\")).forEach((c)=>{i[c.name]=c}),r.forEach((c)=>{let l=i[\"\"],m=c instanceof Element?i[c.slot]:l;(m!==void 0?m:l).append(c)})}}this._hydrated=!0}}render(){}}class We extends F{name=\"\";content=null;static replaceSlot(e){let n=document.createElement(\"xin-slot\");if(e.name!==\"\")n.setAttribute(\"name\",e.name);e.replaceWith(n)}constructor(){super();this.initAttributes(\"name\")}}var xt=We.elementCreator({tag:\"xin-slot\"});var to=(e=()=>!0)=>{let n=localStorage.getItem(\"xin-state\");if(n!=null){let t=JSON.parse(n);for(let r of Object.keys(t).filter(e))if(d[r]!==void 0)Object.assign(d[r],t[r]);else d[r]=t[r]}let o=Me(()=>{let t={},r=E(d);for(let s of Object.keys(r).filter(e))t[s]=r[s];localStorage.setItem(\"xin-state\",JSON.stringify(t)),console.log(\"xin state saved to localStorage\")},500);Z(e,o)};var Ye=\"1.0.10\";function ce(e){return Object.assign(J,e),J}function le(e){return console.warn(\"boxedProxy is deprecated, please use tosi() instead\"),ce(e)}function Ve(e,n=!1){if(n)return console.warn(\"xinProxy(..., true) is deprecated; use tosi(...) instead\"),le(e);return Object.keys(e).forEach((o)=>{d[o]=e[o]}),d}var ro={};async function ae(e,n){let{type:o,styleSpec:t}=await n(e,{Color:a,Component:F,elements:f,svgElements:Fe,mathML:Pe,varDefault:ie,vars:ve,xin:d,boxed:J,xinProxy:Ve,boxedProxy:le,tosi:ce,makeComponent:ae,bind:w,on:j,version:Ye}),r={type:o,creator:o.elementCreator({tag:e,styleSpec:t})};return ro[e]=r,r}var Ue={},io=(e)=>import(e);class me extends F{tag=\"anon-elt\";src=\"\";property=\"default\";loaded;blueprintLoaded=(e)=>{};async packaged(){let{tag:e,src:n,property:o}=this,t=`${e}.${o}:${n}`;if(!this.loaded){if(Ue[t]===void 0)Ue[t]=io(n).then((r)=>{let s=r[o];return ae(e,s)});else console.log(`using cached ${e} with signature ${t}`);this.loaded=await Ue[t],this.blueprintLoaded(this.loaded)}return this.loaded}constructor(){super();this.initAttributes(\"tag\",\"src\",\"property\")}}var so=me.elementCreator({tag:\"xin-blueprint\",styleSpec:{\":host\":{display:\"none\"}}});class Ie extends F{allLoaded=()=>{};constructor(){super()}async load(){let n=Array.from(this.querySelectorAll(me.tagName)).filter((o)=>o.src).map((o)=>o.packaged());await Promise.all(n),this.allLoaded()}connectedCallback(){super.connectedCallback(),this.load()}}var co=Ie.elementCreator({tag:\"xin-loader\",styleSpec:{\":host\":{display:\"none\"}}});export{E as xinValue,Ve as xinProxy,H as xinPath,d as xin,Ye as version,ve as vars,ie as varDefault,Ke as updates,q as unobserve,Ae as touchElement,Y as touch,ce as tosi,oe as throttle,Fe as svgElements,P as settings,j as on,Z as observe,Pe as mathML,ae as makeComponent,Un as invertLuminance,Vn as initVars,to as hotReload,Le as getListItem,Se as getListInstance,te as getListBinding,He as getCssVar,f as elements,Pn as deleteListItem,Me as debounce,I as css,le as boxedProxy,J as boxed,co as blueprintLoader,so as blueprint,re as bindings,w as bind,jn as StyleSheet,zn as MoreMath,F as Component,a as Color,Ie as BlueprintLoader,me as Blueprint};\n\n//# debugId=D83C5C39D6BE877264756E2164756E21\n//# sourceMappingURL=module.js.map\n",
|
|
6
6
|
"/*#\n# ab-test\n\n`<xin-ab>` provides a simple method for implementing A|B-testing.\n\n```js\nimport { AbTest } from 'tosijs-ui'\n\nfunction randomize() {\n const conditions = {\n testA: Math.random() < 0.5,\n testB: Math.random() < 0.5,\n testC: Math.random() < 0.5\n }\n\n AbTest.conditions = conditions\n\n preview.querySelector('pre').innerText = JSON.stringify(conditions, null, 2)\n}\n\npreview.querySelector('.randomize-conditions').addEventListener('click', randomize)\n\nrandomize()\n```\n```html\n<div style=\"display: flex; gap: 10px; align-items: center;\">\n <div style=\"display: flex; flex-direction: column; gap: 10px;\">\n <xin-ab class=\"a\" condition=\"testA\">\n <p>testA</p>\n </xin-ab>\n <xin-ab class=\"not-a\" not condition=\"testA\">\n <p>not testA</p>\n </xin-ab>\n <xin-ab class=\"b\" condition=\"testB\">\n <p>testB</p>\n </xin-ab>\n <xin-ab class=\"not-b\" not condition=\"testB\">\n <p>not testB</p>\n </xin-ab>\n <xin-ab class=\"c\" condition=\"testC\">\n <p>testC</p>\n </xin-ab>\n <xin-ab class=\"not-c\" not condition=\"testC\">\n <p>not testC</p>\n </xin-ab>\n </div>\n <pre>\n </pre>\n</div>\n<button class=\"randomize-conditions\">Randomize</button>\n```\n```css\n.preview {\n display: flex;\n flex-direction: column;\n gap: 4px;\n align-items: flex-start;\n}\n.preview p {\n background: #44c;\n color: white;\n display: block;\n border-radius: 99px;\n padding: 4px 10px;\n margin: 0;\n}\n\n.preview xin-ab[not] p {\n background: red;\n}\n```\n\n- Set `AbTest.conditions` to anything you like.\n- Use `<xin-ab>` elements to display conditional content.\n- `condition` attribute determines which value in `AbTest.conditions` controls the element\n- `not` reverses the condition (so `<xin-ab not condition=\"foo\">` will be visible if `conditions.foo` is `false`)\n*/\n\nimport { Component } from 'tosijs'\n\nconst abTestConditions = {} as { [key: string]: any }\n\nexport class AbTest extends Component {\n static set conditions(context: { [key: string]: any }) {\n Object.assign(abTestConditions, context)\n\n for (const abTest of [...AbTest.instances]) {\n abTest.queueRender()\n }\n }\n\n condition = ''\n\n not = false\n\n static instances: Set<AbTest> = new Set()\n\n constructor() {\n super()\n this.initAttributes('condition', 'not')\n }\n\n connectedCallback() {\n super.connectedCallback()\n AbTest.instances.add(this)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n AbTest.instances.delete(this)\n }\n\n render(): void {\n if (\n this.condition !== '' &&\n (this.not\n ? (abTestConditions[this.condition]) !== true\n : (abTestConditions[this.condition]) === true)\n ) {\n this.toggleAttribute('hidden', false)\n } else {\n this.toggleAttribute('hidden', true)\n }\n }\n}\n\nexport const abTest = AbTest.elementCreator({ tag: 'xin-ab' })\n",
|
|
7
7
|
"/*#\n# scriptTag & styleSheet\n\n## scriptTag\n\nIf you need to load an old school (cjs) javascript or css library via cdn then use these two functions.\n\n`tosijs-ui` uses this library to implement the `<xin-code>`, `<xin-lottie>`, and `<xin-map>`\nelements.\n\n`scriptTag()` and `styleSheet()` return promises that resolve `globalThis` when the module in question\nhas loaded and otherwise behave as much like `import()` as possible.\n\nThis example uses `scriptTag` and `styleSheet` to load [quilljs](https://quilljs.com) on-the-fly.\n\n```js\nimport { elements } from 'tosijs'\nimport { scriptTag, styleSheet } from 'tosijs-ui'\n\nconst toolbarOptions = [\n [{ header: [1, 2, 3, 4, false] }],\n ['blockquote', 'code-block'],\n [{ 'align': [] }],\n ['bold', 'italic', 'strike'],\n ['link', 'image', 'video'],\n [{ 'list': 'ordered'}, { 'list': 'bullet' }, { 'list': 'check' }],\n [{ 'indent': '-1'}, { 'indent': '+1' }],\n ['clean']\n]\n\n;(async () => {\n await Promise.all([\n styleSheet('https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.core.css'),\n styleSheet('https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css'),\n ])\n\n const container = elements.div()\n const { Quill } = await scriptTag('https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js')\n preview.append(container)\n\n const quill = new Quill(container, {\n debug: 'info',\n modules: {\n toolbar: toolbarOptions,\n },\n theme: 'snow',\n })\n})()\n```\n\nNote that `scriptTag` will resolve `globalThis` so it behaves as much like async `import()`\nas possible.\n\nAs an aside:\n\n`<xin-lottie>` is implemented in such a way that if you've preloaded the module\n(e.g. via a script tag or packaging) it won't load it again, which affords offline\nuse.\n\nThere's no point for `<xin-map>` since it won't work without connectivity anyway.\n\n## styleSheet\n\nstyleSheet creates a `<link>` tag for a specified css file.\n\nUsing `styleSheet`:\n\n styleSheet('../path/to/style.css')\n\nThis is awaitable, if you care. The stylesheet `<link>` will only be inserted _once_.\n*/\n\nimport { elements } from 'tosijs'\n\ninterface PromiseMap {\n [key: string]: Promise<any>\n}\n\nconst loadedScripts: PromiseMap = {}\nexport function scriptTag(\n src: string,\n existingSymbolName?: string\n): Promise<any> {\n if (loadedScripts[src] === undefined) {\n if (existingSymbolName !== undefined) {\n // @ts-ignore-error aaaargh\n const existing = globalThis[existingSymbolName]\n loadedScripts[src] = Promise.resolve({ [existingSymbolName]: existing })\n }\n\n const scriptElt = elements.script({ src })\n\n document.head.append(scriptElt)\n\n loadedScripts[src] = new Promise((resolve) => {\n scriptElt.onload = () => resolve(globalThis)\n })\n }\n\n return loadedScripts[src]\n}\n\nconst loadedStyleSheets: PromiseMap = {}\nexport function styleSheet(href: string): Promise<void> {\n if (loadedStyleSheets[href] === undefined) {\n const linkElement = elements.link({\n rel: 'stylesheet',\n type: 'text/css',\n href,\n })\n\n document.head.append(linkElement)\n\n loadedStyleSheets[href] = new Promise((resolve) => {\n linkElement.onload = resolve\n })\n }\n return loadedStyleSheets[href]\n}\n",
|
|
8
8
|
"interface IconData { [key: string]: string }\n\nexport default {\n earth: \"<svg class=\\\"color\\\" viewBox=\\\"0 0 48 48\\\"><g><g><g><path style=\\\"fill:#a3d9ff;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M7,13.46 C5.10,16.52,4,20.13,4,24 C4,31.81,8.47,38.57,15,41.87 C15,41.87,15,31,15,31 C15,31,9,29,9,29 C9,29,9,19,9,19 C9,19,7,15,7,15 C7,15,7,13.46,7,13.46 z\\\"/><path style=\\\"fill:#a3d9ff;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M18.40,4.79 C20.18,4.28,22.06,4,24,4 C27.57,4,30.92,4.93,33.82,6.57 C33.82,6.57,29,13,29,13 C29,13,31,19,31,19 C31,19,37,21,37,21 C37,21,39,29,39,29 C39,29,37.35,38.89,37.35,38.89 C33.81,42.07,29.13,44,24,44 C21.03,44,18.22,43.35,15.69,42.20 C15.69,42.20,27,29,27,29 C27,29,27,25,27,25 C27,25,21,23,21,23 C21,23,15,19,15,19 C15,19,11,19,11,19 C11,19,11,13,11,13 C11,13,13,11,13,11 C13,11,15,15,15,15 C15,15,17,15,17,15 C17,15,17,9,17,9 C17,9,18.40,4.79,18.40,4.79 z\\\"/><path style=\\\"fill:#274e42;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M18.40,4.79 C18.40,4.79,17,9,17,9 C17,9,17,15,17,15 C17,15,15,15,15,15 C15,15,13,11,13,11 C13,11,11,13,11,13 C11,13,11,19,11,19 C11,19,15,19,15,19 C15,19,21,23,21,23 C21,23,27,25,27,25 C27,25,27,29,27,29 C27,29,15.69,42.20,15.69,42.20 C15.46,42.09,15.23,41.98,15,41.87 C15,41.87,15,31,15,31 C15,31,9,29,9,29 C9,29,9,19,9,19 C9,19,7,15,7,15 C7,15,7,13.46,7,13.46 C9.57,9.32,13.62,6.19,18.40,4.79 z\\\"/><path style=\\\"fill:#274e42;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M33.82,6.57 C33.82,6.57,29,13,29,13 C29,13,31,19,31,19 C31,19,37,21,37,21 C37,21,39,29,39,29 C39,29,37.35,38.89,37.35,38.89 C41.43,35.23,44,29.91,44,24 C44,16.52,39.90,10.00,33.82,6.57 z\\\"/></g></g></g></svg> \",\n blueprint: \"<svg class=\\\"color\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M10.5,14.5 C10.5,14.5,7.5,15.5,7.5,17.5 C7.5,19.5,10.5,19.5,10.5,19.5\\\"/><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M18.50,14.5 C18.50,14.5,21.50,15.5,21.50,17.5 C21.50,19.5,18.50,19.5,18.50,19.5\\\"/><path style=\\\"fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M7,5.09 C7,3.94,7.90,3,9,3 C9,3,20,3,20,3 C21.10,3,22,3.94,22,5.09 C22,5.09,22,12.41,22,12.41 C22,13.56,21.10,14.5,20,14.5 C20,14.5,9,14.5,9,14.5 C7.90,14.5,7,13.56,7,12.41 C7,12.41,7,5.09,7,5.09 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M14.5,5.5 C14.5,5.5,14.5,11.5,14.5,11.5\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M16.5,7.5 C16.5,7.5,16.5,8.5,16.5,8.5\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M12.5,7.5 C12.5,7.5,12.5,8.5,12.5,8.5\\\"/><g/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M18.5,21.5 C18.5,21.5,17.5,20.5,17.5,20.5 C17.5,20.5,16.5,21.5,16.5,21.5\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M12.5,21.5 C12.5,21.5,11.5,20.5,11.5,20.5 C11.5,20.5,10.5,21.5,10.5,21.5\\\"/><path style=\\\"fill:#e4e4e4;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M10.5,14.5 C10.5,14.5,18.5,14.5,18.5,14.5 C18.5,14.5,18.5,19.5,18.5,19.5 C18.5,19.5,10.5,19.5,10.5,19.5 C10.5,19.5,10.5,14.5,10.5,14.5 z\\\"/><g><g><path style=\\\"fill:#5e78ca;fill-rule:nonzero;stroke:#f2f2f2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M14,16.5 C14,16.5,16,16.5,16,16.5 C16,16.5,14.53,19.5,14.53,19.5\\\"/><path style=\\\"fill:#5e78ca;fill-rule:evenodd;stroke:none;\\\" d=\\\"M3.59,8.5 C3.59,8.5,12.59,8.5,12.59,8.5 C12.59,8.5,14.53,19.5,14.53,19.5 C14.53,19.5,5.53,19.5,5.53,19.5 C5.53,19.5,3.59,8.5,3.59,8.5 z\\\"/><path style=\\\"fill:#5e78ca;fill-rule:nonzero;stroke:#f2f2f2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M12.59,8.5 C12.59,8.5,11.12,11.5,11.12,11.5 C11.12,11.5,2.12,11.5,2.12,11.5 C2.12,11.5,3.59,8.5,3.59,8.5\\\"/><path style=\\\"fill:#5e78ca;fill-rule:nonzero;stroke:#f2f2f2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M12.59,8.5 C12.59,8.5,14.53,19.5,14.53,19.5\\\"/><path style=\\\"fill:#5e78ca;fill-rule:nonzero;stroke:#f2f2f2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M4.12,11.5 C4.12,11.5,5.53,19.5,5.53,19.5\\\"/></g><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M9.24,12.5 C10.75,12.5,12.20,13.73,12.46,15.24 C12.46,15.24,12.46,15.24,12.46,15.24 C12.68,16.49,11.85,17.5,10.60,17.5 C10.60,17.5,10.55,17.5,10.55,17.5 C10.17,17.5,9.92,17.81,9.98,18.19 C9.98,18.19,9.98,18.19,9.98,18.19 C10.21,19.47,9.36,20.5,8.08,20.5 C8.08,20.5,6.39,20.5,6.39,20.5 C5.10,20.5,3.87,19.45,3.64,18.16 C3.64,18.16,3.12,15.21,3.12,15.21 C2.86,13.71,3.86,12.5,5.35,12.5 C5.35,12.5,9.24,12.5,9.24,12.5 z\\\"/></g></g></svg> \",\n tosiXr: \"<svg class=\\\"color\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M8.00,14.25 C8.00,14.25,5.00,15.25,5.00,17.25 C5.00,19.25,8.00,19.25,8.00,19.25\\\"/><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M16.00,14.25 C16.00,14.25,19.00,15.25,19.00,17.25 C19.00,19.25,16.00,19.25,16.00,19.25\\\"/><path style=\\\"fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M4.50,4.85 C4.50,3.69,5.40,2.75,6.50,2.75 C6.50,2.75,17.50,2.75,17.50,2.75 C18.61,2.75,19.50,3.69,19.50,4.85 C19.50,4.85,19.50,12.16,19.50,12.16 C19.50,13.32,18.61,14.25,17.50,14.25 C17.50,14.25,6.50,14.25,6.50,14.25 C5.40,14.25,4.50,13.32,4.50,12.16 C4.50,12.16,4.50,4.85,4.50,4.85 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M12.00,5.25 C12.00,5.25,12.00,11.25,12.00,11.25\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M14.00,7.25 C14.00,7.25,14.00,8.25,14.00,8.25\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M10.00,7.25 C10.00,7.25,10.00,8.25,10.00,8.25\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M16.00,21.25 C16.00,21.25,15.00,20.25,15.00,20.25 C15.00,20.25,14.00,21.25,14.00,21.25\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M10.00,21.25 C10.00,21.25,9.00,20.25,9.00,20.25 C9.00,20.25,8.00,21.25,8.00,21.25\\\"/><path style=\\\"fill:#e4e4e4;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M8.00,14.25 C8.00,14.25,16.00,14.25,16.00,14.25 C16.00,14.25,16.00,19.25,16.00,19.25 C16.00,19.25,8.00,19.25,8.00,19.25 C8.00,19.25,8.00,14.25,8.00,14.25 z\\\"/><path style=\\\"fill:#ff7bac;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M12.00,4.00 C12.00,4,11.99,4,11.99,4 C6.19,4,3,4.73,3,8.50 C3,11.39,4.66,13.00,7.27,13 C9.88,13.00,10.68,11.13,11.99,11.13 C11.99,11.13,12.00,11.13,12,11.13 C12.00,11.13,12.01,11.13,12.01,11.13 C13.32,11.13,14.12,13.00,16.73,13 C19.34,13.00,21,11.39,21,8.50 C21,4.73,17.81,4,12.01,4 C12.01,4,12.00,4,12.00,4.00 C12.00,4.00,12.00,4.00,12.00,4.00 z\\\"/></g></svg> \",\n cmy: \"<svg class=\\\"color filled\\\" viewBox=\\\"0 0 24 24\\\"><g><g><path style=\\\"fill:#00ff00;fill-rule:evenodd;\\\" d=\\\"M12.00,10.88 C10.90,10.01,9.51,9.5,8.00,9.5 C7.22,9.5,6.47,9.64,5.78,9.89 C6.37,11.85,7.87,13.42,9.78,14.11 C10.17,12.81,10.96,11.69,12.00,10.88 z\\\"/><path style=\\\"fill:#0000ff;fill-rule:evenodd;\\\" d=\\\"M12.00,10.88 C13.10,10.01,14.49,9.5,16,9.5 C16.78,9.5,17.53,9.64,18.22,9.89 C17.63,11.85,16.13,13.42,14.22,14.11 C13.83,12.81,13.04,11.69,12.00,10.88 C12.00,10.88,12.00,10.88,12.00,10.88 z\\\"/><path style=\\\"fill:#000000;fill-rule:evenodd;\\\" d=\\\"M9.78,14.11 C10.17,12.81,10.96,11.69,12.00,10.88 C13.04,11.69,13.83,12.81,14.22,14.11 C13.53,14.36,12.78,14.5,12,14.5 C11.22,14.5,10.47,14.36,9.78,14.11 C9.78,14.11,9.78,14.11,9.78,14.11 z\\\"/><path style=\\\"fill:#ff0000;fill-rule:evenodd;\\\" d=\\\"M9.78,14.11 C9.60,14.71,9.5,15.34,9.5,16 C9.5,18.08,10.48,19.93,12.00,21.12 C13.52,19.93,14.50,18.08,14.50,16 C14.50,15.34,14.40,14.71,14.22,14.11 C13.53,14.36,12.78,14.5,12,14.5 C11.22,14.5,10.47,14.36,9.78,14.11 C9.78,14.11,9.78,14.11,9.78,14.11 z\\\"/><path style=\\\"fill:#02fefe;fill-rule:evenodd;\\\" d=\\\"M5.78,9.89 C5.60,9.29,5.5,8.66,5.5,8 C5.5,4.41,8.41,1.5,12,1.5 C15.59,1.5,18.5,4.41,18.5,8 C18.5,8.66,18.40,9.29,18.22,9.89 C17.53,9.64,16.78,9.5,16,9.5 C14.49,9.5,13.10,10.01,12.00,10.88 C10.90,10.01,9.51,9.5,8.00,9.5 C7.22,9.5,6.47,9.64,5.78,9.89 C5.78,9.89,5.78,9.89,5.78,9.89 z\\\"/><path style=\\\"fill:#fffe00;fill-rule:evenodd;\\\" d=\\\"M5.78,9.89 C3.28,10.80,1.50,13.19,1.50,16 C1.50,19.59,4.41,22.5,8.00,22.5 C9.51,22.5,10.90,21.99,12.00,21.12 C10.48,19.93,9.5,18.08,9.5,16 C9.5,15.34,9.60,14.71,9.78,14.11 C7.87,13.42,6.37,11.85,5.78,9.89 C5.78,9.89,5.78,9.89,5.78,9.89 z\\\"/><path style=\\\"fill:#ff00ff;fill-rule:evenodd;\\\" d=\\\"M18.22,9.89 C20.72,10.80,22.5,13.19,22.5,16 C22.5,19.59,19.59,22.5,16,22.5 C14.49,22.5,13.10,21.99,12.00,21.12 C13.52,19.93,14.50,18.08,14.50,16 C14.50,15.34,14.40,14.71,14.22,14.11 C16.13,13.42,17.63,11.85,18.22,9.89 z\\\"/></g></g></svg> \",\n rgb: \"<svg class=\\\"color filled\\\" viewBox=\\\"0 0 24 24\\\"><g><g><path style=\\\"fill:#ff00ff;fill-rule:evenodd;\\\" d=\\\"M12.00,10.88 C10.90,10.01,9.51,9.5,8.00,9.5 C7.22,9.5,6.47,9.64,5.78,9.89 C6.37,11.85,7.87,13.42,9.78,14.11 C10.17,12.81,10.96,11.69,12.00,10.88 z\\\"/><path style=\\\"fill:#ffff00;fill-rule:evenodd;\\\" d=\\\"M12.00,10.88 C13.10,10.01,14.49,9.5,16,9.5 C16.78,9.5,17.53,9.64,18.22,9.89 C17.63,11.85,16.13,13.42,14.22,14.11 C13.83,12.81,13.04,11.69,12.00,10.88 C12.00,10.88,12.00,10.88,12.00,10.88 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:evenodd;\\\" d=\\\"M9.78,14.11 C10.17,12.81,10.96,11.69,12.00,10.88 C13.04,11.69,13.83,12.81,14.22,14.11 C13.53,14.36,12.78,14.5,12,14.5 C11.22,14.5,10.47,14.36,9.78,14.11 C9.78,14.11,9.78,14.11,9.78,14.11 z\\\"/><path style=\\\"fill:#00ffff;fill-rule:evenodd;\\\" d=\\\"M9.78,14.11 C9.60,14.71,9.5,15.34,9.5,16 C9.5,18.08,10.48,19.93,12.00,21.12 C13.52,19.93,14.50,18.08,14.50,16 C14.50,15.34,14.40,14.71,14.22,14.11 C13.53,14.36,12.78,14.5,12,14.5 C11.22,14.5,10.47,14.36,9.78,14.11 C9.78,14.11,9.78,14.11,9.78,14.11 z\\\"/><path style=\\\"fill:#ff0000;fill-rule:evenodd;\\\" d=\\\"M5.78,9.89 C5.60,9.29,5.5,8.66,5.5,8 C5.5,4.41,8.41,1.5,12,1.5 C15.59,1.5,18.5,4.41,18.5,8 C18.5,8.66,18.40,9.29,18.22,9.89 C17.53,9.64,16.78,9.5,16,9.5 C14.49,9.5,13.10,10.01,12.00,10.88 C10.90,10.01,9.51,9.5,8.00,9.5 C7.22,9.5,6.47,9.64,5.78,9.89 C5.78,9.89,5.78,9.89,5.78,9.89 z\\\"/><path style=\\\"fill:#0000ff;fill-rule:evenodd;\\\" d=\\\"M5.78,9.89 C3.28,10.80,1.50,13.19,1.50,16 C1.50,19.59,4.41,22.5,8.00,22.5 C9.51,22.5,10.90,21.99,12.00,21.12 C10.48,19.93,9.5,18.08,9.5,16 C9.5,15.34,9.60,14.71,9.78,14.11 C7.87,13.42,6.37,11.85,5.78,9.89 C5.78,9.89,5.78,9.89,5.78,9.89 z\\\"/><path style=\\\"fill:#00ff00;fill-rule:evenodd;\\\" d=\\\"M18.22,9.89 C20.72,10.80,22.5,13.19,22.5,16 C22.5,19.59,19.59,22.5,16,22.5 C14.49,22.5,13.10,21.99,12.00,21.12 C13.52,19.93,14.50,18.08,14.50,16 C14.50,15.34,14.40,14.71,14.22,14.11 C16.13,13.42,17.63,11.85,18.22,9.89 z\\\"/></g></g></svg> \",\n xrColor: \"<svg class=\\\"color filled\\\" viewBox=\\\"0 0 40 24\\\"><g><g><g><path style=\\\"fill:#000000;fill-rule:evenodd;\\\" d=\\\"M20.00,2.00 C19.99,2.00,19.98,2,19.98,2 C8.39,2,2,3.61,2,12.00 C2,18.41,5.32,22.00,10.54,22 C15.77,22.00,17.37,17.85,19.98,17.85 C19.98,17.85,19.99,17.85,20,17.85 C20.01,17.85,20.02,17.85,20.02,17.85 C22.63,17.85,24.23,22.00,29.46,22 C34.68,22.00,38,18.41,38,12.00 C38,3.61,31.61,2,20.02,2 C20.02,2,20.01,2.00,20.00,2.00 C20.00,2.00,20.00,2.00,20.00,2.00 z\\\"/></g><path style=\\\"fill:#fbed21;fill-rule:evenodd;\\\" d=\\\"M12.20,19.84 C15.79,19.39,17.07,16.46,19.07,16.46 C19.07,16.46,19.08,16.46,19.09,16.46 C19.09,16.46,19.10,16.46,19.11,16.46 C19.44,16.46,19.75,16.54,20.06,16.68 C20.37,16.54,20.68,16.46,21.01,16.46 C21.02,16.46,21.02,16.46,21.03,16.46 C21.04,16.46,21.04,16.46,21.05,16.46 C23.05,16.46,24.33,19.39,27.92,19.84 C31.66,19.40,33.98,16.50,33.98,11.62 C33.98,4.91,29.04,3.44,20.06,3.35 C11.07,3.44,6.14,4.91,6.14,11.62 C6.14,16.50,8.46,19.40,12.20,19.84 z\\\"/><path style=\\\"fill:#8cc63f;fill-rule:evenodd;\\\" d=\\\"M12.20,19.84 C12.52,19.87,12.86,19.89,13.21,19.89 C16.86,19.89,18.37,17.43,20.06,16.68 C19.75,16.54,19.44,16.46,19.11,16.46 C19.10,16.46,19.09,16.46,19.09,16.46 C19.08,16.46,19.07,16.46,19.07,16.46 C17.07,16.46,15.79,19.39,12.20,19.84 z\\\"/><path style=\\\"fill:#8cc63f;fill-rule:evenodd;\\\" d=\\\"M20.06,3.35 C20.37,3.35,20.69,3.35,21.01,3.35 C21.02,3.35,21.02,3.35,21.03,3.35 C21.03,3.35,21.03,3.35,21.03,3.35 C21.04,3.35,21.04,3.35,21.05,3.35 C30.64,3.35,35.92,4.68,35.92,11.62 C35.92,16.92,33.18,19.89,28.86,19.89 C28.53,19.89,28.22,19.87,27.92,19.84 C31.66,19.40,33.98,16.50,33.98,11.62 C33.98,4.91,29.04,3.44,20.06,3.35 C20.06,3.35,20.06,3.35,20.06,3.35 z\\\"/><path style=\\\"fill:#ff1c23;fill-rule:evenodd;\\\" d=\\\"M20.06,16.68 C21.74,17.43,23.25,19.89,26.91,19.89 C27.26,19.89,27.59,19.87,27.92,19.84 C24.33,19.39,23.05,16.46,21.05,16.46 C21.04,16.46,21.04,16.46,21.03,16.46 C21.02,16.46,21.02,16.46,21.01,16.46 C20.68,16.46,20.37,16.54,20.06,16.68 z\\\"/><path style=\\\"fill:#ff1c23;fill-rule:evenodd;\\\" d=\\\"M12.20,19.84 C11.90,19.87,11.59,19.89,11.26,19.89 C6.94,19.89,4.19,16.92,4.19,11.62 C4.19,4.68,9.48,3.35,19.07,3.35 C19.07,3.35,19.08,3.35,19.09,3.35 C19.09,3.35,19.09,3.35,19.09,3.35 C19.09,3.35,19.1,3.35,19.11,3.35 C19.43,3.35,19.75,3.35,20.06,3.35 C11.07,3.44,6.14,4.91,6.14,11.62 C6.14,16.50,8.46,19.40,12.20,19.84 z\\\"/></g><g><path style=\\\"fill:#8cc63e;fill-rule:nonzero;\\\" d=\\\"M22.55,8.63 C22.55,9.05,22.55,9.46,22.55,9.88 C22.54,10.25,22.85,10.56,23.20,10.55 C23.54,10.56,23.85,10.25,23.85,9.88 C23.85,9.46,23.85,9.05,23.85,8.63 C23.85,8.26,23.54,7.95,23.20,7.96 C22.85,7.95,22.54,8.26,22.55,8.63 z\\\"/><path style=\\\"fill:#8cc63e;fill-rule:nonzero;\\\" d=\\\"M17.32,8.63 C17.32,9.05,17.32,9.46,17.32,9.88 C17.31,10.25,17.62,10.56,17.97,10.55 C18.31,10.56,18.62,10.25,18.62,9.88 C18.62,9.46,18.62,9.05,18.62,8.63 C18.62,8.26,18.31,7.95,17.97,7.96 C17.62,7.95,17.31,8.26,17.32,8.63 z\\\"/><path style=\\\"fill:#8cc63e;fill-rule:nonzero;\\\" d=\\\"M19.99,4.39 C19.99,8.09,19.99,11.80,19.99,15.50 C19.99,15.87,20.30,16.18,20.64,16.17 C20.99,16.18,21.30,15.87,21.29,15.50 C21.29,11.80,21.29,8.09,21.29,4.39 C21.30,4.02,20.99,3.71,20.64,3.72 C20.30,3.71,19.99,4.02,19.99,4.39 z\\\"/><path style=\\\"fill:#fe1a22;fill-rule:nonzero;\\\" d=\\\"M21.43,8.63 C21.43,9.05,21.43,9.46,21.43,9.88 C21.42,10.25,21.73,10.56,22.08,10.55 C22.42,10.56,22.73,10.25,22.73,9.88 C22.73,9.46,22.73,9.05,22.73,8.63 C22.73,8.26,22.42,7.95,22.08,7.96 C21.73,7.95,21.42,8.26,21.43,8.63 z\\\"/><path style=\\\"fill:#fe1a22;fill-rule:nonzero;\\\" d=\\\"M16.20,8.63 C16.20,9.05,16.20,9.46,16.20,9.88 C16.19,10.25,16.50,10.56,16.85,10.55 C17.19,10.56,17.50,10.25,17.50,9.88 C17.50,9.46,17.50,9.05,17.50,8.63 C17.50,8.26,17.19,7.95,16.85,7.96 C16.50,7.95,16.19,8.26,16.20,8.63 z\\\"/><path style=\\\"fill:#fe1a22;fill-rule:nonzero;\\\" d=\\\"M18.87,4.39 C18.87,8.09,18.87,11.80,18.87,15.50 C18.87,15.87,19.18,16.18,19.52,16.17 C19.86,16.18,20.18,15.87,20.17,15.50 C20.17,11.80,20.17,8.09,20.17,4.39 C20.18,4.02,19.86,3.71,19.52,3.72 C19.18,3.71,18.87,4.02,18.87,4.39 z\\\"/><path style=\\\"fill:#000000;fill-rule:nonzero;\\\" d=\\\"M21.97,8.63 C21.97,9.05,21.97,9.46,21.97,9.88 C21.97,10.25,22.28,10.56,22.62,10.55 C22.97,10.56,23.28,10.25,23.27,9.88 C23.27,9.46,23.27,9.05,23.27,8.63 C23.28,8.26,22.97,7.95,22.62,7.96 C22.28,7.95,21.97,8.26,21.97,8.63 z\\\"/><path style=\\\"fill:#000000;fill-rule:nonzero;\\\" d=\\\"M16.74,8.63 C16.74,9.05,16.74,9.46,16.74,9.88 C16.74,10.25,17.05,10.56,17.39,10.55 C17.74,10.56,18.05,10.25,18.04,9.88 C18.04,9.46,18.04,9.05,18.04,8.63 C18.05,8.26,17.74,7.95,17.39,7.96 C17.05,7.95,16.74,8.26,16.74,8.63 z\\\"/><path style=\\\"fill:#000000;fill-rule:nonzero;\\\" d=\\\"M19.41,4.39 C19.41,8.09,19.41,11.80,19.41,15.50 C19.41,15.87,19.72,16.18,20.07,16.17 C20.41,16.18,20.72,15.87,20.72,15.50 C20.72,11.80,20.72,8.09,20.72,4.39 C20.72,4.02,20.41,3.71,20.07,3.72 C19.72,3.71,19.41,4.02,19.41,4.39 z\\\"/></g></g></svg> \",\n tosiUi: \"<svg class=\\\"color\\\" viewBox=\\\"0 0 48 48\\\"><g><g><g><path style=\\\"fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M3,33 C3,31.90,3.90,31,5,31 C5,31,43,31,43,31 C44.10,31,45,31.90,45,33 C45,33,45,43,45,43 C45,44.10,44.10,45,43,45 C43,45,5,45,5,45 C3.90,45,3,44.10,3,43 C3,43,3,33,3,33 z\\\"/><g><path style=\\\"fill:#ffffff;fill-rule:evenodd;stroke:#ed247b;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M7,35 C7,35,7,36.34,7,38 C7,39.66,8.34,41,10,41 C11.66,41,13,39.66,13,38 C13,36.34,13,35,13,35\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#ed247b;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M17,35 C17,35,17,41,17,41\\\"/></g><g><path style=\\\"fill:#ed247b;fill-rule:evenodd;stroke:none;\\\" d=\\\"M38,33 C40.76,33,43,35.24,43,38 C43,40.76,40.76,43,38,43 C35.24,43,33,40.76,33,38 C33,35.24,35.24,33,38,33 z\\\"/><path style=\\\"fill:#ed247b;fill-rule:nonzero;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M40,36 C40,36,36,40,36,40\\\"/><path style=\\\"fill:#ed247b;fill-rule:nonzero;stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M36,36 C36,36,40,40,40,40\\\"/></g></g><g><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M15.97,21.01 C15.97,21.01,9.97,23.01,9.97,27.01 C9.97,31.01,15.97,31.01,15.97,31.01\\\"/><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M31.97,21.01 C31.97,21.01,37.97,23.01,37.97,27.01 C37.97,31.01,31.97,31.01,31.97,31.01\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M31,33 C31,33,29.49,31,29.49,31 C29.49,31,27.97,33,27.97,33\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M19.97,33 C19.97,33,17.97,31,17.97,31 C17.97,31,15.97,33,15.97,33\\\"/><path style=\\\"fill:#e4e4e4;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M15.97,21 C15.97,21,31.97,21,31.97,21 C31.97,21,31.97,31,31.97,31 C31.97,31,15.97,31,15.97,31 C15.97,31,15.97,21,15.97,21 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M9,7.18 C9,4.87,10.79,3,13.00,3 C13.00,3,35.02,3,35.02,3 C37.23,3,39.03,4.87,39.03,7.18 C39.03,7.18,39.03,21.82,39.03,21.82 C39.03,24.13,37.23,26,35.02,26 C35.02,26,13.00,26,13.00,26 C10.79,26,9,24.13,9,21.82 C9,21.82,9,7.18,9,7.18 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M24,11 C24,11,24,23,24,23\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M28,15 C28,15,28,17,28,17\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M20,15 C20,15,20,17,20,17\\\"/></g></g></g></svg> \",\n tosiFavicon: \"<svg class=\\\"color\\\" viewBox=\\\"0 0 48 48\\\"><g><g><path style=\\\"fill:#ed247b;fill-rule:evenodd;stroke:none;\\\" d=\\\"M1,9 C1,4.58,4.58,1,9,1 C9,1,39,1,39,1 C43.42,1,47,4.58,47,9 C47,9,47,39,47,39 C47,43.42,43.42,47,39,47 C39,47,9,47,9,47 C4.58,47,1,43.42,1,39 C1,39,1,9,1,9 z\\\"/><g><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M16,29 C16,29,10,31,10,35 C10,39,16,39,16,39\\\"/><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M32.00,29 C32.00,29,38.00,31,38.00,35 C38.00,39,32.00,39,32.00,39\\\"/><path style=\\\"fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M9,10.18 C9,7.87,10.79,6,13,6 C13,6,35,6,35,6 C37.21,6,39,7.87,39,10.18 C39,10.18,39,24.82,39,24.82 C39,27.13,37.21,29,35,29 C35,29,13,29,13,29 C10.79,29,9,27.13,9,24.82 C9,24.82,9,10.18,9,10.18 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M24,11 C24,11,24,23,24,23\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M28,15 C28,15,28,17,28,17\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M20,15 C20,15,20,17,20,17\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M32,43 C32,43,30,41,30,41 C30,41,28,43,28,43\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M20,43 C20,43,18,41,18,41 C18,41,16,43,16,43\\\"/><path style=\\\"fill:#e4e4e4;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M16,29 C16,29,32,29,32,29 C32,29,32,39,32,39 C32,39,16,39,16,39 C16,39,16,29,16,29 z\\\"/></g></g></g></svg> \",\n tosiPlatform: \"<svg class=\\\"color\\\" viewBox=\\\"0 0 48 48\\\"><g><g><g><path style=\\\"fill:#3ea9f5;fill-rule:evenodd;stroke:none;\\\" d=\\\"M23.97,47 C23.97,47,39,47,39,47 C43.42,47,47,43.42,47,39 C47,39,47,9,47,9 C47,4.58,43.42,1,39,1 C39,1,9,1,9,1 C4.58,1,1,4.58,1,9 C1,9,1,39,1,39 C1,41.64,2.28,43.98,4.25,45.44 C4.09,44.82,4,44.17,4,43.5 C4,39.36,7.36,36,11.5,36 C15.14,36,18.18,38.60,18.86,42.05 C19.07,42.02,19.28,42,19.5,42 C21.99,42,24,44.01,24,46.5 C24,46.67,23.99,46.84,23.97,47 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:evenodd;stroke:none;\\\" d=\\\"M4.25,45.44 C4.09,44.82,4,44.17,4,43.5 C4,39.36,7.36,36,11.5,36 C15.14,36,18.18,38.60,18.86,42.05 C19.07,42.02,19.28,42,19.5,42 C21.99,42,24,44.01,24,46.5 C24,46.67,23.99,46.84,23.97,47 C23.97,47,9,47,9,47 C7.22,47,5.58,46.42,4.25,45.44 z\\\"/></g><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M35,35 C35,35,32.17,35,32.17,35 C32.17,35,32.17,37.83,32.17,37.83\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M31,39 C31,39,28.17,39,28.17,39 C28.17,39,28.17,41.83,28.17,41.83\\\"/><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M7.48,16 C4.45,16,2,18.45,2,21.48 C2,21.48,2,21.48,2,21.48 C2,23.98,4.02,26,6.52,26 C6.52,26,6.62,26,6.62,26 C7.38,26,8,26.62,8,27.38 C8,27.38,8,27.38,8,27.38 C8,29.93,10.07,32,12.62,32 C12.62,32,16,32,16,32 C18.58,32,20.68,29.91,20.68,27.32 C20.68,27.32,20.68,21.42,20.68,21.42 C20.68,18.43,18.25,16,15.26,16 C15.26,16,7.48,16,7.48,16 z\\\"/><path style=\\\"fill:#e4e4e4;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M17,29 C17,29,33,29,33,29 C33,29,33,29,33,29 C33,34.52,28.52,39,23,39 C23,39,23,39,23,39 C19.69,39,17,36.31,17,33 C17,33,17,29,17,29 z\\\"/><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M40.52,16 C43.55,16,46,18.45,46,21.48 C46,21.48,46,21.48,46,21.48 C46,23.98,43.98,26,41.48,26 C41.48,26,41.38,26,41.38,26 C40.62,26,40,26.62,40,27.38 C40,27.38,40,27.38,40,27.38 C40,29.93,37.93,32,35.38,32 C35.38,32,32,32,32,32 C29.42,32,27.32,29.91,27.32,27.32 C27.32,27.32,27.32,21.42,27.32,21.42 C27.32,18.43,29.75,16,32.74,16 C32.74,16,40.52,16,40.52,16 z\\\"/><g><path style=\\\"fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M6,10.18 C6,7.87,7.79,6,10,6 C10,6,32,6,32,6 C34.21,6,36,7.87,36,10.18 C36,10.18,36,24.82,36,24.82 C36,27.13,34.21,29,32,29 C32,29,10,29,10,29 C7.79,29,6,27.13,6,24.82 C6,24.82,6,10.18,6,10.18 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M21,11 C21,11,21,23,21,23\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M25,15 C25,15,25,17,25,17\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M17,15 C17,15,17,17,17,17\\\"/></g></g></g></svg> \",\n tosi: \"<svg class=\\\"color\\\" viewBox=\\\"0 0 48 48\\\"><g><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M38.35,31.70 C39.78,34.37,38.78,37.69,36.11,39.13 C36.11,39.13,36.11,39.13,36.11,39.13 C33.92,40.31,31.18,39.48,29.99,37.29 C29.99,37.29,29.95,37.20,29.95,37.20 C29.58,36.53,28.75,36.27,28.08,36.64 C28.08,36.64,28.08,36.64,28.08,36.64 C25.83,37.84,23.03,37.00,21.82,34.76 C21.82,34.76,20.22,31.78,20.22,31.78 C18.99,29.50,19.85,26.67,22.12,25.44 C22.12,25.44,27.32,22.65,27.32,22.65 C29.96,21.23,33.24,22.22,34.66,24.85 C34.66,24.85,38.35,31.70,38.35,31.70 z\\\"/><path style=\\\"fill:#9e9e9e;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M10.65,31.70 C9.22,34.37,10.22,37.69,12.89,39.13 C12.89,39.13,12.89,39.13,12.89,39.13 C15.08,40.31,17.82,39.48,19.01,37.29 C19.01,37.29,19.05,37.20,19.05,37.20 C19.42,36.53,20.25,36.27,20.92,36.64 C20.92,36.64,20.92,36.64,20.92,36.64 C23.17,37.84,25.97,37.00,27.18,34.76 C27.18,34.76,28.78,31.78,28.78,31.78 C30.01,29.50,29.15,26.67,26.88,25.44 C26.88,25.44,21.68,22.65,21.68,22.65 C19.04,21.23,15.76,22.22,14.34,24.85 C14.34,24.85,10.65,31.70,10.65,31.70 z\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M32.5,43 C32.5,43,30.5,41,30.5,41 C30.5,41,28.5,43,28.5,43\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M20.5,43 C20.5,43,18.5,41,18.5,41 C18.5,41,16.5,43,16.5,43\\\"/><path style=\\\"fill:#e4e4e4;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M16.5,29 C16.5,29,32.5,29,32.5,29 C32.5,29,32.5,36,32.5,36 C32.5,37.66,31.16,39,29.5,39 C29.5,39,19.5,39,19.5,39 C17.84,39,16.5,37.66,16.5,36 C16.5,36,16.5,29,16.5,29 z\\\"/><g><path style=\\\"fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M9.5,10.18 C9.5,7.87,11.29,6,13.5,6 C13.5,6,35.5,6,35.5,6 C37.71,6,39.5,7.87,39.5,10.18 C39.5,10.18,39.5,24.82,39.5,24.82 C39.5,27.13,37.71,29,35.5,29 C35.5,29,13.5,29,13.5,29 C11.29,29,9.5,27.13,9.5,24.82 C9.5,24.82,9.5,10.18,9.5,10.18 z\\\"/><g><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M24.5,11 C24.5,11,24.5,23,24.5,23\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M28.5,15 C28.5,15,28.5,17,28.5,17\\\"/><path style=\\\"fill:#ffffff;fill-rule:nonzero;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:2;\\\" d=\\\"M20.5,15 C20.5,15,20.5,17,20.5,17\\\"/></g></g></g></svg> \",\n sortDescending: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path d=\\\"M16.5,14.5 C16.5,14.5,7.5,14.5,7.5,14.5\\\"/><path d=\\\"M14.5,18.5 C14.5,18.5,9.5,18.5,9.5,18.5\\\"/><path d=\\\"M18.5,10.5 C18.5,10.5,5.5,10.5,5.5,10.5\\\"/><path d=\\\"M20.5,6.5 C20.5,6.5,3.5,6.5,3.5,6.5\\\"/></g></svg> \",\n columns: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\\\"></path></svg>\",\n underline: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3\\\"></path><line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"21\\\"></line></svg>\",\n grid: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"3\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect></svg>\",\n triangle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path></svg>\",\n search: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line></svg>\",\n volume2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path></svg>\",\n arrowUpCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"16 12 12 8 8 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line></svg>\",\n pauseCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"10\\\" y1=\\\"15\\\" x2=\\\"10\\\" y2=\\\"9\\\"></line><line x1=\\\"14\\\" y1=\\\"15\\\" x2=\\\"14\\\" y2=\\\"9\\\"></line></svg>\",\n checkSquare: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"9 11 12 14 22 4\\\"></polyline><path d=\\\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\\\"></path></svg>\",\n arrowDown: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><polyline points=\\\"19 12 12 19 5 12\\\"></polyline></svg>\",\n figma: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\\\"></path><path d=\\\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\\\"></path><path d=\\\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\\\"></path></svg>\",\n cornerRightUp: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"10 9 15 4 20 9\\\"></polyline><path d=\\\"M4 20h7a4 4 0 0 0 4-4V4\\\"></path></svg>\",\n chevronsRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"13 17 18 12 13 7\\\"></polyline><polyline points=\\\"6 17 11 12 6 7\\\"></polyline></svg>\",\n list: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"8\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"8\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"3.01\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"3.01\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"3.01\\\" y2=\\\"18\\\"></line></svg>\",\n chevronsDown: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"7 13 12 18 17 13\\\"></polyline><polyline points=\\\"7 6 12 11 17 6\\\"></polyline></svg>\",\n wind: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2\\\"></path></svg>\",\n cornerUpRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"15 14 20 9 15 4\\\"></polyline><path d=\\\"M4 20v-7a4 4 0 0 1 4-4h12\\\"></path></svg>\",\n target: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"6\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle></svg>\",\n scissors: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><line x1=\\\"20\\\" y1=\\\"4\\\" x2=\\\"8.12\\\" y2=\\\"15.88\\\"></line><line x1=\\\"14.47\\\" y1=\\\"14.48\\\" x2=\\\"20\\\" y2=\\\"20\\\"></line><line x1=\\\"8.12\\\" y1=\\\"8.12\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line></svg>\",\n minimize2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"4 14 10 14 10 20\\\"></polyline><polyline points=\\\"20 10 14 10 14 4\\\"></polyline><line x1=\\\"14\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line></svg>\",\n playCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"10 8 16 12 10 16 10 8\\\"></polygon></svg>\",\n crosshair: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"18\\\" y2=\\\"12\\\"></line><line x1=\\\"6\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"18\\\"></line></svg>\",\n airplay: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\\\"></path><polygon points=\\\"12 15 17 21 7 21 12 15\\\"></polygon></svg>\",\n xOctagon: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line></svg>\",\n repeat: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"17 1 21 5 17 9\\\"></polyline><path d=\\\"M3 11V9a4 4 0 0 1 4-4h14\\\"></path><polyline points=\\\"7 23 3 19 7 15\\\"></polyline><path d=\\\"M21 13v2a4 4 0 0 1-4 4H3\\\"></path></svg>\",\n edit3: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M12 20h9\\\"></path><path d=\\\"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\\\"></path></svg>\",\n volume1: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path></svg>\",\n sunrise: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"9\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"8 6 12 2 16 6\\\"></polyline></svg>\",\n toggleRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"16\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle></svg>\",\n umbrella: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7\\\"></path></svg>\",\n user: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"12\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle></svg>\",\n fileMinus: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line></svg>\",\n xCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line></svg>\",\n circle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle></svg>\",\n phoneMissed: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><line x1=\\\"17\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"7\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path></svg>\",\n edit2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M17 3a2.83 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\\\"></path></svg>\",\n cornerLeftUp: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"14 9 9 4 4 9\\\"></polyline><path d=\\\"M20 20h-7a4 4 0 0 1-4-4V4\\\"></path></svg>\",\n home: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\\\"></path><polyline points=\\\"9 22 9 12 15 12 15 22\\\"></polyline></svg>\",\n gitlab: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z\\\"></path></svg>\",\n music: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M9 18V5l12-2v13\\\"></path><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"16\\\" r=\\\"3\\\"></circle></svg>\",\n smartphone: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"5\\\" y=\\\"2\\\" width=\\\"14\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line></svg>\",\n moreHorizontal: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle></svg>\",\n sliders: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line><line x1=\\\"4\\\" y1=\\\"10\\\" x2=\\\"4\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"20\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"16\\\"></line><line x1=\\\"20\\\" y1=\\\"12\\\" x2=\\\"20\\\" y2=\\\"3\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"7\\\" y2=\\\"14\\\"></line><line x1=\\\"9\\\" y1=\\\"8\\\" x2=\\\"15\\\" y2=\\\"8\\\"></line><line x1=\\\"17\\\" y1=\\\"16\\\" x2=\\\"23\\\" y2=\\\"16\\\"></line></svg>\",\n arrowUpLeft: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 17 7 7 17 7\\\"></polyline></svg>\",\n chevronDown: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"6 9 12 15 18 9\\\"></polyline></svg>\",\n hexagon: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path></svg>\",\n github: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\\\"></path></svg>\",\n crop: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M6.13 1L6 16a2 2 0 0 0 2 2h15\\\"></path><path d=\\\"M1 6.13L16 6a2 2 0 0 1 2 2v15\\\"></path></svg>\",\n tag: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\\\"></path><line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"7.01\\\" y2=\\\"7\\\"></line></svg>\",\n briefcase: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\\\"></path></svg>\",\n rotateCw: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"23 4 23 10 17 10\\\"></polyline><path d=\\\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\\\"></path></svg>\",\n map: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\\\"></polygon><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"18\\\"></line><line x1=\\\"16\\\" y1=\\\"6\\\" x2=\\\"16\\\" y2=\\\"22\\\"></line></svg>\",\n inbox: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"22 12 16 12 14 15 10 15 8 12 2 12\\\"></polyline><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path></svg>\",\n alignJustify: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line></svg>\",\n plusSquare: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line></svg>\",\n power: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M18.36 6.64a9 9 0 1 1-12.73 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line></svg>\",\n database: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"9\\\" ry=\\\"3\\\"></ellipse><path d=\\\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\\\"></path><path d=\\\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\\\"></path></svg>\",\n cameraOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56\\\"></path></svg>\",\n toggleLeft: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"8\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle></svg>\",\n file: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\\\"></path><polyline points=\\\"13 2 13 9 20 9\\\"></polyline></svg>\",\n messageCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\\\"></path></svg>\",\n voicemail: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"5.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><line x1=\\\"5.5\\\" y1=\\\"16\\\" x2=\\\"18.5\\\" y2=\\\"16\\\"></line></svg>\",\n terminal: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"4 17 10 11 4 5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"20\\\" y2=\\\"19\\\"></line></svg>\",\n move: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"5 9 2 12 5 15\\\"></polyline><polyline points=\\\"9 5 12 2 15 5\\\"></polyline><polyline points=\\\"15 19 12 22 9 19\\\"></polyline><polyline points=\\\"19 9 22 12 19 15\\\"></polyline><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line></svg>\",\n maximize: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\\\"></path></svg>\",\n chevronUp: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"18 15 12 9 6 15\\\"></polyline></svg>\",\n arrowDownLeft: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 17 7 17 7 7\\\"></polyline></svg>\",\n fileText: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"13\\\"></line><line x1=\\\"16\\\" y1=\\\"17\\\" x2=\\\"8\\\" y2=\\\"17\\\"></line><polyline points=\\\"10 9 9 9 8 9\\\"></polyline></svg>\",\n droplet: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\\\"></path></svg>\",\n zapOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"12.41 6.75 13 2 10.57 4.92\\\"></polyline><polyline points=\\\"18.57 12.91 21 10 15.66 10\\\"></polyline><polyline points=\\\"8 8 3 14 12 14 11 22 16 16\\\"></polyline><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line></svg>\",\n x: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"18\\\" y1=\\\"6\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"18\\\" y2=\\\"18\\\"></line></svg>\",\n barChart: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"10\\\"></line><line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"16\\\"></line></svg>\",\n lock: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\"></path></svg>\",\n logIn: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\\\"></path><polyline points=\\\"10 17 15 12 10 7\\\"></polyline><line x1=\\\"15\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line></svg>\",\n shoppingBag: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\\\"></path><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><path d=\\\"M16 10a4 4 0 0 1-8 0\\\"></path></svg>\",\n divide: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"6\\\" r=\\\"2\\\"></circle><line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line><circle cx=\\\"12\\\" cy=\\\"18\\\" r=\\\"2\\\"></circle></svg>\",\n cloudDrizzle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"8\\\" y1=\\\"19\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"15\\\"></line><line x1=\\\"16\\\" y1=\\\"19\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path></svg>\",\n refreshCw: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"23 4 23 10 17 10\\\"></polyline><polyline points=\\\"1 20 1 14 7 14\\\"></polyline><path d=\\\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\\\"></path></svg>\",\n chevronRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"9 18 15 12 9 6\\\"></polyline></svg>\",\n clipboard: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\\\"></path><rect x=\\\"8\\\" y=\\\"2\\\" width=\\\"8\\\" height=\\\"4\\\" rx=\\\"1\\\" ry=\\\"1\\\"></rect></svg>\",\n package: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"16.5\\\" y1=\\\"9.4\\\" x2=\\\"7.5\\\" y2=\\\"4.21\\\"></line><path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line></svg>\",\n instagram: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"5\\\" ry=\\\"5\\\"></rect><path d=\\\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\\\"></path><line x1=\\\"17.5\\\" y1=\\\"6.5\\\" x2=\\\"17.51\\\" y2=\\\"6.5\\\"></line></svg>\",\n link: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\\\"></path><path d=\\\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\\\"></path></svg>\",\n videoOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line></svg>\",\n key: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.78 7.78 5.5 5.5 0 0 1 7.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\\\"></path></svg>\",\n meh: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"15\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line></svg>\",\n cornerDownRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"15 10 20 15 15 20\\\"></polyline><path d=\\\"M4 4v7a4 4 0 0 0 4 4h12\\\"></path></svg>\",\n arrowRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 5 19 12 12 19\\\"></polyline></svg>\",\n aperture: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"14.31\\\" y1=\\\"8\\\" x2=\\\"20.05\\\" y2=\\\"17.94\\\"></line><line x1=\\\"9.69\\\" y1=\\\"8\\\" x2=\\\"21.17\\\" y2=\\\"8\\\"></line><line x1=\\\"7.38\\\" y1=\\\"12\\\" x2=\\\"13.12\\\" y2=\\\"2.06\\\"></line><line x1=\\\"9.69\\\" y1=\\\"16\\\" x2=\\\"3.95\\\" y2=\\\"6.06\\\"></line><line x1=\\\"14.31\\\" y1=\\\"16\\\" x2=\\\"2.83\\\" y2=\\\"16\\\"></line><line x1=\\\"16.62\\\" y1=\\\"12\\\" x2=\\\"10.88\\\" y2=\\\"21.94\\\"></line></svg>\",\n stopCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect></svg>\",\n logOut: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\\\"></path><polyline points=\\\"16 17 21 12 16 7\\\"></polyline><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"9\\\" y2=\\\"12\\\"></line></svg>\",\n arrowLeftCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 8 8 12 12 16\\\"></polyline><line x1=\\\"16\\\" y1=\\\"12\\\" x2=\\\"8\\\" y2=\\\"12\\\"></line></svg>\",\n barChart2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"10\\\"></line><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"14\\\"></line></svg>\",\n gitPullRequest: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M13 6h3a2 2 0 0 1 2 2v7\\\"></path><line x1=\\\"6\\\" y1=\\\"9\\\" x2=\\\"6\\\" y2=\\\"21\\\"></line></svg>\",\n minimize: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\\\"></path></svg>\",\n minusSquare: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line></svg>\",\n settings: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><path d=\\\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\\\"></path></svg>\",\n cloudSnow: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25\\\"></path><line x1=\\\"8\\\" y1=\\\"16\\\" x2=\\\"8.01\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"20\\\" x2=\\\"8.01\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12.01\\\" y2=\\\"22\\\"></line><line x1=\\\"16\\\" y1=\\\"16\\\" x2=\\\"16.01\\\" y2=\\\"16\\\"></line><line x1=\\\"16\\\" y1=\\\"20\\\" x2=\\\"16.01\\\" y2=\\\"20\\\"></line></svg>\",\n thumbsDown: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\\\"></path></svg>\",\n type: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"4 7 4 4 20 4 20 7\\\"></polyline><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"4\\\" x2=\\\"12\\\" y2=\\\"20\\\"></line></svg>\",\n archive: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"21 8 21 21 3 21 3 8\\\"></polyline><rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"22\\\" height=\\\"5\\\"></rect><line x1=\\\"10\\\" y1=\\\"12\\\" x2=\\\"14\\\" y2=\\\"12\\\"></line></svg>\",\n phoneOutgoing: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"23 7 23 1 17 1\\\"></polyline><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"1\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path></svg>\",\n pocket: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z\\\"></path><polyline points=\\\"8 10 12 14 16 10\\\"></polyline></svg>\",\n mail: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\\\"></path><polyline points=\\\"22,6 12,13 2,6\\\"></polyline></svg>\",\n shield: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\\\"></path></svg>\",\n download: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"7 10 12 15 17 10\\\"></polyline><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line></svg>\",\n phoneForwarded: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"19 1 23 5 19 9\\\"></polyline><line x1=\\\"15\\\" y1=\\\"5\\\" x2=\\\"23\\\" y2=\\\"5\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path></svg>\",\n cornerRightDown: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"10 15 15 20 20 15\\\"></polyline><path d=\\\"M4 4h7a4 4 0 0 1 4 4v12\\\"></path></svg>\",\n bookOpen: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\\\"></path><path d=\\\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\\\"></path></svg>\",\n divideSquare: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line></svg>\",\n server: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"2\\\" y=\\\"14\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"6.01\\\" y2=\\\"6\\\"></line><line x1=\\\"6\\\" y1=\\\"18\\\" x2=\\\"6.01\\\" y2=\\\"18\\\"></line></svg>\",\n tv: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"15\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><polyline points=\\\"17 2 12 7 7 2\\\"></polyline></svg>\",\n skipForward: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"5 4 15 12 5 20 5 4\\\"></polygon><line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"19\\\" y2=\\\"19\\\"></line></svg>\",\n volume: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon></svg>\",\n userPlus: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"20\\\" y1=\\\"8\\\" x2=\\\"20\\\" y2=\\\"14\\\"></line><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line></svg>\",\n batteryCharging: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19\\\"></path><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line><polyline points=\\\"11 6 7 12 13 12 9 18\\\"></polyline></svg>\",\n layers: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"12 2 2 7 12 12 22 7 12 2\\\"></polygon><polyline points=\\\"2 17 12 22 22 17\\\"></polyline><polyline points=\\\"2 12 12 17 22 12\\\"></polyline></svg>\",\n slash: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line></svg>\",\n radio: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle><path d=\\\"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14\\\"></path></svg>\",\n book: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\\\"></path><path d=\\\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\\\"></path></svg>\",\n userMinus: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line></svg>\",\n bell: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\\\"></path><path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path></svg>\",\n gitBranch: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"6\\\" y1=\\\"3\\\" x2=\\\"6\\\" y2=\\\"15\\\"></line><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><path d=\\\"M18 9a9 9 0 0 1-9 9\\\"></path></svg>\",\n coffee: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M18 8h1a4 4 0 0 1 0 8h-1\\\"></path><path d=\\\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\\\"></path><line x1=\\\"6\\\" y1=\\\"1\\\" x2=\\\"6\\\" y2=\\\"4\\\"></line><line x1=\\\"10\\\" y1=\\\"1\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"1\\\" x2=\\\"14\\\" y2=\\\"4\\\"></line></svg>\",\n code: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"16 18 22 12 16 6\\\"></polyline><polyline points=\\\"8 6 2 12 8 18\\\"></polyline></svg>\",\n thermometer: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\\\"></path></svg>\",\n cast: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\\\"></path><line x1=\\\"2\\\" y1=\\\"20\\\" x2=\\\"2.01\\\" y2=\\\"20\\\"></line></svg>\",\n flag: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\\\"></path><line x1=\\\"4\\\" y1=\\\"22\\\" x2=\\\"4\\\" y2=\\\"15\\\"></line></svg>\",\n eyeOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line></svg>\",\n battery: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"1\\\" y=\\\"6\\\" width=\\\"18\\\" height=\\\"12\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line></svg>\",\n disc: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle></svg>\",\n frown: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M16 16s-1.5-2-4-2-4 2-4 2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line></svg>\",\n tool: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\\\"></path></svg>\",\n cpu: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"4\\\" y=\\\"4\\\" width=\\\"16\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect><line x1=\\\"9\\\" y1=\\\"1\\\" x2=\\\"9\\\" y2=\\\"4\\\"></line><line x1=\\\"15\\\" y1=\\\"1\\\" x2=\\\"15\\\" y2=\\\"4\\\"></line><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"9\\\" y2=\\\"23\\\"></line><line x1=\\\"15\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"23\\\"></line><line x1=\\\"20\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"9\\\"></line><line x1=\\\"20\\\" y1=\\\"14\\\" x2=\\\"23\\\" y2=\\\"14\\\"></line><line x1=\\\"1\\\" y1=\\\"9\\\" x2=\\\"4\\\" y2=\\\"9\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line></svg>\",\n bold: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path><path d=\\\"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path></svg>\",\n hash: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"4\\\" y1=\\\"9\\\" x2=\\\"20\\\" y2=\\\"9\\\"></line><line x1=\\\"4\\\" y1=\\\"15\\\" x2=\\\"20\\\" y2=\\\"15\\\"></line><line x1=\\\"10\\\" y1=\\\"3\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"21\\\"></line></svg>\",\n share2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"18\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"19\\\" r=\\\"3\\\"></circle><line x1=\\\"8.59\\\" y1=\\\"13.51\\\" x2=\\\"15.42\\\" y2=\\\"17.49\\\"></line><line x1=\\\"15.41\\\" y1=\\\"6.51\\\" x2=\\\"8.59\\\" y2=\\\"10.49\\\"></line></svg>\",\n plus: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line></svg>\",\n check: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"20 6 9 17 4 12\\\"></polyline></svg>\",\n rotateCcw: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"1 4 1 10 7 10\\\"></polyline><path d=\\\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\\\"></path></svg>\",\n hardDrive: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path><line x1=\\\"6\\\" y1=\\\"16\\\" x2=\\\"6.01\\\" y2=\\\"16\\\"></line><line x1=\\\"10\\\" y1=\\\"16\\\" x2=\\\"10.01\\\" y2=\\\"16\\\"></line></svg>\",\n bluetooth: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5\\\"></polyline></svg>\",\n pieChart: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21.21 15.89A10 10 0 1 1 8 2.83\\\"></path><path d=\\\"M22 12A10 10 0 0 0 12 2v10z\\\"></path></svg>\",\n headphones: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M3 18v-6a9 9 0 0 1 18 0v6\\\"></path><path d=\\\"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\\\"></path></svg>\",\n rss: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M4 11a9 9 0 0 1 9 9\\\"></path><path d=\\\"M4 4a16 16 0 0 1 16 16\\\"></path><circle cx=\\\"5\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle></svg>\",\n wifi: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M5 12.55a11 11 0 0 1 14.08 0\\\"></path><path d=\\\"M1.42 9a16 16 0 0 1 21.16 0\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12.01\\\" y2=\\\"20\\\"></line></svg>\",\n cornerUpLeft: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"9 14 4 9 9 4\\\"></polyline><path d=\\\"M20 20v-7a4 4 0 0 0-4-4H4\\\"></path></svg>\",\n watch: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"7\\\"></circle><polyline points=\\\"12 9 12 12 13.5 13.5\\\"></polyline><path d=\\\"M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83\\\"></path></svg>\",\n info: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12.01\\\" y2=\\\"8\\\"></line></svg>\",\n userX: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"18\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"13\\\"></line><line x1=\\\"23\\\" y1=\\\"8\\\" x2=\\\"18\\\" y2=\\\"13\\\"></line></svg>\",\n loader: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"6\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"7.76\\\" y2=\\\"7.76\\\"></line><line x1=\\\"16.24\\\" y1=\\\"16.24\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"6\\\" y2=\\\"12\\\"></line><line x1=\\\"18\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"7.76\\\" y2=\\\"16.24\\\"></line><line x1=\\\"16.24\\\" y1=\\\"7.76\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line></svg>\",\n refreshCcw: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"1 4 1 10 7 10\\\"></polyline><polyline points=\\\"23 20 23 14 17 14\\\"></polyline><path d=\\\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\\\"></path></svg>\",\n folderPlus: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"12\\\" y1=\\\"11\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line></svg>\",\n gitMerge: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M6 21V9a9 9 0 0 0 9 9\\\"></path></svg>\",\n mic: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\\\"></path><path d=\\\"M19 10v2a7 7 0 0 1-14 0v-2\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line></svg>\",\n copy: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"13\\\" height=\\\"13\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\\\"></path></svg>\",\n zoomIn: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"11\\\" y1=\\\"8\\\" x2=\\\"11\\\" y2=\\\"14\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line></svg>\",\n arrowRightCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 16 16 12 12 8\\\"></polyline><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line></svg>\",\n alignRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"7\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"7\\\" y2=\\\"18\\\"></line></svg>\",\n image: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle><polyline points=\\\"21 15 16 10 5 21\\\"></polyline></svg>\",\n maximize2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"15 3 21 3 21 9\\\"></polyline><polyline points=\\\"9 21 3 21 3 15\\\"></polyline><line x1=\\\"21\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"10\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line></svg>\",\n checkCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M22 11.08V12a10 10 0 1 1-5.93-9.14\\\"></path><polyline points=\\\"22 4 12 14.01 9 11.01\\\"></polyline></svg>\",\n sunset: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"16 5 12 9 8 5\\\"></polyline></svg>\",\n save: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\\\"></path><polyline points=\\\"17 21 17 13 7 13 7 21\\\"></polyline><polyline points=\\\"7 3 7 8 15 8\\\"></polyline></svg>\",\n smile: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M8 14s1.5 2 4 2 4-2 4-2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line></svg>\",\n navigation: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"3 11 22 2 13 21 11 13 3 11\\\"></polygon></svg>\",\n cloudLightning: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9\\\"></path><polyline points=\\\"13 11 9 17 15 17 11 23\\\"></polyline></svg>\",\n paperclip: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\\\"></path></svg>\",\n fastForward: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"13 19 22 12 13 5 13 19\\\"></polygon><polygon points=\\\"2 19 11 12 2 5 2 19\\\"></polygon></svg>\",\n xSquare: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line></svg>\",\n award: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"8\\\" r=\\\"7\\\"></circle><polyline points=\\\"8.21 13.89 7 23 12 20 17 23 15.79 13.88\\\"></polyline></svg>\",\n zoomOut: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line></svg>\",\n box: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line></svg>\",\n thumbsUp: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\\\"></path></svg>\",\n percent: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"5\\\" y2=\\\"19\\\"></line><circle cx=\\\"6.5\\\" cy=\\\"6.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"2.5\\\"></circle></svg>\",\n sidebar: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"3\\\" x2=\\\"9\\\" y2=\\\"21\\\"></line></svg>\",\n square: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect></svg>\",\n play: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"5 3 19 12 5 21 5 3\\\"></polygon></svg>\",\n gitCommit: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"1.05\\\" y1=\\\"12\\\" x2=\\\"7\\\" y2=\\\"12\\\"></line><line x1=\\\"17.01\\\" y1=\\\"12\\\" x2=\\\"22.96\\\" y2=\\\"12\\\"></line></svg>\",\n table: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\\\"></path></svg>\",\n send: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"22\\\" y1=\\\"2\\\" x2=\\\"11\\\" y2=\\\"13\\\"></line><polygon points=\\\"22 2 15 22 11 13 2 9 22 2\\\"></polygon></svg>\",\n phoneCall: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path></svg>\",\n speaker: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"12\\\" cy=\\\"14\\\" r=\\\"4\\\"></circle><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12.01\\\" y2=\\\"6\\\"></line></svg>\",\n facebook: \"<svg class=\\\"filled\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 512 512\\\"><g></g><path d=\\\"M464 0h-416c-26.4 0-48 21.6-48 48v416c0 26.4 21.6 48 48 48h208v-224h-64v-64h64v-32c0-52.9 43.1-96 96-96h64v64h-64c-17.6 0-32 14.4-32 32v32h96l-16 64h-80v224h144c26.4 0 48-21.6 48-48v-416c0-26.4-21.6-48-48-48z\\\"></path></svg> \",\n codesandbox: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"7.5 4.21 12 6.81 16.5 4.21\\\"></polyline><polyline points=\\\"7.5 19.79 7.5 14.6 3 12\\\"></polyline><polyline points=\\\"21 12 16.5 14.6 16.5 19.79\\\"></polyline><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line></svg>\",\n camera: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\\\"></path><circle cx=\\\"12\\\" cy=\\\"13\\\" r=\\\"4\\\"></circle></svg>\",\n link2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\\\"></path><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line></svg>\",\n printer: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"6 9 6 2 18 2 18 9\\\"></polyline><path d=\\\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\\\"></path><rect x=\\\"6\\\" y=\\\"14\\\" width=\\\"12\\\" height=\\\"8\\\"></rect></svg>\",\n folderMinus: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line></svg>\",\n arrowUpRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"7\\\" y1=\\\"17\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 7 17 7 17 17\\\"></polyline></svg>\",\n truck: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"15\\\" height=\\\"13\\\"></rect><polygon points=\\\"16 8 20 8 23 11 23 16 16 16 16 8\\\"></polygon><circle cx=\\\"5.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle></svg>\",\n lifeBuoy: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"9.17\\\" y2=\\\"9.17\\\"></line><line x1=\\\"14.83\\\" y1=\\\"14.83\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"18.36\\\" y2=\\\"5.64\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"9.17\\\" y2=\\\"14.83\\\"></line></svg>\",\n penTool: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M12 19l7-7 3 3-7 7-3-3z\\\"></path><path d=\\\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\\\"></path><path d=\\\"M2 2l7.59 7.59\\\"></path><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"2\\\"></circle></svg>\",\n atSign: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><path d=\\\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\\\"></path></svg>\",\n feather: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z\\\"></path><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"2\\\" y2=\\\"22\\\"></line><line x1=\\\"17.5\\\" y1=\\\"15\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line></svg>\",\n trash: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path></svg>\",\n wifiOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M16.72 11.06A10.94 10.94 0 0 1 19 12.55\\\"></path><path d=\\\"M5 12.55a10.94 10.94 0 0 1 5.17-2.39\\\"></path><path d=\\\"M10.71 5.05A16 16 0 0 1 22.58 9\\\"></path><path d=\\\"M1.42 9a15.91 15.91 0 0 1 4.7-2.88\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12.01\\\" y2=\\\"20\\\"></line></svg>\",\n cornerLeftDown: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"14 15 9 20 4 15\\\"></polyline><path d=\\\"M20 4h-7a4 4 0 0 0-4 4v12\\\"></path></svg>\",\n dollarSign: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\\\"></path></svg>\",\n star: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\\\"></polygon></svg>\",\n cloudOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line></svg>\",\n sun: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"5\\\"></circle><line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"4.22\\\" y1=\\\"4.22\\\" x2=\\\"5.64\\\" y2=\\\"5.64\\\"></line><line x1=\\\"18.36\\\" y1=\\\"18.36\\\" x2=\\\"19.78\\\" y2=\\\"19.78\\\"></line><line x1=\\\"1\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"23\\\" y2=\\\"12\\\"></line><line x1=\\\"4.22\\\" y1=\\\"19.78\\\" x2=\\\"5.64\\\" y2=\\\"18.36\\\"></line><line x1=\\\"18.36\\\" y1=\\\"5.64\\\" x2=\\\"19.78\\\" y2=\\\"4.22\\\"></line></svg>\",\n messageSquare: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\\\"></path></svg>\",\n edit: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\\\"></path><path d=\\\"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\\\"></path></svg>\",\n anchor: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><path d=\\\"M5 12H2a10 10 0 0 0 20 0h-3\\\"></path></svg>\",\n alertCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12.01\\\" y2=\\\"16\\\"></line></svg>\",\n chevronsUp: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"17 11 12 6 7 11\\\"></polyline><polyline points=\\\"17 18 12 13 7 18\\\"></polyline></svg>\",\n uploadCloud: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"16 16 12 12 8 16\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\\\"></path><polyline points=\\\"16 16 12 12 8 16\\\"></polyline></svg>\",\n twitch: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7\\\"></path></svg>\",\n youtube: \"<svg class=\\\"filled\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 512 512\\\"><g></g><path d=\\\"M506.9 153.6c0 0-5-35.3-20.4-50.8-19.5-20.4-41.3-20.5-51.3-21.7-71.6-5.2-179.1-5.2-179.1-5.2h-0.2c0 0-107.5 0-179.1 5.2-10 1.2-31.8 1.3-51.3 21.7-15.4 15.5-20.3 50.8-20.3 50.8s-5.1 41.4-5.1 82.9v38.8c0 41.4 5.1 82.9 5.1 82.9s5 35.3 20.3 50.8c19.5 20.4 45.1 19.7 56.5 21.9 41 3.9 174.1 5.1 174.1 5.1s107.6-0.2 179.2-5.3c10-1.2 31.8-1.3 51.3-21.7 15.4-15.5 20.4-50.8 20.4-50.8s5.1-41.4 5.1-82.9v-38.8c-0.1-41.4-5.2-82.9-5.2-82.9zM203.1 322.4v-143.9l138.3 72.2-138.3 71.7z\\\"></path></svg> \",\n unlock: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 9.9-1\\\"></path></svg>\",\n compass: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\\\"></polygon></svg>\",\n plusCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line></svg>\",\n creditCard: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"1\\\" y=\\\"4\\\" width=\\\"22\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"1\\\" y1=\\\"10\\\" x2=\\\"23\\\" y2=\\\"10\\\"></line></svg>\",\n cloudRain: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path></svg>\",\n trash2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path><line x1=\\\"10\\\" y1=\\\"11\\\" x2=\\\"10\\\" y2=\\\"17\\\"></line><line x1=\\\"14\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"17\\\"></line></svg>\",\n skipBack: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"19 20 9 12 19 4 19 20\\\"></polygon><line x1=\\\"5\\\" y1=\\\"19\\\" x2=\\\"5\\\" y2=\\\"5\\\"></line></svg>\",\n filePlus: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line></svg>\",\n delete: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\\\"></path><line x1=\\\"18\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"18\\\" y2=\\\"15\\\"></line></svg>\",\n command: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\\\"></path></svg>\",\n clock: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 6 12 12 16 14\\\"></polyline></svg>\",\n octagon: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon></svg>\",\n phone: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path></svg>\",\n eye: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\\\"></path><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle></svg>\",\n phoneOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\\\"></path><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"23\\\"></line></svg>\",\n codepen: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"15.5\\\"></line><polyline points=\\\"22 8.5 12 15.5 2 8.5\\\"></polyline><polyline points=\\\"2 15.5 12 8.5 22 15.5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"8.5\\\"></line></svg>\",\n dribbble: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M8.56 2.75c4.37 6.03 6.02 9.42 8.03 17.72m2.54-15.38c-3.72 4.35-8.94 5.66-16.88 5.85m19.5 1.9c-3.5-.93-6.63-.82-8.94 0-2.58.92-5.01 2.86-7.44 6.32\\\"></path></svg>\",\n gift: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"20 12 20 22 4 22 4 12\\\"></polyline><rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"5\\\"></rect><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"7\\\"></line><path d=\\\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\\\"></path><path d=\\\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\\\"></path></svg>\",\n externalLink: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\\\"></path><polyline points=\\\"15 3 21 3 21 9\\\"></polyline><line x1=\\\"10\\\" y1=\\\"14\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line></svg>\",\n zap: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\\\"></polygon></svg>\",\n trello: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"7\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"9\\\"></rect><rect x=\\\"14\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"5\\\"></rect></svg>\",\n moreVertical: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle></svg>\",\n micOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\\\"></path><path d=\\\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line></svg>\",\n share: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\\\"></path><polyline points=\\\"16 6 12 2 8 6\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line></svg>\",\n arrowUp: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"5\\\"></line><polyline points=\\\"5 12 12 5 19 12\\\"></polyline></svg>\",\n bellOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path><path d=\\\"M18.63 13A17.89 17.89 0 0 1 18 8\\\"></path><path d=\\\"M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14\\\"></path><path d=\\\"M18 8a6 6 0 0 0-9.33-5\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line></svg>\",\n linkedin: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\\\"></path><rect x=\\\"2\\\" y=\\\"9\\\" width=\\\"4\\\" height=\\\"12\\\"></rect><circle cx=\\\"4\\\" cy=\\\"4\\\" r=\\\"2\\\"></circle></svg>\",\n video: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"23 7 16 12 23 17 23 7\\\"></polygon><rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"15\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect></svg>\",\n divideCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle></svg>\",\n activity: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"22 12 18 12 15 21 9 3 6 12 2 12\\\"></polyline></svg>\",\n twitter: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\\\"></path></svg>\",\n mapPin: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\\\"></path><circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\"></circle></svg>\",\n filter: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\\\"></polygon></svg>\",\n phoneIncoming: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"16 2 16 8 22 8\\\"></polyline><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"16\\\" y2=\\\"8\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path></svg>\",\n italic: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"19\\\" y1=\\\"4\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"20\\\" x2=\\\"5\\\" y2=\\\"20\\\"></line><line x1=\\\"15\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"20\\\"></line></svg>\",\n chevronsLeft: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"11 17 6 12 11 7\\\"></polyline><polyline points=\\\"18 17 13 12 18 7\\\"></polyline></svg>\",\n calendar: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"4\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"16\\\" y1=\\\"2\\\" x2=\\\"16\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"10\\\"></line></svg>\",\n globe: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><path d=\\\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\\\"></path></svg>\",\n arrowLeft: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"19\\\" y1=\\\"12\\\" x2=\\\"5\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 19 5 12 12 5\\\"></polyline></svg>\",\n alignCenter: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"18\\\" y1=\\\"10\\\" x2=\\\"6\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"18\\\" y1=\\\"18\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line></svg>\",\n minusCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line></svg>\",\n arrowDownRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"17\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 7 17 17 7 17\\\"></polyline></svg>\",\n framer: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\\\"></path></svg>\",\n volumeX: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><line x1=\\\"23\\\" y1=\\\"9\\\" x2=\\\"17\\\" y2=\\\"15\\\"></line><line x1=\\\"17\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"15\\\"></line></svg>\",\n slack: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z\\\"></path><path d=\\\"M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z\\\"></path><path d=\\\"M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z\\\"></path><path d=\\\"M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\\\"></path><path d=\\\"M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z\\\"></path><path d=\\\"M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\\\"></path></svg>\",\n cloud: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\\\"></path></svg>\",\n downloadCloud: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"8 17 12 21 16 17\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\\\"></path></svg>\",\n shuffle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"16 3 21 3 21 8\\\"></polyline><line x1=\\\"4\\\" y1=\\\"20\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><polyline points=\\\"21 16 21 21 16 21\\\"></polyline><line x1=\\\"15\\\" y1=\\\"15\\\" x2=\\\"21\\\" y2=\\\"21\\\"></line><line x1=\\\"4\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line></svg>\",\n rewind: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"11 19 2 12 11 5 11 19\\\"></polygon><polygon points=\\\"22 19 13 12 22 5 22 19\\\"></polygon></svg>\",\n upload: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"17 8 12 3 7 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"3\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line></svg>\",\n trendingDown: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"23 18 13.5 8.5 8.5 13.5 1 6\\\"></polyline><polyline points=\\\"17 18 23 18 23 12\\\"></polyline></svg>\",\n pause: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"6\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect><rect x=\\\"14\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect></svg>\",\n arrowDownCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"8 12 12 16 16 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line></svg>\",\n bookmark: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\\\"></path></svg>\",\n alertTriangle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"13\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12.01\\\" y2=\\\"17\\\"></line></svg>\",\n userCheck: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><polyline points=\\\"17 11 19 13 23 9\\\"></polyline></svg>\",\n tablet: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line></svg>\",\n alertOctagon: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12.01\\\" y2=\\\"16\\\"></line></svg>\",\n menu: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line></svg>\",\n chrome: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"21.17\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><line x1=\\\"3.95\\\" y1=\\\"6.06\\\" x2=\\\"8.54\\\" y2=\\\"14\\\"></line><line x1=\\\"10.88\\\" y1=\\\"21.94\\\" x2=\\\"15.46\\\" y2=\\\"14\\\"></line></svg>\",\n shoppingCart: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"9\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><circle cx=\\\"20\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><path d=\\\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\\\"></path></svg>\",\n folder: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path></svg>\",\n users: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"9\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><path d=\\\"M23 21v-2a4 4 0 0 0-3-3.87\\\"></path><path d=\\\"M16 3.13a4 4 0 0 1 0 7.75\\\"></path></svg>\",\n cornerDownLeft: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"9 10 4 15 9 20\\\"></polyline><path d=\\\"M20 4v7a4 4 0 0 1-4 4H4\\\"></path></svg>\",\n monitor: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"2\\\" y=\\\"3\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"21\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line></svg>\",\n minus: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line></svg>\",\n helpCircle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\\\"></path><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12.01\\\" y2=\\\"17\\\"></line></svg>\",\n navigation2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"12 2 19 21 12 17 5 21 12 2\\\"></polygon></svg>\",\n chevronLeft: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"15 18 9 12 15 6\\\"></polyline></svg>\",\n film: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"2.18\\\" ry=\\\"2.18\\\"></rect><line x1=\\\"7\\\" y1=\\\"2\\\" x2=\\\"7\\\" y2=\\\"22\\\"></line><line x1=\\\"17\\\" y1=\\\"2\\\" x2=\\\"17\\\" y2=\\\"22\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"2\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><line x1=\\\"2\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"22\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"22\\\" y2=\\\"7\\\"></line></svg>\",\n moon: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\\\"></path></svg>\",\n shieldOff: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18\\\"></path><path d=\\\"M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line></svg>\",\n layout: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"3\\\" y1=\\\"9\\\" x2=\\\"21\\\" y2=\\\"9\\\"></line><line x1=\\\"9\\\" y1=\\\"21\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line></svg>\",\n mousePointer: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\\\"></path><path d=\\\"M13 13l6 6\\\"></path></svg>\",\n alignLeft: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"17\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"17\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line></svg>\",\n heart: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\\\"></path></svg>\",\n trendingUp: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"23 6 13.5 15.5 8.5 10.5 1 18\\\"></polyline><polyline points=\\\"17 6 23 6 23 12\\\"></polyline></svg>\",\n listBullet: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M21,6 C21,6,10,6,10,6\\\"/><path style=\\\"\\\" d=\\\"M21,12 C21,12,10,12,10,12\\\"/><path style=\\\"\\\" d=\\\"M21,18 C21,18,10,18,10,18\\\"/><path style=\\\"\\\" d=\\\"M5.5,5 C6.05,5,6.5,5.45,6.5,6 C6.5,6.55,6.05,7,5.5,7 C4.95,7,4.5,6.55,4.5,6 C4.5,5.45,4.95,5,5.5,5 z\\\"/><path style=\\\"\\\" d=\\\"M5.5,11 C6.05,11,6.5,11.45,6.5,12 C6.5,12.55,6.05,13,5.5,13 C4.95,13,4.5,12.55,4.5,12 C4.5,11.45,4.95,11,5.5,11 z\\\"/><path style=\\\"\\\" d=\\\"M5.5,17 C6.05,17,6.5,17.45,6.5,18 C6.5,18.55,6.05,19,5.5,19 C4.95,19,4.5,18.55,4.5,18 C4.5,17.45,4.95,17,5.5,17 z\\\"/></g></svg> \",\n indent: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M21,10 C21,10,8,10,8,10\\\"/><path style=\\\"\\\" d=\\\"M21,6 C21,6,8,6,8,6\\\"/><path style=\\\"\\\" d=\\\"M21,14 C21,14,8,14,8,14\\\"/><path style=\\\"\\\" d=\\\"M21,18 C21,18,8,18,8,18\\\"/><path style=\\\"\\\" d=\\\"M2.5,9 C2.5,9,5.5,12,5.5,12 C5.5,12,2.5,15,2.5,15\\\"/></g></svg> \",\n fontBold: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M13.5,11 C15.71,11,17.5,12.68,17.5,14.75 C17.5,16.82,15.71,18.5,13.5,18.5 C13.5,18.5,8.5,18.5,8.5,18.5 C8.5,18.5,8.5,3.5,8.5,3.5 C8.5,3.5,13.5,3.5,13.5,3.5 C15.71,3.5,17.5,5.18,17.5,7.25 C17.5,9.32,15.71,11,13.5,11 C13.5,11,13.5,11,13.5,11 z\\\"/><path style=\\\"\\\" d=\\\"M13.5,11 C13.5,11,8.5,11,8.5,11\\\"/><path style=\\\"\\\" d=\\\"M12.5,11 C14.71,11,16.5,12.68,16.5,14.75 C16.5,16.82,14.71,18.5,12.5,18.5 C12.5,18.5,7.5,18.5,7.5,18.5 C7.5,18.5,7.5,3.5,7.5,3.5 C7.5,3.5,12.5,3.5,12.5,3.5 C14.71,3.5,16.5,5.18,16.5,7.25 C16.5,9.32,14.71,11,12.5,11 C12.5,11,12.5,11,12.5,11 z\\\"/><path style=\\\"\\\" d=\\\"M12.5,11 C12.5,11,7.5,11,7.5,11\\\"/></g></svg> \",\n fontItalic: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M17.00,4.50 C17.00,4.50,13.00,4.50,13.00,4.50\\\"/><path style=\\\"\\\" d=\\\"M11.00,19.50 C11.00,19.50,7.00,19.50,7.00,19.50\\\"/><path style=\\\"\\\" d=\\\"M15.00,4.50 C15.00,4.50,9.00,19.50,9.00,19.50\\\"/></g></svg> \",\n fontUnderline: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M7.5,3.5 C7.5,3.5,7.5,10.74,7.5,13.5 C7.5,16.26,9.74,18.5,12.5,18.5 C15.26,18.5,17.5,16.26,17.5,13.5 C17.5,10.74,17.5,3.5,17.5,3.5\\\"/><path style=\\\"\\\" d=\\\"M7.5,21.5 C7.5,21.5,17.5,21.5,17.5,21.5\\\"/></g></svg> \",\n outdent: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M21,10 C21,10,8,10,8,10\\\"/><path style=\\\"\\\" d=\\\"M21,6 C21,6,8,6,8,6\\\"/><path style=\\\"\\\" d=\\\"M21,14 C21,14,8,14,8,14\\\"/><path style=\\\"\\\" d=\\\"M21,18 C21,18,8,18,8,18\\\"/><path style=\\\"\\\" d=\\\"M5.5,9 C5.5,9,2.5,12,2.5,12 C2.5,12,5.5,15,5.5,15\\\"/></g></svg> \",\n listNumber: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M21,6 C21,6,10,6,10,6\\\"/><path style=\\\"\\\" d=\\\"M21,12 C21,12,10,12,10,12\\\"/><path style=\\\"\\\" d=\\\"M21,18 C21,18,10,18,10,18\\\"/><path style=\\\"\\\" d=\\\"M4.5,5 C4.5,5,5.5,4,5.5,4 C5.5,4,5.5,8,5.5,8\\\"/><path style=\\\"\\\" d=\\\"M4.5,10 C4.5,10,5.50,10,5.50,10 C6.05,10,6.5,10.45,6.5,11.00 C6.5,11.00,6.5,11.00,6.5,11.00 C6.5,11.55,6.05,12,5.50,12 C5.50,12,5.50,12,5.50,12 C4.95,12,4.5,12.45,4.5,13.00 C4.5,13.00,4.5,14,4.5,14 C4.5,14,6.5,14,6.5,14\\\"/><path style=\\\"\\\" d=\\\"M4.5,16 C4.5,16,5.50,16,5.50,16 C6.05,16,6.5,16.45,6.5,17.00 C6.5,17.00,6.5,17.00,6.5,17.00 C6.5,17.55,6.05,18,5.50,18 C5.50,18,4.5,18,4.5,18 C4.5,18,5.50,18,5.50,18 C6.05,18,6.5,18.45,6.5,19.00 C6.5,19.00,6.5,19.00,6.5,19.00 C6.5,19.55,6.05,20,5.50,20 C5.50,20,4.5,20,4.5,20\\\"/></g></svg> \",\n resize: \"<svg class=\\\"stroked\\\" version=\\\"1.1\\\" viewBox=\\\"0, 0, 24, 24\\\"><g><path d=\\\"M9,3 L3,3 L3,9\\\"/><path d=\\\"M15,21 L21,21 L21,15\\\"/><path d=\\\"M3,3 L10,10\\\"/><path d=\\\"M21,21 L14,14\\\"/></g></svg> \",\n bug: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M8,6 C8,3.79,9.79,2,12,2 C14.21,2,16,3.79,16,6 C16,6,8,6,8,6 z\\\"/><path style=\\\"\\\" d=\\\"M20,7 C20,7,18,9,18,9\\\"/><path style=\\\"\\\" d=\\\"M20,19 C20,19,18,17,18,17\\\"/><path style=\\\"\\\" d=\\\"M21,13 C21,13,18,13,18,13\\\"/><path style=\\\"\\\" d=\\\"M16.44,9 C17.30,9,18.00,9.70,18.00,10.56 C18.00,10.56,18.00,15.00,18.00,15.00 C18.00,18.31,15.31,21,12,21 C8.69,21,6,18.31,6,15.00 C6,15.00,6,10.56,6,10.56 C6,9.70,6.70,9,7.56,9 C7.56,9,16.44,9,16.44,9 z\\\"/><path style=\\\"\\\" d=\\\"M4,7 C4,7,6,9,6,9\\\"/><path style=\\\"\\\" d=\\\"M4,19 C4,19,6,17,6,17\\\"/><path style=\\\"\\\" d=\\\"M3,13 C3,13,6,13,6,13\\\"/><path style=\\\"\\\" d=\\\"M12,12 C12,12,12,17,12,17\\\"/></g></svg> \",\n blog: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M21,10.02 C21,10.02,21,15,21,15 C21,15.53,20.79,16.04,20.41,16.41 C20.04,16.79,19.53,17,19,17 C19,17,7,17,7,17 C5.67,18.33,4.33,19.67,3,21 C3,21,3,5,3,5 C3,4.47,3.21,3.96,3.59,3.59 C3.96,3.21,4.47,3,5,3 C8.53,3,10.49,3,14.02,3\\\"/><path style=\\\"\\\" d=\\\"M19,2 C19.54,1.46,20.32,1.25,21.05,1.45 C21.78,1.65,22.35,2.22,22.55,2.95 C22.75,3.68,22.54,4.46,22,5 C22,5,15.5,11.5,15.5,11.5 C14.17,11.83,12.83,12.17,11.5,12.5 C11.83,11.17,12.17,9.83,12.5,8.5 C15.67,5.33,15.83,5.17,19,2 z\\\"/><path style=\\\"\\\" d=\\\"M14.60,3\\\"/><path style=\\\"\\\" d=\\\"M21,8.77\\\"/><path style=\\\"\\\" d=\\\"M7,7 C7,7,10,7,10,7\\\"/><path style=\\\"\\\" d=\\\"M7,10 C7,10,9,10,9,10\\\"/></g></svg> \",\n sortAscending: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path d=\\\"M16.5,10.5 C16.5,10.5,7.5,10.5,7.5,10.5\\\"/><path d=\\\"M14.5,6.5 C14.5,6.5,9.5,6.5,9.5,6.5\\\"/><path d=\\\"M18.5,14.5 C18.5,14.5,5.5,14.5,5.5,14.5\\\"/><path d=\\\"M20.5,18.5 C20.5,18.5,3.5,18.5,3.5,18.5\\\"/></g></svg> \",\n npm: \"<svg class=\\\"filled\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 512 512\\\"><g></g><path d=\\\"M0 0v512h512v-512h-512zM416 416h-64v-256h-96v256h-160v-320h320v320z\\\"></path></svg> \",\n game: \"<svg class=\\\"filled\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 704 512\\\"><g></g><path d=\\\"M528 96.79v-0.79h-336c-88.36 0-160 71.64-160 160s71.64 160 160 160c52.34 0 98.82-25.14 128.01-64h63.98c29.19 38.86 75.66 64 128.01 64 88.37 0 160-71.63 160-160 0-82.97-63.15-151.18-144-159.21zM288 288h-64v64h-64v-64h-64v-64h64v-64h64v64h64v64zM480 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zM576 288c-17.67 0-32-14.33-32-32 0-17.67 14.33-32 32-32s32 14.33 32 32c0 17.67-14.33 32-32 32z\\\"></path></svg> \",\n google: \"<svg class=\\\"filled\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 512 512\\\"><g></g><path d=\\\"M256 0c-141.4 0-256 114.6-256 256s114.6 256 256 256 256-114.6 256-256-114.6-256-256-256zM259.8 448c-106.1 0-192-85.9-192-192s85.9-192 192-192c51.8 0 95.2 18.9 128.6 50.2l-52.1 50.2c-14.3-13.7-39.2-29.6-76.5-29.6-65.6 0-119 54.3-119 121.2s53.5 121.2 119 121.2c76 0 104.5-54.6 108.9-82.8h-108.9v-65.8h181.3c1.6 9.6 3 19.2 3 31.8 0.1 109.7-73.4 187.6-184.3 187.6z\\\"></path></svg> \",\n discord: \"<svg class=\\\"filled\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 1013 768\\\"><g></g><path d=\\\"M858.38 64.32c-60.41-28.44-130.58-50.8-204.05-63.60l-5.01-0.72c-8.35 14.47-17.31 32.35-25.34 50.74l-1.44 3.7c-34.87-5.53-75.06-8.69-116.00-8.69s-81.14 3.16-120.37 9.25l4.37-0.56c-9.48-22.09-18.44-39.97-28.27-57.29l1.49 2.86c-78.56 13.64-148.78 36.05-214.41 66.65l5.19-2.17c-132.30 195.75-168.17 386.63-150.24 574.80v0c73.25 54.65 158.46 98.55 250.43 127.12l5.97 1.60c19.28-25.64 37.51-54.63 53.29-85.10l1.63-3.45c-33.48-12.62-61.98-26.51-88.96-42.66l2.48 1.38c7.25-5.26 14.35-10.68 21.2-15.94 75.07 36.14 163.23 57.26 256.32 57.26s181.25-21.12 259.94-58.83l-3.62 1.56c6.93 5.66 14.03 11.08 21.2 15.94-24.54 14.80-53.09 28.72-82.88 40.10l-3.75 1.26c17.37 33.87 35.61 62.84 56.05 90.05l-1.14-1.58c98.00-30.05 183.28-73.93 258.78-130.22l-2.22 1.58c21.04-218.22-35.95-407.35-150.63-575.04zM338.33 523.56c-49.97 0-91.26-45.35-91.26-101.14s39.85-101.54 91.10-101.54 92.21 45.75 91.34 101.54-40.25 101.14-91.18 101.14zM674.99 523.56c-50.05 0-91.18-45.35-91.18-101.14s39.85-101.54 91.18-101.54 91.97 45.75 91.10 101.54-40.17 101.14-91.10 101.14z\\\"></path></svg> \"\n}\n",
|
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
"/*#\n\n# color input field\n\nThis is a color input field that supports opacity\n\n```js\nconst colorInput = preview.querySelector('xin-color')\nconst circle = preview.querySelector('div')\n\ncolorInput.addEventListener('change', () => {\n circle.style.background = colorInput.value\n})\n```\n```html\n<xin-color value=\"red\"></xin-color>\n<div\n style=\"\n width: 200px;\n height: 200px;\n background: red;\n border-radius: 100px;\n \"\n></div>\n```\n\n\n<xin-css-var-editor element-selector=\"xin-color\"></xin-css-var-editor>\n*/\n\nimport {\n Component,\n ElementCreator,\n elements,\n Color,\n vars,\n PartsMap,\n} from 'tosijs'\n\nconst { input } = elements\n\nconst defaultColor = Color.fromCss('#8888')\n\ninterface ColorParts extends PartsMap {\n rgb: HTMLInputElement\n alpha: HTMLInputElement\n css: HTMLInputElement\n}\n\nclass ColorInput extends Component<ColorParts> {\n value = defaultColor.rgba\n color = defaultColor\n\n static styleSpec = {\n ':host': {\n _gap: 8,\n _swatchSize: 32,\n _cssWidth: 72,\n _alphaWidth: 72,\n display: 'inline-flex',\n gap: vars.gap,\n alignItems: 'center',\n },\n ':host input[type=\"color\"]': {\n border: 0,\n width: vars.swatchSize,\n height: vars.swatchSize,\n background: 'transparent',\n },\n ':host::part(alpha)': {\n width: vars.alphaWidth,\n },\n ':host::part(css)': {\n width: vars.cssWidth,\n fontFamily: 'monospace',\n },\n }\n\n content = [\n input({ title: 'base color', type: 'color', part: 'rgb' }),\n input({\n type: 'range',\n title: 'opacity',\n part: 'alpha',\n min: 0,\n max: 1,\n step: 0.05,\n }),\n input({ title: 'css color spec', part: 'css' }),\n ]\n\n private valueChanged = false\n update = (event: Event) => {\n const { rgb, alpha, css } = this.parts\n if (event.type === 'input') {\n this.color = Color.fromCss(rgb.value)\n this.color.a = Number(alpha.value)\n css.value = this.color.html\n } else {\n this.color = Color.fromCss(css.value)\n rgb.value = this.color.html.substring(0, 7)\n alpha.value = String(this.color.a)\n }\n rgb.style.opacity = String(this.color.a)\n this.value = this.color.rgba\n this.valueChanged = true\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n const { rgb, alpha, css } = this.parts\n rgb.addEventListener('input', this.update)\n alpha.addEventListener('input', this.update)\n css.addEventListener('change', this.update)\n }\n\n render() {\n if (this.valueChanged) {\n this.valueChanged = false\n return\n }\n const { rgb, alpha, css } = this.parts\n this.color = Color.fromCss(this.value)\n\n rgb.value = this.color.html.substring(0, 7)\n rgb.style.opacity = String(this.color.a)\n alpha.value = String(this.color.a)\n css.value = this.color.html\n }\n}\n\nexport const colorInput = ColorInput.elementCreator({\n tag: 'xin-color',\n}) as ElementCreator<ColorInput>\n",
|
|
15
15
|
"import { elements } from 'tosijs'\n\ntype TrackerCallback = (\n dx: number,\n dy: number,\n event: PointerEvent\n) => boolean | undefined\n\n/*#\n# trackDrag\n\nSometimes you want to track a mouse-drag or touch-drag operation without messing around.\nThis is how the resizeable columns in `<xin-table>` work.\n\nJust call `trackDrag(event, (dx, dy, event) => { ... })` and you'll get updates on corresponding events until\nyou return `true` from the event-handler (or, in the case of `touch` events, the last `touch` ends).\nFor mouse events, a \"tracker\" element is thrown up in front of everything for the event.\n\n```html\n<p>\n Try dragging the squares…<br>\n (You can drag them separately with multi-touch!)\n</p>\n<div class=\"draggable\" style=\"top: 20px; left: 40px; background: #f008\"></div>\n<div class=\"draggable\" style=\"left: 40%; bottom: 30%; background: #0f08\"></div>\n<div class=\"draggable\" style=\"bottom: 30px; right: 10px; background: #00f8\"></div>\n```\n```css\n.preview {\n touch-action: none;\n}\n\n.draggable {\n content: ' ';\n position: absolute;\n width: 50px;\n height: 50px;\n cursor: move;\n}\n\n.preview p {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n```\n```js\nimport { trackDrag } from 'tosijs-ui'\n\nfunction dragItem(event) {\n const draggable = event.target\n if (draggable.classList.contains('draggable')) {\n const x = draggable.offsetLeft\n const y = draggable.offsetTop\n trackDrag(event, (dx, dy, event) => {\n draggable.style.left = (x + dx) + 'px'\n draggable.style.top = (y + dy) + 'px'\n draggable.style.bottom = 'auto'\n draggable.style.right = 'auto'\n return event.type === 'mouseup'\n })\n }\n}\n\npreview.addEventListener('mousedown', dragItem )\npreview.addEventListener('touchstart', dragItem, { passive: true } )\n```\n\nFor `touch` events, `dx` and `dy` are based on tracking `event.changedTouches[0]` which\nis almost certainly what you want.\n\nTo handle multi-touch gestures you will need to track the touches yourself.\n\n## bringToFront\n\n`bringToFront(element: HTMLElement, selector = 'body *')` gives the element the highest\n`z-index` of any element matching the selector (which is passed to findHighestZ).\n\n## findHighestZ\n\n`findHighestZ(selector = 'body *'): number` returns the the highest `z-index` of any element\nmatching `selector`.\n*/\nconst TRACKER = elements.div({\n style: {\n content: ' ',\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n})\n\nconst PASSIVE = { passive: true }\n\nexport const trackDrag = (\n event: PointerEvent,\n callback: TrackerCallback,\n cursor = 'move'\n): void => {\n const isTouchEvent = event.type.startsWith('touch')\n\n if (!isTouchEvent) {\n const origX = event.clientX\n const origY = event.clientY\n\n TRACKER.style.cursor = cursor\n bringToFront(TRACKER)\n document.body.append(TRACKER)\n\n const wrappedCallback = (event: any) => {\n const dx = event.clientX - origX\n const dy = event.clientY - origY\n if (callback(dx, dy, event) === true) {\n TRACKER.removeEventListener('mousemove', wrappedCallback)\n TRACKER.removeEventListener('mouseup', wrappedCallback)\n TRACKER.remove()\n }\n }\n\n TRACKER.addEventListener('mousemove', wrappedCallback, PASSIVE)\n TRACKER.addEventListener('mouseup', wrappedCallback, PASSIVE)\n } else if (event instanceof TouchEvent) {\n const touch = event.changedTouches[0]\n const touchId = touch.identifier\n const origX = touch.clientX\n const origY = touch.clientY\n const target: any = event.target\n\n let dx = 0\n let dy = 0\n const wrappedCallback = (event: any) => {\n const touch = [...event.touches].find(\n (touch) => touch.identifier === touchId\n )\n if (touch !== undefined) {\n dx = touch.clientX - origX\n dy = touch.clientY - origY\n }\n if (event.type === 'touchmove') {\n event.stopPropagation()\n event.preventDefault()\n }\n if (callback(dx, dy, event) === true || touch === undefined) {\n target.removeEventListener('touchmove', wrappedCallback)\n target.removeEventListener('touchend', wrappedCallback)\n target.removeEventListener('touchcancel', wrappedCallback)\n }\n }\n\n target.addEventListener('touchmove', wrappedCallback)\n target.addEventListener('touchend', wrappedCallback, PASSIVE)\n target.addEventListener('touchcancel', wrappedCallback, PASSIVE)\n }\n}\n\nexport const findHighestZ = (selector = 'body *'): number =>\n [...document.querySelectorAll(selector)]\n .map((elt) => parseFloat(getComputedStyle(elt).zIndex))\n .reduce(\n (z, highest) => (isNaN(z) || Number(z) < highest ? highest : Number(z)),\n 0\n )\n\nexport const bringToFront = (\n element: HTMLElement,\n selector = 'body *'\n): void => {\n element.style.zIndex = String(findHighestZ(selector) + 1)\n}\n",
|
|
16
16
|
"/*#\n# float\n\nA floating, potentially draggable user interface element.\n\n```html\n<xin-float class=\"float\" remain-on-resize=\"remain\" remain-on-scroll=\"remain\" drag>\n <h4>Drag Me</h4>\n <div class=\"no-drag balloon\">🎈</div>\n <div class=\"behavior\">I ignore resizing and scrolling</div>\n <footer style=\"font-size: 75%\">neunundneunzig pixel-ballon</footer>\n</xin-float>\n\n<xin-float class=\"float\" remain-on-scroll=\"remain\" style=\"top: 50px; right: 20px;\" drag>\n <h4>Drag Me</h4>\n <div class=\"no-drag balloon\">🎈</div>\n <div class=\"behavior\">I disappear on resize</div>\n <footer style=\"font-size: 75%\">neunundneunzig pixel-ballon</footer>\n</xin-float>\n\n<xin-float class=\"float\" remain-on-resize=\"remain\" remain-on-scroll=\"remove\" style=\"bottom: 20px; left: 50px;\" drag>\n <h4>Drag Me</h4>\n <div class=\"no-drag balloon\">🎈</div>\n <div class=\"behavior\">I disappear on scroll</div>\n <footer style=\"font-size: 75%\">neunundneunzig pixel-ballon</footer>\n</xin-float>\n```\n```css\n.preview .float {\n width: 220px;\n height: 180px;\n padding: 0;\n gap: 5px;\n display: flex;\n flex-direction: column;\n border-radius: 5px;\n background: #fff8;\n box-shadow: 2px 10px 20px #0004;\n overflow: hidden;\n cursor: move;\n}\n\n.preview h4 {\n margin: 0;\n padding: 5px 10px;\n color: white;\n background: red;\n}\n\n.preview .balloon {\n cursor: default;\n flex: 1 1 auto;\n font-size: 99px;\n line-height: 120px;\n text-align: center;\n height: auto;\n overflow: hidden;\n}\n\n.preview .behavior {\n position: absolute;\n bottom: 16px;\n left: 8px;\n right: 8px;\n background: #fffc;\n}\n\n.preview footer {\n text-align: center;\n background: #f008;\n color: white;\n```\n\n## Styling\n\nNote that the `<xin-float>` element has absolutely minimal styling. It's up to you to provide a drop\nshadow and background and so on.\n\n## Attributes\n\n- `drag` false | true — to make a `<xin-float>` element draggable, simply set its `drag` attribute.\n- `remain-on-resize` 'remove' | 'hide' | 'remain' — by default, floats will hide if the window is resized\n- `remain-on-scroll` 'remain' | 'remove' | 'hide' — by default, floats will remain if the document is scrolled\n\nNote that `remain-on-scroll` behavior applies to any scrolling in the document (including within the float) so\nif you want finer-grained disappearing behavior triggered by scrolling, you might want to implement it yourself.\n\nTo prevent dragging for an interior element (e.g. if you want a floating palette with buttons or input fields)\njust add the `no-drag` class to an element or its container.\n*/\n\nimport { Component as WebComponent, elements, ElementCreator } from 'tosijs'\nimport { trackDrag, bringToFront } from './track-drag'\n\nconst { slot } = elements\n\nexport class XinFloat extends WebComponent {\n static floats: Set<XinFloat> = new Set()\n\n drag = false\n remainOnResize: 'hide' | 'remove' | 'remain' = 'remove'\n remainOnScroll: 'hide' | 'remove' | 'remain' = 'remain'\n\n content = slot()\n\n static styleSpec = {\n ':host': {\n position: 'fixed',\n },\n }\n\n constructor() {\n super()\n this.initAttributes('drag', 'remainOnResize', 'remainOnScroll')\n }\n\n reposition = (event: Event) => {\n const target = event.target as HTMLElement | null\n if (target?.closest('.no-drag')) {\n return\n }\n if (this.drag) {\n bringToFront(this)\n const x = this.offsetLeft\n const y = this.offsetTop\n\n trackDrag(\n event as PointerEvent,\n (\n dx: number,\n dy: number,\n pointerEvent: PointerEvent\n ): true | undefined => {\n this.style.left = `${x + dx}px`\n this.style.top = `${y + dy}px`\n this.style.right = 'auto'\n this.style.bottom = 'auto'\n if (pointerEvent.type === 'mouseup') {\n return true\n }\n }\n )\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n XinFloat.floats.add(this)\n const PASSIVE = { passive: true }\n this.addEventListener('touchstart', this.reposition, PASSIVE)\n this.addEventListener('mousedown', this.reposition, PASSIVE)\n bringToFront(this)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n XinFloat.floats.delete(this)\n }\n}\n\nexport const xinFloat = XinFloat.elementCreator({\n tag: 'xin-float',\n}) as ElementCreator<XinFloat>\n\nwindow.addEventListener(\n 'resize',\n () => {\n Array.from(XinFloat.floats).forEach((float: XinFloat) => {\n if (float.remainOnResize === 'hide') {\n float.hidden = true\n } else if (float.remainOnResize === 'remove') {\n float.remove()\n }\n })\n },\n { passive: true }\n)\n\ndocument.addEventListener(\n 'scroll',\n (event: Event) => {\n if (\n event.target instanceof HTMLElement &&\n event.target.closest(XinFloat.tagName as string)\n ) {\n return\n }\n Array.from(XinFloat.floats).forEach((float: XinFloat) => {\n if (float.remainOnScroll === 'hide') {\n float.hidden = true\n } else if (float.remainOnScroll === 'remove') {\n float.remove()\n }\n })\n },\n { passive: true, capture: true }\n)\n",
|
|
17
|
-
"/*#\n# popFloat\n\nThere are so many cases in user-interfaces where it's useful to pop-up a floating\nuser interface element that a simple and reliable way of doing this seems like\na good idea.\n\nThe problem with many such approaches is that they assume a highly specific\nuse-case (e.g. popup menu or combo box) and while meeting the creator's intended\npurpose admirably, turn out to have some annoying limitation that prevents them\nhandling the specific case at hand.\n\n```js\nimport { popFloat, positionFloat } from 'tosijs-ui'\nimport { button } from 'tosijs'.elements\nconst grid = preview.querySelector('.grid')\n\ngrid.addEventListener('click', (event) => {\n const { target } = event\n if (!target.closest('button')) {\n return\n }\n const float = document.querySelector('.popped-float')\n if (float === null) {\n // create and position a float\n popFloat({\n class: 'popped-float',\n content: [\n 'hello, I am a float',\n button('close me', {\n onClick(event){\n event.target.closest('xin-float').remove()\n }\n })\n ],\n target,\n position: target.dataset.float,\n remainOnScroll: 'remove',\n remainOnResize: 'remove'\n })\n } else {\n // position an existing float\n positionFloat(float, target, target.dataset.float, 'remove', 'remove')\n }\n})\n```\n```html\n<h2>Pop Float Demo</h2>\n<div class=\"grid\">\n <button data-float=\"nw\">nw</button>\n <button data-float=\"n\">n</button>\n <button data-float=\"ne\">ne</button>\n <button data-float=\"wn\">wn</button>\n <span> </span>\n <button data-float=\"en\">en</button>\n <button data-float=\"w\">w</button>\n <button data-float=\"auto\">auto</button>\n <button data-float=\"e\">e</button>\n <button data-float=\"ws\">ws</button>\n <button data-float=\"side\">side</button>\n <button data-float=\"es\">es</button>\n <button data-float=\"sw\">sw</button>\n <button data-float=\"s\">s</button>\n <button data-float=\"se\">se</button>\n</div>\n```\n```css\n.preview .grid {\n display: grid;\n grid-template-columns: 80px 80px 80px;\n}\n\n.popped-float {\n display: flex;\n flex-direction: column;\n border-radius: 5px;\n padding: 10px 15px;\n background: var(--inset-bg);\n box-shadow:\n inset 0 0 0 1px var(--brand-color),\n 2px 10px 5px #0004;\n}\n```\n\n## popFloat\n\n```\nexport interface PopFloatOptions {\n class?: string\n content: HTMLElement | ElementPart[]\n target: HTMLElement\n position?: FloatPosition\n remainOnResize?: 'hide' | 'remove' | 'remain' // default is 'remove',\n remainOnScroll?: 'hide' | 'remove' | 'remain' // default is 'remain',\n draggable?: boolean\n}\n\nexport const popFloat = (options: PopFloatOptions): XinFloat\n```\n\nCreate a `<xin-float>` with the content provided, positioned as specified (or automatically).\n\n## positionFloat\n\n```\nexport const positionFloat = (\n element: HTMLElement,\n target: HTMLElement,\n position?: FloatPosition,\n remainOnScroll: 'hide' | 'remove' | 'remain' = 'remain',\n remainOnResize: 'hide' | 'remove' | 'remain' = 'remove',\n draggable = false\n): void\n```\n\nThis allows you to, for example, provide a global menu that can be used on any element\ninstead of needing to have a whole instance of the menu wrapped around every instance\nof the thing you want the menu to affect (a common anti-pattern of front-end frameworks).\n\n### Handling Overflow\n\n`positionFloat` automatically sets two css-variables `--max-height` and `--max-width` on\nthe floating element to help you deal with overflow (e.g. in menus). E.g. if the float\nis positioned with `top: 125px` then it will set `--max-height: calc(100vh - 125px)`.\n\n## FloatPosition\n\n```\nexport type FloatPosition =\n| 'n'\n| 's'\n| 'e'\n| 'w'\n| 'ne'\n| 'nw'\n| 'se'\n| 'sw'\n| 'en'\n| 'wn'\n| 'es'\n| 'ws'\n| 'side'\n| 'auto'\n```\n\n## Draggable\n\nSometimes it's nice to have popup palettes and modeless dialogs the user can drag away.\n`popFloat()` makes this really easy to do.\n\n```js\nimport { elements } from 'tosijs'\nimport { popFloat, icons } from 'tosijs-ui'\n\nconst { button, h4, p } = elements\n\npreview.append(button(\n 'Draggable Popup',\n {\n class: 'spawn-draggable',\n onClick(event) {\n popFloat({\n class: 'tearoff',\n content: [\n h4('Move me!'),\n p('I’m delicious!'),\n button(\n icons.x(),\n {\n class: 'no-drag close-tearoff',\n onClick(event) {\n event.target.closest('xin-float').remove()\n } \n }\n )\n ],\n target: event.target,\n remainOnScroll: 'remain',\n remainOnResize: 'remain',\n draggable: true,\n })\n }\n },\n))\n```\n```css\n.tearoff {\n display: flex;\n flex-direction: column;\n border-radius: 5px;\n padding: 10px 15px;\n background: var(--inset-bg);\n box-shadow:\n inset 0 0 0 1px var(--brand-color),\n 2px 10px 5px #0004;\n width: 200px;\n}\n\n.tearoff > :first-child {\n margin-top: 0;\n}\n\n.tearoff > :last-child {\n margin-bottom: 0;\n}\n\n.spawn-draggable {\n margin: 10px; \n}\n\n.close-tearoff {\n position: absolute;\n top: 2px;\n right: 2px;\n width: 32px;\n height: 32px;\n text-align: center;\n padding: 0;\n line-height: 32px;\n}\n```\n\n*/\n\nimport { ElementPart } from 'tosijs'\nimport { xinFloat, XinFloat } from './float'\nimport { bringToFront } from './track-drag'\n\nexport type FloatPosition =\n | 'n'\n | 's'\n | 'e'\n | 'w'\n | 'ne'\n | 'nw'\n | 'se'\n | 'sw'\n | 'en'\n | 'wn'\n | 'es'\n | 'ws'\n | 'side'\n | 'auto'\n\nexport interface PopFloatOptions {\n content: HTMLElement | ElementPart[]\n target: HTMLElement\n position?: FloatPosition\n remainOnScroll?: 'hide' | 'remove' | 'remain'\n remainOnResize?: 'hide' | 'remove' | 'remain'\n draggable?: boolean\n}\n\nexport const popFloat = (options: PopFloatOptions): XinFloat => {\n const {\n content,\n target,\n position,\n remainOnScroll,\n remainOnResize,\n draggable,\n } = options\n const float = Array.isArray(content)\n ? xinFloat(...content)\n : xinFloat(content)\n\n positionFloat(\n float,\n target,\n position,\n remainOnScroll,\n remainOnResize,\n draggable\n )\n if (options.class) {\n float.setAttribute('class', options.class)\n }\n document.body.append(float)\n return float\n}\n\nexport const positionFloat = (\n element: XinFloat,\n target: HTMLElement,\n position?: FloatPosition,\n remainOnScroll?: 'hide' | 'remove' | 'remain',\n remainOnResize?: 'hide' | 'remove' | 'remain',\n draggable = false\n): void => {\n {\n const { position } = getComputedStyle(element)\n if (position !== 'fixed') {\n element.style.position = 'fixed'\n }\n if (remainOnResize) element.remainOnResize = remainOnResize\n if (remainOnScroll) element.remainOnScroll = remainOnScroll\n bringToFront(element)\n }\n element.drag = draggable\n const { left, top, width, height } = target.getBoundingClientRect()\n const cx = left + width * 0.5\n const cy = top + height * 0.5\n const w = window.innerWidth\n const h = window.innerHeight\n if (position === 'side') {\n position = ((cx < w * 0.5 ? 'e' : 'w') +\n (cy < h * 0.5 ? 's' : 'n')) as FloatPosition\n } else if (position === 'auto' || position === undefined) {\n position = ((cy < h * 0.5 ? 's' : 'n') +\n (cx < w * 0.5 ? 'e' : 'w')) as FloatPosition\n }\n element.style.top =\n element.style.left =\n element.style.right =\n element.style.bottom =\n element.style.transform =\n ''\n if (position.length === 2) {\n const [first, second] = position\n switch (first) {\n case 'n':\n element.style.bottom = (h - top).toFixed(2) + 'px'\n break\n case 'e':\n element.style.left = (left + width).toFixed(2) + 'px'\n break\n case 's':\n element.style.top = (top + height).toFixed(2) + 'px'\n break\n case 'w':\n element.style.right = (w - left).toFixed(2) + 'px'\n break\n }\n\n switch (second) {\n case 'n':\n element.style.bottom = (h - top - height).toFixed(2) + 'px'\n break\n case 'e':\n element.style.left = left.toFixed(2) + 'px'\n break\n case 's':\n element.style.top = top.toFixed(2) + 'px'\n break\n case 'w':\n element.style.right = (w - left - width).toFixed(2) + 'px'\n break\n }\n element.style.transform = ''\n } else if (position === 'n') {\n element.style.bottom = (h - top).toFixed(2) + 'px'\n element.style.left = cx.toFixed(2) + 'px'\n element.style.transform = 'translateX(-50%)'\n } else if (position === 's') {\n element.style.top = (top + height).toFixed(2) + 'px'\n element.style.left = cx.toFixed(2) + 'px'\n element.style.transform = 'translateX(-50%)'\n } else if (position === 'e') {\n element.style.left = (left + width).toFixed(2) + 'px'\n element.style.top = cy.toFixed(2) + 'px'\n element.style.transform = 'translateY(-50%)'\n } else if (position === 'w') {\n element.style.right = (w - left).toFixed(2) + 'px'\n element.style.top = cy.toFixed(2) + 'px'\n element.style.transform = 'translateY(-50%)'\n }\n element.style.setProperty(\n '--max-height',\n `calc(100vh - ${element.style.top || element.style.bottom})`\n )\n element.style.setProperty(\n '--max-width',\n `calc(100vw - ${element.style.left || element.style.right})`\n )\n}\n",
|
|
17
|
+
"/*#\n# popFloat\n\nThere are so many cases in user-interfaces where it's useful to pop-up a floating\nuser interface element that a simple and reliable way of doing this seems like\na good idea.\n\nThe problem with many such approaches is that they assume a highly specific\nuse-case (e.g. popup menu or combo box) and while meeting the creator's intended\npurpose admirably, turn out to have some annoying limitation that prevents them\nhandling the specific case at hand.\n\n```js\nimport { popFloat, positionFloat } from 'tosijs-ui'\nimport { button } from 'tosijs'.elements\nconst grid = preview.querySelector('.grid')\n\ngrid.addEventListener('click', (event) => {\n const { target } = event\n if (!target.closest('button')) {\n return\n }\n const float = document.querySelector('.popped-float')\n if (float === null) {\n // create and position a float\n popFloat({\n class: 'popped-float',\n content: [\n 'hello, I am a float',\n button('close me', {\n onClick(event){\n event.target.closest('xin-float').remove()\n }\n })\n ],\n target,\n position: target.dataset.float,\n remainOnScroll: 'remove',\n remainOnResize: 'remove'\n })\n } else {\n // position an existing float\n positionFloat(float, target, target.dataset.float, 'remove', 'remove')\n }\n})\n```\n```html\n<h2>Pop Float Demo</h2>\n<div class=\"grid\">\n <button data-float=\"nw\">nw</button>\n <button data-float=\"n\">n</button>\n <button data-float=\"ne\">ne</button>\n <button data-float=\"wn\">wn</button>\n <span> </span>\n <button data-float=\"en\">en</button>\n <button data-float=\"w\">w</button>\n <button data-float=\"auto\">auto</button>\n <button data-float=\"e\">e</button>\n <button data-float=\"ws\">ws</button>\n <button data-float=\"side\">side</button>\n <button data-float=\"es\">es</button>\n <button data-float=\"sw\">sw</button>\n <button data-float=\"s\">s</button>\n <button data-float=\"se\">se</button>\n</div>\n```\n```css\n.preview .grid {\n display: grid;\n grid-template-columns: 80px 80px 80px;\n}\n\n.popped-float {\n display: flex;\n flex-direction: column;\n border-radius: 5px;\n padding: 10px 15px;\n background: var(--inset-bg);\n box-shadow:\n inset 0 0 0 1px var(--brand-color),\n 2px 10px 5px #0004;\n}\n```\n\n## popFloat\n\n```\nexport interface PopFloatOptions {\n class?: string\n content: HTMLElement | ElementPart[]\n target: HTMLElement\n position?: FloatPosition\n remainOnResize?: 'hide' | 'remove' | 'remain' // default is 'remove',\n remainOnScroll?: 'hide' | 'remove' | 'remain' // default is 'remain',\n draggable?: boolean\n}\n\nexport const popFloat = (options: PopFloatOptions): XinFloat\n```\n\nCreate a `<xin-float>` with the content provided, positioned as specified (or automatically).\n\n## positionFloat\n\n```\nexport const positionFloat = (\n element: HTMLElement,\n target: HTMLElement,\n position?: FloatPosition,\n remainOnScroll: 'hide' | 'remove' | 'remain' = 'remain',\n remainOnResize: 'hide' | 'remove' | 'remain' = 'remove',\n draggable = false\n): void\n```\n\nThis allows you to, for example, provide a global menu that can be used on any element\ninstead of needing to have a whole instance of the menu wrapped around every instance\nof the thing you want the menu to affect (a common anti-pattern of front-end frameworks).\n\n### Handling Overflow\n\n`positionFloat` automatically sets two css-variables `--max-height` and `--max-width` on\nthe floating element to help you deal with overflow (e.g. in menus). E.g. if the float\nis positioned with `top: 125px` then it will set `--max-height: calc(100vh - 125px)`.\n\n## FloatPosition\n\n```\nexport type FloatPosition =\n| 'n'\n| 's'\n| 'e'\n| 'w'\n| 'ne'\n| 'nw'\n| 'se'\n| 'sw'\n| 'en'\n| 'wn'\n| 'es'\n| 'ws'\n| 'side'\n| 'auto'\n```\n\n## Draggable\n\nSometimes it's nice to have popup palettes and modeless dialogs the user can drag away.\n`popFloat()` makes this really easy to do.\n\n```js\nimport { elements } from 'tosijs'\nimport { popFloat, icons } from 'tosijs-ui'\n\nconst { button, h4, p } = elements\n\npreview.append(button(\n 'Draggable Popup',\n {\n class: 'spawn-draggable',\n onClick(event) {\n popFloat({\n class: 'tearoff',\n content: [\n h4('Move me!'),\n p('I’m delicious!'),\n button(\n icons.x(),\n {\n class: 'no-drag close-tearoff',\n onClick(event) {\n event.target.closest('xin-float').remove()\n }\n }\n )\n ],\n target: event.target,\n remainOnScroll: 'remain',\n remainOnResize: 'remain',\n draggable: true,\n })\n }\n },\n))\n```\n```css\n.tearoff {\n --tearoff-bg: #fff6;\n --tearoff-button-bg: #fff2;\n --tearoff-color: #222;\n --tearoff-hilite: #fff8;\n --tearoff-shadow: #0002;\n display: flex;\n flex-direction: column;\n border-radius: 20px;\n padding: 10px 15px;\n background: var(--tearoff-bg);\n backdrop-filter: blur(6px);\n box-shadow:\n inset 1px 1px 0 1px var(--tearoff-hilite),\n inset -1px -1px 0 1px var(--tearoff-shadow),\n 2px 5px 10px var(--tearoff-shadow);\n width: 200px;\n color: var(--tearoff-color);\n --text-color: var(--tearoff-color);\n}\n\n.darkmode .tearoff {\n --tearoff-bg: #0004;\n --tearoff-button-bg: #0001;\n --tearoff-color: #fff;\n}\n\n.tearoff > :first-child {\n margin-top: 0;\n}\n\n.tearoff > :last-child {\n margin-bottom: 0;\n}\n\n.spawn-draggable {\n margin: 10px;\n}\n\n.close-tearoff {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 32px;\n height: 32px;\n text-align: center;\n padding: 0;\n line-height: 32px;\n background: var(--tearoff-button-bg);\n border-radius: 100px;\n box-shadow:\n inset 1px 1px 0 1px var(--tearoff-hilite),\n inset -1px -1px 0 1px var(--tearoff-shadow);\n}\n```\n\n*/\n\nimport { ElementPart } from 'tosijs'\nimport { xinFloat, XinFloat } from './float'\nimport { bringToFront } from './track-drag'\n\nexport type FloatPosition =\n | 'n'\n | 's'\n | 'e'\n | 'w'\n | 'ne'\n | 'nw'\n | 'se'\n | 'sw'\n | 'en'\n | 'wn'\n | 'es'\n | 'ws'\n | 'side'\n | 'auto'\n\nexport interface PopFloatOptions {\n class?: string\n content: HTMLElement | ElementPart[]\n target: HTMLElement\n position?: FloatPosition\n remainOnScroll?: 'hide' | 'remove' | 'remain'\n remainOnResize?: 'hide' | 'remove' | 'remain'\n draggable?: boolean\n}\n\nexport const popFloat = (options: PopFloatOptions): XinFloat => {\n const {\n content,\n target,\n position,\n remainOnScroll,\n remainOnResize,\n draggable,\n } = options\n const float = Array.isArray(content)\n ? xinFloat(...content)\n : xinFloat(content)\n\n positionFloat(\n float,\n target,\n position,\n remainOnScroll,\n remainOnResize,\n draggable\n )\n if (options.class) {\n float.setAttribute('class', options.class)\n }\n document.body.append(float)\n return float\n}\n\nexport const positionFloat = (\n element: XinFloat,\n target: HTMLElement,\n position?: FloatPosition,\n remainOnScroll?: 'hide' | 'remove' | 'remain',\n remainOnResize?: 'hide' | 'remove' | 'remain',\n draggable = false\n): void => {\n {\n const { position } = getComputedStyle(element)\n if (position !== 'fixed') {\n element.style.position = 'fixed'\n }\n if (remainOnResize) element.remainOnResize = remainOnResize\n if (remainOnScroll) element.remainOnScroll = remainOnScroll\n bringToFront(element)\n }\n element.drag = draggable\n const { left, top, width, height } = target.getBoundingClientRect()\n const cx = left + width * 0.5\n const cy = top + height * 0.5\n const w = window.innerWidth\n const h = window.innerHeight\n if (position === 'side') {\n position = ((cx < w * 0.5 ? 'e' : 'w') +\n (cy < h * 0.5 ? 's' : 'n')) as FloatPosition\n } else if (position === 'auto' || position === undefined) {\n position = ((cy < h * 0.5 ? 's' : 'n') +\n (cx < w * 0.5 ? 'e' : 'w')) as FloatPosition\n }\n element.style.top =\n element.style.left =\n element.style.right =\n element.style.bottom =\n element.style.transform =\n ''\n if (position.length === 2) {\n const [first, second] = position\n switch (first) {\n case 'n':\n element.style.bottom = (h - top).toFixed(2) + 'px'\n break\n case 'e':\n element.style.left = (left + width).toFixed(2) + 'px'\n break\n case 's':\n element.style.top = (top + height).toFixed(2) + 'px'\n break\n case 'w':\n element.style.right = (w - left).toFixed(2) + 'px'\n break\n }\n\n switch (second) {\n case 'n':\n element.style.bottom = (h - top - height).toFixed(2) + 'px'\n break\n case 'e':\n element.style.left = left.toFixed(2) + 'px'\n break\n case 's':\n element.style.top = top.toFixed(2) + 'px'\n break\n case 'w':\n element.style.right = (w - left - width).toFixed(2) + 'px'\n break\n }\n element.style.transform = ''\n } else if (position === 'n') {\n element.style.bottom = (h - top).toFixed(2) + 'px'\n element.style.left = cx.toFixed(2) + 'px'\n element.style.transform = 'translateX(-50%)'\n } else if (position === 's') {\n element.style.top = (top + height).toFixed(2) + 'px'\n element.style.left = cx.toFixed(2) + 'px'\n element.style.transform = 'translateX(-50%)'\n } else if (position === 'e') {\n element.style.left = (left + width).toFixed(2) + 'px'\n element.style.top = cy.toFixed(2) + 'px'\n element.style.transform = 'translateY(-50%)'\n } else if (position === 'w') {\n element.style.right = (w - left).toFixed(2) + 'px'\n element.style.top = cy.toFixed(2) + 'px'\n element.style.transform = 'translateY(-50%)'\n }\n element.style.setProperty(\n '--max-height',\n `calc(100vh - ${element.style.top || element.style.bottom})`\n )\n element.style.setProperty(\n '--max-width',\n `calc(100vw - ${element.style.left || element.style.right})`\n )\n}\n",
|
|
18
18
|
"export type SortValuator<T = object> = (f: T) => (string | number)[]\n\nexport type SortCallback<T = object> = (p: T, q: T) => number\n\n/*#\n# makeSorter\n\nI'm always confusing myself when writing sort functions, so I wrote `makeSorter()`. It's\ninsanely simple and just works™. It makes writing an array sort callback for anything\nother than an array of numbers or strings easier.\n\n```js\nimport { select, option, div, span, ul, li } from 'tosijs'.elements\nimport { icons, makeSorter } from 'tosijs-ui'\n\nconst people = [\n { first: 'Frasier', last: 'Crane', age: 38 },\n { first: 'Lilith', last: 'Crane', age: 37 },\n { first: 'Rebecca', last: 'Howe', age: 35 },\n { first: 'Woody', last: 'Boyd', age: 25 },\n { first: 'Sam', last: 'Malone', age: 40 },\n { first: 'Norm', last: 'Peterson', age: 38 },\n]\n\nconst sorters = {\n firstSort: makeSorter(person => [person.first]),\n firstDescSort: makeSorter(person => [person.first], false),\n nameSort: makeSorter(person => [person.last, person.first]),\n ageFirst: makeSorter(person => [-person.age, person.last]),\n ageLast: makeSorter(person => [person.age, person.first], [true, false]),\n}\n\nfunction person({first, last, age}) {\n return li(`${first} ${last}, ${age}`)\n}\n\nconst list = ul()\nsortPicker = select(\n option('Sort by first', {value: 'firstSort'}),\n option('Sort by first (desc)', {value: 'firstDescSort'}),\n option('Sort by last, first', {value: 'nameSort'}),\n option('Sort by age (desc), first', {value: 'ageFirst'}),\n option('Sort by age, last (desc)', {value: 'ageLast'}),\n {\n onChange: render,\n value: 'nameSort'\n },\n)\n\nfunction render () {\n list.textContent = ''\n list.append(...people.sort(sorters[sortPicker.value]).map(person))\n}\n\npreview.append(\n div(\n sortPicker,\n icons.chevronDown()\n ),\n list\n)\n\nrender()\n```\n```css\n.preview {\n padding: var(--spacing);\n}\n\n.preview div {\n position: absolute;\n top: var(--spacing);\n right: var(--spacing);\n}\n```\n\n## Details\n\nTo create a sort callback that sorts by propA then propB (if propA is tied):\n\n```\nconst sorter = makeSorter(\n obj => [obj.propA, obj.propB]\n)\n```\n\nAs above, but sort descending:\n```\nconst sorter = makeSorter(\n obj => [obj.propA, obj.propB],\n false\n)\n```\n\nAs above but propA is sorted ascending, propB descending\n```\nconst sorter = makeSorter(\n obj => [obj.propA, obj.propB],\n [true, false]\n)\n```\n*/\n\nexport function makeSorter<T>(\n sortValuator: SortValuator<T>,\n ascending: boolean | boolean[] = true\n): SortCallback<T> {\n return (p: any, q: any) => {\n const pSort = sortValuator(p)\n const qSort = sortValuator(q)\n for (const i in pSort) {\n if (pSort[i] !== qSort[i]) {\n const isAscending = Array.isArray(ascending)\n ? ascending[i] !== false\n : ascending\n return isAscending\n ? pSort[i] > qSort[i]\n ? 1\n : -1\n : pSort[i] > qSort[i]\n ? -1\n : 1\n }\n }\n return 0\n }\n}\n",
|
|
19
19
|
"/*#\n# select\n\n`<xin-select>` (`xinSelect` is the `ElementCreator`) is a replacement for the lamentable\nbuilt in `<select>` element that addresses its various shortcomings.\n\n- since `<xin-select>` is powered by `popMenu`, and supports separators and submenus.\n- options can have icons.\n- `<xin-select>` will retain and display a value even if the matching option is missing.\n- its displayed value can be made `editable`, allowing use as a \"combo box\".\n- options can have `async` callbacks that return a value.\n- picking an item triggers an `action` event even if the value hasn't changed.\n- available options are set via the `options` attribute or the element's `options` property (not `<option>` elements)\n\n```html\n<xin-select\n title=\"simple select\"\n options=\"this,that,,the other\"\n value=\"not an option!\"\n></xin-select><br>\n<xin-select\n show-icon\n title=\"has captions\"\n class=\"captions\"\n value=\"image\"\n></xin-select><br>\n<xin-select\n show-icon\n title=\"combo select with icons\"\n class=\"icons\"\n editable\n placeholder=\"pick an icon\"\n></xin-select><br>\n<xin-select\n show-icon\n hide-caption\n title=\"icons only\"\n class=\"icons-only\"\n placeholder=\"pick an icon\"\n></xin-select>\n<pre contenteditable>Select some text in here…\n…to check for focus stealing</pre>\n```\n```js\nimport { icons } from 'tosijs-ui'\n\nconst captions = preview.querySelector('.captions')\n\ncaptions.options = [\n {\n caption: 'a heading',\n value: 'heading'\n },\n {\n caption: 'a paragraph',\n value: 'paragraph'\n },\n null,\n {\n caption: 'choose some other',\n options: [\n {\n icon: 'image',\n caption: 'an image',\n value: 'image'\n },\n {\n icon: 'fileText',\n caption: 'a text file',\n value: 'text',\n },\n {\n icon: 'video',\n caption: 'a video',\n value: 'video'\n },\n null,\n {\n caption: 'anything goes…',\n value: () => prompt('Enter your other', 'other') || undefined\n },\n {\n caption: 'brother… (after 1s delay)',\n value: async () => new Promise(resolve => {\n setTimeout(() => resolve('brother'), 1000)\n })\n }\n ]\n }\n]\n\nconst iconsSelect = preview.querySelector('.icons')\nconst iconsOnly = preview.querySelector('.icons-only')\n\niconsSelect.options = iconsOnly.options = Object.keys(icons).sort().map(icon =>({\n icon,\n caption: icon,\n value: icon\n}))\n\npreview.addEventListener('action', (event) => {\n console.log(event.target.title, 'user picked', event.target.value)\n}, true)\n\npreview.addEventListener('change', (event) => {\n console.log(event.target.title, 'changed to', event.target.value)\n}, true)\n```\n<xin-css-var-editor element-selector=\"xin-select\"></xin-css-var-editor>\n\n## `options`\n\n type OptionRequest = () => Promise<string | undefined>\n\n export interface SelectOption {\n icon?: string | HTMLElement\n caption: string\n value: string | OptionRequest\n }\n\n export interface SelectOptionSubmenu {\n icon?: string | HTMLElement\n caption: string\n options: SelectOptions\n }\n\n export type SelectOptions = Array<string | null | SelectOption | SelectOptionSubmenu>\n\nA `<xin-select>` can be assigned `options` as a string of comma-delimited choices,\nor be provided a `SelectOptions` array (which allows for submenus, separators, etc.).\n\n## Attributes\n\n`<xin-select>` supports several attributes:\n\n- `editable` lets the user directly edit the value (like a \"combo box\").\n- `show-icon` displays the icon corresponding to the currently selected value.\n- `hide-caption` hides the caption.\n- `placeholder` allows you to set a placeholder.\n- `options` allows you to assign options as a comma-delimited string attribute.\n\n## Events\n\nPicking an option triggers an `action` event (whether or not this changes the value).\n\nChanging the value, either by typing in an editable `<xin-select>` or picking a new\nvalue triggers a `change` event.\n\nYou can look at the console to see the events triggered by the second example.\n\n## Localization\n\n`<xin-select>` supports the `localized` attribute which automatically localizes\noptions.\n\n```html\n<xin-select\n localized\n placeholder=\"localized placeholder\"\n options=\"yes,no,,moderate\"\n></xin-select>\n```\n*/\n\nimport {\n Component,\n ElementCreator,\n PartsMap,\n elements,\n vars,\n throttle,\n} from 'tosijs'\nimport { icons } from './icons'\nimport { popMenu, MenuItem, SubMenu, removeLastMenu } from './menu'\nimport { localize, XinLocalized } from './localize'\n\nconst { button, span, input } = elements\n\ntype OptionRequest = () => Promise<string | undefined>\n\nexport interface SelectOption {\n icon?: string | HTMLElement\n caption: string\n value: string | OptionRequest\n}\n\nexport interface SelectOptionSubmenu {\n icon?: string | HTMLElement\n caption: string\n options: SelectOptions\n}\n\nexport type SelectOptions = Array<\n string | null | SelectOption | SelectOptionSubmenu\n>\n\nconst hasValue = (options: SelectOptions, value: string): boolean => {\n return !!options.find((option) => {\n if (option === null || value == null) {\n return false\n } else if (Array.isArray(option)) {\n return hasValue(option, value)\n } else if ((option as SelectOption).value === value || option === value) {\n return true\n }\n })\n}\n\ninterface SelectParts extends PartsMap {\n button: HTMLButtonElement\n value: HTMLInputElement\n}\n\nexport class XinSelect extends Component<SelectParts> {\n editable = false\n showIcon = false\n hideCaption = false\n options: string | SelectOptions = ''\n value = ''\n placeholder = ''\n filter = ''\n localized = false\n disabled = false\n\n private setValue = (value: string, triggerAction = false) => {\n if (this.value !== value) {\n this.value = value\n }\n if (triggerAction) {\n this.dispatchEvent(new Event('action'))\n }\n }\n\n private getValue = () => this.value\n\n get selectOptions(): SelectOptions {\n return typeof this.options === 'string'\n ? this.options.split(',').map((option) => option.trim() || null)\n : this.options\n }\n\n private buildOptionMenuItem = (\n option: string | null | SelectOption | SelectOptionSubmenu\n ): MenuItem => {\n if (option === null) {\n return null\n }\n const { setValue, getValue } = this\n let icon: string | HTMLElement | undefined\n let caption: string\n let value: string | OptionRequest\n if (typeof option === 'string') {\n caption = value = option\n } else {\n ;({ icon, caption, value } = option as SelectOption)\n }\n if (this.localized) {\n caption = localize(caption)\n }\n const { options } = option as SelectOptionSubmenu\n if (options) {\n return {\n icon,\n caption,\n checked: () => hasValue(options, getValue()),\n menuItems: options.map(this.buildOptionMenuItem),\n }\n }\n return {\n icon,\n caption,\n checked: () => getValue() === value,\n action:\n typeof value === 'function'\n ? async () => {\n const newValue = await (value as OptionRequest)()\n if (newValue !== undefined) {\n setValue(newValue, true)\n }\n }\n : () => {\n if (typeof value === 'string') {\n setValue(value, true)\n }\n },\n }\n }\n\n get optionsMenu(): MenuItem[] {\n const options = this.selectOptions.map(this.buildOptionMenuItem)\n if (this.filter === '') {\n return options\n }\n const showOption = (option: MenuItem) => {\n if (option === null) {\n return true\n } else if ((option as SubMenu).menuItems) {\n ;(option as SubMenu).menuItems = (option as SubMenu).menuItems.filter(\n showOption\n )\n return (option as SubMenu).menuItems.length > 0\n } else {\n return option.caption.toLocaleLowerCase().includes(this.filter)\n }\n }\n return options.filter(showOption)\n }\n\n handleChange = (event: Event) => {\n const { value } = this.parts\n const newValue = value.value || ''\n if (this.value !== String(newValue)) {\n this.value = newValue\n this.dispatchEvent(new Event('change'))\n }\n this.filter = ''\n event.stopPropagation()\n event.preventDefault()\n }\n\n handleKey = (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n }\n }\n\n filterMenu = throttle(() => {\n this.filter = (\n this.parts.value as HTMLInputElement\n ).value.toLocaleLowerCase()\n removeLastMenu(0)\n this.popOptions()\n })\n\n popOptions = (event?: Event) => {\n if (event && event.type === 'click') {\n this.filter = ''\n }\n this.poppedOptions = this.optionsMenu\n popMenu({\n target: this,\n menuItems: this.poppedOptions,\n showChecked: true,\n })\n }\n content = () => [\n button(\n {\n part: 'button',\n onClick: this.popOptions,\n },\n span(),\n input({\n part: 'value',\n value: this.value,\n tabindex: 0,\n onKeydown: this.handleKey,\n onInput: this.filterMenu,\n onChange: this.handleChange,\n }),\n icons.chevronDown()\n ),\n ]\n\n constructor() {\n super()\n\n this.initAttributes(\n 'options',\n 'editable',\n 'placeholder',\n 'showIcon',\n 'hideCaption',\n 'localized',\n 'disabled'\n )\n }\n\n get allOptions(): SelectOption[] {\n const all: SelectOption[] = []\n\n function flatten(some: SelectOptions): void {\n for (const option of some) {\n if (typeof option === 'string') {\n all.push({ caption: option, value: option })\n } else if ((option as SelectOption)?.value) {\n all.push(option as SelectOption)\n } else if ((option as SelectOptionSubmenu)?.options) {\n flatten((option as SelectOptionSubmenu).options)\n }\n }\n }\n\n flatten(this.selectOptions)\n return all\n }\n findOption(): SelectOption {\n const found = this.allOptions.find((option) => option.value === this.value)\n return found || { caption: this.value, value: this.value }\n }\n\n localeChanged = () => {\n this.queueRender()\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n if (this.localized) {\n XinLocalized.allInstances.add(this)\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n if (this.localized) {\n XinLocalized.allInstances.delete(this)\n }\n }\n\n render(): void {\n super.render()\n\n const { value, button } = this.parts\n button.disabled = this.disabled\n const icon = value.previousElementSibling as HTMLElement\n\n const option = this.findOption()\n let newIcon: Element = span()\n value.value = this.localized ? localize(option.caption) : option.caption\n if (option.icon) {\n if (option.icon instanceof HTMLElement) {\n newIcon = option.icon.cloneNode(true) as HTMLElement\n } else {\n newIcon = icons[option.icon]()\n }\n }\n icon.replaceWith(newIcon)\n value.setAttribute(\n 'placeholder',\n this.localized ? localize(this.placeholder) : this.placeholder\n )\n value.style.pointerEvents = this.editable ? '' : 'none'\n value.readOnly = !this.editable\n }\n}\n\nexport const xinSelect = XinSelect.elementCreator({\n tag: 'xin-select',\n styleSpec: {\n ':host': {\n '--gap': '8px',\n '--touch-size': '44px',\n '--padding': '0 8px',\n '--value-padding': '0 8px',\n '--icon-width': '24px',\n '--fieldWidth': '140px',\n display: 'inline-flex',\n position: 'relative',\n },\n ':host button': {\n display: 'flex',\n alignItems: 'center',\n justifyItems: 'center',\n gap: vars.gap,\n textAlign: 'left',\n height: vars.touchSize,\n padding: vars.padding,\n position: 'relative',\n width: '100%',\n },\n ':host:not([show-icon]) button > :first-child': {\n display: 'none',\n },\n ':host[hide-caption] button > :nth-child(2)': {\n display: 'none',\n },\n ':host [part=\"value\"]': {\n width: vars.fieldWidth,\n padding: vars.valuePadding,\n height: vars.touchSize,\n lineHeight: vars.touchSize,\n boxShadow: 'none',\n whiteSpace: 'nowrap',\n outline: 'none',\n background: 'transparent',\n flex: '1',\n },\n ':host [part=\"value\"]:not(:focus)': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n background: 'transparent',\n },\n },\n}) as ElementCreator<XinSelect>\n",
|
|
20
|
-
"/*#\n# localize\n\n`tosijs-ui` provides support for localization via the `localize` method and the `<xin-locale-picker>`\nand `<xin-localized>` custom-elements.\n\n> ### Important Note\n> This module deals with the **language** used in the user interface. \"locale\" is\n> *not the same thing*. The (usually) two-letter codes used designate **language**\n> and **not locale**.\n>\n> E.g. the US *locale* includes things like measurement systems\n> and date format. Most European locales use commas where we use decimal points in the US.\n>\n> Similarly, `ja` is the code for the Japanese **language** while `jp` is the **locale**.\n\n## `initLocalization(localizationData: string)`\n\nEnables localization from TSV string data.\n\n## XinLocalePicker\n\nA selector that lets the user pick from among supported languages.\n\n```html\n<h3>Locale Picker</h3>\n<xin-locale-picker></xin-locale-picker>\n\n<h3>Locale Picker with <code>hide-captions</code></h3>\n<xin-locale-picker hide-caption></xin-locale-picker>\n```\n\n## `localize()`\n\nIf you just want to localize a string with code, use `localize(s: string): string`.\n\nIf the reference string only matches when both are converted to\nlowercase, the output string will also be lowercase.\n\nE.g. if you have localized `Cancel` as `Annuler`, then `localize(\"cancel\")\nwill output `annuler`.\n\n### ellipses\n\nIf you end a string with an ellipsis, `localize` will ignore the ellipsis,\nlocalize the string, and then append the ellipsis.\n\n## `setLocale(language: string)`\n\n```js\nimport { button, p } from 'tosijs'.elements\nimport { setLocale } from 'tosijs-ui'\n\npreview.append(\n p(\n button(\n {\n onClick() {\n setLocale('en-US')\n }\n },\n 'setLocale(\"en-US\")'\n )\n ),\n p(\n button(\n {\n onClick() {\n setLocale('fr')\n }\n },\n 'setLocale(\"fr\")'\n )\n ),\n p(\n button(\n {\n onClick() {\n setLocale('qq')\n }\n },\n 'setLocale(\"qq\") (see console for error message)'\n )\n ),\n)\n```\n\nIf you want to directly set locale, just use `setLocale()`.\n\n## XinLocalized\n\nA span-replacement that automatically localizes its text content.\nBy default the case in the localized data is preserved unless the\nreference text is all lowercase, in which case the localized text\nis also lowercased.\n\nWhile viewing this documentation, all `<xin-localized>` elements should display a **red\nunderline**.\n\n```html\n<h3>Localized Widgets</h3>\n<button><xin-localized>Yes</xin-localized></button>\n<button><xin-localized>No</xin-localized></button>\n<button><xin-localized>Open…</xin-localized></button> <i>note the ellipsis</i>\n\n<h3>Lowercase is preserved</h3>\n<button><xin-localized>yes</xin-localized></button>\n<button><xin-localized>no</xin-localized></button>\n<button><xin-localized>open…</xin-localized></button>\n\n<h3>Localized Attribute</h3>\n<input>\n```\n```css\nxin-localized {\n border-bottom: 2px solid red;\n}\n```\n```js\nimport { xinLocalized, localize } from 'tosijs-ui'\n\npreview.append(xinLocalized({\n refString: 'localized placeholder',\n localeChanged() {\n this.previousElementSibling.setAttribute('placeholder', localize(this.refString))\n }\n}))\n```\n\n`<xin-localized>` has a `refString` attribute (which defaults to its initial `textContent`)\nwhich is the text that it localizes. You can set it directly.\n\nIt also has an `localeChanged` method which defaults to setting the content of the element\nto the localized reference string, but which you can override, to (for example) set a property\nor attribute of the parent element.\n\n> `<xin-localized>` *can* be used inside the shadowDOM of other custom-elements.\n\n## `i18n`\n\nAll of the data can be bound in the `i18n` proxy (`xin.i18n`), including the currently selected\nlocale (which will default to `navigator.language`).\n\nYou can take a look at `xin.i18n` in the console. `i18n` can be used to access localization\ndata directly, and also to determine which locales are available `i18n.locales` and set the\nlocale programmatically (e.g. `i18n.locale = 'en'`).\n\n```\nif (i18n.locales.includes('fr')) {\n i18n.locale = 'fr'\n}\n```\n\n## Creating Localized String Data\n\nYou can create your own localization data using any spreadsheet and exporting TSV.\n\nE.g. you can automatically create localization data\nusing something like my [localized](https://docs.google.com/spreadsheets/d/1L0_4g_dDhVCwVVxLzYbMj_H86xSp9lsRCKj7IS9psso/edit?usp=sharing)\nGoogle Sheet which leverages `googletranslate` to automatically translate reference strings\n(and which you can manually override as you like).\n\nE.g. in this demo I've replaced the incorrect translation of \"Finnish\"\n(`googletranslate` used the word for Finnish nationality rather than the language).\n\nThe format of the input data is a table in TSV format, that looks like this:\n\nen-US | fr | fi | sv | zh\n------|----|----|----|----\nEnglish (US) | French | Finnish | Swedish | Chinese (Mandarin)\nEnglish (US) | Français | suomi | svenska | 中文(普通话)\n🇺🇸 | 🇫🇷 | 🇫🇮 | 🇸🇪 | 🇨🇳\nIcon | Icône | Kuvake | Ikon | 图标\nOk | D'accord | Ok | Ok | 好的\nCancel | Annuler | Peruuttaa | Avboka | 取消\n\n- Column 1 is your reference language.\n- Row 1 is [language code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes).\n- Row 2 is the name of the language in your reference language.\n- Row 3 is the name of the language in itself (because it's silly to expect people\n to know the name of their language in a language they don't know)\n- Row 4 is the flag emoji for that language (yes, that's problematic, but languages\n do not have flags, per se)\n- Rows 5 and on are user interface strings you want to localize\n\nIn the spreadsheet provided, each cell contains a formula that translates the term\nin the left-most column from the language in that column to the language in the\ndestination column. Once you have an automatic translation, you can hand off the\nsheet to language experts to vet the translations.\n\nFinally, create a `tsv` file and then turn that into a Typescript file by wrapping\nthe content thus:\n\n```\nexport default `( content of tsv file )`\n```\n\nYou use this data using `initLocalization()`.\n\n## Leveraging XinLocalized Automatic Updates\n\nIf you want to leverage XinLocalized's automatic updates you simply need to\nimplement `updateLocale` and register yourself with `XinLocalized.allInstances`\n(which is a `Set<AbstractLocalized>).\n\nTypically, this would look like something like:\n\n```\nclass MyLocalizedComponent extends Component {\n ...\n\n // register yourself as a localized component\n connectecCallback() {\n super.connectedCallback()\n\n XinLocalized.allInstances.add(this)\n }\n\n // avoid leaking!\n disconnectecCallback() {\n super.connectedCallback()\n\n XinLocalized.allInstances.delete(this)\n }\n\n // presumably your render method does the right things\n updateLocale = () => {\n this.queueRender()\n }\n}\n```\n*/\n\nimport {\n Component,\n tosi,\n elements,\n bindings,\n observe,\n BoxedProxy,\n} from 'tosijs'\nimport { makeSorter } from './make-sorter'\nimport { xinSelect, XinSelect } from './select'\n\ninterface TranslationMap {\n [key: string]: string[]\n}\n\ninterface I18nConfig {\n locale: string\n locales: string[]\n languages: string[]\n emoji: string[]\n stringMap: TranslationMap\n localeOptions: Array<{\n icon: any // simplified to prevent inferred type from being massive\n caption: string\n value: string\n }>\n}\n\nconst { span } = elements\n\nexport const { i18n } = tosi({\n i18n: {\n locale: window.navigator.language,\n locales: [window.navigator.language],\n languages: [window.navigator.language],\n emoji: [''],\n stringMap: {} as TranslationMap,\n localeOptions: [\n {\n icon: span() as any,\n caption: window.navigator.language,\n value: window.navigator.language,\n },\n ],\n },\n})\n\nbindings.localeOptions = {\n toDOM(select, options) {\n if (select instanceof XinSelect) {\n select.options = options\n }\n },\n}\n\nexport const setLocale = (language: string) => {\n if (i18n.locales.xinValue.includes(language)) {\n i18n.locale.xinValue = language\n } else {\n console.error(`language ${language} is not available`)\n }\n}\n\nexport const updateLocalized = () => {\n const localizeds = Array.from(XinLocalized.allInstances)\n for (const localized of localizeds) {\n localized.localeChanged()\n }\n}\n\n// @ts-ignore-error it's a proxy\nobserve(i18n.locale.xinPath, updateLocalized)\n\nconst captionSort = makeSorter((locale: { caption: string }) => [\n locale.caption.toLocaleLowerCase(),\n])\n\nexport function initLocalization(localizedStrings: string) {\n const [locales, , languages, emoji, ...strings] = localizedStrings\n .split('\\n')\n .map((line) => line.split('\\t'))\n if (locales && languages && emoji && strings) {\n i18n.locales.xinValue = locales\n i18n.languages.xinValue = languages\n i18n.emoji.xinValue = emoji\n i18n.stringMap.xinValue = strings.reduce(\n (map: TranslationMap, strings: string[]) => {\n map[strings[0].toLocaleLowerCase()] = strings\n return map\n },\n {} as TranslationMap\n )\n i18n.localeOptions.xinValue = locales\n .map((locale, index) => ({\n icon: span({ title: locales[index] }, emoji[index]),\n caption: languages[index],\n value: locale,\n }))\n .sort(captionSort)\n\n // if user locale isn't available, find the best match\n if (!i18n.locales.xinValue.includes(i18n.locale.xinValue)) {\n const language = i18n.locale.substring(0, 2)\n i18n.locale.xinValue =\n i18n.locales.xinValue.find(\n (locale: string) => locale.substring(0, 2) === language\n ) || i18n.locales.xinValue[0]\n }\n updateLocalized()\n }\n}\n\nexport function localize(ref: string): string {\n if (ref.endsWith('…')) {\n return localize(ref.substring(0, ref.length - 1)) + '…'\n }\n const index = i18n.locales.xinValue.indexOf(i18n.locale.xinValue)\n if (index > -1) {\n const map = i18n.stringMap[ref.toLocaleLowerCase()]\n const localized = map && map[index]\n if (localized) {\n ref =\n ref.toLocaleLowerCase() === ref\n ? localized.toLocaleLowerCase()\n : localized.valueOf()\n }\n }\n return ref\n}\n\nexport class LocalePicker extends Component {\n hideCaption = false\n\n content = () => {\n return xinSelect({\n part: 'select',\n showIcon: true,\n title: localize('Language'),\n bindValue: i18n.locale,\n bindLocaleOptions: i18n.localeOptions,\n })\n }\n\n constructor() {\n super()\n\n this.initAttributes('hideCaption')\n }\n\n render(): void {\n super.render()\n\n this.parts.select.toggleAttribute('hide-caption', this.hideCaption)\n }\n}\n\nexport const localePicker = LocalePicker.elementCreator({\n tag: 'xin-locale-picker',\n})\n\ninterface AbstractLocalized {\n localeChanged: () => void\n connectedCallback: () => void\n disconnectedCallback: () => void\n}\n\nexport class XinLocalized extends Component {\n static allInstances = new Set<AbstractLocalized>()\n\n contents = () => elements.xinSlot()\n\n refString = ''\n\n constructor() {\n super()\n\n this.initAttributes('refString')\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n XinLocalized.allInstances.add(this as unknown as AbstractLocalized)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n XinLocalized.allInstances.delete(this as unknown as AbstractLocalized)\n }\n\n localeChanged() {\n if (!this.refString) {\n this.refString = this.textContent || ''\n }\n this.textContent = this.refString ? localize(this.refString) : ''\n }\n\n render() {\n super.render()\n\n this.localeChanged()\n }\n}\n\nexport const xinLocalized = XinLocalized.elementCreator({\n tag: 'xin-localized',\n styleSpec: {\n ':host': {\n pointerEvents: 'none',\n },\n },\n})\n",
|
|
20
|
+
"/*#\n# localize\n\n`tosijs-ui` provides support for localization via the `localize` method and the `<xin-locale-picker>`\nand `<xin-localized>` custom-elements.\n\n> ### Important Note\n> This module deals with the **language** used in the user interface. \"locale\" is\n> *not the same thing*. The (usually) two-letter codes used designate **language**\n> and **not locale**.\n>\n> E.g. the US *locale* includes things like measurement systems\n> and date format. Most European locales use commas where we use decimal points in the US.\n>\n> Similarly, `ja` is the code for the Japanese **language** while `jp` is the **locale**.\n\n## `initLocalization(localizationData: string)`\n\nEnables localization from TSV string data.\n\n## XinLocalePicker\n\nA selector that lets the user pick from among supported languages.\n\n```html\n<h3>Locale Picker</h3>\n<xin-locale-picker></xin-locale-picker>\n\n<h3>Locale Picker with <code>hide-captions</code></h3>\n<xin-locale-picker hide-caption></xin-locale-picker>\n```\n\n## `localize()`\n\nIf you just want to localize a string with code, use `localize(s: string): string`.\n\nIf the reference string only matches when both are converted to\nlowercase, the output string will also be lowercase.\n\nE.g. if you have localized `Cancel` as `Annuler`, then `localize(\"cancel\")\nwill output `annuler`.\n\n### ellipses\n\nIf you end a string with an ellipsis, `localize` will ignore the ellipsis,\nlocalize the string, and then append the ellipsis.\n\n## `setLocale(language: string)`\n\n```js\nimport { button, p } from 'tosijs'.elements\nimport { setLocale } from 'tosijs-ui'\n\npreview.append(\n p(\n button(\n {\n onClick() {\n setLocale('en-US')\n }\n },\n 'setLocale(\"en-US\")'\n )\n ),\n p(\n button(\n {\n onClick() {\n setLocale('fr')\n }\n },\n 'setLocale(\"fr\")'\n )\n ),\n p(\n button(\n {\n onClick() {\n setLocale('qq')\n }\n },\n 'setLocale(\"qq\") (see console for error message)'\n )\n ),\n)\n```\n\nIf you want to directly set locale, just use `setLocale()`.\n\n## XinLocalized\n\nA span-replacement that automatically localizes its text content.\nBy default the case in the localized data is preserved unless the\nreference text is all lowercase, in which case the localized text\nis also lowercased.\n\nWhile viewing this documentation, all `<xin-localized>` elements should display a **red\nunderline**.\n\n```html\n<h3>Localized Widgets</h3>\n<button><xin-localized>Yes</xin-localized></button>\n<button><xin-localized>No</xin-localized></button>\n<button><xin-localized>Open…</xin-localized></button> <i>note the ellipsis</i>\n\n<h3>Lowercase is preserved</h3>\n<button><xin-localized>yes</xin-localized></button>\n<button><xin-localized>no</xin-localized></button>\n<button><xin-localized>open…</xin-localized></button>\n\n<h3>Localized Attribute</h3>\n<input>\n```\n```css\nxin-localized {\n border-bottom: 2px solid red;\n}\n```\n```js\nimport { xinLocalized, localize } from 'tosijs-ui'\n\npreview.append(xinLocalized({\n refString: 'localized placeholder',\n localeChanged() {\n this.previousElementSibling.setAttribute('placeholder', localize(this.refString))\n }\n}))\n```\n\n`<xin-localized>` has a `refString` attribute (which defaults to its initial `textContent`)\nwhich is the text that it localizes. You can set it directly.\n\nIt also has an `localeChanged` method which defaults to setting the content of the element\nto the localized reference string, but which you can override, to (for example) set a property\nor attribute of the parent element.\n\n> `<xin-localized>` *can* be used inside the shadowDOM of other custom-elements.\n\n## `i18n`\n\nAll of the data can be bound in the `i18n` proxy (`xin.i18n`), including the currently selected\nlocale (which will default to `navigator.language`).\n\nYou can take a look at `xin.i18n` in the console. `i18n` can be used to access localization\ndata directly, and also to determine which locales are available `i18n.locales` and set the\nlocale programmatically (e.g. `i18n.locale = 'en'`).\n\n```\nif (i18n.locales.includes('fr')) {\n i18n.locale = 'fr'\n}\n```\n\n## Creating Localized String Data\n\nYou can create your own localization data using any spreadsheet and exporting TSV.\n\nE.g. you can automatically create localization data\nusing something like my [localized](https://docs.google.com/spreadsheets/d/1L0_4g_dDhVCwVVxLzYbMj_H86xSp9lsRCKj7IS9psso/edit?usp=sharing)\nGoogle Sheet which leverages `googletranslate` to automatically translate reference strings\n(and which you can manually override as you like).\n\nE.g. in this demo I've replaced the incorrect translation of \"Finnish\"\n(`googletranslate` used the word for Finnish nationality rather than the language).\n\nThe format of the input data is a table in TSV format, that looks like this:\n\nen-US | fr | fi | sv | zh\n------|----|----|----|----\nEnglish (US) | French | Finnish | Swedish | Chinese (Mandarin)\nEnglish (US) | Français | suomi | svenska | 中文(普通话)\n🇺🇸 | 🇫🇷 | 🇫🇮 | 🇸🇪 | 🇨🇳\nIcon | Icône | Kuvake | Ikon | 图标\nOk | D'accord | Ok | Ok | 好的\nCancel | Annuler | Peruuttaa | Avboka | 取消\n\n- Column 1 is your reference language.\n- Row 1 is [language code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes).\n- Row 2 is the name of the language in your reference language.\n- Row 3 is the name of the language in itself (because it's silly to expect people\n to know the name of their language in a language they don't know)\n- Row 4 is the flag emoji for that language (yes, that's problematic, but languages\n do not have flags, per se)\n- Rows 5 and on are user interface strings you want to localize\n\nIn the spreadsheet provided, each cell contains a formula that translates the term\nin the left-most column from the language in that column to the language in the\ndestination column. Once you have an automatic translation, you can hand off the\nsheet to language experts to vet the translations.\n\nFinally, create a `tsv` file and then turn that into a Typescript file by wrapping\nthe content thus:\n\n```\nexport default `( content of tsv file )`\n```\n\nYou use this data using `initLocalization()`.\n\n## Leveraging XinLocalized Automatic Updates\n\nIf you want to leverage XinLocalized's automatic updates you simply need to\nimplement `updateLocale` and register yourself with `XinLocalized.allInstances`\n(which is a `Set<AbstractLocalized>).\n\nTypically, this would look like something like:\n\n```\nclass MyLocalizedComponent extends Component {\n ...\n\n // register yourself as a localized component\n connectecCallback() {\n super.connectedCallback()\n\n XinLocalized.allInstances.add(this)\n }\n\n // avoid leaking!\n disconnectecCallback() {\n super.connectedCallback()\n\n XinLocalized.allInstances.delete(this)\n }\n\n // presumably your render method does the right things\n updateLocale = () => {\n this.queueRender()\n }\n}\n```\n*/\n\nimport {\n Component,\n tosi,\n elements,\n bindings,\n observe,\n BoxedProxy,\n} from 'tosijs'\nimport { makeSorter } from './make-sorter'\nimport { xinSelect, XinSelect } from './select'\n\ninterface TranslationMap {\n [key: string]: string[]\n}\n\ninterface I18nConfig {\n locale: string\n locales: string[]\n languages: string[]\n emoji: string[]\n stringMap: TranslationMap\n localeOptions: Array<{\n icon: any // simplified to prevent inferred type from being massive\n caption: string\n value: string\n }>\n}\n\nconst { span } = elements\n\nexport const { i18n } = tosi({\n i18n: {\n locale: window.navigator.language,\n locales: [window.navigator.language],\n languages: [window.navigator.language],\n emoji: [''],\n stringMap: {} as TranslationMap,\n localeOptions: [\n {\n icon: span() as any,\n caption: window.navigator.language,\n value: window.navigator.language,\n },\n ],\n },\n})\n\nbindings.localeOptions = {\n toDOM(select, options) {\n if (select instanceof XinSelect) {\n select.options = options\n }\n },\n}\n\nexport const setLocale = (language: string) => {\n if (i18n.locales.xinValue.includes(language)) {\n i18n.locale.xinValue = language\n } else {\n console.error(`language ${language} is not available`)\n }\n}\n\nexport const updateLocalized = () => {\n const localizeds = Array.from(XinLocalized.allInstances)\n for (const localized of localizeds) {\n localized.localeChanged()\n }\n}\n\n// @ts-ignore-error it's a proxy\nobserve(i18n.locale.xinPath, updateLocalized)\n\nconst captionSort = makeSorter((locale: { caption: string }) => [\n locale.caption.toLocaleLowerCase(),\n])\n\nexport function initLocalization(localizedStrings: string) {\n const [locales, , languages, emoji, ...strings] = localizedStrings\n .split('\\n')\n .map((line) => line.split('\\t'))\n if (locales && languages && emoji && strings) {\n i18n.locales.xinValue = locales\n i18n.languages.xinValue = languages\n i18n.emoji.xinValue = emoji\n i18n.stringMap.xinValue = strings.reduce(\n (map: TranslationMap, strings: string[]) => {\n map[strings[0].toLocaleLowerCase()] = strings\n return map\n },\n {} as TranslationMap\n )\n i18n.localeOptions.xinValue = locales\n .map((locale, index) => ({\n icon: span({ title: locales[index] }, emoji[index]),\n caption: languages[index],\n value: locale,\n }))\n .sort(captionSort)\n\n // if user locale isn't available, find the best match\n if (!i18n.locales.xinValue.includes(i18n.locale.xinValue)) {\n const language = i18n.locale.substring(0, 2)\n i18n.locale.xinValue =\n i18n.locales.xinValue.find(\n (locale: string) => locale.substring(0, 2) === language\n ) || i18n.locales.xinValue[0]\n }\n updateLocalized()\n }\n}\n\nexport function localize(ref: string): string {\n if (ref.endsWith('…')) {\n return localize(ref.substring(0, ref.length - 1)) + '…'\n }\n const index = i18n.locales.xinValue.indexOf(i18n.locale.xinValue)\n if (index > -1) {\n const map = i18n.stringMap[ref.toLocaleLowerCase()]\n const localized = map.xinValue && map[index]\n if (localized) {\n ref =\n ref.toLocaleLowerCase() === ref\n ? localized.toLocaleLowerCase()\n : localized.tosiValue\n }\n }\n return ref\n}\n\nexport class LocalePicker extends Component {\n hideCaption = false\n\n content = () => {\n return xinSelect({\n part: 'select',\n showIcon: true,\n title: localize('Language'),\n bindValue: i18n.locale,\n bindLocaleOptions: i18n.localeOptions,\n })\n }\n\n constructor() {\n super()\n\n this.initAttributes('hideCaption')\n }\n\n render(): void {\n super.render()\n\n this.parts.select.toggleAttribute('hide-caption', this.hideCaption)\n }\n}\n\nexport const localePicker = LocalePicker.elementCreator({\n tag: 'xin-locale-picker',\n})\n\ninterface AbstractLocalized {\n localeChanged: () => void\n connectedCallback: () => void\n disconnectedCallback: () => void\n}\n\nexport class XinLocalized extends Component {\n static allInstances = new Set<AbstractLocalized>()\n\n contents = () => elements.xinSlot()\n\n refString = ''\n\n constructor() {\n super()\n\n this.initAttributes('refString')\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n XinLocalized.allInstances.add(this as unknown as AbstractLocalized)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n XinLocalized.allInstances.delete(this as unknown as AbstractLocalized)\n }\n\n localeChanged() {\n if (!this.refString) {\n this.refString = this.textContent || ''\n }\n this.textContent = this.refString ? localize(this.refString) : ''\n }\n\n render() {\n super.render()\n\n this.localeChanged()\n }\n}\n\nexport const xinLocalized = XinLocalized.elementCreator({\n tag: 'xin-localized',\n styleSpec: {\n ':host': {\n pointerEvents: 'none',\n },\n },\n})\n",
|
|
21
21
|
"interface KeyboardEventLike {\n key: string\n ctrlKey: boolean\n metaKey: boolean\n altKey: boolean\n shiftKey: boolean\n}\n\nexport const matchShortcut = (\n keystroke: KeyboardEventLike,\n shortcut: string\n): boolean => {\n shortcut = shortcut.toLocaleLowerCase()\n const ctrlKey = !!shortcut.match(/\\^|ctrl/)\n const metaKey = !!shortcut.match(/⌘|meta/)\n const altKey = !!shortcut.match(/⌥|⎇|alt|option/)\n const shiftKey = !!shortcut.match(/⇧|shift/)\n const baseKey = shortcut.slice(-1)\n\n return (\n keystroke.key === baseKey &&\n keystroke.metaKey === metaKey &&\n keystroke.ctrlKey === ctrlKey &&\n keystroke.altKey === altKey &&\n keystroke.shiftKey === shiftKey\n )\n}\n",
|
|
22
22
|
"/*#\n# menu\n\nBeing able to pop a menu up anywhere is just so nice, and `tosijs-ui` allows menus\nto be generated on-the-fly, and even supports hierarchical menus.\n\n## popMenu and `<xin-menu>`\n\n`popMenu({target, menuItems, …})` will spawn a menu from a target.\n\nThe `<xin-menu>` component places creates a trigger button, hosts\nmenuItems, and (because it persists in the DOM) supports keyboard\nshortcuts.\n\n```js\nimport { popMenu, localize, xinMenu, postNotification, xinLocalized, icons } from 'tosijs-ui'\nimport { elements } from 'tosijs'\n\nlet picked = ''\nlet testingEnabled = false\n\nconst menuItems = [\n {\n icon: 'thumbsUp',\n caption: 'Like',\n shortcut: '^L',\n action() {\n postNotification({\n message: 'I like it!',\n icon: 'thumbsUp',\n duration: 1\n })\n }\n },\n {\n icon: 'heart',\n caption: 'Love',\n shortcut: '⌘⇧L',\n action() {\n postNotification({\n type: 'success',\n message: 'I LOVE it!',\n icon: 'heart',\n duration: 1\n })\n }\n },\n {\n icon: 'thumbsDown',\n caption: 'dislike',\n shortcut: '⌘D',\n action() {\n postNotification({\n type: 'error',\n message: 'Awwwwwww…',\n icon: 'thumbsDown',\n duration: 1\n })\n }\n },\n null, // separator\n {\n caption: localize('Localized placeholder'),\n action() {\n alert(localize('Localized placeholder'))\n }\n },\n {\n icon: elements.span('🥹'),\n caption: 'Also see…',\n menuItems: [\n {\n icon: elements.span('😳'),\n caption: 'And that’s not all…',\n menuItems: [\n {\n icon: 'externalLink',\n caption: 'timezones',\n action: 'https://timezones.tosijs.net/'\n },\n {\n icon: 'externalLink',\n caption: 'b8rjs',\n action: 'https://b8rjs.com'\n },\n ]\n },\n {\n icon: 'tosi',\n caption: 'tosi',\n action: 'https://xinjs.net'\n },\n {\n icon: 'tosiPlatform',\n caption: 'tosi-platform',\n action: 'https://xinie.net'\n },\n ]\n },\n {\n icon: testingEnabled ? 'check' : '',\n caption: 'Testing Enabled',\n action() {\n testingEnabled = !testingEnabled\n }\n },\n {\n caption: 'Testing…',\n enabled() {\n return testingEnabled\n },\n menuItems: [\n {\n caption: 'one',\n checked: () => picked === 'one',\n action () {\n picked = 'one'\n }\n },\n {\n caption: 'two',\n checked: () => picked === 'two',\n action () {\n picked = 'two'\n }\n },\n {\n caption: 'three',\n checked: () => picked === 'three',\n action () {\n picked = 'three'\n }\n }\n ]\n }\n]\n\npreview.addEventListener('click', (event) => {\n if (!event.target.closest('button')) {\n return\n }\n popMenu({\n target: event.target,\n menuItems\n })\n})\n\npreview.append(\n xinMenu(\n {\n menuItems,\n localized: true,\n },\n xinLocalized('Menu'),\n icons.chevronDown()\n )\n)\n```\n```html\n<button title=\"menu test\">\n <xin-icon icon=\"moreVertical\"></xin-icon>\n</button>\n<button title=\"menu test from bottom-right\" style=\"position: absolute; bottom: 0; right: 0\">\n <xin-icon icon=\"moreVertical\"></xin-icon>\n</button>\n```\n```css\n.preview button {\n min-width: 44px;\n text-align: center;\n height: 44px;\n margin: 5px;\n}\n```\n\n## Overflow test\n\n```js\nimport { popMenu, icons, postNotification } from 'tosijs-ui'\nimport { elements } from 'tosijs'\n\npreview.querySelector('button').addEventListener('click', (event) => {\n popMenu({\n target: event.target,\n menuItems: Object.keys(icons).map(icon => ({\n icon,\n caption: icon,\n action() {\n postNotification({\n icon: icon,\n message: icon,\n duration: 1\n })\n }\n }))\n })\n})\n```\n```html\n<button title=\"big menu test\" style=\"position: absolute; top: 0; left: 0\">\n Big Menu Test\n</button>\n```\n\n## popMenu({target, width, menuItems…})\n\n```\nexport interface PopMenuOptions {\n target: HTMLElement\n menuItems: MenuItem[]\n width?: string | number\n position?: FloatPosition\n submenuDepth?: number // don't set this, it's set internally by popMenu\n submenuOffset?: { x: number; y: number }\n localized?: boolean,\n showChecked?: boolean, // if true, scroll checked item(s) into view\n}\n```\n\n`popMenu` will spawn a menu on a target element. A menu is just a `MenuItem[]`.\n\n## MenuItem\n\nA `MenuItem` can be one of three things:\n\n- `null` denotes a separator\n- `MenuAction` denotes a labeled button or `<a>` tag based on whether the `action` provided\n is a url (string) or an event handler (function).\n- `SubMenu` is a submenu.\n\n### MenuAction\n\nNote that popMenu does not implement shortcuts for you (yet!).\n\n```\ninterface MenuAction {\n caption: string\n shortcut?: string\n checked?: () => boolean\n enabled?: () => boolean\n action: ActionCallback | string\n icon?: string | Element\n}\n```\n\n### SubMenu\n\n```\ninterface SubMenu {\n caption: string\n enabled?: () => boolean\n menuItems: MenuItem[]\n icon?: string | Element\n}\n```\n\n### Keyboard Shortcuts\n\nIf a menu is embodied in a `<xin-menu>` it is supported by keyboard\nshortcuts. Both text and symbolic shortcut descriptions are supported,\ne.g.\n\n- `⌘C` or `meta-C`\n- `⇧P` for `shift-P`\n- `^F` or `ctrl-f`\n- `⌥x`, `⎇x`, `alt-x` or `option-x`\n\n## Localization\n\nIf you set `localized: true` in `PopMenuOptions` then menu captions will be be\npassed through `localize`. You'll need to provide the appropriate localized strings,\nof course.\n\n> `<xin-menu>` supports the `localized` attribute but it doesn't localize\n> its trigger button.\n\nTo see this in action, see the example below, or look at the\n[table example](?data-table.ts). It uses a `localized` menu\nto render column names when you show hidden columns.\n\n```js\nimport { elements } from 'tosijs'\nimport { xinLocalized, localize, icons, popMenu, postNotification } from 'tosijs-ui'\nconst { button } = elements\nconst makeItem = s => ({\n caption: s,\n action() {\n postNotification({\n message: localize(s),\n duration: 1\n })\n }\n})\nconst target = button(\n {\n onClick(event) {\n popMenu({\n target: event.target.closest('button'),\n localized: true,\n menuItems: [\n makeItem('New'),\n makeItem('Open...'),\n makeItem('Save'),\n makeItem('Close'),\n ]\n })\n }\n },\n xinLocalized(\n { style: { marginRight: '5px' }},\n 'menu'\n ),\n icons.chevronDown()\n)\npreview.append(target)\n```\n\n## Why another menu library?!\n\nSupport for menus is sadly lacking in HTML, and unfortunately there's a huge conceptual problem\nwith menus implemented the way React and React-influenced libraries work, i.e. you need\nto have an instance of a menu \"wrapped around\" the DOM element that triggers it, whereas\na better approach (and one dating back at least as far as the original Mac UI) is to treat\na menu as a separate resource that can be instantiated on demand.\n\nA simple example where this becomes really obvious is if you want to associate a \"more options\"\nmenu with every row of a large table. Either you end up having an enormous DOM (virtual or otherwise)\nor you have to painfully swap out components on-the-fly.\n\nAnd, finally, submenus are darn useful for any serious app.\n\nFor this reason, `tosijs-ui` has its own menu implementation.\n*/\n\nimport {\n elements,\n varDefault,\n vars,\n StyleSheet,\n Component,\n PartsMap,\n} from 'tosijs'\nimport { popFloat, FloatPosition } from './pop-float'\nimport { icons, svgIcon, SvgIcon } from './icons'\nimport { localize, xinLocalized } from './localize'\nimport { matchShortcut } from './match-shortcut'\n\nexport type ActionCallback = () => void | Promise<void>\n\nexport interface MenuAction {\n caption: string\n shortcut?: string\n checked?: () => boolean\n enabled?: () => boolean\n action: ActionCallback | string\n icon?: string | Element\n}\n\nexport interface SubMenu {\n caption: string\n checked?: () => boolean\n enabled?: () => boolean\n menuItems: MenuItem[]\n icon?: string | Element\n}\n\nexport type MenuSeparator = null\n\nexport type MenuItem = MenuAction | SubMenu | MenuSeparator\n\nconst { div, button, span, a, xinSlot } = elements\n\nStyleSheet('xin-menu-helper', {\n '.xin-menu': {\n overflow: 'hidden auto',\n maxHeight: `calc(${vars.maxHeight} - ${varDefault.menuInset('8px')})`,\n borderRadius: vars.spacing50,\n background: varDefault.menuBg('#fafafa'),\n boxShadow: varDefault.menuShadow(\n `${vars.spacing13} ${vars.spacing50} ${vars.spacing} #0004`\n ),\n },\n '.xin-menu > div': {\n width: varDefault.menuWidth('auto'),\n },\n '.xin-menu-trigger': {\n paddingLeft: 0,\n paddingRight: 0,\n minWidth: varDefault.touchSize('48px'),\n },\n '.xin-menu-separator': {\n display: 'inline-block',\n content: ' ',\n height: '1px',\n width: '100%',\n background: varDefault.menuSeparatorColor('#2224'),\n margin: varDefault.menuSeparatorMargin('8px 0'),\n },\n '.xin-menu-item': {\n boxShadow: 'none',\n border: 'none !important',\n display: 'grid',\n alignItems: 'center',\n justifyContent: 'flex-start',\n textDecoration: 'none',\n gridTemplateColumns: '0px 1fr 30px',\n width: '100%',\n gap: 0,\n background: 'transparent',\n padding: varDefault.menuItemPadding('0 16px'),\n height: varDefault.menuItemHeight('48px'),\n lineHeight: varDefault.menuItemHeight('48px'),\n textAlign: 'left',\n },\n '.xin-menu-item, .xin-menu-item > span': {\n color: varDefault.menuItemColor('#222'),\n },\n '.xin-menu-with-icons .xin-menu-item': {\n gridTemplateColumns: '30px 1fr 30px',\n },\n '.xin-menu-item svg': {\n stroke: varDefault.menuItemIconColor('#222'),\n },\n '.xin-menu-item.xin-menu-item-checked': {\n background: varDefault.menuItemHoverBg('#eee'),\n },\n '.xin-menu-item > span:nth-child(2)': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'left',\n },\n '.xin-menu-item:hover': {\n // chrome rendering bug\n boxShadow: 'none !important',\n background: varDefault.menuItemHoverBg('#eee'),\n },\n '.xin-menu-item:active': {\n // chrome rendering bug\n boxShadow: 'none !important',\n background: varDefault.menuItemActiveBg('#aaa'),\n color: varDefault.menuItemActiveColor('#000'),\n },\n '.xin-menu-item:active svg': {\n stroke: varDefault.menuItemIconActiveColor('#000'),\n },\n})\n\nexport const createMenuAction = (\n item: MenuAction,\n options: PopMenuOptions\n): HTMLElement => {\n const checked = (item.checked && item.checked() && 'check') || false\n let icon = item?.icon || checked || span(' ')\n if (typeof icon === 'string') {\n icon = icons[icon]()\n }\n let menuItem: HTMLElement\n if (typeof item?.action === 'string') {\n menuItem = a(\n {\n class: 'xin-menu-item',\n href: item.action,\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(item.shortcut || ' ')\n )\n } else {\n menuItem = button(\n {\n class: 'xin-menu-item',\n onClick: item.action,\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(item.shortcut || ' ')\n )\n }\n menuItem.classList.toggle('xin-menu-item-checked', checked !== false)\n if (item?.enabled && !item.enabled()) {\n menuItem.setAttribute('disabled', '')\n }\n return menuItem\n}\n\nexport const createSubMenu = (\n item: SubMenu,\n options: PopMenuOptions\n): HTMLElement => {\n const checked = (item.checked && item.checked() && 'check') || false\n let icon = item?.icon || checked || span(' ')\n if (typeof icon === 'string') {\n icon = icons[icon]()\n }\n const submenuItem = button(\n {\n class: 'xin-menu-item',\n disabled: !(!item.enabled || item.enabled()),\n onClick(event: Event) {\n popMenu(\n Object.assign({}, options, {\n menuItems: item.menuItems,\n target: submenuItem,\n submenuDepth: (options.submenuDepth || 0) + 1,\n position: 'side',\n })\n )\n event.stopPropagation()\n event.preventDefault()\n },\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n icons.chevronRight({ style: { justifySelf: 'flex-end' } })\n )\n return submenuItem\n}\n\nexport const createMenuItem = (\n item: MenuItem,\n options: PopMenuOptions\n): HTMLElement => {\n if (item === null) {\n return span({ class: 'xin-menu-separator' })\n } else {\n const createdItem = (item as MenuAction)?.action\n ? createMenuAction(item as MenuAction, options)\n : createSubMenu(item as SubMenu, options)\n if (options.showChecked && item.checked && item.checked()) {\n requestAnimationFrame(() => {\n createdItem.scrollIntoView({ block: 'center' })\n })\n }\n return createdItem\n }\n}\n\nexport const menu = (options: PopMenuOptions): HTMLDivElement => {\n const { target, width, menuItems } = options\n const hasIcons = menuItems.find(\n (item) => item?.icon || (item as MenuAction)?.checked\n )\n return div(\n {\n class: hasIcons ? 'xin-menu xin-menu-with-icons' : 'xin-menu',\n onClick() {\n removeLastMenu(0)\n },\n },\n div(\n {\n style: {\n minWidth: target.offsetWidth + 'px',\n width: typeof width === 'number' ? `${width}px` : width,\n },\n onMousedown(event: Event) {\n event.preventDefault()\n event.stopPropagation()\n },\n },\n ...menuItems.map((item) => createMenuItem(item, options))\n )\n )\n}\n\ninterface PoppedMenu {\n target: HTMLElement\n menu: HTMLElement\n}\nlet lastPopped: PoppedMenu | undefined\nconst poppedMenus: PoppedMenu[] = []\n\nexport const removeLastMenu = (depth = 0): PoppedMenu | undefined => {\n const toBeRemoved = poppedMenus.splice(depth)\n for (const popped of toBeRemoved) {\n popped.menu.remove()\n }\n lastPopped = toBeRemoved[0]\n return depth > 0 ? poppedMenus[depth - 1] : undefined\n}\n\nexport interface PopMenuOptions {\n target: HTMLElement\n menuItems: MenuItem[]\n width?: string | number\n position?: FloatPosition\n submenuDepth?: number\n submenuOffset?: { x: number; y: number }\n localized?: boolean\n showChecked?: boolean\n}\n\ndocument.body.addEventListener('mousedown', (event: Event) => {\n if (\n event.target &&\n !poppedMenus.find((popped) => popped.target.contains(event.target as Node))\n ) {\n removeLastMenu(0)\n }\n})\ndocument.body.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n removeLastMenu(0)\n }\n})\n\nexport const popMenu = (options: PopMenuOptions): void => {\n options = Object.assign({ submenuDepth: 0 }, options)\n const { target, position, submenuDepth } = options\n if (lastPopped && !document.body.contains(lastPopped?.menu)) {\n lastPopped = undefined\n }\n if (poppedMenus.length && !document.body.contains(poppedMenus[0].menu)) {\n poppedMenus.splice(0)\n }\n if (submenuDepth === 0 && lastPopped?.target === target) return\n const popped = removeLastMenu(submenuDepth)\n if (lastPopped?.target === target) return\n if (popped && popped.target === target) {\n removeLastMenu()\n return\n }\n\n if (!options.menuItems?.length) {\n return\n }\n const content = menu(options)\n const float = popFloat({\n content,\n target,\n position,\n })\n float.remainOnScroll = 'remove'\n poppedMenus.push({\n target,\n menu: float,\n })\n}\n\nfunction findShortcutAction(\n items: MenuItem[],\n event: KeyboardEvent\n): MenuAction | undefined {\n for (const item of items) {\n if (!item) continue\n const { shortcut } = item as MenuAction\n const { menuItems } = item as SubMenu\n\n if (shortcut) {\n if (matchShortcut(event, shortcut)) {\n return item as MenuAction\n }\n } else if (menuItems) {\n const foundAction = findShortcutAction(menuItems, event)\n if (foundAction) {\n return foundAction\n }\n }\n }\n return undefined\n}\n\ninterface XinMenuParts extends PartsMap {\n trigger: HTMLButtonElement\n icon: SvgIcon\n}\n\nexport class XinMenu extends Component<XinMenuParts> {\n menuItems: MenuItem[] = []\n menuWidth = 'auto'\n localized = false\n\n showMenu = (event: Event) => {\n if (event.type === 'click' || (event as KeyboardEvent).code === 'Space') {\n popMenu({\n target: this.parts.trigger,\n width: this.menuWidth,\n localized: this.localized,\n menuItems: this.menuItems,\n })\n event.stopPropagation()\n event.preventDefault()\n }\n }\n\n content = () =>\n button({ tabindex: 0, part: 'trigger', onClick: this.showMenu }, xinSlot())\n\n handleShortcut = async (event: KeyboardEvent) => {\n const menuAction = findShortcutAction(this.menuItems, event)\n if (menuAction) {\n if (menuAction.action instanceof Function) {\n menuAction.action()\n }\n }\n }\n\n constructor() {\n super()\n\n this.initAttributes('menuWidth', 'localized', 'icon')\n\n this.addEventListener('keydown', this.showMenu)\n }\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('keydown', this.handleShortcut, true)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n document.removeEventListener('keydown', this.handleShortcut)\n }\n}\n\nexport const xinMenu = XinMenu.elementCreator({\n tag: 'xin-menu',\n styleSpec: {\n ':host': {\n display: 'inline-block',\n },\n ':host button > xin-slot': {\n display: 'flex',\n alignItems: 'center',\n gap: varDefault.xinMenuTriggerGap('10px'),\n },\n },\n})\n",
|
|
23
|
-
"/*#\n# drag & drop\n\nA lightweight library that leverages HTML5 drag and drop behavior.\n\nTo use it, simply call `dragAndDrop.init()` (it only needs to be called once,\nbut calling it again is harmless).\n\n```\nimport { dragAndDrop } from 'tosijs-ui'\n\ndragAndDrop.init()\n```\n\nThis module sets up some global event handlers and *just works*™ (arguably, it merely does things\nthat the browser should do, such as add a CSS selector for drop zones that are compatible\nwith what's being dragged).\n\nYou can use `dragAndDrop.draggedElement()` to get the element being dragged (if it's\nactually from the page you're in).\n\n> ### The beauty of HTML5 drag-and-drop\n>\n> The nice thing about HTML5 drag-and-drop is that it leverages the OS's drag and\n> drop support. This means you can drag from one window to another, from the desktop\n> to your app and vice versa. It's all a matter of configuring the DOM elements.\n\nThis module uses but *does not define* the following class selectors:\n\n- `.drag-source` an element being dragged\n- `.drag-target` an element on which the dragged object may be dropped\n- `.drag-over` a `.drag-target` which the object is currently over\n\nYou may also wish to create style rules for:\n\n- `[draggable=\"true\"]` anything other than a `<a>` (and perhaps an `<img>`) that can be dragged\n- `[data-drag]` indicates *types* of draggable things that can be dropped on them.\n- `[data-drop]` indicates potential *drop zones*.\n\n> **Note** `draggable` is has to be set to \"true\", [see documentation on draggable](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable).\n\n## Draggable Objects\n\nTo create a draggable element, add `draggable=\"true\"`.\n\n <div draggable=\"true\">Drag Me</div>\n\nTo specify the type(s) of content that will be dragged, use the `data-drag` attribute:\n\n <div draggable=\"true\" data-drag=\"text/plain\">Drag Me</div>\n\nTo specify the content dragged, use a `data-drag-content` attribute.\n\n <div\n draggable=\"true\"\n data-drag=\"text/plain\"\n data-drag-content=\"Surprise!\"\n >Drag Me</div>\n\n## Drop Zones\n\nTo create a drop zone, use the data-drop attribute set to a semicolon-delimited list\nof mime types:\n\n <div data-drop=\"text/plain\">\n Drop plain text here\n </div>\n <div data-drop=\"text/plain;text/html\">\n Drop html or plain text here\n </div>\n\nFinally, you can override default drop behavior (which is to copy the dragged node into\nthe drop zone node) simply using data-event=\"drop:path.to.drop_handler\" as usual.\n\n <div\n data-drop=\"custom\"\n data-event=\"drop:path.to.drop_handler\"\n >\n Drop some custom thing here\n </div>\n\n### Typed Drop Zones Example\n\n```html\n<div style=\"display: grid; grid-template-columns: 50% 50%\">\n <div>\n <h4>Draggable</h4>\n <a class=\"drag\" href=\"javascript: alert('I don't do anything)\">Links are draggable by default</a>\n <p draggable=\"true\">\n Just adding the <code>draggable=\"true\"</code>\n makes this paragraph draggable (as text/html by default)\n </p>\n <p draggable=\"true\" data-drag=\"text/html\">\n Draggable as <i>text/html</i>\n </p>\n <p draggable=\"true\" data-drag=\"text/plain\" data-drag-content=\"Surprise!\">\n Draggable as <i>text/plain</i>, with <b>custom content</b>\n </p>\n <p draggable=\"true\" data-drag=\"text/html;text/plain\">\n Draggable as <i>text/html</i> or <i>text/plain</i>\n </p>\n <p draggable=\"true\" data-drag=\"text/plain\">\n Draggable as <i>text/plain</i>\n </p>\n </div>\n <div>\n <h4>Drop Targets</h4>\n <div data-drop=\"text/html\">\n You can drop stuff here\n </div>\n <div data-drop=\"text/html\">\n You can drop HTML here\n </div>\n <div data-drop=\"text/*\">\n You can drop any text\n </div>\n <div data-drop=\"text/html;url\">\n You can drop HTML or urls here\n </div>\n <div\n data-drop=\"special/any\"\n data-event=\"drop:_component_.drop\"\n >\n I accept anything and have special drop handling\n </div>\n </div>\n</div>\n```\n```css\n.drag-source {\n box-shadow: 0 0 2px 2px orange;\n opacity: 0.5;\n}\n.drag-target {\n min-height: 10px;\n background: rgba(0,0,255,0.25);\n}\n.drag-target.drag-over {\n background: rgba(0,0,255,0.5);\n}\n:not([data-drop]) > .drag,\n[draggable=\"true\"] {\n border: 1px solid rgba(255,192,0,0.5);\n cursor: pointer;\n display: block;\n}\n\n:not([data-drop]) > .drag,\n[data-drop],\n[draggable=\"true\"] {\n padding: 4px;\n margin: 4px;\n border-radius: 5px;\n}\n```\n```js\nimport { dragAndDrop } from 'tosijs-ui'\n\ndragAndDrop.init()\n```\n\n> Note that you can drag between two browser tabs containing this\n> example (or between two different browsers) and it will work.\n\n### Reorderable List Example\n\n```js\nimport { elements, tosi, getListItem } from 'tosijs'\nimport { dragAndDrop, TosiDialog } from 'tosijs-ui'\n\ndragAndDrop.init()\n\nconst shuffle = (deck) => {\n var shuffled = [];\n for( const card of deck ){\n shuffled.splice( Math.floor( Math.random() * (1 + shuffled.length) ), 0, card );\n }\n return shuffled;\n}\n\nconst colors = [\n 'red',\n 'orange',\n 'yellow',\n 'green',\n 'blue',\n 'indigo',\n 'violet',\n]\n\nlet spectrum\n\nconst start = () => {\n ({ spectrum } = tosi({\n spectrum: shuffle(colors).map(color => ({color}))\n }))\n}\n\nstart()\n\nlet dragged = null\n\nconst dropColor = (event) => {\n const dropped = getListItem(event.target)\n const draggedIndex = spectrum.indexOf(dragged)\n const droppedIndex = spectrum.indexOf(dropped)\n spectrum.splice(draggedIndex, 1)\n spectrum.splice(droppedIndex, 0, dragged)\n\n if (JSON.stringify(spectrum.map(c => c.color)) === JSON.stringify(colors)) {\n TosiDialog.alert('You win!').then(start)\n }\n\n console.log({dragged, draggedIndex, dropped, droppedIndex})\n\n event.preventDefault()\n event.stopPropagation()\n}\n\nconst dragId = 'spectrum/' + Math.floor(Math.random() * 1e9)\n\nconst { div, button, template } = elements\n\npreview.append(\n div(\n {\n bindList: { value: spectrum, idPath: 'color' }\n },\n template(\n div({\n class: 'spectrum',\n bindText: '^.color',\n draggable: 'true',\n dataDrag: dragId,\n dataDrop: dragId,\n onDrop: dropColor,\n bind: {\n value: '^.color',\n binding(element, value) {\n element.style.backgroundColor = value\n }\n },\n onDragstart(event) {\n dragged = getListItem(event.target)\n }\n })\n )\n ),\n)\n```\n```css\n.spectrum {\n height: 36px;\n color: white;\n font-weight: 700;\n text-shadow: 1px 2px 0 black;\n padding-left: 10px;\n}\n\n.spectrum.drag-over {\n box-shadow: 0 0 0 4px blue;\n}\n```\n\n> To prevent this example from allowing drags between windows (which\n> wouldn't make sense) a random dragId is assigned to `data-drag` and\n> `data-drop` in this example.\n)\n*/\n\nconst dragInProgress = () => !!document.querySelector('.drag-source')\n\nconst isTypeAllowed = (\n allowedTypes: readonly string[] | undefined,\n type: string\n) => {\n if (!allowedTypes) {\n return false\n }\n for (const allowedType of allowedTypes) {\n if (allowedType === 'special/any') {\n return true\n } else if (allowedType.indexOf('*') > -1) {\n const [A, B] = allowedType.split('/')\n const [a, b] = type.split('/')\n if ((A === '*' || A === a) && (B === '*' || B === b)) {\n return true\n }\n } else {\n if (allowedType === type) {\n return true\n }\n }\n }\n}\n\nconst removeClass = (className: string) => {\n for (const elt of [...document.querySelectorAll(`.${className}`)]) {\n elt.classList.remove(className)\n }\n}\nconst end = () => {\n removeClass('drag-over')\n removeClass('drag-source')\n removeClass('drag-target')\n}\n\nconst stringToTypes = (s: string | undefined, delimiter = ';'): string[] => {\n return (s || '')\n .split(delimiter)\n .map((t) => t.trim())\n .filter((i) => i !== '')\n}\n\nconst markDroppable = (types: readonly string[] | undefined) => {\n if (!types) types = []\n const elements = [\n ...document.querySelectorAll('[data-drop]'),\n ] as HTMLElement[]\n for (const element of elements) {\n const dropTypes = stringToTypes(element.dataset.drop)\n if (types.find((type) => isTypeAllowed(dropTypes, type))) {\n element.classList.add('drag-target')\n } else {\n element.classList.remove('drag-target')\n }\n }\n}\n\nfunction start(evt: DragEvent) {\n const target = (evt.target as HTMLElement)?.closest(\n '[draggable=\"true\"],a[href]'\n ) as HTMLElement | null\n if (!target) {\n return\n }\n target.classList.add('drag-source')\n const types = target.matches('[draggable=\"true\"]')\n ? stringToTypes(target.dataset.drag || 'text/html')\n : stringToTypes(target.dataset.drag || 'url')\n for (const type of types) {\n const content =\n target.dataset.dragContent ||\n (type === 'text/html' ? target.innerHTML : target.textContent)\n evt.dataTransfer?.setData(type, content || '')\n }\n markDroppable(evt.dataTransfer?.types)\n evt.stopPropagation()\n}\n\nfunction drag(evt: DragEvent) {\n if (!dragInProgress()) {\n markDroppable(evt.dataTransfer?.types)\n }\n const target = (evt.target as HTMLElement).closest('.drag-target')\n if (target && evt.dataTransfer) {\n target.classList.add('drag-over')\n evt.dataTransfer.dropEffect = 'copy'\n } else {\n evt.preventDefault()\n evt.stopPropagation()\n }\n}\n\nfunction leave() {\n removeClass('drag-over')\n}\n\nfunction drop(evt: DragEvent) {\n const target = (evt.target as HTMLElement).closest(\n '.drag-target'\n ) as HTMLElement | null\n if (target) {\n const dropTypes = (target.dataset?.drop || '').split(';')\n for (const type of dropTypes) {\n if (isTypeAllowed(evt.dataTransfer?.types, type)) {\n if (type === 'text/html') {\n target.innerHTML = evt.dataTransfer?.getData(type) || ''\n } else {\n target.textContent = evt.dataTransfer?.getData(type) || ''\n }\n }\n }\n }\n end()\n}\n\nexport const draggedElement = () => document.querySelector('.drag-source')\n\nlet isInitialized = false\n\nexport const init = () => {\n if (isInitialized) {\n return\n }\n\n document.body.addEventListener('dragstart', start)\n document.body.addEventListener('dragenter', drag)\n document.body.addEventListener('dragover', drag)\n document.body.addEventListener('drop', drop)\n document.body.addEventListener('dragleave', leave)\n document.body.addEventListener('dragend', end)\n\n // stop dragged items from reloading the window\n window.addEventListener('dragover', (evt) => evt.preventDefault())\n window.addEventListener('drop', (evt) => evt.preventDefault())\n\n isInitialized = true\n}\n",
|
|
24
|
-
"/*#\n# table\n\nA virtual data-table, configurable via a `columns` array (which will automatically be generated if not provided),\nthat displays gigantic tables with fixed headers (and live column-resizing) using a minimum of resources and cpu.\n\n```js\nimport { dataTable } from 'tosijs-ui'\nimport { input } from 'tosijs'.elements\n\nconst emojiRequest = await fetch('https://raw.githubusercontent.com/tonioloewald/emoji-metadata/master/emoji-metadata.json')\nconst emojiData = await emojiRequest.json()\n\nconst columns = [\n {\n name: \"emoji\",\n prop: \"chars\",\n align: \"center\",\n width: 80,\n sort: false,\n visible: true\n },\n {\n prop: \"name\",\n width: 300,\n // custom cell using bindings to make the field editable\n dataCell() {\n return input({\n class: 'td',\n bindValue: '^.name',\n title: 'name',\n onMouseup: (event) => { event.stopPropagation() },\n onTouchend: (event) => { event.stopPropagation() },\n })\n },\n },\n {\n prop: \"category\",\n sort: \"ascending\",\n width: 150\n },\n {\n prop: \"subcategory\",\n width: 150\n },\n]\n\npreview.append(dataTable({\n multiple: true,\n array: emojiData,\n localized: true,\n columns,\n rowHeight: 40,\n pinnedBottom: 2\n}))\n```\n```css\n.preview input.td {\n margin: 0;\n border-radius: 0;\n box-shadow: none !important;\n background: #fff4;\n}\n\n.preview xin-table {\n height: 100%;\n}\n\n.preview xin-table [part=\"pinnedTopRows\"],\n.preview xin-table [part=\"pinnedBottomRows\"] {\n background: #ddd;\n}\n```\n\n> In the preceding example, the `name` column is *editable* (and *bound*, try editing something and scrolling\n> it out of view and back) and `multiple` select is enabled. In the console, you can try `$('xin-table').visibleRows`\n> and $('xin-table').selectedRows`.\n\nYou can set the `<xin-table>`'s `array`, `columns`, and `filter` properties directly, or set its `value` to:\n\n```\n{\n array: any[],\n columns: ColumnOptions[] | null,\n filter?: ArrayFilter\n}\n```\n\n## `ColumnOptions`\n\nYou can configure the table's columns by providing it an array of `ColumnOptions`:\n\n```\nexport interface ColumnOptions {\n name?: string\n prop: string\n width: number\n visible?: boolean\n align?: string\n sort?: false | 'ascending' | 'descending'\n headerCell?: (options: ColumnOptions) => HTMLElement\n dataCell?: (options: ColumnOptions) => HTMLElement\n}\n```\n\n## Selection\n\n`<xin-table>` supports `select` and `multiple` boolean properties allowing rows to be selectable. Selected rows will\nbe given the `[aria-selected]` attribute, so style them as you wish.\n\n`multiple` select supports shift-clicking and command/meta-clicking.\n\n`<xin-table>` provides an `selectionChanged(visibleSelectedRows: any[]): void` callback property allowing you to respond to changes\nin the selection, and also `selectedRows` and `visibleSelectedRows` properties.\n\nThe following methods are also provided:\n\n- `<xin-table>.selectRow(row: any, select = true)` (de)selects specified row\n- `<xin-table>.selectRows(rows?: any[], select = true)` (de)selects specified rows\n- `<xin-table>.deSelect(rows?: any[])` deselects all or specified rows.\n\nThese are rather fine-grained but they're used internally by the selection code so they may as well be documented.\n\n## Sorting\n\nBy default, the user can sort the table by any column which doesn't have a `sort === false`.\n\nYou can set the initial sort by setting the `sort` value of a specific column to `ascending`\nor `descending`.\n\nYou can override this by setting the table's sort function (it's an `Array.sort()` callback)\nto whatever you like, and you can replace the `headerCell` or set the `sort` of each column\nto `false` if you have some specific sorting in mind.\n\nYou can disable sorting controls by adding the `nosort` attribute to the `<xin-table>`.\n\n## Hiding (and Showing) Columns\n\nBy default, the user can show / hide columns by clicking via the column header menu.\nYou can remove this option by adding the `nohide` attribute to the `<xin-table>`\n\n## Reordering Columns\n\nBy default, the user can reorder columns by dragging them around. You can disable this\nby adding the `noreorder` attribute to the `<xin-table>`.\n\n## Row Height\n\nIf you set the `<xin-table>`'s `rowHeight` to `0` it will render all its elements (i.e. not be virtual). This is\nuseful for smaller tables, or tables with variable row-heights.\n\n## Styling\n\nAside from row height (see previous) the component doesn't use the shadowDOM, so it's easy to override\nits styles.\n\n## Pinned Rows\n\nThe table supports two attributes, `pinnedTop` and `pinnedBottom` that let you pin the specified number\nof top and bottom rows.\n\n## Localization\n\n`<xin-table>` supports the `localized` attribute which simply causes its default `headerCell`\nto render a `<xin-localized>` element instead of a span for its caption, and localize its\npopup menu.\n\nYou'll need to make sure your localized strings include:\n\n- Sort\n- Show\n- Hide\n- Column\n- Ascending\n- Descending\n\nAs well as any column names you want localized.\n*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n vars,\n varDefault,\n xinValue,\n getListItem,\n tosi,\n touch,\n} from 'tosijs'\nimport { trackDrag } from './track-drag'\nimport { SortCallback } from './make-sorter'\nimport { icons } from './icons'\nimport { popMenu, MenuItem } from './menu'\nimport * as dragAndDrop from './drag-and-drop'\nimport { xinLocalized, localize } from './localize'\n\nfunction defaultWidth(\n array: any[],\n prop: string,\n charWidth: number\n): number | boolean {\n const example = array.find(\n (item) => item[prop] !== undefined && item[prop] !== null\n )\n if (example !== undefined) {\n const value = example[prop]\n switch (typeof value) {\n case 'string':\n if (value.match(/^\\d+(\\.\\d+)?$/)) {\n return 6 * charWidth\n } else if (value.includes(' ')) {\n return 20 * charWidth\n } else {\n return 12 * charWidth\n }\n case 'number':\n return 6 * charWidth\n case 'boolean':\n return 5 * charWidth\n case 'object':\n return false\n default:\n return 8 * charWidth\n }\n }\n return false\n}\n\nconst { div, span, button, template } = elements\n\nexport interface ColumnOptions {\n name?: string\n prop: string\n width: number\n visible?: boolean\n align?: string\n sort?: false | 'ascending' | 'descending'\n headerCell?: (options: ColumnOptions) => HTMLElement\n dataCell?: (options: ColumnOptions) => HTMLElement\n}\n\nexport interface TableData {\n columns?: ColumnOptions[] | null\n array: any[]\n filter?: ArrayFilter | null\n}\n\nexport type ArrayFilter = (array: any[]) => any[]\n\nconst passThru = (array: any[]) => array\n\nexport type SelectCallback = (selected: any[]) => void\n\nexport class DataTable extends WebComponent {\n select = false\n multiple = false\n nosort = false\n nohide = false\n noreorder = false\n selectionChanged: SelectCallback = () => {\n /* do not care */\n }\n localized = false\n\n private selectedKey = Symbol('selected')\n private selectBinding = (elt: Element, obj: any) => {\n elt.toggleAttribute('aria-selected', obj[this.selectedKey] === true)\n }\n\n pinnedTop = 0\n pinnedBottom = 0\n maxVisibleRows = 10000\n\n get value(): TableData {\n return {\n array: this.array,\n filter: this.filter,\n columns: this.columns,\n }\n }\n\n set value(data: TableData) {\n const { array, columns, filter } = xinValue(data)\n if (\n this._array !== array ||\n this._columns !== columns ||\n this._filter !== filter\n ) {\n this.queueRender()\n }\n this._array = array || []\n this._columns = columns || null\n this._filter = filter || passThru\n }\n\n private rowData = {\n visible: [] as any[],\n pinnedTop: [] as any[],\n pinnedBottom: [] as any[],\n }\n\n private _array: any[] = []\n private _columns: ColumnOptions[] | null = null\n private _filter: ArrayFilter = passThru\n charWidth = 15\n rowHeight = 30\n minColumnWidth = 30\n\n get virtual(): { height: number } | undefined {\n return this.rowHeight > 0 ? { height: this.rowHeight } : undefined\n }\n\n constructor() {\n super()\n\n this.rowData = tosi({\n [this.instanceId]: this.rowData,\n })[this.instanceId]\n\n this.initAttributes(\n 'rowHeight',\n 'charWidth',\n 'minColumnWidth',\n 'select',\n 'multiple',\n 'pinnedTop',\n 'pinnedBottom',\n 'nosort',\n 'nohide',\n 'noreorder',\n 'localized'\n )\n }\n\n get array(): any[] {\n return this._array\n }\n\n set array(newArray: any[]) {\n this._array = xinValue(newArray)\n this.queueRender()\n }\n\n get filter(): ArrayFilter {\n return this._filter\n }\n\n set filter(filterFunc: ArrayFilter) {\n if (this._filter !== filterFunc) {\n this._filter = filterFunc\n this.queueRender()\n }\n }\n\n get sort(): SortCallback | undefined {\n if (this._sort) {\n return this._sort\n }\n const sortColumn = this._columns?.find(\n (c) => c.sort === 'ascending' || c.sort === 'descending'\n )\n if (!sortColumn) {\n return undefined\n }\n const { prop } = sortColumn\n\n return sortColumn.sort === 'ascending'\n ? (a: any, b: any) => (a[prop] > b[prop] ? 1 : -1)\n : (a: any, b: any) => (a[prop] > b[prop] ? -1 : 1)\n }\n\n set sort(sortFunc: ArrayFilter) {\n if (this._sort !== sortFunc) {\n this._sort = sortFunc\n this.queueRender()\n }\n }\n\n get columns(): ColumnOptions[] {\n if (!Array.isArray(this._columns)) {\n const { _array } = this\n this._columns = Object.keys(_array[0] || {}).map((prop: string) => {\n const width = defaultWidth(_array, prop, this.charWidth)\n return {\n name: prop.replace(/([a-z])([A-Z])/g, '$1 $2').toLocaleLowerCase(),\n prop,\n align:\n typeof _array[0][prop] === 'number' ||\n (_array[0][prop] !== '' && !isNaN(_array[0][prop]))\n ? 'right'\n : 'left',\n visible: width !== false,\n width: width ? width : 0,\n } as ColumnOptions\n })\n }\n return this._columns\n }\n\n set columns(newColumns: ColumnOptions[]) {\n this._columns = newColumns\n this.queueRender()\n }\n\n get visibleColumns(): ColumnOptions[] {\n return this.columns.filter((c) => c.visible !== false)\n }\n\n content = null\n\n getColumn(event: any): ColumnOptions | undefined {\n const x =\n (event.touches !== undefined ? event.touches[0].clientX : event.clientX) -\n this.getBoundingClientRect().x\n const epsilon = event.touches !== undefined ? 20 : 5\n let boundaryX = 0\n const log: any[] = []\n const column = this.visibleColumns.find((options: ColumnOptions) => {\n if (options.visible !== false) {\n boundaryX += options.width\n log.push(boundaryX)\n return Math.abs(x - boundaryX) < epsilon\n }\n })\n return column\n }\n\n private setCursor = (event: Event) => {\n const column = this.getColumn(event)\n if (column !== undefined) {\n this.style.cursor = 'col-resize'\n } else {\n this.style.cursor = ''\n }\n }\n\n private resizeColumn = (event: any) => {\n const column = this.getColumn(event)\n if (column !== undefined) {\n const origWidth = Number(column.width)\n const isTouchEvent = event.touches !== undefined\n const touchIdentifier = isTouchEvent\n ? event.touches[0].identifier\n : undefined\n trackDrag(\n event,\n (dx, _dy, event: any) => {\n const touch = isTouchEvent\n ? [...event.touches].find(\n (touch: any) => touch.identifier === touchIdentifier\n )\n : true\n if (touch === undefined) {\n return true\n }\n const width = origWidth + dx\n column.width =\n width > this.minColumnWidth ? width : this.minColumnWidth\n this.setColumnWidths()\n if (event.type === 'mouseup') {\n return true\n }\n },\n 'col-resize'\n )\n }\n }\n\n selectRow(row: any, select = true) {\n if (select) {\n row[this.selectedKey] = true\n } else {\n delete row[this.selectedKey]\n }\n }\n\n selectRows(rows?: any[], select = true) {\n for (const row of rows || this.array) {\n this.selectRow(row, select)\n }\n }\n\n deSelect(rows?: any[]) {\n this.selectRows(rows, false)\n }\n\n // tracking click / shift-click\n private rangeStart?: any\n private updateSelection = (event: Event) => {\n if (!this.select && !this.multiple) {\n return\n }\n const { target } = event\n if (!(target instanceof HTMLElement)) {\n return\n }\n const tr = target.closest('.tr')\n if (!(tr instanceof HTMLElement)) {\n return\n }\n const pickedItem = getListItem(tr)\n if (pickedItem === false) {\n return\n }\n const mouseEvent = event as MouseEvent\n // prevent ugly selection artifacts\n const selection = window.getSelection()\n if (selection !== null) {\n selection.removeAllRanges()\n }\n const rows = this.visibleRows\n if (\n this.multiple &&\n mouseEvent.shiftKey &&\n rows.length > 0 &&\n this.rangeStart !== pickedItem\n ) {\n const mode =\n this.rangeStart === undefined ||\n this.rangeStart[this.selectedKey] === true\n const [start, finish] = [\n this.rangeStart !== undefined ? rows.indexOf(this.rangeStart) : 0,\n rows.indexOf(pickedItem),\n ].sort((a, b) => a - b)\n\n // if start is -1 then one of the items is no longer visible\n if (start > -1) {\n for (let idx = start; idx <= finish; idx++) {\n const row = rows[idx]\n this.selectRow(row, mode)\n }\n }\n } else if (this.multiple && mouseEvent.metaKey) {\n this.selectRow(pickedItem, !pickedItem[this.selectedKey])\n const pickedIndex = rows.indexOf(pickedItem)\n const nextItem = rows[pickedIndex + 1]\n const previousItem = pickedIndex > 0 ? rows[pickedIndex - 1] : undefined\n if (nextItem !== undefined && nextItem[this.selectedKey] === true) {\n this.rangeStart = nextItem\n } else if (\n previousItem !== undefined &&\n previousItem[this.selectedKey] === true\n ) {\n this.rangeStart = previousItem\n } else {\n this.rangeStart = undefined\n }\n } else {\n this.rangeStart = pickedItem\n this.deSelect()\n this.selectRow(pickedItem, true)\n }\n this.selectionChanged(this.visibleSelectedRows)\n for (const row of Array.from(this.querySelectorAll('.tr'))) {\n const item = getListItem(row)\n this.selectBinding(row, item)\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n this.addEventListener('mousemove', this.setCursor)\n this.addEventListener('mousedown', this.resizeColumn)\n this.addEventListener('touchstart', this.resizeColumn, { passive: true })\n this.addEventListener('mouseup', this.updateSelection)\n this.addEventListener('touchend', this.updateSelection)\n }\n\n setColumnWidths() {\n this.style.setProperty(\n '--grid-columns',\n this.visibleColumns.map((c) => c.width + 'px').join(' ')\n )\n this.style.setProperty(\n '--grid-row-width',\n this.visibleColumns.reduce((w, c) => w + c.width, 0) + 'px'\n )\n }\n\n sortByColumn = (\n columnOptions: ColumnOptions,\n direction: 'ascending' | 'descending' | 'auto' = 'auto'\n ) => {\n for (const column of this.columns.filter(\n (c) => xinValue(c.sort) !== false\n )) {\n if (xinValue(column) === columnOptions) {\n if (direction === 'auto') {\n column.sort = column.sort === 'ascending' ? 'descending' : 'ascending'\n } else {\n column.sort = direction\n }\n this.queueRender()\n } else {\n delete column.sort\n }\n }\n }\n\n popColumnMenu = (target: HTMLElement, options: ColumnOptions) => {\n const { sortByColumn } = this\n const hiddenColumns = this.columns.filter(\n (column) => column.visible === false\n )\n const queueRender = this.queueRender.bind(this)\n const menu: MenuItem[] = []\n if (!this.nosort && options.sort !== false) {\n menu.push(\n {\n caption: this.localized\n ? `${localize('Sort')} ${localize('Ascending')}`\n : 'Sort Ascending',\n icon: 'sortAscending',\n action() {\n sortByColumn(options)\n },\n },\n {\n caption: this.localized\n ? `${localize('Sort')} ${localize('Descending')}`\n : 'Sort Ascending',\n icon: 'sortDescending',\n action() {\n sortByColumn(options, 'descending')\n },\n }\n )\n }\n if (!this.nohide) {\n if (menu.length) {\n menu.push(null)\n }\n menu.push(\n {\n caption: this.localized\n ? `${localize('Hide')} ${localize('Column')}`\n : 'Hide Column',\n icon: 'eyeOff',\n enabled: () => options.visible !== true,\n action() {\n options.visible = false\n queueRender()\n },\n },\n {\n caption: this.localized\n ? `${localize('Show')} ${localize('Column')}`\n : 'Show Column',\n icon: 'eye',\n enabled: () => hiddenColumns.length > 0,\n menuItems: hiddenColumns.map((column) => {\n return {\n caption: column.name || column.prop,\n action() {\n delete column.visible\n queueRender()\n },\n }\n }),\n }\n )\n }\n\n popMenu({\n target,\n localized: this.localized,\n menuItems: menu,\n })\n }\n\n get captionSpan(): ElementCreator {\n return this.localized ? xinLocalized : span\n }\n\n headerCell = (options: ColumnOptions) => {\n const { popColumnMenu } = this\n let ariaSort = 'none'\n let sortIcon: SVGElement | undefined\n switch (options.sort) {\n case 'ascending':\n sortIcon = icons.sortAscending()\n ariaSort = 'descending'\n break\n case false:\n break\n default:\n break\n case 'descending':\n ariaSort = 'ascending'\n sortIcon = icons.sortDescending()\n }\n\n const menuButton = !(this.nosort && this.nohide)\n ? button(\n {\n class: 'menu-trigger',\n onClick(event: Event) {\n popColumnMenu(event.target as HTMLElement, options)\n event.stopPropagation()\n },\n },\n sortIcon || icons.moreVertical()\n )\n : {}\n\n return options.headerCell !== undefined\n ? options.headerCell(options)\n : span(\n {\n class: 'th',\n role: 'columnheader',\n ariaSort,\n style: {\n ...this.cellStyle,\n justifyContent: options.align || 'left',\n },\n },\n this.captionSpan(\n typeof options.name === 'string' ? options.name : options.prop\n ),\n span({ style: { flex: '1' } }),\n menuButton\n )\n }\n\n dataCell = (options: ColumnOptions) => {\n if (options.dataCell !== undefined) {\n return options.dataCell(options)\n }\n return span({\n class: 'td',\n role: 'cell',\n style: {\n ...this.cellStyle,\n justifyContent: options.align || 'left',\n },\n bindText: `^.${options.prop}`,\n })\n }\n\n get visibleRows(): any[] {\n return xinValue(this.rowData.visible) as any[]\n }\n\n get visibleSelectedRows(): any[] {\n return this.visibleRows.filter((obj) => obj[this.selectedKey])\n }\n\n get selectedRows(): any[] {\n return this.array.filter((obj) => obj[this.selectedKey])\n }\n\n rowTemplate(columns: ColumnOptions[]): HTMLTemplateElement {\n return template(\n div(\n {\n class: 'tr',\n role: 'row',\n bind: {\n value: '^',\n binding: { toDOM: this.selectBinding },\n },\n },\n ...columns.map(this.dataCell)\n )\n )\n }\n\n private draggedColumn?: ColumnOptions\n\n private dropColumn = (event: Event) => {\n const target = (event.target as HTMLElement).closest(\n '.drag-over'\n ) as HTMLElement\n const targetIndex = Array.from(target.parentElement!.children).indexOf(\n target\n )\n const dropped = this.visibleColumns[targetIndex]\n const draggedIndex = this.columns.indexOf(this.draggedColumn!)\n const droppedIndex = this.columns.indexOf(dropped)\n this.columns.splice(draggedIndex, 1)\n this.columns.splice(droppedIndex, 0, this.draggedColumn!)\n console.log({ event, target, targetIndex, draggedIndex, droppedIndex })\n this.queueRender()\n\n event.preventDefault()\n event.stopPropagation()\n }\n\n render() {\n super.render()\n\n this.rowData.pinnedTop =\n this.pinnedTop > 0 ? this._array.slice(0, this.pinnedTop) : []\n this.rowData.pinnedBottom =\n this.pinnedBottom > 0\n ? this._array.slice(this._array.length - this.pinnedBottom)\n : []\n this.rowData.visible = this.filter(\n this._array.slice(\n this.pinnedTop,\n Math.min(\n this.maxVisibleRows,\n this._array.length - this.pinnedTop - this.pinnedBottom\n )\n )\n )\n\n const { sort } = this\n if (sort) {\n this.rowData.visible.sort(sort)\n }\n\n this.textContent = ''\n\n this.style.display = 'flex'\n this.style.flexDirection = 'column'\n const { visibleColumns } = this\n this.style.setProperty('--row-height', `${this.rowHeight}px`)\n this.setColumnWidths()\n\n if (!this.noreorder) {\n dragAndDrop.init()\n }\n const dragId = this.instanceId + '-column-header'\n const columnHeaders = visibleColumns.map((column) => {\n const header = this.headerCell(column)\n if (!this.noreorder) {\n header.setAttribute('draggable', 'true')\n header.dataset.drag = dragId\n header.dataset.drop = dragId\n header.addEventListener('dragstart', () => {\n this.draggedColumn = column\n })\n header.addEventListener('drop', this.dropColumn)\n }\n return header\n })\n this.append(\n div(\n { class: 'thead', role: 'rowgroup', style: { touchAction: 'none' } },\n div(\n {\n class: 'tr',\n role: 'row',\n },\n ...columnHeaders\n )\n )\n )\n if (this.pinnedTop > 0) {\n this.append(\n div(\n {\n part: 'pinnedTopRows',\n class: 'tbody',\n role: 'rowgroup',\n style: {\n flex: '0 0 auto',\n overflow: 'hidden',\n height: `${this.rowHeight * this.pinnedTop}px`,\n },\n bindList: {\n value: this.rowData.pinnedTop,\n virtual: this.virtual,\n },\n },\n this.rowTemplate(visibleColumns)\n )\n )\n }\n this.append(\n div(\n {\n part: 'visibleRows',\n class: 'tbody',\n role: 'rowgroup',\n style: {\n content: ' ',\n minHeight: '100px',\n flex: '1 1 100px',\n overflow: 'hidden auto',\n },\n bindList: {\n value: this.rowData.visible,\n virtual: this.virtual,\n },\n },\n this.rowTemplate(visibleColumns)\n )\n )\n if (this.pinnedBottom > 0) {\n this.append(\n div(\n {\n part: 'pinnedBottomRows',\n class: 'tbody',\n role: 'rowgroup',\n style: {\n flex: '0 0 auto',\n overflow: 'hidden',\n height: `${this.rowHeight * this.pinnedBottom}px`,\n },\n bindList: {\n value: this.rowData.pinnedBottom,\n virtual: this.virtual,\n },\n },\n this.rowTemplate(visibleColumns)\n )\n )\n }\n }\n}\n\nexport const dataTable = DataTable.elementCreator({\n tag: 'xin-table',\n styleSpec: {\n ':host': {\n overflow: 'auto hidden',\n },\n ':host .thead, :host .tbody': {\n width: vars.gridRowWidth,\n },\n ':host .tr': {\n display: 'grid',\n gridTemplateColumns: vars.gridColumns,\n height: vars.rowHeight,\n lineHeight: vars.rowHeight,\n },\n ':host .td, :host .th': {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n display: 'flex',\n alignItems: 'center',\n },\n ':host .th .menu-trigger': {\n color: 'currentColor',\n background: 'none',\n padding: 0,\n lineHeight: vars.touchSize,\n height: vars.touchSize,\n width: vars.touchSize,\n },\n ':host [draggable=\"true\"]': {\n cursor: 'ew-resize',\n },\n ':host [draggable=\"true\"]:active': {\n background: varDefault.draggedHeaderBg('#0004'),\n color: varDefault.draggedHeaderColor('#fff'),\n },\n ':host .drag-over': {\n background: varDefault.dropHeaderBg('#fff4'),\n },\n },\n}) as ElementCreator<DataTable>\n",
|
|
23
|
+
"/*#\n# drag & drop\n\nA lightweight library that leverages HTML5 drag and drop behavior.\n\nTo use it, simply call `dragAndDrop.init()` (it only needs to be called once,\nbut calling it again is harmless).\n\n```\nimport { dragAndDrop } from 'tosijs-ui'\n\ndragAndDrop.init()\n```\n\nThis module sets up some global event handlers and *just works*™ (arguably, it merely does things\nthat the browser should do, such as add a CSS selector for drop zones that are compatible\nwith what's being dragged).\n\nYou can use `dragAndDrop.draggedElement()` to get the element being dragged (if it's\nactually from the page you're in).\n\n> ### The beauty of HTML5 drag-and-drop\n>\n> The nice thing about HTML5 drag-and-drop is that it leverages the OS's drag and\n> drop support. This means you can drag from one window to another, from the desktop\n> to your app and vice versa. It's all a matter of configuring the DOM elements.\n\nThis module uses but *does not define* the following class selectors:\n\n- `.drag-source` an element being dragged\n- `.drag-target` an element on which the dragged object may be dropped\n- `.drag-over` a `.drag-target` which the object is currently over\n\nYou may also wish to create style rules for:\n\n- `[draggable=\"true\"]` anything other than a `<a>` (and perhaps an `<img>`) that can be dragged\n- `[data-drag]` indicates *types* of draggable things that can be dropped on them.\n- `[data-drop]` indicates potential *drop zones*.\n\n> **Note** `draggable` is has to be set to \"true\", [see documentation on draggable](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable).\n\n## Draggable Objects\n\nTo create a draggable element, add `draggable=\"true\"`.\n\n <div draggable=\"true\">Drag Me</div>\n\nTo specify the type(s) of content that will be dragged, use the `data-drag` attribute:\n\n <div draggable=\"true\" data-drag=\"text/plain\">Drag Me</div>\n\nTo specify the content dragged, use a `data-drag-content` attribute.\n\n <div\n draggable=\"true\"\n data-drag=\"text/plain\"\n data-drag-content=\"Surprise!\"\n >Drag Me</div>\n\n## Drop Zones\n\nTo create a drop zone, use the data-drop attribute set to a semicolon-delimited list\nof mime types:\n\n <div data-drop=\"text/plain\">\n Drop plain text here\n </div>\n <div data-drop=\"text/plain;text/html\">\n Drop html or plain text here\n </div>\n\nFinally, you can override default drop behavior (which is to copy the dragged node into\nthe drop zone node) by adding your own `drop` event handler.\n\nE.g.\n\n element.addEventListener('drop', (event) => {\n // event.target is the dragged element\n ...\n\n event.stopPropagation()\n event.preventDefault()\n })\n\nAnd of course `elementCreator()`s provide syntax sugar for this:\n\n elements.div({\n onDrop(event) {\n // ...\n }\n })\n\n### Typed Drop Zones Example\n\nIn this example, the types are set using `data-drag` attributes and the drop zones are\nset using `data-drop` attributes, but everything else is default behavior. You can also\ndrop the draggable objects to another window or the desktop, and similarly you can drag\nappropriate stuff into the drop zones. (You can test this out by opening this page in\na second browser window—event a different browser.)\n\n```html\n<div style=\"display: grid; grid-template-columns: 50% 50%\">\n <div>\n <h4>Draggable</h4>\n <a class=\"drag\" href=\"javascript: alert('I don't do anything)\">Links are draggable by default</a>\n <p draggable=\"true\">\n Just adding the <code>draggable=\"true\"</code>\n makes this paragraph draggable (as text/html by default)\n </p>\n <p draggable=\"true\" data-drag=\"text/html\">\n Draggable as <i>text/html</i>\n </p>\n <p draggable=\"true\" data-drag=\"text/plain\" data-drag-content=\"Surprise!\">\n Draggable as <i>text/plain</i>, with <b>custom content</b>\n </p>\n <p draggable=\"true\" data-drag=\"text/html;text/plain\">\n Draggable as <i>text/html</i> or <i>text/plain</i>\n </p>\n <p draggable=\"true\" data-drag=\"text/plain\">\n Draggable as <i>text/plain</i>\n </p>\n </div>\n <div>\n <h4>Drop Targets</h4>\n <div data-drop=\"text/html\">\n You can drop stuff here\n </div>\n <div data-drop=\"text/html\">\n You can drop HTML here\n </div>\n <div data-drop=\"text/*\">\n You can drop any text\n </div>\n <div data-drop=\"text/html;url\">\n You can drop HTML or urls here\n </div>\n <div\n data-drop=\"special/any\"\n data-event=\"drop:_component_.drop\"\n >\n I accept anything and have special drop handling\n </div>\n </div>\n</div>\n```\n```css\n.drag-source {\n box-shadow: 0 0 2px 2px orange;\n opacity: 0.5;\n}\n.drag-target {\n min-height: 10px;\n background: rgba(0,0,255,0.25);\n}\n.drag-target.drag-over {\n background: rgba(0,0,255,0.5);\n}\n:not([data-drop]) > .drag,\n[draggable=\"true\"] {\n border: 1px solid rgba(255,192,0,0.5);\n cursor: pointer;\n display: block;\n}\n\n:not([data-drop]) > .drag,\n[data-drop],\n[draggable=\"true\"] {\n padding: 4px;\n margin: 4px;\n border-radius: 5px;\n}\n```\n```js\nimport { dragAndDrop } from 'tosijs-ui'\n\ndragAndDrop.init()\n```\n\n> Note that you can drag between two browser tabs containing this\n> example (or between two different browsers) and it will work.\n\n### Reorderable List Example\n\nThis example uses a custom `drop` event handler. When you sort the spectrum\ninto the correct order you \"win\" and then the items are reshuffled.\n\nAlso notice that the `data-drag` and `data-drop` values are set to a\nrandom dragId so you cannot drag to another window or the desktop.\n\n```js\nimport { elements, tosi, getListItem } from 'tosijs'\nimport { dragAndDrop, TosiDialog } from 'tosijs-ui'\n\ndragAndDrop.init()\n\nconst shuffle = (deck) => {\n var shuffled = [];\n for( const card of deck ){\n shuffled.splice( Math.floor( Math.random() * (1 + shuffled.length) ), 0, card );\n }\n return shuffled;\n}\n\nconst colors = [\n 'red',\n 'orange',\n 'yellow',\n 'green',\n 'blue',\n 'indigo',\n 'violet',\n]\n\nlet spectrum\n\nconst start = () => {\n ({ spectrum } = tosi({\n spectrum: shuffle(colors).map(color => ({color}))\n }))\n}\n\nstart()\n\nlet dragged = null\n\nconst dropColor = (event) => {\n const dropped = getListItem(event.target)\n const draggedIndex = spectrum.indexOf(dragged)\n const droppedIndex = spectrum.indexOf(dropped)\n spectrum.splice(draggedIndex, 1)\n spectrum.splice(droppedIndex, 0, dragged)\n\n if (JSON.stringify(spectrum.map(c => c.color)) === JSON.stringify(colors)) {\n TosiDialog.alert('You win!').then(start)\n }\n\n console.log({dragged, draggedIndex, dropped, droppedIndex})\n\n event.preventDefault()\n event.stopPropagation()\n}\n\nconst dragId = 'spectrum/' + Math.floor(Math.random() * 1e9)\n\nconst { div, button, template } = elements\n\npreview.append(\n div(\n {\n bindList: { value: spectrum, idPath: 'color' }\n },\n template(\n div({\n class: 'spectrum',\n bindText: '^.color',\n draggable: 'true',\n dataDrag: dragId,\n dataDrop: dragId,\n onDrop: dropColor,\n bind: {\n value: '^.color',\n binding(element, value) {\n element.style.backgroundColor = value\n }\n },\n onDragstart(event) {\n dragged = getListItem(event.target)\n }\n })\n )\n ),\n)\n```\n```css\n.spectrum {\n height: 36px;\n color: white;\n font-weight: 700;\n text-shadow: 1px 2px 0 black;\n padding-left: 10px;\n}\n\n.spectrum.drag-over {\n box-shadow: 0 0 0 4px blue;\n}\n```\n\n> To prevent this example from allowing drags between windows (which\n> wouldn't make sense) a random dragId is assigned to `data-drag` and\n> `data-drop` in this example.\n)\n*/\n\nconst dragInProgress = () => !!document.querySelector('.drag-source')\n\nconst isTypeAllowed = (\n allowedTypes: readonly string[] | undefined,\n type: string\n) => {\n if (!allowedTypes) {\n return false\n }\n for (const allowedType of allowedTypes) {\n if (allowedType === 'special/any') {\n return true\n } else if (allowedType.indexOf('*') > -1) {\n const [A, B] = allowedType.split('/')\n const [a, b] = type.split('/')\n if ((A === '*' || A === a) && (B === '*' || B === b)) {\n return true\n }\n } else {\n if (allowedType === type) {\n return true\n }\n }\n }\n}\n\nconst removeClass = (className: string) => {\n for (const elt of [...document.querySelectorAll(`.${className}`)]) {\n elt.classList.remove(className)\n }\n}\nconst end = () => {\n removeClass('drag-over')\n removeClass('drag-source')\n removeClass('drag-target')\n}\n\nconst stringToTypes = (s: string | undefined, delimiter = ';'): string[] => {\n return (s || '')\n .split(delimiter)\n .map((t) => t.trim())\n .filter((i) => i !== '')\n}\n\nconst markDroppable = (types: readonly string[] | undefined) => {\n if (!types) types = []\n const elements = [\n ...document.querySelectorAll('[data-drop]'),\n ] as HTMLElement[]\n for (const element of elements) {\n const dropTypes = stringToTypes(element.dataset.drop)\n if (types.find((type) => isTypeAllowed(dropTypes, type))) {\n element.classList.add('drag-target')\n } else {\n element.classList.remove('drag-target')\n }\n }\n}\n\nfunction start(evt: DragEvent) {\n const target = (evt.target as HTMLElement)?.closest(\n '[draggable=\"true\"],a[href]'\n ) as HTMLElement | null\n if (!target) {\n return\n }\n target.classList.add('drag-source')\n const types = target.matches('[draggable=\"true\"]')\n ? stringToTypes(target.dataset.drag || 'text/html')\n : stringToTypes(target.dataset.drag || 'url')\n for (const type of types) {\n const content =\n target.dataset.dragContent ||\n (type === 'text/html' ? target.innerHTML : target.textContent)\n evt.dataTransfer?.setData(type, content || '')\n }\n markDroppable(evt.dataTransfer?.types)\n evt.stopPropagation()\n}\n\nfunction drag(evt: DragEvent) {\n if (!dragInProgress()) {\n markDroppable(evt.dataTransfer?.types)\n }\n const target = (evt.target as HTMLElement).closest('.drag-target')\n if (target && evt.dataTransfer) {\n target.classList.add('drag-over')\n evt.dataTransfer.dropEffect = 'copy'\n } else {\n evt.preventDefault()\n evt.stopPropagation()\n }\n}\n\nfunction leave() {\n removeClass('drag-over')\n}\n\nfunction drop(evt: DragEvent) {\n const target = (evt.target as HTMLElement).closest(\n '.drag-target'\n ) as HTMLElement | null\n if (target) {\n const dropTypes = (target.dataset?.drop || '').split(';')\n for (const type of dropTypes) {\n if (isTypeAllowed(evt.dataTransfer?.types, type)) {\n if (type === 'text/html') {\n target.innerHTML = evt.dataTransfer?.getData(type) || ''\n } else {\n target.textContent = evt.dataTransfer?.getData(type) || ''\n }\n }\n }\n }\n end()\n}\n\nexport const draggedElement = () => document.querySelector('.drag-source')\n\nlet isInitialized = false\n\nexport const init = () => {\n if (isInitialized) {\n return\n }\n\n document.body.addEventListener('dragstart', start)\n document.body.addEventListener('dragenter', drag)\n document.body.addEventListener('dragover', drag)\n document.body.addEventListener('drop', drop)\n document.body.addEventListener('dragleave', leave)\n document.body.addEventListener('dragend', end)\n\n // stop dragged items from reloading the window\n window.addEventListener('dragover', (evt) => evt.preventDefault())\n window.addEventListener('drop', (evt) => evt.preventDefault())\n\n isInitialized = true\n}\n",
|
|
24
|
+
"/*#\n# table\n\nA virtual data-table, configurable via a `columns` array (which will automatically be generated if not provided),\nthat displays gigantic tables with fixed headers (and live column-resizing) using a minimum of resources and cpu.\n\n```js\nimport { dataTable } from 'tosijs-ui'\nimport { input } from 'tosijs'.elements\n\nconst emojiRequest = await fetch('https://raw.githubusercontent.com/tonioloewald/emoji-metadata/master/emoji-metadata.json')\nconst emojiData = await emojiRequest.json()\n\nconst columns = [\n {\n name: \"emoji\",\n prop: \"chars\",\n align: \"center\",\n width: 80,\n sort: false,\n visible: true\n },\n {\n prop: \"name\",\n width: 300,\n // custom cell using bindings to make the field editable\n dataCell() {\n return input({\n class: 'td',\n bindValue: '^.name',\n title: 'name',\n onMouseup: (event) => { event.stopPropagation() },\n onTouchend: (event) => { event.stopPropagation() },\n })\n },\n },\n {\n prop: \"category\",\n sort: \"ascending\",\n width: 150\n },\n {\n prop: \"subcategory\",\n width: 150\n },\n]\n\npreview.append(dataTable({\n multiple: true,\n array: emojiData,\n localized: true,\n columns,\n rowHeight: 40,\n pinnedBottom: 2\n}))\n```\n```css\n.preview input.td {\n margin: 0;\n border-radius: 0;\n box-shadow: none !important;\n background: #fff4;\n}\n\n.preview xin-table {\n height: 100%;\n}\n\n.preview xin-table [part=\"pinnedTopRows\"],\n.preview xin-table [part=\"pinnedBottomRows\"] {\n background: #ddd;\n}\n```\n\n> In the preceding example, the `name` column is *editable* (and *bound*, try editing something and scrolling\n> it out of view and back) and `multiple` select is enabled. In the console, you can try `$('xin-table').visibleRows`\n> and $('xin-table').selectedRows`.\n\nYou can set the `<xin-table>`'s `array`, `columns`, and `filter` properties directly, or set its `value` to:\n\n```\n{\n array: any[],\n columns: ColumnOptions[] | null,\n filter?: ArrayFilter\n}\n```\n\n## `ColumnOptions`\n\nYou can configure the table's columns by providing it an array of `ColumnOptions`:\n\n```\nexport interface ColumnOptions {\n name?: string\n prop: string\n width: number\n visible?: boolean\n align?: string\n sort?: false | 'ascending' | 'descending'\n headerCell?: (options: ColumnOptions) => HTMLElement\n dataCell?: (options: ColumnOptions) => HTMLElement\n}\n```\n\n## Selection\n\n`<xin-table>` supports `select` and `multiple` boolean properties allowing rows to be selectable. Selected rows will\nbe given the `[aria-selected]` attribute, so style them as you wish.\n\n`multiple` select supports shift-clicking and command/meta-clicking.\n\n`<xin-table>` provides an `selectionChanged(visibleSelectedRows: any[]): void` callback property allowing you to respond to changes\nin the selection, and also `selectedRows` and `visibleSelectedRows` properties.\n\nThe following methods are also provided:\n\n- `<xin-table>.selectRow(row: any, select = true)` (de)selects specified row\n- `<xin-table>.selectRows(rows?: any[], select = true)` (de)selects specified rows\n- `<xin-table>.deSelect(rows?: any[])` deselects all or specified rows.\n\nThese are rather fine-grained but they're used internally by the selection code so they may as well be documented.\n\n## Sorting\n\nBy default, the user can sort the table by any column which doesn't have a `sort === false`.\n\nYou can set the initial sort by setting the `sort` value of a specific column to `ascending`\nor `descending`.\n\nYou can override this by setting the table's sort function (it's an `Array.sort()` callback)\nto whatever you like, and you can replace the `headerCell` or set the `sort` of each column\nto `false` if you have some specific sorting in mind.\n\nYou can disable sorting controls by adding the `nosort` attribute to the `<xin-table>`.\n\n## Hiding (and Showing) Columns\n\nBy default, the user can show / hide columns by clicking via the column header menu.\nYou can remove this option by adding the `nohide` attribute to the `<xin-table>`\n\n## Reordering Columns\n\nBy default, the user can reorder columns by dragging them around. You can disable this\nby adding the `noreorder` attribute to the `<xin-table>`.\n\n## Row Height\n\nIf you set the `<xin-table>`'s `rowHeight` to `0` it will render all its elements (i.e. not be virtual). This is\nuseful for smaller tables, or tables with variable row-heights.\n\n## Styling\n\nAside from row height (see previous) the component doesn't use the shadowDOM, so it's easy to override\nits styles.\n\n## Pinned Rows\n\nThe table supports two attributes, `pinnedTop` and `pinnedBottom` that let you pin the specified number\nof top and bottom rows.\n\n## Localization\n\n`<xin-table>` supports the `localized` attribute which simply causes its default `headerCell`\nto render a `<xin-localized>` element instead of a span for its caption, and localize its\npopup menu.\n\nYou'll need to make sure your localized strings include:\n\n- Sort\n- Show\n- Hide\n- Column\n- Ascending\n- Descending\n\nAs well as any column names you want localized.\n*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n vars,\n varDefault,\n xinValue,\n getListItem,\n tosi,\n touch,\n} from 'tosijs'\nimport { trackDrag } from './track-drag'\nimport { SortCallback } from './make-sorter'\nimport { icons } from './icons'\nimport { popMenu, MenuItem } from './menu'\nimport * as dragAndDrop from './drag-and-drop'\nimport { xinLocalized, localize } from './localize'\n\nfunction defaultWidth(\n array: any[],\n prop: string,\n charWidth: number\n): number | boolean {\n const example = array.find(\n (item) => item[prop] !== undefined && item[prop] !== null\n )\n if (example !== undefined) {\n const value = example[prop]\n switch (typeof value) {\n case 'string':\n if (value.match(/^\\d+(\\.\\d+)?$/)) {\n return 6 * charWidth\n } else if (value.includes(' ')) {\n return 20 * charWidth\n } else {\n return 12 * charWidth\n }\n case 'number':\n return 6 * charWidth\n case 'boolean':\n return 5 * charWidth\n case 'object':\n return false\n default:\n return 8 * charWidth\n }\n }\n return false\n}\n\nconst { div, span, button, template } = elements\n\nexport interface ColumnOptions {\n name?: string\n prop: string\n width: number\n visible?: boolean\n align?: string\n sort?: false | 'ascending' | 'descending'\n headerCell?: (options: ColumnOptions) => HTMLElement\n dataCell?: (options: ColumnOptions) => HTMLElement\n}\n\nexport interface TableData {\n columns?: ColumnOptions[] | null\n array: any[]\n filter?: ArrayFilter | null\n}\n\nexport type ArrayFilter = (array: any[]) => any[]\n\nconst passThru = (array: any[]) => array\n\nexport type SelectCallback = (selected: any[]) => void\n\nexport class DataTable extends WebComponent {\n select = false\n multiple = false\n nosort = false\n nohide = false\n noreorder = false\n selectionChanged: SelectCallback = () => {\n /* do not care */\n }\n localized = false\n\n private selectedKey = Symbol('selected')\n private selectBinding = (elt: Element, obj: any) => {\n elt.toggleAttribute('aria-selected', obj[this.selectedKey] === true)\n }\n\n pinnedTop = 0\n pinnedBottom = 0\n maxVisibleRows = 10000\n\n get value(): TableData {\n return {\n array: this.array,\n filter: this.filter,\n columns: this.columns,\n }\n }\n\n set value(data: TableData) {\n const { array, columns, filter } = xinValue(data)\n if (\n this._array !== array ||\n this._columns !== columns ||\n this._filter !== filter\n ) {\n this.queueRender()\n }\n this._array = array || []\n this._columns = columns || null\n this._filter = filter || passThru\n }\n\n private rowData = {\n visible: [] as any[],\n pinnedTop: [] as any[],\n pinnedBottom: [] as any[],\n }\n\n private _array: any[] = []\n private _columns: ColumnOptions[] | null = null\n private _filter: ArrayFilter = passThru\n charWidth = 15\n rowHeight = 30\n minColumnWidth = 30\n\n get virtual(): { height: number } | undefined {\n return this.rowHeight > 0 ? { height: this.rowHeight } : undefined\n }\n\n constructor() {\n super()\n\n this.rowData = tosi({\n [this.instanceId]: this.rowData,\n })[this.instanceId]\n\n this.initAttributes(\n 'rowHeight',\n 'charWidth',\n 'minColumnWidth',\n 'select',\n 'multiple',\n 'pinnedTop',\n 'pinnedBottom',\n 'nosort',\n 'nohide',\n 'noreorder',\n 'localized'\n )\n }\n\n get array(): any[] {\n return this._array\n }\n\n set array(newArray: any[]) {\n this._array = xinValue(newArray)\n this.queueRender()\n }\n\n get filter(): ArrayFilter {\n return this._filter\n }\n\n set filter(filterFunc: ArrayFilter) {\n if (this._filter !== filterFunc) {\n this._filter = filterFunc\n this.queueRender()\n }\n }\n\n get sort(): SortCallback | undefined {\n if (this._sort) {\n return this._sort\n }\n const sortColumn = this._columns?.find(\n (c) => c.sort === 'ascending' || c.sort === 'descending'\n )\n if (!sortColumn) {\n return undefined\n }\n const { prop } = sortColumn\n\n return sortColumn.sort === 'ascending'\n ? (a: any, b: any) => (a[prop] > b[prop] ? 1 : -1)\n : (a: any, b: any) => (a[prop] > b[prop] ? -1 : 1)\n }\n\n set sort(sortFunc: ArrayFilter) {\n if (this._sort !== sortFunc) {\n this._sort = sortFunc\n this.queueRender()\n }\n }\n\n get columns(): ColumnOptions[] {\n if (!Array.isArray(this._columns)) {\n const { _array } = this\n this._columns = Object.keys(_array[0] || {}).map((prop: string) => {\n const width = defaultWidth(_array, prop, this.charWidth)\n return {\n name: prop.replace(/([a-z])([A-Z])/g, '$1 $2').toLocaleLowerCase(),\n prop,\n align:\n typeof _array[0][prop] === 'number' ||\n (_array[0][prop] !== '' && !isNaN(_array[0][prop]))\n ? 'right'\n : 'left',\n visible: width !== false,\n width: width ? width : 0,\n } as ColumnOptions\n })\n }\n return this._columns\n }\n\n set columns(newColumns: ColumnOptions[]) {\n this._columns = newColumns\n this.queueRender()\n }\n\n get visibleColumns(): ColumnOptions[] {\n return this.columns.filter((c) => c.visible !== false)\n }\n\n content = null\n\n getColumn(event: any): ColumnOptions | undefined {\n const x =\n (event.touches !== undefined ? event.touches[0].clientX : event.clientX) -\n this.getBoundingClientRect().x\n const epsilon = event.touches !== undefined ? 20 : 5\n let boundaryX = 0\n const log: any[] = []\n const column = this.visibleColumns.find((options: ColumnOptions) => {\n if (options.visible !== false) {\n boundaryX += options.width\n log.push(boundaryX)\n return Math.abs(x - boundaryX) < epsilon\n }\n })\n return column\n }\n\n private setCursor = (event: Event) => {\n const column = this.getColumn(event)\n if (column !== undefined) {\n this.style.cursor = 'col-resize'\n } else {\n this.style.cursor = ''\n }\n }\n\n private resizeColumn = (event: any) => {\n const column = this.getColumn(event)\n if (column !== undefined) {\n const origWidth = Number(column.width)\n const isTouchEvent = event.touches !== undefined\n const touchIdentifier = isTouchEvent\n ? event.touches[0].identifier\n : undefined\n trackDrag(\n event,\n (dx, _dy, event: any) => {\n const touch = isTouchEvent\n ? [...event.touches].find(\n (touch: any) => touch.identifier === touchIdentifier\n )\n : true\n if (touch === undefined) {\n return true\n }\n const width = origWidth + dx\n column.width =\n width > this.minColumnWidth ? width : this.minColumnWidth\n this.setColumnWidths()\n if (event.type === 'mouseup') {\n return true\n }\n },\n 'col-resize'\n )\n }\n }\n\n selectRow(row: any, select = true) {\n if (select) {\n row[this.selectedKey] = true\n } else {\n delete row[this.selectedKey]\n }\n }\n\n selectRows(rows?: any[], select = true) {\n for (const row of rows || this.array) {\n this.selectRow(row, select)\n }\n }\n\n deSelect(rows?: any[]) {\n this.selectRows(rows, false)\n }\n\n // tracking click / shift-click\n private rangeStart?: any\n private updateSelection = (event: Event) => {\n if (!this.select && !this.multiple) {\n return\n }\n const { target } = event\n if (!(target instanceof HTMLElement)) {\n return\n }\n const tr = target.closest('.tr')\n if (!(tr instanceof HTMLElement)) {\n return\n }\n const pickedItem = getListItem(tr)\n if (pickedItem === false) {\n return\n }\n const mouseEvent = event as MouseEvent\n // prevent ugly selection artifacts\n const selection = window.getSelection()\n if (selection !== null) {\n selection.removeAllRanges()\n }\n const rows = this.visibleRows\n if (\n this.multiple &&\n mouseEvent.shiftKey &&\n rows.length > 0 &&\n this.rangeStart !== pickedItem\n ) {\n const mode =\n this.rangeStart === undefined ||\n this.rangeStart[this.selectedKey] === true\n const [start, finish] = [\n this.rangeStart !== undefined ? rows.indexOf(this.rangeStart) : 0,\n rows.indexOf(pickedItem),\n ].sort((a, b) => a - b)\n\n // if start is -1 then one of the items is no longer visible\n if (start > -1) {\n for (let idx = start; idx <= finish; idx++) {\n const row = rows[idx]\n this.selectRow(row, mode)\n }\n }\n } else if (this.multiple && mouseEvent.metaKey) {\n this.selectRow(pickedItem, !pickedItem[this.selectedKey])\n const pickedIndex = rows.indexOf(pickedItem)\n const nextItem = rows[pickedIndex + 1]\n const previousItem = pickedIndex > 0 ? rows[pickedIndex - 1] : undefined\n if (nextItem !== undefined && nextItem[this.selectedKey] === true) {\n this.rangeStart = nextItem\n } else if (\n previousItem !== undefined &&\n previousItem[this.selectedKey] === true\n ) {\n this.rangeStart = previousItem\n } else {\n this.rangeStart = undefined\n }\n } else {\n this.rangeStart = pickedItem\n this.deSelect()\n this.selectRow(pickedItem, true)\n }\n this.selectionChanged(this.visibleSelectedRows)\n for (const row of Array.from(this.querySelectorAll('.tr'))) {\n const item = getListItem(row)\n this.selectBinding(row, item)\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n this.addEventListener('mousemove', this.setCursor)\n this.addEventListener('mousedown', this.resizeColumn)\n this.addEventListener('touchstart', this.resizeColumn, { passive: true })\n this.addEventListener('mouseup', this.updateSelection)\n this.addEventListener('touchend', this.updateSelection)\n }\n\n setColumnWidths() {\n this.style.setProperty(\n '--grid-columns',\n this.visibleColumns.map((c) => c.width + 'px').join(' ')\n )\n this.style.setProperty(\n '--grid-row-width',\n this.visibleColumns.reduce((w, c) => w + c.width, 0) + 'px'\n )\n }\n\n sortByColumn = (\n columnOptions: ColumnOptions,\n direction: 'ascending' | 'descending' | 'auto' = 'auto'\n ) => {\n for (const column of this.columns.filter(\n (c) => xinValue(c.sort) !== false\n )) {\n if (xinValue(column) === columnOptions) {\n if (direction === 'auto') {\n column.sort = column.sort === 'ascending' ? 'descending' : 'ascending'\n } else {\n column.sort = direction\n }\n this.queueRender()\n } else {\n delete column.sort\n }\n }\n }\n\n popColumnMenu = (target: HTMLElement, options: ColumnOptions) => {\n const { sortByColumn } = this\n const hiddenColumns = this.columns.filter(\n (column) => column.visible === false\n )\n const queueRender = this.queueRender.bind(this)\n const menu: MenuItem[] = []\n if (!this.nosort && options.sort !== false) {\n menu.push(\n {\n caption: this.localized\n ? `${localize('Sort')} ${localize('Ascending')}`\n : 'Sort Ascending',\n icon: 'sortAscending',\n action() {\n sortByColumn(options)\n },\n },\n {\n caption: this.localized\n ? `${localize('Sort')} ${localize('Descending')}`\n : 'Sort Descending',\n icon: 'sortDescending',\n action() {\n sortByColumn(options, 'descending')\n },\n }\n )\n }\n if (!this.nohide) {\n if (menu.length) {\n menu.push(null)\n }\n menu.push(\n {\n caption: this.localized\n ? `${localize('Hide')} ${localize('Column')}`\n : 'Hide Column',\n icon: 'eyeOff',\n enabled: () => options.visible !== true,\n action() {\n options.visible = false\n queueRender()\n },\n },\n {\n caption: this.localized\n ? `${localize('Show')} ${localize('Column')}`\n : 'Show Column',\n icon: 'eye',\n enabled: () => hiddenColumns.length > 0,\n menuItems: hiddenColumns.map((column) => {\n return {\n caption: column.name || column.prop,\n action() {\n delete column.visible\n queueRender()\n },\n }\n }),\n }\n )\n }\n\n popMenu({\n target,\n localized: this.localized,\n menuItems: menu,\n })\n }\n\n get captionSpan(): ElementCreator {\n return this.localized ? xinLocalized : span\n }\n\n headerCell = (options: ColumnOptions) => {\n const { popColumnMenu } = this\n let ariaSort = 'none'\n let sortIcon: SVGElement | undefined\n switch (options.sort) {\n case 'ascending':\n sortIcon = icons.sortAscending()\n ariaSort = 'descending'\n break\n case false:\n break\n default:\n break\n case 'descending':\n ariaSort = 'ascending'\n sortIcon = icons.sortDescending()\n }\n\n const menuButton = !(this.nosort && this.nohide)\n ? button(\n {\n class: 'menu-trigger',\n onClick(event: Event) {\n popColumnMenu(event.target as HTMLElement, options)\n event.stopPropagation()\n },\n },\n sortIcon || icons.moreVertical()\n )\n : {}\n\n return options.headerCell !== undefined\n ? options.headerCell(options)\n : span(\n {\n class: 'th',\n role: 'columnheader',\n ariaSort,\n style: {\n ...this.cellStyle,\n justifyContent: options.align || 'left',\n },\n },\n this.captionSpan(\n { style: { flex: '1' } },\n typeof options.name === 'string' ? options.name : options.prop\n ),\n menuButton\n )\n }\n\n dataCell = (options: ColumnOptions) => {\n if (options.dataCell !== undefined) {\n return options.dataCell(options)\n }\n return span({\n class: 'td',\n role: 'cell',\n style: {\n ...this.cellStyle,\n justifyContent: options.align || 'left',\n },\n bindText: `^.${options.prop}`,\n })\n }\n\n get visibleRows(): any[] {\n return xinValue(this.rowData.visible) as any[]\n }\n\n get visibleSelectedRows(): any[] {\n return this.visibleRows.filter((obj) => obj[this.selectedKey])\n }\n\n get selectedRows(): any[] {\n return this.array.filter((obj) => obj[this.selectedKey])\n }\n\n rowTemplate(columns: ColumnOptions[]): HTMLTemplateElement {\n return template(\n div(\n {\n class: 'tr',\n role: 'row',\n bind: {\n value: '^',\n binding: { toDOM: this.selectBinding },\n },\n },\n ...columns.map(this.dataCell)\n )\n )\n }\n\n private draggedColumn?: ColumnOptions\n\n private dropColumn = (event: Event) => {\n const target = (event.target as HTMLElement).closest(\n '.drag-over'\n ) as HTMLElement\n const targetIndex = Array.from(target.parentElement!.children).indexOf(\n target\n )\n const dropped = this.visibleColumns[targetIndex]\n const draggedIndex = this.columns.indexOf(this.draggedColumn!)\n const droppedIndex = this.columns.indexOf(dropped)\n this.columns.splice(draggedIndex, 1)\n this.columns.splice(droppedIndex, 0, this.draggedColumn!)\n console.log({ event, target, targetIndex, draggedIndex, droppedIndex })\n this.queueRender()\n\n event.preventDefault()\n event.stopPropagation()\n }\n\n render() {\n super.render()\n\n this.rowData.pinnedTop =\n this.pinnedTop > 0 ? this._array.slice(0, this.pinnedTop) : []\n this.rowData.pinnedBottom =\n this.pinnedBottom > 0\n ? this._array.slice(this._array.length - this.pinnedBottom)\n : []\n this.rowData.visible = this.filter(\n this._array.slice(\n this.pinnedTop,\n Math.min(\n this.maxVisibleRows,\n this._array.length - this.pinnedTop - this.pinnedBottom\n )\n )\n )\n\n const { sort } = this\n if (sort) {\n this.rowData.visible.sort(sort)\n }\n\n this.textContent = ''\n\n this.style.display = 'flex'\n this.style.flexDirection = 'column'\n const { visibleColumns } = this\n this.style.setProperty('--row-height', `${this.rowHeight}px`)\n this.setColumnWidths()\n\n if (!this.noreorder) {\n dragAndDrop.init()\n }\n const dragId = this.instanceId + '-column-header'\n const columnHeaders = visibleColumns.map((column) => {\n const header = this.headerCell(column)\n if (!this.noreorder && header.children[0]) {\n const caption = header.children[0] as HTMLElement\n caption.setAttribute('draggable', 'true')\n caption.style.pointerEvents = 'all'\n caption.dataset.drag = dragId\n header.dataset.drop = dragId\n caption.addEventListener('dragstart', () => {\n this.draggedColumn = column\n })\n header.addEventListener('drop', this.dropColumn)\n }\n return header\n })\n this.append(\n div(\n { class: 'thead', role: 'rowgroup', style: { touchAction: 'none' } },\n div(\n {\n class: 'tr',\n role: 'row',\n },\n ...columnHeaders\n )\n )\n )\n if (this.pinnedTop > 0) {\n this.append(\n div(\n {\n part: 'pinnedTopRows',\n class: 'tbody',\n role: 'rowgroup',\n style: {\n flex: '0 0 auto',\n overflow: 'hidden',\n height: `${this.rowHeight * this.pinnedTop}px`,\n },\n bindList: {\n value: this.rowData.pinnedTop,\n virtual: this.virtual,\n },\n },\n this.rowTemplate(visibleColumns)\n )\n )\n }\n this.append(\n div(\n {\n part: 'visibleRows',\n class: 'tbody',\n role: 'rowgroup',\n style: {\n content: ' ',\n minHeight: '100px',\n flex: '1 1 100px',\n overflow: 'hidden auto',\n },\n bindList: {\n value: this.rowData.visible,\n virtual: this.virtual,\n },\n },\n this.rowTemplate(visibleColumns)\n )\n )\n if (this.pinnedBottom > 0) {\n this.append(\n div(\n {\n part: 'pinnedBottomRows',\n class: 'tbody',\n role: 'rowgroup',\n style: {\n flex: '0 0 auto',\n overflow: 'hidden',\n height: `${this.rowHeight * this.pinnedBottom}px`,\n },\n bindList: {\n value: this.rowData.pinnedBottom,\n virtual: this.virtual,\n },\n },\n this.rowTemplate(visibleColumns)\n )\n )\n }\n }\n}\n\nexport const dataTable = DataTable.elementCreator({\n tag: 'xin-table',\n styleSpec: {\n ':host': {\n overflow: 'auto hidden',\n },\n ':host .thead, :host .tbody': {\n width: vars.gridRowWidth,\n },\n ':host .tr': {\n display: 'grid',\n gridTemplateColumns: vars.gridColumns,\n height: vars.rowHeight,\n lineHeight: vars.rowHeight,\n },\n ':host .td, :host .th': {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n display: 'flex',\n alignItems: 'center',\n },\n ':host .th .menu-trigger': {\n color: 'currentColor',\n background: 'none',\n padding: 0,\n lineHeight: vars.touchSize,\n height: vars.touchSize,\n width: vars.touchSize,\n },\n ':host [draggable=\"true\"]': {\n cursor: 'ew-resize',\n },\n ':host [draggable=\"true\"]:active': {\n background: varDefault.draggedHeaderBg('#0004'),\n color: varDefault.draggedHeaderColor('#fff'),\n },\n ':host .drag-over': {\n background: varDefault.dropHeaderBg('#fff4'),\n },\n },\n}) as ElementCreator<DataTable>\n",
|
|
25
25
|
"/*#\n# dialog\n\n`<tosi-dialog>` is a simple wrapper around the standard HTML `<dialog>` element designed\nto make creating dialogs as convenient as possible.\n\n```html\n<button>Show Dialog</button>\n<tosi-dialog>\n <h3 slot='header'>A Dialog</h3>\n <p>\n Here is some text\n </p>\n <button slot=\"footer\">Custom Button</button>\n</tosi-dialog>\n```\n```js\nimport { on } from 'tosijs'\nimport { postNotification } from 'tosijs-ui'\n\non(\n preview.querySelector('button'),\n 'click',\n async () => {\n const response = await preview.querySelector('tosi-dialog').showModal()\n postNotification({\n message: `user clicked ${response}`,\n duration: 2\n })\n }\n)\n```\n\n## Static Functions\n\n`TosiDialog` provides static async functions to replace the built-in dialogs provided by\nthe browser.\n\n- `alert(message: string, title = 'Alert'): Promise<undefined>`\n- `confirm(message: string, title = 'Confirm'): Promise<boolean>`\n- `prompt(message: string, title = 'Prompt', currentValue = ''): Promise<string | null> `\n\nYou can look at the code that implements them to see how to leverage `TosiDialog` to build\nmore complex, bespoke dialogs that can be used just as conveniently.\n\n```js\nimport { elements } from 'tosijs'\nimport { TosiDialog, postNotification } from 'tosijs-ui'\n\nconst { button, div } = elements\n\npreview.append(\n div(\n {\n style: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: 10\n }\n },\n button(\n {\n async onClick() {\n await TosiDialog.alert('This is an alert')\n postNotification({\n message: 'alert dismissed',\n duration: 2\n })\n }\n },\n 'TosiDialog.alert',\n ),\n button(\n {\n async onClick() {\n const confirmed = await TosiDialog.confirm('Can you confirm?')\n postNotification({\n message: `user ${confirmed ? 'confirmed' : 'cancelled'}`,\n duration: 2\n })\n }\n },\n 'TosiDialog.confirm',\n ),\n button(\n {\n async onClick() {\n const text = await TosiDialog.prompt('Enter some text please')\n postNotification({\n message: text !== null ? `user entered \"${text}\"`: 'user cancelled',\n duration: 2\n })\n }\n },\n 'TosiDialog.prompt',\n ),\n ),\n)\n```\n```css\n.preview {\n padding: 10px;\n}\n```\n\n*/\nimport { Component, PartsMap, elements, on, vars, varDefault } from 'tosijs'\nimport { findHighestZ } from './track-drag'\n\nconst { dialog, button, header, footer, xinSlot, h3, p, label, input, div } =\n elements\n\ninterface DialogParts extends PartsMap {\n dialog: HTMLDialogElement\n ok: HTMLButtonElement\n}\n\nexport class TosiDialog extends Component<DialogParts> {\n static async alert(message: string, title = 'Alert'): Promise<void> {\n return new Promise((resolve) => {\n const alertDialog = tosiDialog(\n {\n removeOnClose: true,\n closeOnBackgroundClick: true,\n dialogWillClose() {\n resolve()\n },\n },\n h3({ slot: 'header' }, title),\n p(message)\n )\n document.body.append(alertDialog)\n alertDialog.showModal()\n })\n }\n\n static async confirm(message: string, title = 'Confirm'): Promise<boolean> {\n return new Promise((resolve) => {\n const confirmDialog = tosiDialog(\n {\n removeOnClose: true,\n dialogWillClose(reason?: string) {\n resolve(reason === 'confirm')\n },\n },\n h3({ slot: 'header' }, title),\n p(message),\n button(\n {\n slot: 'footer',\n onClick() {\n confirmDialog.close()\n },\n },\n 'Cancel'\n )\n )\n document.body.append(confirmDialog)\n confirmDialog.showModal()\n })\n }\n\n static async prompt(\n message: string,\n title = 'Prompt',\n currentValue = ''\n ): Promise<string | null> {\n return new Promise((resolve) => {\n const inputField = input({ value: currentValue })\n const promptDialog = tosiDialog(\n {\n removeOnClose: true,\n dialogWillClose(reason?: string) {\n resolve(reason === 'confirm' ? inputField.value : null)\n },\n initialFocus() {\n inputField.focus()\n },\n },\n h3({ slot: 'header' }, title),\n p(\n label(\n {\n style: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n gap: 5,\n },\n },\n div(message),\n inputField\n )\n ),\n button(\n {\n slot: 'footer',\n onClick() {\n promptDialog.close()\n },\n },\n 'Cancel'\n )\n )\n document.body.append(promptDialog)\n promptDialog.showModal()\n })\n }\n\n removeOnClose = false\n closeOnBackgroundClick = false\n\n constructor() {\n super()\n\n this.initAttributes('removeOnClose', 'closeOnBackgroundClick')\n\n on(this, 'click', () => {\n if (this.closeOnBackgroundClick) {\n this.close()\n }\n })\n }\n\n dialogWillClose = (reason = 'cancel') => {\n console.log('dialog will close with', reason)\n }\n\n initialFocus() {\n this.parts.ok.focus()\n }\n\n #modalResolution = (outcome: string | null) => {}\n\n showModal = (): Promise<string | null> => {\n this.style.zIndex = String(findHighestZ())\n return new Promise((resolve) => {\n this.#modalResolution = resolve\n this.parts.dialog.showModal()\n requestAnimationFrame(() => {\n this.initialFocus()\n })\n })\n }\n\n close = (reason = 'cancel') => {\n this.dialogWillClose(reason)\n this.#modalResolution(reason)\n this.parts.dialog.close()\n if (this.removeOnClose) {\n this.remove()\n }\n }\n\n ok = () => {\n this.close('confirm')\n }\n\n content = () =>\n dialog(\n { part: 'dialog' },\n header(xinSlot({ name: 'header' })),\n xinSlot(),\n footer(\n xinSlot({ name: 'footer' }),\n button({ part: 'ok', onClick: this.ok }, 'OK')\n )\n )\n}\n\nexport const tosiDialog = TosiDialog.elementCreator({\n tag: 'tosi-dialog',\n styleSpec: {\n ':host > dialog::backdrop': {\n backdropFilter: 'blur(8px)',\n },\n ':host > dialog:not([open])': {\n display: 'none',\n },\n ':host > dialog[open]': {\n minWidth: 300,\n border: 0,\n borderRadius: 10,\n overflow: 'hidden',\n maxHeight: 'calc(100% - 20px)',\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: 5,\n _dialogShadow: varDefault.menuShadow('0 5px 10px #0004'),\n _dialogBackground: varDefault.background('#fafafa'),\n _dialogColor: varDefault.textColor('#222'),\n boxShadow: vars.dialogShadow,\n background: vars.dialogBackground,\n color: vars.dialogColor,\n },\n ':host > dialog > *': {\n padding: '0 20px',\n },\n ':host > dialog > header': {\n display: 'flex',\n justifyContent: 'center',\n gap: 10,\n },\n ':host > dialog > footer': {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 10,\n paddingBottom: 20,\n },\n },\n})\n",
|
|
26
26
|
"/*#\n# editable-rect\n\n`<xin-editable>` (`editableRect` is the `ElementCreator` and `EditableRect` is the class) is an element\nfor allowing the adjustment of another element's position and size. Simply insert it in a `position: absolute`\nor `position: fixed` element and you can directly adjust its CSS positioning, including rotation.\n\nClick on an element to adjust its position, dimensions, and rotation.\n\n```js\nimport { editableRect, icons } from 'tosijs-ui'\nimport { elements } from 'tosijs'\nconst { button } = elements\n\nfunction showTools(event) {\n event.stopPropagation()\n event.preventDefault()\n}\n\nconst editable = editableRect(button({class: 'more-popup', onClick: showTools}, icons.moreVertical()))\npreview.addEventListener('click', (event) => {\n const target = event.target\n if (['absolute', 'fixed'].includes(getComputedStyle(target).position)) {\n target.append(editable)\n } else {\n editable.remove()\n }\n})\npreview.addEventListener('change', event => console.log(event))\n```\n```html\n<div class=\"editable\" style=\"top: 20px; left: 20px; width: auto; height: auto; right: 20px; bottom: 20px;\">\n <div class=\"editable\" style=\"top: 20px; left: 20px; width: 200px; height: 150px;\">\n </div>\n <div class=\"editable\" style=\"bottom: 20px; top: 20px; width: 300px; height: auto; right: 20px;\">\n </div>\n</div>\n```\n```css\n.preview .editable {\n position: absolute;\n box-shadow: inset 0 0 0 1px #0ccc;\n background: #0cc1;\n}\n\n.preview button.more-popup {\n position: absolute;\n width: 44px;\n height: 44px;\n top: 2px;\n right: 2px;\n --text-color: black;\n background: transparent;\n box-shadow: none;\n}\n\n.previw button\n```\n\n## Snapping\n\nWhen `EditableRect.snapToGrid === true` or the shift-key is depresseed, position will snap to `EditableRect.gridSize` pixels (default = 8).\n\nSimilarly `EditableRect.snapAngle === true` or the shift-key will snap rotation to increments of `EditableRect.angleSize` degrees (default = 15).\n\n## Events\n\nAfter an element's position, size, or rotation are adjusted a `change` event is triggered on the element.\n*/\n\nimport { Component, elements, vars } from 'tosijs'\nimport { icons } from './icons'\nimport { trackDrag } from './track-drag'\n\nconst { div, slot } = elements\n\ninterface Locks {\n left: boolean\n right: boolean\n top: boolean\n bottom: boolean\n}\n\ntype Side = keyof Locks\n\nexport class EditableRect extends Component {\n static angleSize = 15\n static gridSize = 8\n static snapAngle = false\n static snapToGrid = false\n\n static styleSpec = {\n ':host': {\n '--handle-bg': '#fff4',\n '--handle-color': '#2228',\n '--handle-hover-bg': '#8ff8',\n '--handle-hover-color': '#222',\n '--handle-size': '20px',\n '--handle-padding': '2px',\n },\n ':host ::slotted(*)': {\n position: 'absolute',\n },\n ':host > :not(style,slot)': {\n boxSizing: 'border-box',\n content: '\" \"',\n position: 'absolute',\n display: 'flex',\n height: vars.handleSize,\n width: vars.handleSize,\n padding: vars.handlePadding,\n '--text-color': vars.handleColor,\n background: vars.handleBg,\n },\n ':host > .drag-size': {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n height: 'auto',\n width: 'auto',\n background: 'transparent',\n cursor: 'ew-resize',\n },\n ':host > [part=\"rotate\"]': {\n transform: `translateY(${vars.handleSize_50})`,\n },\n ':host > [locked] > svg:first-child, :host > :not([locked]) > svg+svg': {\n display: 'none',\n },\n ':host .icon-unlock': {\n opacity: 0.5,\n },\n ':host svg': {\n pointerEvents: 'none',\n },\n ':host > *:hover': {\n '--text-color': vars.handleHoverColor,\n background: vars.handleHoverBg,\n },\n }\n\n static snappedCoords(event: PointerEvent, coords: number[]): number[] {\n const { gridSize } = EditableRect\n return EditableRect.snapToGrid || event.shiftKey\n ? coords.map((v) => Math.round(v / gridSize) * gridSize)\n : coords\n }\n\n static snappedAngle(event: PointerEvent, a: number): number {\n const { angleSize } = EditableRect\n return EditableRect.snapAngle || event.shiftKey\n ? Math.round(a / angleSize) * angleSize\n : a\n }\n\n get locked(): Locks {\n const element = this.parentElement!\n if (element.style.inset) {\n return { left: true, top: true, bottom: true, right: true }\n }\n const right = element.style.right.match(/\\d/) !== null\n const left = !right || element.style.left.match(/\\d/) !== null\n const bottom = element.style.bottom.match(/\\d/) !== null\n const top = !bottom || element.style.top.match(/\\d/) !== null\n return { left, top, bottom, right }\n }\n\n set locked(locks: Locks) {\n const { bottom, right } = locks\n let { left, top } = locks\n const element = this.parentElement!\n const l = element.offsetLeft\n const t = element.offsetTop\n const w = element.offsetWidth\n const h = element.offsetHeight\n const r = (element.offsetParent as HTMLElement).offsetWidth - l - w\n const b = (element.offsetParent as HTMLElement).offsetHeight - t - h\n Object.assign(element.style, {\n left: '',\n right: '',\n top: '',\n bottom: '',\n width: '',\n height: '',\n })\n if (!right) left = true\n if (!bottom) top = true\n if (left) element.style.left = l + 'px'\n if (right) element.style.right = r + 'px'\n if (left && right) {\n element.style.width = 'auto'\n } else {\n element.style.width = w + 'px'\n }\n if (top) element.style.top = t + 'px'\n if (bottom) element.style.bottom = b + 'px'\n if (top && bottom) {\n element.style.height = 'auto'\n } else {\n element.style.height = h + 'px'\n }\n this.queueRender()\n }\n\n get coords(): { top: number; left: number; bottom: number; right: number } {\n const { top, left, right, bottom } = this.parentElement!.style\n return {\n top: parseFloat(top),\n left: parseFloat(left),\n right: parseFloat(right),\n bottom: parseFloat(bottom),\n }\n }\n\n get left(): number {\n return this.parentElement!.offsetLeft\n }\n\n get width(): number {\n return this.parentElement!.offsetWidth\n }\n\n get right(): number {\n return (\n (this.parentElement!.offsetParent as HTMLElement).offsetWidth -\n (this.left + this.width)\n )\n }\n\n get top(): number {\n return this.parentElement!.offsetTop\n }\n\n get height(): number {\n return this.parentElement!.offsetHeight\n }\n\n get bottom(): number {\n return (\n (this.parentElement!.offsetParent as HTMLElement).offsetHeight -\n (this.top + this.height)\n )\n }\n\n triggerChange = () => {\n this.parentElement!.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n )\n }\n\n adjustPosition = (event: Event) => {\n // this means there will be some positioning coordinate set!\n const { locked } = this\n this.locked = locked\n const target = this.parentElement!\n const { top, left, bottom, right } = this.coords\n trackDrag(event as PointerEvent, (dx, dy, dragEvent) => {\n ;[dx, dy] = EditableRect.snappedCoords(dragEvent, [dx, dy])\n if (!isNaN(top)) {\n target.style.top = top + dy + 'px'\n }\n if (!isNaN(bottom)) {\n target.style.bottom = bottom - dy + 'px'\n }\n if (!isNaN(left)) {\n target.style.left = left + dx + 'px'\n }\n if (!isNaN(right)) {\n target.style.right = right - dx + 'px'\n }\n if (dragEvent.type === 'mouseup') {\n this.triggerChange()\n return true\n }\n })\n }\n\n resize = (event: Event) => {\n const target = this.parentElement!\n const { locked } = this\n this.locked = Object.assign({\n left: true,\n top: true,\n right: true,\n bottom: true,\n })\n const [right, bottom] = [this.right, this.bottom]\n\n trackDrag(event as PointerEvent, (dx, dy, dragEvent) => {\n let r = right - dx\n let b = bottom - dy\n ;[r, b] = EditableRect.snappedCoords(dragEvent as PointerEvent, [r, b])\n target.style.right = r + 'px'\n target.style.bottom = b + 'px'\n if (dragEvent.type === 'mouseup') {\n this.locked = locked\n this.triggerChange()\n return true\n }\n })\n }\n\n adjustSize = (event: Event) => {\n const target = this.parentElement!\n const { locked } = this\n const dimension = (event.target as HTMLElement).getAttribute('part') as Side\n this.locked = Object.assign({\n left: true,\n right: true,\n top: true,\n bottom: true,\n })\n const original = this[dimension]\n\n trackDrag(event as PointerEvent, (dx, dy, dragEvent) => {\n const [adjusted] = EditableRect.snappedCoords(dragEvent, [\n original +\n (['left', 'right'].includes(dimension) ? dx : dy) *\n (['right', 'bottom'].includes(dimension) ? -1 : 1),\n ])\n target.style[dimension] = adjusted + 'px'\n if (dragEvent.type === 'mouseup') {\n this.locked = locked\n this.triggerChange()\n return true\n }\n })\n }\n\n get rect(): DOMRect {\n return this.parentElement!.getBoundingClientRect()\n }\n\n get center(): { x: number; y: number } {\n const rect = this.parentElement!.getBoundingClientRect()\n return {\n x: rect.x + rect.width * 0.5,\n y: rect.y + rect.height * 0.5,\n }\n }\n\n get element(): HTMLElement {\n return this.parentElement as HTMLElement\n }\n\n adjustRotation = (event: Event) => {\n const { center } = this\n const { transformOrigin } = this.element.style\n if (!transformOrigin) {\n this.element.style.transformOrigin = '50% 50%'\n }\n trackDrag(event as PointerEvent, (_dx, _dy, dragEvent: PointerEvent) => {\n const { clientX, clientY } = dragEvent\n const x = clientX - center.x\n const y = clientY - center.y\n let alpha = y > 0 ? 90 : -90\n if (x !== 0) {\n alpha = (Math.atan2(y, x) * 180) / Math.PI\n }\n alpha = EditableRect.snappedAngle(dragEvent, alpha)\n if (alpha === 0) {\n this.element.style.transformOrigin = ''\n this.element.style.transform = ''\n } else {\n this.element.style.transform = `rotate(${alpha}deg)`\n }\n this.triggerChange()\n return dragEvent.type === 'mouseup'\n })\n }\n\n toggleLock = (event: Event) => {\n const { locked } = this\n const which = (event.target as HTMLElement).title.split(' ')[1] as Side\n locked[which] = !locked[which]\n this.locked = locked\n this.queueRender()\n event.stopPropagation()\n event.preventDefault()\n }\n\n content = () => [\n div(\n {\n part: 'move',\n style: { top: '50%', left: '50%', transform: 'translate(-50%,-50%)' },\n },\n icons.move()\n ),\n div({\n part: 'left',\n title: 'resize left',\n class: 'drag-size',\n style: { left: '-6px', width: '8px' },\n }),\n div({\n part: 'right',\n title: 'resize right',\n class: 'drag-size',\n style: { left: 'calc(100% - 2px)', width: '8px' },\n }),\n div({\n part: 'top',\n title: 'resize top',\n class: 'drag-size',\n style: { top: '-6px', height: '8px', cursor: 'ns-resize' },\n }),\n div({\n part: 'bottom',\n title: 'resize bottom',\n class: 'drag-size',\n style: { top: 'calc(100% - 2px)', height: '8px', cursor: 'ns-resize' },\n }),\n div(\n {\n part: 'resize',\n style: { top: '100%', left: '100%' },\n },\n icons.resize()\n ),\n div(\n {\n part: 'rotate',\n style: { top: '50%', right: '0' },\n },\n icons.refreshCw()\n ),\n div(\n {\n part: 'lockLeft',\n title: 'lock left',\n style: { top: '50%', left: 0, transform: 'translate(-100%, -50%)' },\n },\n icons.unlock(),\n icons.lock()\n ),\n div(\n {\n part: 'lockRight',\n title: 'lock right',\n style: { top: '50%', left: '100%', transform: 'translate(0%, -50%)' },\n },\n icons.unlock(),\n icons.lock()\n ),\n div(\n {\n part: 'lockTop',\n title: 'lock top',\n style: { top: 0, left: '50%', transform: 'translate(-50%, -100%)' },\n },\n icons.unlock(),\n icons.lock()\n ),\n div(\n {\n part: 'lockBottom',\n title: 'lock bottom',\n style: { top: '100%', left: '50%', transform: 'translate(-50%, 0%)' },\n },\n icons.unlock(),\n icons.lock()\n ),\n slot(),\n ]\n\n constructor() {\n super()\n\n this.initAttributes('rotationSnap', 'positionSnap')\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n const {\n left,\n right,\n top,\n bottom,\n lockLeft,\n lockRight,\n lockTop,\n lockBottom,\n move,\n resize,\n rotate,\n } = this.parts\n\n const PASSIVE = { passive: true }\n ;[left, right, top, bottom].forEach((elt) => {\n elt.addEventListener('mousedown', this.adjustSize, PASSIVE)\n elt.addEventListener('touchstart', this.adjustSize, PASSIVE)\n })\n ;[lockLeft, lockRight, lockTop, lockBottom].forEach((elt) => {\n elt.addEventListener('click', this.toggleLock)\n })\n resize.addEventListener('mousedown', this.resize, PASSIVE)\n move.addEventListener('mousedown', this.adjustPosition, PASSIVE)\n rotate.addEventListener('mousedown', this.adjustRotation, PASSIVE)\n resize.addEventListener('touchstart', this.resize, PASSIVE)\n move.addEventListener('touchstart', this.adjustPosition, PASSIVE)\n rotate.addEventListener('touchstart', this.adjustRotation, PASSIVE)\n }\n\n render() {\n super.render()\n\n if (!this.parentElement) {\n return\n }\n\n const { lockLeft, lockRight, lockTop, lockBottom } = this.parts\n const { left, right, top, bottom } = this.locked\n\n lockLeft.toggleAttribute('locked', left)\n lockRight.toggleAttribute('locked', right)\n lockTop.toggleAttribute('locked', top)\n lockBottom.toggleAttribute('locked', bottom)\n }\n}\n\nexport const editableRect = EditableRect.elementCreator({\n tag: 'xin-editable',\n})\n",
|
|
27
27
|
"/*#\n# filter\n\nAutomatically creates `ArrayFilter` functions `(a: any[]) => any[]` based on the query you build using its\nmacOS Finder-inspired interface, using an easily customizable / extensible collection of `Filter` objects.\n\n```js\nimport { elements } from 'tosijs'\nimport { dataTable, filterBuilder, availableFilters } from 'tosijs-ui'\n\nconst sourceWords = ['acorn', 'bubblegum', 'copper', 'daisy', 'ellipse', 'fabulous', 'gerund', 'hopscotch', 'idiom', 'joke']\nfunction randomWords () {\n let numWords = Math.random() * 4\n const words = []\n while (numWords > 0) {\n numWords -= 1\n words.push(sourceWords[Math.floor(Math.random() * 10)])\n }\n return [...new Set(words)]\n}\n\nconst array = []\nfor(let i = 0; i < 1000; i++) {\n array.push({\n date: new Date(Math.random() * Date.now()).toISOString().split('T')[0],\n isLucky: Math.random() < 0.1,\n number: Math.floor(Math.random() * 200 - 100),\n string: randomWords().join(' '),\n tags: randomWords()\n })\n}\n\nconst { span } = elements\nconst tagsBinding = {\n value: '^.tags',\n binding: {\n toDOM(element, value) {\n element.classList.add('tag-list')\n element.textContent = ''\n element.append(...value.map(tag => span(tag, {class: 'tag'})))\n }\n }\n}\n\nconst columns = [\n {\n prop: 'date',\n width: 120\n },\n {\n prop: 'isLucky',\n type: 'boolean',\n width: 90\n },\n {\n prop: 'number',\n align: 'right',\n width: 90\n },\n {\n prop: 'string',\n width: 200\n },\n {\n prop: 'tags',\n width: 200,\n dataCell() {\n return elements.div({ bind: tagsBinding })\n }\n },\n]\n\nconst table = dataTable({ array, columns })\nconst filter = filterBuilder({\n fields: columns,\n onChange(event) {\n table.filter = filter.filter\n }\n})\npreview.append(filter, table)\n```\n```css\n.preview {\n display: flex;\n flex-direction: column;\n}\n\n.preview xin-table {\n flex: 1 1 auto;\n}\n\n.preview .tag-list {\n display: flex;\n font-size: 80%;\n align-items: center;\n gap: 2px;\n}\n\n.preview .tag {\n display: inline-block;\n border-radius: 4px;\n padding: 0 5px;\n line-height: 20px;\n height: 20px;\n color: var(--brand-text-color);\n background: var(--brand-color);\n}\n```\n\n## serialization\n\nThe current state of a `<xin-filter>` can be serialized as, and restored from, a Javascript object (which itself\ncan easily be converted into JSON or a URL component) via its `state` property. Obviously, a `<xin-filter>` can\nonly restore state if it has the necessary constituent `filters`.\n\n## availableFilters\n\n`<xin-filter>` has a default set of `FilterMaker` objects which it uses to construct filter function.\nIn the example above, the default collection of filters is reduced to `contains`, `equals`, `after`, and `isTrue`.\n\nThe full collection includes:\n\n- **contains** * looks for fields containing a string (ignoring case)\n- **equals** * looks for fields containing equivalent values (ignoring case)\n- **after** * looks for fields with a date after a provided value\n- **greaterThan** * looks for fields with a value greater than a provided value\n- **truthy** * looks for fields that are true / non-zero / non-empty\n- **true** looks for fields that are `true`\n- **false** looks for fields that are `false`\n- **hasTags** looks for fields that are arrays containing all the (space/comma) delimited strings\n- **doesNotHaveTags** looks for fields that are arrays containing *none* of the strings\n\n**Note**: the filters marked with an * have negative version (e.g. does not contain).\n\n```\ntype ObjectTest (obj: any) => boolean\n\ninterface FilterMaker {\n caption: string // describes the test condition\n negative?: string // describes the negative test condition\n needsValue?: boolean // if false, the filterMaker doesn't need a needle value\n filterMaker(needle: any) => ObjectTest // builds an ObjectTest\n}\n```\n*/\n\nimport { Component as WebComponent, ElementCreator, elements, PartsMap } from 'tosijs'\nimport { icons } from './icons'\nimport { xinSelect, XinSelect, SelectOption } from './select'\n\nconst { div, input, button, span } = elements\n\ntype ObjectTest = (obj: any) => boolean\ntype ArrayFilter = (array: any[]) => any[]\n\nconst passThru = (array: any[]) => array\nconst NULL_FILTER_DESCRIPTION = 'null filter, everything matches'\n\ninterface FilterMaker {\n caption: string\n negative?: string\n needsValue?: boolean // default true\n makeTest: (value: any) => ObjectTest\n}\n\nexport const availableFilters: { [key: string]: FilterMaker } = {\n contains: {\n caption: 'contains',\n negative: 'does not contain',\n makeTest: (value: string) => {\n value = value.toLocaleLowerCase()\n return (obj: any) => String(obj).toLocaleLowerCase().includes(value)\n },\n },\n hasTags: {\n caption: 'has tags',\n makeTest: (value: string) => {\n const tags = value\n .split(/[\\s,]/)\n .map((tag) => tag.trim().toLocaleLowerCase())\n .filter((tag) => tag !== '')\n return (obj: any) =>\n Array.isArray(obj) &&\n tags.find((tag) => !obj.includes(tag)) === undefined\n },\n },\n doesNotHaveTags: {\n caption: 'does not have tags',\n makeTest: (value: string) => {\n const tags = value\n .split(/[\\s,]/)\n .map((tag) => tag.trim().toLocaleLowerCase())\n .filter((tag) => tag !== '')\n return (obj: any) =>\n Array.isArray(obj) &&\n tags.find((tag) => obj.includes(tag)) === undefined\n },\n },\n equals: {\n caption: '=',\n negative: '≠',\n makeTest: (value: string) => {\n if (isNaN(Number(value))) {\n value = String(value).toLocaleLowerCase()\n return (obj: any) => String(obj).toLocaleLowerCase() === value\n }\n const num = Number(value)\n return (obj: any) => Number(obj) === num\n },\n },\n after: {\n caption: 'is after',\n negative: 'is before',\n makeTest: (value: any) => {\n const date = new Date(value)\n return (obj: any) => new Date(obj) > date\n },\n },\n greaterThan: {\n caption: '>',\n negative: '≤',\n makeTest: (value: any) => {\n if (!isNaN(Number(value))) {\n const num = Number(value)\n return (obj: any) => Number(obj) > num\n }\n value = value.toLocaleLowerCase()\n return (obj: any) => String(obj).toLocaleLowerCase() > value\n },\n },\n truthy: {\n caption: 'is true/non-empty/non-zero',\n negative: 'is false/empty/zero',\n needsValue: false,\n makeTest: () => (obj: any) => !!obj,\n },\n isTrue: {\n caption: '= true',\n needsValue: false,\n makeTest: () => (obj: any) => obj === true,\n },\n isFalse: {\n caption: '= false',\n needsValue: false,\n makeTest: () => (obj: any) => obj === false,\n },\n}\n\ninterface Filter {\n description: string\n test: ObjectTest\n}\n\nconst passAnything = {\n description: 'anything',\n test: () => true,\n}\n\nfunction getSelectText(select: XinSelect): string {\n return (select.options[select.selectedIndex] as SelectOption)?.caption || ''\n}\n\ntype Fields = Array<{ name?: string; prop: string }>\n\nexport interface FilterPartState {\n haystack: string\n condition: string\n needle: string\n}\n\ninterface FilterPartParts extends PartsMap {\n haystack: XinSelect\n condition: XinSelect\n needle: HTMLInputElement\n remove: HTMLButtonElement\n}\n\nexport class FilterPart extends WebComponent<FilterPartParts> {\n fields: Fields = []\n filters = availableFilters\n haystack = '*'\n condition = 'contains'\n needle = ''\n\n content = () => [\n xinSelect({ part: 'haystack' }),\n xinSelect({ part: 'condition' }),\n input({ part: 'needle', type: 'search' }),\n span({ part: 'padding' }),\n button({ part: 'remove', title: 'delete' }, icons.trash()),\n ]\n\n filter: Filter = passAnything\n\n constructor() {\n super()\n this.initAttributes('haystack', 'condition', 'needle')\n }\n\n get state(): FilterPartState {\n const { haystack, needle, condition } = this.parts\n return {\n haystack: haystack.value,\n needle: needle.value,\n condition: condition.value,\n }\n }\n\n set state(newState: FilterPartState) {\n Object.assign(this, newState)\n }\n\n buildFilter = (/* event: Event */) => {\n const { haystack, condition, needle } = this.parts\n\n const negative = condition.value.startsWith('~')\n const key = negative ? condition.value.slice(1) : condition.value\n const filter = this.filters[key] as FilterMaker\n needle.hidden = filter.needsValue === false\n\n const baseTest =\n filter.needsValue === false\n ? filter.makeTest(undefined)\n : filter.makeTest(needle.value)\n const field = haystack.value\n let test\n\n if (field !== '*') {\n test = negative\n ? (obj: any) => !baseTest(obj[field])\n : (obj: any) => baseTest(obj[field])\n } else {\n test = negative\n ? (obj: any) =>\n Object.values(obj).find((v) => !baseTest(v)) !== undefined\n : (obj: any) =>\n Object.values(obj).find((v) => baseTest(v)) !== undefined\n }\n\n const matchValue = filter.needsValue !== false ? ` \"${needle.value}\"` : ''\n const description = `${getSelectText(haystack)} ${getSelectText(\n condition\n )}${matchValue}`\n\n this.filter = {\n description,\n test,\n }\n\n this.parentElement?.dispatchEvent(new Event('change'))\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n const { haystack, condition, needle, remove } = this.parts\n\n haystack.addEventListener('change', this.buildFilter)\n condition.addEventListener('change', this.buildFilter)\n needle.addEventListener('input', this.buildFilter)\n haystack.value = this.haystack\n condition.value = this.condition\n needle.value = this.needle\n\n remove.addEventListener('click', () => {\n const { parentElement } = this\n this.remove()\n parentElement?.dispatchEvent(new Event('change'))\n })\n }\n\n render() {\n super.render()\n\n const { haystack, condition, needle } = this.parts\n\n haystack.options = [\n {\n caption: 'any field', \n value: '*'\n },\n ...this.fields.map((field) => field.prop)\n ]\n \n condition.options = Object.keys(this.filters).map((key) => {\n const filter = this.filters[key]\n return filter.negative !== undefined\n ? [\n { caption: filter.caption, value: key },\n { caption: filter.negative, value: '~' + key },\n ]\n : { caption: filter.caption, value: key }\n })\n .flat() as SelectOption[]\n\n if (this.haystack !== '') {\n haystack.value = this.haystack\n }\n if (this.condition !== '') {\n condition.value = this.condition\n }\n if (this.needle !== '') {\n needle.value = this.needle\n }\n this.buildFilter()\n }\n}\n\nexport const filterPart = FilterPart.elementCreator({\n tag: 'xin-filter-part',\n styleSpec: {\n ':host': {\n display: 'flex',\n },\n\n ':host .xin-icon:': {\n verticalAlign: 'middle',\n pointerEvents: 'none',\n },\n\n ':host [part=\"haystack\"], :host [part=\"condition\"]': {\n flex: '1',\n },\n\n ':host [part=\"needle\"]': {\n flex: 2,\n },\n\n ':host [hidden]+[part=\"padding\"]': {\n display: 'block',\n content: ' ',\n flex: '1 1 auto',\n },\n },\n}) as ElementCreator<FilterPart>\n\nexport type FilterState = FilterPartState[]\n\nexport interface FilterBuilderParts extends PartsMap {\n add: HTMLButtonElement\n resent: HTMLButtonElement\n}\n\nexport class FilterBuilder extends WebComponent<FilterBuilderParts> {\n private _fields: Fields = []\n\n get fields(): Fields {\n return this._fields\n }\n\n set fields(_fields: Fields) {\n this._fields = _fields\n this.queueRender()\n }\n\n get state(): FilterState {\n const { filterContainer } = this.parts\n return ([...filterContainer.children] as FilterPart[]).map(\n (part) => part.state\n )\n }\n\n set state(parts: FilterState) {\n const { fields, filters } = this\n const { filterContainer } = this.parts\n filterContainer.textContent = ''\n for (const state of parts) {\n filterContainer.append(filterPart({ fields, filters, ...state }))\n }\n }\n\n filter: ArrayFilter = passThru\n description = NULL_FILTER_DESCRIPTION\n\n addFilter = () => {\n const { fields, filters } = this\n const { filterContainer } = this.parts\n filterContainer.append(filterPart({ fields, filters }))\n }\n\n content = () => [\n button(\n {\n part: 'add',\n title: 'add filter condition',\n onClick: this.addFilter,\n class: 'round',\n },\n icons.plus()\n ),\n div({ part: 'filterContainer' }),\n button(\n { part: 'reset', title: 'reset filter', onClick: this.reset },\n icons.x()\n ),\n ]\n\n filters = availableFilters\n\n reset = () => {\n const { fields, filters } = this\n const { filterContainer } = this.parts\n this.description = NULL_FILTER_DESCRIPTION\n this.filter = passThru\n filterContainer.textContent = ''\n filterContainer.append(filterPart({ fields, filters }))\n this.dispatchEvent(new Event('change'))\n }\n\n buildFilter = (/* event: Event */) => {\n const { filterContainer } = this.parts\n if (filterContainer.children.length === 0) {\n this.reset()\n return\n }\n const filters = ([...filterContainer.children] as FilterPart[]).map(\n (filterPart) => filterPart.filter\n ) as Filter[]\n const tests = filters.map((filter) => filter.test) as ObjectTest[]\n this.description = filters.map((filter) => filter.description).join(', ')\n this.filter = (array: any[]) =>\n array.filter(\n (obj: any) => tests.find((f) => f(obj) === false) === undefined\n )\n this.dispatchEvent(new Event('change'))\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n const { filterContainer } = this.parts\n filterContainer.addEventListener('change', this.buildFilter)\n\n this.reset()\n }\n\n render() {\n super.render()\n }\n}\n\nexport const filterBuilder = FilterBuilder.elementCreator({\n tag: 'xin-filter',\n styleSpec: {\n ':host': {\n height: 'auto',\n display: 'grid',\n gridTemplateColumns: '32px calc(100% - 64px) 32px',\n alignItems: 'center',\n },\n\n ':host [part=\"filterContainer\"]': {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n flex: '1 1 auto',\n },\n \n ':host [part=\"haystack\"]': {\n _fieldWidth: '100px'\n },\n \n ':host [part=\"condition\"]': {\n _fieldWidth: '60px'\n },\n \n ':host [part=\"needle\"]': {\n _fieldWidth: '80px'\n },\n\n ':host [part=\"add\"], :host [part=\"reset\"]': {\n '--button-size': 'var(--touch-size, 32px)',\n borderRadius: '999px',\n height: 'var(--button-size)',\n lineHeight: 'var(--button-size)',\n margin: '0',\n padding: '0',\n textAlign: 'center',\n width: 'var(--button-size)',\n flex: '0 0 var(--button-size)',\n },\n },\n}) as ElementCreator<FilterBuilder>\n",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"/*#\n# tabs\n\n`<xin-tabs>` creates a `tabpanel` for its children, creating a `tab` for each based on its\n`name` attribute.\n\n```js\n[...preview.querySelectorAll('div[name]')].forEach(div => {\n div.style.color = `hsl(${(Math.random() * 360).toFixed(0)} 50% 50%)`\n})\n\nimport { div, button } from 'tosijs'.elements\nconst tabSelector = preview.querySelector('xin-tabs')\n\ntabSelector.onCloseTab = body => {\n if (!confirm(`Are you sure you want to close the ${body.getAttribute('name')} tab?`)) {\n return false\n }\n}\n\nlet bodycount = 0\npreview.querySelector('.add').addEventListener('click', () => {\n const name = `new tab ${++bodycount}`\n const body = div(\n {name, dataClose: true},\n name,\n )\n tabSelector.addTabBody(body, true)\n})\n```\n```html\n<xin-tabs>\n <div name=\"first\">first body</div>\n <div name=\"second\" data-close>\n <template role=\"tab\">\n <xin-icon\n style=\"\n display: inline-block;\n width: 16px;\n height: 16px;\n transform: translateY(2px);\n margin-right: 4px;\n stroke: var(--brand-color);\n \"\n icon=\"eye\"\n ></xin-icon>\n <span>Ooooh!!!</span>\n </template>\n look at the html…\n </div>\n <div name=\"third\">third body</div>\n <button class=\"add\" slot=\"after-tabs\">\n <xin-icon icon=\"plus\"></xin-icon>\n </button>\n</xin-tabs>\n```\n```css\n .preview xin-tabs {\n height: 100%;\n }\n\n .preview div[name] {\n padding: 20px;\n text-align: center;\n height: 100%;\n font-size: 200%;\n }\n\n .preview .add {\n width: 38px;\n line-height: 38px;\n height: 38px;\n padding: 0;\n }\n```\n\nThe `<xin-tabs>`s `value` is the index of its active body.\n\nA `<xin-tabs>` has `addTabBody(body: HTMLElement, select?: boolean)` and\n`removeTabBody(body: number | HTMLElement)` methods for updating its content.\n\nYou can also just insert or remove tab bodies directly and call `setupTabs()`.\n\n## Closeable Tabs\n\nAdding the `data-close` attribute to a tab will make it closeable.\n\nWhen a tab is closed, the `<xin-tabs>` element's `onCloseTab: (tabBody: Element) => boolean | undefined | void`\nwill be called. If you override this method and return `false`, the tab will\nnot be closed (e.g. if you want to implement save/cancel behavior).\n\n## Custom Tab Content\n\nYou can specify the exact content of the tab for a given body by\nadding a `<template role=\"tab\">` to that body. The contents of that\ntemplate will be cloned into the tab.\n\n## Localized Support\n\n```html\n<xin-tabs localized>\n <div name=\"localize\"><h2>localize!</h2></div>\n <div name=\"tabs\"><h2>tabs</h2></div>\n</xin-tabs>\n```\n\n`<xin-tabs>` supports the `localized` attribute. It will automatically localize\ntab names (but it won't override custom tab content, so localizing that is on you).\n*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n vars,\n PartsMap,\n} from 'tosijs'\n\nimport { xinLocalized, XinLocalized } from './localize'\n\nimport { icons } from '../src'\n\nconst { div, slot, span, button } = elements\n\ntype TabCloseHandler = (tabBody: Element) => boolean | undefined | void\n\ninterface TabsParts extends PartsMap {\n tabs: HTMLElement\n selected: HTMLElement\n}\n\nexport class TabSelector extends WebComponent {\n value = 0\n localized = false\n\n makeTab(\n tabs: TabSelector,\n tabBody: HTMLElement,\n bodyId: string\n ): HTMLElement {\n const tabName = tabBody.getAttribute('name') as string\n const tabContent =\n (\n tabBody.querySelector('template[role=\"tab\"]') as HTMLTemplateElement\n )?.content.cloneNode(true) ||\n (this.localized ? xinLocalized(tabName) : span(tabName))\n const tab = div(\n tabContent,\n {\n part: 'tab',\n tabindex: 0,\n role: 'tab',\n ariaControls: bodyId,\n },\n tabBody.hasAttribute('data-close')\n ? button(\n {\n title: 'close',\n class: 'close',\n },\n icons.x()\n )\n : {}\n )\n return tab\n }\n\n static styleSpec = {\n ':host': {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n overflow: 'hidden',\n boxShadow: 'none !important',\n },\n slot: {\n position: 'relative',\n display: 'block',\n flex: '1',\n overflow: 'hidden',\n overflowY: 'auto',\n },\n 'slot[name=\"after-tabs\"]': {\n flex: '0 0 auto',\n },\n '::slotted([hidden])': {\n display: 'none !important',\n },\n ':host::part(tabpanel)': {\n display: 'flex',\n flexDirection: 'column',\n overflowX: 'auto',\n },\n ':host::part(tabrow)': {\n display: 'flex',\n },\n ':host .tabs': {\n display: 'flex',\n userSelect: 'none',\n whiteSpace: 'nowrap',\n },\n ':host .tabs > div': {\n padding: `${vars.spacing50} ${vars.spacing}`,\n cursor: 'default',\n display: 'flex',\n alignItems: 'baseline',\n },\n ':host .tabs > [aria-selected=\"true\"]': {\n '--text-color': vars.xinTabsSelectedColor,\n color: vars.textColor,\n },\n ':host .elastic': {\n flex: '1',\n },\n ':host .border': {\n background: 'var(--xin-tabs-bar-color, #ccc)',\n },\n ':host .border > .selected': {\n content: ' ',\n width: 0,\n height: 'var(--xin-tabs-bar-height, 2px)',\n background: vars.xinTabsSelectedColor,\n transition: 'ease-out 0.2s',\n },\n ':host button.close': {\n border: 0,\n background: 'transparent',\n textAlign: 'center',\n marginLeft: vars.spacing50,\n padding: 0,\n },\n ':host button.close > svg': {\n height: '12px',\n },\n }\n\n onCloseTab: TabCloseHandler | null = null\n\n content = [\n div(\n { role: 'tabpanel', part: 'tabpanel' },\n div(\n { part: 'tabrow' },\n div({ class: 'tabs', part: 'tabs' }),\n div({ class: 'elastic' }),\n slot({ name: 'after-tabs' })\n ),\n div({ class: 'border' }, div({ class: 'selected', part: 'selected' }))\n ),\n slot(),\n ]\n\n constructor() {\n super()\n this.initAttributes('localized')\n }\n\n addTabBody(body: HTMLElement, selectTab = false): void {\n if (!body.hasAttribute('name')) {\n console.error('element has no name attribute', body)\n throw new Error('element has no name attribute')\n }\n this.append(body)\n this.setupTabs()\n if (selectTab) {\n this.value = this.bodies.length - 1\n }\n this.queueRender()\n }\n\n removeTabBody(body: HTMLElement): void {\n body.remove()\n this.setupTabs()\n this.queueRender()\n }\n\n keyTab = (event: Event): void => {\n const { tabs } = this.parts\n const tabIndex = [...tabs.children].indexOf(event.target as HTMLElement)\n switch ((event as KeyboardEvent).key) {\n case 'ArrowLeft':\n this.value =\n (tabIndex + Number(tabs.children.length) - 1) % tabs.children.length\n ;(tabs.children[this.value] as HTMLElement).focus()\n event.preventDefault()\n break\n case 'ArrowRight':\n this.value = (tabIndex + 1) % tabs.children.length\n ;(tabs.children[this.value] as HTMLElement).focus()\n event.preventDefault()\n break\n case ' ':\n this.pickTab(event)\n event.preventDefault()\n break\n default:\n // console.log(event.key)\n }\n }\n\n get bodies(): Element[] {\n return [...this.children].filter((elt) => elt.hasAttribute('name'))\n }\n\n pickTab = (event: Event): void => {\n const { tabs } = this.parts\n const target = event.target as HTMLElement\n const isCloseEvent = target.closest('button.close') !== null\n const tab = target.closest('.tabs > div') as HTMLElement\n const tabIndex = [...tabs.children].indexOf(tab)\n if (isCloseEvent) {\n const body = this.bodies[tabIndex]\n if (!this.onCloseTab || this.onCloseTab(body) !== false) {\n this.removeTabBody(this.bodies[tabIndex] as HTMLElement)\n }\n } else {\n if (tabIndex > -1) {\n this.value = tabIndex\n }\n }\n }\n\n setupTabs = (): void => {\n const { tabs } = this.parts\n const tabBodies = [...this.children].filter(\n (child) => !child.hasAttribute('slot') && child.hasAttribute('name')\n )\n tabs.textContent = ''\n if (this.value >= tabBodies.length) {\n this.value = tabBodies.length - 1\n }\n for (const index in tabBodies) {\n const tabBody = tabBodies[index] as HTMLElement\n const bodyId = `${this.instanceId}-${index}`\n tabBody.id = bodyId\n const tab = this.makeTab(this, tabBody, bodyId)\n tabs.append(tab)\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n const { tabs } = this.parts\n tabs.addEventListener('click', this.pickTab)\n tabs.addEventListener('keydown', this.keyTab)\n this.setupTabs()\n XinLocalized.allInstances.add(this)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n XinLocalized.allInstances.delete(this)\n }\n\n localeChanged = () => {\n this.queueRender()\n }\n\n onResize(): void {\n this.queueRender()\n }\n\n render(): void {\n const { tabs, selected } = this.parts as TabsParts\n const tabBodies = this.bodies\n for (let i = 0; i < tabBodies.length; i++) {\n const tabBody = tabBodies[i]\n const tab = tabs.children[i] as HTMLElement\n if (this.value === Number(i)) {\n tab.setAttribute('aria-selected', 'true')\n selected.style!.marginLeft = `${tab.offsetLeft - tabs.offsetLeft}px`\n selected.style!.width = `${tab.offsetWidth}px`\n tabBody.toggleAttribute('hidden', false)\n } else {\n tab.toggleAttribute('aria-selected', false)\n tabBody.toggleAttribute('hidden', true)\n }\n }\n }\n}\n\nexport const tabSelector = TabSelector.elementCreator({\n tag: 'xin-tabs',\n}) as ElementCreator<TabSelector>\n",
|
|
31
31
|
"/*#\n# example\n\n`<xin-example>` makes it easy to insert interactive code examples in a web page. It\nstarted life as a super lightweight, easier-to-embed implementation of\n[b8rjs's fiddle component](https://b8rjs.com)—which I dearly missed—but now the student\nis, by far, the master. And it's still super lightweight.\n\n*You're probably looking at it right now.*\n\n```js\n// this code executes in an async function body\n// it has tosijs, tosijsui, and preview (the preview div) available as local variables\nimport { div } from 'tosijs'.elements\npreview.append(div({class: 'example'}, 'fiddle de dee!'))\npreview.append('Try editing some code and hitting refresh…')\n```\n```html\n<h2>Example</h2>\n```\n```css\n.preview {\n padding: 0 var(--spacing);\n}\n\n.example {\n animation: throb ease-in-out 1s infinite alternate;\n}\n\n@keyframes throb {\n from { color: blue }\n to { color: red }\n}\n```\n\nYou can also use Typescript. It will be stripped down to\nJavascript using [sucrase](https://github.com/alangpierce/sucrase).\n\n```js\nfunction makeElement(tag: string, ...children: Array<string | HTMLElement>): HTMLElement {\n const element = document.createElement(tag)\n element.append(...children)\n return element\n}\n\npreview.append(\n makeElement('h2', 'hello typescript')\n)\n```\n\nYou can also create a live-example from HTML. And if you add the `persist-to-dom`\nattribute, it will persist your code to the DOM.\n\n<xin-example persist-to-dom>\n <pre class=\"language-html\">\n <h1 class=\"make-it-red\">Pure HTML!</h1>\n <button>Click Me!</button>\n </pre>\n <pre class=\"language-js\">\n preview.querySelector('button').addEventListener('click', () => {\n alert('you clicked?')\n })\n </pre>\n <pre class=\"language-css\">\n .make-it-red {\n color: red;\n }\n </pre>\n</xin-example>\n\nYou can simply wrap it around a sequence of code blocks in the DOM with the\nlanguages (js, html, css) as annotations or you can directly set the `js`, `html`,\nand `css` properties.\n\n## Code-Editor\n\nThe **code-editor** is actually the same component spawned in a new window using\na couple of clever tricks, the most important of which is leveraging\n[StorageEvent](https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent).\n\nThis functionality was originally added to make working in XR easier, but it turned\nout that it's just better than the earlier way of doing things.\n\nIt actually uses just one `localStorage` item to handle any number of code-editors,\nand cleans up after itself when you close the example (including closing stray\nwindows.\n\n> **To Do** a little refactoring and tweaking to split the the editor off as a\ncompletely separate component that can be used for other things, and make the\nexample itself lighter-weight.\n\n## `context`\n\n```html\n<p>testing</p>\n```\n```js\nimport { elements } from 'tosijs'\nimport { svgIcon } from 'tosijs-ui'\n\npreview.querySelector('p').style.color = 'red'\npreview.append(\n elements.p('another paragraph'),\n svgIcon({icon: 'tosiPlatform', size: 64})\n)\n```\n\nA `<xin-example>` is given a `context` object {[key: string]: any}, which is the\nset of values available in the javascript's execution context (it is wrapped in an\nasync function and passed those values). The context always includes `preview`\nwhich is the element containing the HTML for the example.\n\nIf the context keys have hyphens in them, these are removed to allow the examples\nto `import` libraries:\n\nSo we provide context like this:\n\n```\nimport * as tosijs from 'tosjs'\nimport * as tosijsui from 'tosijs-ui'\n\n...\n\ncontext = {\n tosijs,\n 'tosijs-ui': tosijsui\n}\n```\n\n```\nimport { elements, tosi } from 'tosijs'\nimport { icons } from 'tosijs-ui'\n```\n\nis rewritten as:\n\n```\nimport { elements, tosi } from 'tosijs'\nimport { icons } from 'tosijs-ui'\n```\n\nThe `LiveExample` class provides the static `insertExamples(element: HTMLElement)`\nfunction that will replace any sequence of\n`pre code[class=\"language-html\"],pre code[class=\"language-js\"],pre code[class=\"language-css\"]`\nelements with a `<xin-example>` instance.\n*/\n\nimport { Component, ElementCreator, PartsMap, elements } from 'tosijs'\nimport { codeEditor, CodeEditor } from './code-editor'\nimport { tabSelector, TabSelector } from './tab-selector'\nimport { icons } from './icons'\nimport { popMenu } from './menu'\n\nconst { div, xinSlot, style, button, h4, pre, code } = elements\n\nconst sucraseSrc = () => 'https://cdn.jsdelivr.net/npm/sucrase@3.35.0/+esm'\n\nconst AsyncFunction = (async () => {\n /* do not care */\n}).constructor\n\ninterface ExampleContext {\n [key: string]: any\n}\n\ninterface ExampleParts extends PartsMap {\n codeEditors: HTMLElement\n undo: HTMLButtonElement\n redo: HTMLButtonElement\n exampleWidgets: HTMLButtonElement\n editors: TabSelector\n code: HTMLElement\n sources: HTMLElement\n style: HTMLStyleElement\n example: HTMLElement\n}\n\nexport class LiveExample extends Component<ExampleParts> {\n persistToDom = false\n prettier = false\n prefix = 'lx'\n storageKey = 'live-example-payload'\n context: ExampleContext = {}\n uuid: string = crypto.randomUUID()\n remoteId = ''\n\n // FIXME workarounds for StorageEvent issue on Quest\n lastUpdate = 0\n interval?: any\n\n static insertExamples(\n element: HTMLElement,\n context: ExampleContext = {}\n ): void {\n const sources = [\n ...element.querySelectorAll('.language-html,.language-js,.language-css'),\n ]\n .filter((element) => !element.closest(LiveExample.tagName as string))\n .map((code) => ({\n block: code.parentElement as HTMLPreElement,\n language: code.classList[0].split('-').pop(),\n code: (code as HTMLElement).innerText,\n }))\n for (let index = 0; index < sources.length; index += 1) {\n const exampleSources = [sources[index]]\n while (\n index < sources.length - 1 &&\n sources[index].block.nextElementSibling === sources[index + 1].block\n ) {\n exampleSources.push(sources[index + 1])\n index += 1\n }\n const example = liveExample({ context })\n ;(exampleSources[0].block.parentElement as HTMLElement).insertBefore(\n example,\n exampleSources[0].block\n )\n exampleSources.forEach((source) => {\n switch (source.language) {\n case 'js':\n example.js = source.code\n break\n case 'html':\n example.html = source.code\n break\n case 'css':\n example.css = source.code\n break\n }\n source.block.remove()\n })\n example.showDefaultTab()\n }\n }\n\n constructor() {\n super()\n\n this.initAttributes('persistToDom', 'prettier')\n }\n\n get activeTab(): Element | undefined {\n const { editors } = this.parts\n return [...editors.children].find(\n (elt) => elt.getAttribute('hidden') === null\n )\n }\n\n private getEditorValue(which: string): string {\n return (this.parts[which] as CodeEditor).value\n }\n\n private setEditorValue(which: string, code: string): void {\n const codeEditor = this.parts[which] as CodeEditor\n codeEditor.value = code\n }\n\n get css(): string {\n return this.getEditorValue('css')\n }\n\n set css(code: string) {\n this.setEditorValue('css', code)\n }\n\n get html(): string {\n return this.getEditorValue('html')\n }\n\n set html(code: string) {\n this.setEditorValue('html', code)\n }\n\n get js(): string {\n return this.getEditorValue('js')\n }\n\n set js(code: string) {\n this.setEditorValue('js', code)\n }\n\n updateUndo = () => {\n const { activeTab } = this\n const { undo, redo } = this.parts\n if (activeTab instanceof CodeEditor && activeTab.editor !== undefined) {\n const undoManager = activeTab.editor.session.getUndoManager()\n undo.disabled = !undoManager.hasUndo()\n redo.disabled = !undoManager.hasRedo()\n } else {\n undo.disabled = true\n redo.disabled = true\n }\n }\n\n undo = () => {\n const { activeTab } = this\n if (activeTab instanceof CodeEditor) {\n activeTab.editor.undo()\n }\n }\n\n redo = () => {\n const { activeTab } = this\n if (activeTab instanceof CodeEditor) {\n activeTab.editor.redo()\n }\n }\n\n get isMaximized(): boolean {\n return this.classList.contains('-maximize')\n }\n\n flipLayout = () => {\n this.classList.toggle('-vertical')\n }\n\n exampleMenu = () => {\n popMenu({\n target: this.parts.exampleWidgets,\n width: 'auto',\n menuItems: [\n {\n icon: 'edit2',\n caption: 'view/edit code',\n action: this.showCode,\n },\n {\n icon: 'edit',\n caption: 'view/edit code in a new window',\n action: this.openEditorWindow,\n },\n null,\n {\n icon: this.isMaximized ? 'minimize' : 'maximize',\n caption: this.isMaximized ? 'restore preview' : 'maximize preview',\n action: this.toggleMaximize,\n },\n ],\n })\n }\n\n handleShortcuts = (event: KeyboardEvent) => {\n if (event.metaKey || event.ctrlKey) {\n let block = false\n switch (event.key) {\n case 's':\n case 'r':\n this.refresh()\n block = true\n break\n case '/':\n this.flipLayout()\n break\n case 'c':\n if (event.shiftKey) {\n this.copy()\n block = true\n }\n break\n }\n if (block) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n }\n\n content = () => [\n div(\n { part: 'example' },\n style({ part: 'style' }),\n button(\n {\n title: 'example menu',\n part: 'exampleWidgets',\n onClick: this.exampleMenu,\n },\n icons.code()\n )\n ),\n div(\n {\n class: 'code-editors',\n part: 'codeEditors',\n onKeydown: this.handleShortcuts,\n hidden: true,\n },\n tabSelector(\n {\n part: 'editors',\n onChange: this.updateUndo,\n },\n codeEditor({\n name: 'js',\n mode: 'javascript',\n part: 'js',\n }),\n codeEditor({ name: 'html', mode: 'html', part: 'html' }),\n codeEditor({ name: 'css', mode: 'css', part: 'css' }),\n div(\n {\n slot: 'after-tabs',\n class: 'row',\n },\n button(\n {\n title: 'undo',\n part: 'undo',\n class: 'transparent',\n onClick: this.undo,\n },\n icons.cornerUpLeft()\n ),\n button(\n {\n title: 'redo',\n part: 'redo',\n class: 'transparent',\n onClick: this.redo,\n },\n icons.cornerUpRight()\n ),\n button(\n {\n title: 'flip direction (⌘/ | ^/)',\n class: 'transparent',\n onClick: this.flipLayout,\n },\n icons.columns({ class: 'layout-indicator' })\n ),\n button(\n {\n title: 'copy as markdown (⌘⇧C | ^⇧C)',\n class: 'transparent',\n onClick: this.copy,\n },\n icons.copy()\n ),\n button(\n {\n title: 'reload (⌘R | ^R)',\n class: 'transparent',\n onClick: this.refreshRemote,\n },\n icons.refreshCw()\n ),\n button(\n {\n title: 'close code',\n class: 'transparent',\n onClick: this.closeCode,\n },\n icons.x()\n )\n )\n )\n ),\n xinSlot({ part: 'sources', hidden: true }),\n ]\n\n connectedCallback(): void {\n super.connectedCallback()\n const { sources } = this.parts\n\n this.initFromElements([...sources.children] as HTMLElement[])\n addEventListener('storage', this.remoteChange)\n\n // FIXME workaround for Quest 3\n this.interval = setInterval(this.remoteChange, 500)\n this.undoInterval = setInterval(this.updateUndo, 250)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n const { storageKey, remoteKey } = this\n\n // FIXME workaround for Quest 3\n clearInterval(this.interval)\n clearInterval(this.undoInterval)\n\n localStorage.setItem(\n storageKey,\n JSON.stringify({\n remoteKey,\n sentAt: Date.now(),\n close: true,\n })\n )\n }\n\n copy = () => {\n const js = this.js !== '' ? '```js\\n' + this.js.trim() + '\\n```\\n' : ''\n const html =\n this.html !== '' ? '```html\\n' + this.html.trim() + '\\n```\\n' : ''\n const css = this.css !== '' ? '```css\\n' + this.css.trim() + '\\n```\\n' : ''\n\n navigator.clipboard.writeText(js + html + css)\n }\n\n toggleMaximize = () => {\n this.classList.toggle('-maximize')\n }\n\n get remoteKey(): string {\n return this.remoteId !== ''\n ? this.prefix + '-' + this.remoteId\n : this.prefix + '-' + this.uuid\n }\n\n remoteChange = (event?: StorageEvent) => {\n const data = localStorage.getItem(this.storageKey)\n if (event instanceof StorageEvent && event.key !== this.storageKey) {\n return\n }\n if (data === null) {\n return\n }\n const { remoteKey, sentAt, css, html, js, close } = JSON.parse(data)\n // FIXME workaround for Quest\n if (sentAt <= this.lastUpdate) {\n return\n }\n if (remoteKey !== this.remoteKey) {\n return\n }\n if (close === true) {\n window.close()\n }\n console.log('received new code', sentAt, this.lastUpdate)\n this.lastUpdate = sentAt\n this.css = css\n this.html = html\n this.js = js\n this.refresh()\n }\n\n showCode = () => {\n this.classList.add('-maximize')\n this.classList.toggle('-vertical', this.offsetHeight > this.offsetWidth)\n this.parts.codeEditors.hidden = false\n }\n\n closeCode = () => {\n if (this.remoteId !== '') {\n window.close()\n } else {\n this.classList.remove('-maximize')\n this.parts.codeEditors.hidden = true\n }\n }\n\n openEditorWindow = () => {\n const { storageKey, remoteKey, css, html, js, uuid, prefix } = this\n const href = location.href.split('?')[0] + `?${prefix}=${uuid}`\n localStorage.setItem(\n storageKey,\n JSON.stringify({\n remoteKey,\n sentAt: Date.now(),\n css,\n html,\n js,\n })\n )\n window.open(href)\n }\n\n refreshRemote = () => {\n const { remoteKey, css, html, js } = this\n localStorage.setItem(\n this.storageKey,\n JSON.stringify({ remoteKey, sentAt: Date.now(), css, html, js })\n )\n }\n\n updateSources = () => {\n if (this.persistToDom) {\n const { sources } = this.parts\n sources.innerText = ''\n for (const language of ['js', 'css', 'html']) {\n if (this[language]) {\n sources.append(\n pre({ class: `language-${language}`, innerHTML: this[language] })\n )\n }\n }\n }\n }\n\n refresh = async () => {\n if (this.remoteId !== '') {\n return\n }\n\n const { transform } = await import(sucraseSrc())\n\n const { example, style } = this.parts\n\n const preview = div({ class: 'preview' })\n preview.innerHTML = this.html\n style.innerText = this.css\n const oldPreview = example.querySelector('.preview')\n if (oldPreview) {\n oldPreview.replaceWith(preview)\n } else {\n example.insertBefore(preview, this.parts.exampleWidgets)\n }\n\n const context = { preview, ...this.context }\n try {\n let code = this.js\n for (const moduleName of Object.keys(this.context)) {\n code = code.replace(\n new RegExp(`import \\\\{(.*)\\\\} from '${moduleName}'`, 'g'),\n `const {$1} = ${moduleName.replace(/-/g, '')}`\n )\n }\n // @ts-expect-error ts is wrong and it makes me so mad\n const func = new AsyncFunction(\n ...Object.keys(context).map((key: string) => key.replace(/-/g, '')),\n transform(code, { transforms: ['typescript'] }).code\n )\n func(...Object.values(context)).catch((err: Error) => console.error(err))\n if (this.persistToDom) {\n this.updateSources()\n }\n } catch (e) {\n console.error(e)\n window.alert(`Error: ${e}, the console may have more information…`)\n }\n }\n\n initFromElements(elements: HTMLElement[]) {\n for (const element of elements) {\n element.hidden = true\n const [mode, ...lines] = element.innerHTML.split('\\n') as string[]\n if (['js', 'html', 'css'].includes(mode)) {\n const minIndex = lines\n .filter((line) => line.trim() !== '')\n .map((line) => (line.match(/^\\s*/) as string[])[0].length)\n .sort()[0]\n const source = (\n minIndex > 0 ? lines.map((line) => line.substring(minIndex)) : lines\n ).join('\\n')\n ;(this.parts[mode] as CodeEditor).value = source\n } else {\n const language = ['js', 'html', 'css'].find((language: string) =>\n element.matches(`.language-${language}`)\n )\n if (language) {\n ;(this.parts[language] as CodeEditor).value =\n language === 'html' ? element.innerHTML : element.innerText\n }\n }\n }\n }\n\n showDefaultTab() {\n const { editors } = this.parts\n if (this.js !== '') {\n editors.value = 0\n } else if (this.html !== '') {\n editors.value = 1\n } else if (this.css !== '') {\n editors.value = 2\n }\n }\n\n render(): void {\n super.render()\n\n if (this.remoteId !== '') {\n const data = localStorage.getItem(this.storageKey)\n if (data !== null) {\n const { remoteKey, sentAt, css, html, js } = JSON.parse(data)\n if (this.remoteKey !== remoteKey) {\n return\n }\n this.lastUpdate = sentAt\n this.css = css\n this.html = html\n this.js = js\n this.parts.example.hidden = true\n this.parts.codeEditors.hidden = false\n this.classList.add('-maximize')\n this.updateUndo()\n }\n } else {\n this.refresh()\n }\n }\n}\n\nexport const liveExample = LiveExample.elementCreator({\n tag: 'xin-example',\n styleSpec: {\n ':host': {\n '--xin-example-height': '320px',\n '--code-editors-bar-bg': '#777',\n '--code-editors-bar-color': '#fff',\n '--widget-bg': '#fff8',\n '--widget-color': '#000',\n position: 'relative',\n display: 'flex',\n height: 'var(--xin-example-height)',\n background: 'var(--background)',\n boxSizing: 'border-box',\n },\n\n ':host.-maximize': {\n position: 'fixed',\n left: '0',\n top: '0',\n height: '100vh',\n width: '100vw',\n margin: '0 !important',\n },\n\n '.-maximize': {\n zIndex: 101,\n },\n\n ':host.-vertical': {\n flexDirection: 'column',\n },\n\n ':host .layout-indicator': {\n transition: '0.5s ease-out',\n transform: 'rotateZ(270deg)',\n },\n\n ':host.-vertical .layout-indicator': {\n transform: 'rotateZ(180deg)',\n },\n\n ':host.-maximize .hide-if-maximized, :host:not(.-maximize) .show-if-maximized':\n {\n display: 'none',\n },\n\n ':host [part=\"example\"]': {\n flex: '1 1 50%',\n height: '100%',\n position: 'relative',\n overflowX: 'auto',\n },\n\n ':host .preview': {\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n boxShadow: 'inset 0 0 0 2px #8883',\n },\n\n ':host [part=\"editors\"]': {\n flex: '1 1 200px',\n height: '100%',\n position: 'relative',\n },\n\n ':host [part=\"exampleWidgets\"]': {\n position: 'absolute',\n left: '5px',\n bottom: '5px',\n '--widget-color': 'var(--brand-color)',\n borderRadius: '5px',\n width: '44px',\n height: '44px',\n lineHeight: '44px',\n zIndex: '100',\n },\n\n ':host [part=\"exampleWidgets\"] svg': {\n stroke: 'var(--widget-color)',\n },\n\n ':host .code-editors': {\n overflow: 'hidden',\n background: 'white',\n position: 'relative',\n top: '0',\n right: '0',\n flex: '1 1 50%',\n height: '100%',\n flexDirection: 'column',\n zIndex: '10',\n },\n\n ':host .code-editors:not([hidden])': {\n display: 'flex',\n },\n\n ':host .code-editors > h4': {\n padding: '5px',\n margin: '0',\n textAlign: 'center',\n background: 'var(--code-editors-bar-bg)',\n color: 'var(--code-editors-bar-color)',\n cursor: 'move',\n },\n\n ':host button.transparent, :host .sizer': {\n width: '32px',\n height: '32px',\n lineHeight: '32px',\n textAlign: 'center',\n padding: '0',\n margin: '0',\n },\n\n ':host .sizer': {\n cursor: 'nwse-resize',\n },\n },\n}) as ElementCreator<LiveExample>\n\nconst params = new URL(window.location.href).searchParams\nconst remoteId = params.get('lx')\nif (remoteId) {\n document.title += ' [code editor]'\n document.body.textContent = ''\n document.body.append(liveExample({ remoteId }))\n}\n",
|
|
32
32
|
"/*#\n# map\n\nA [mapboxgl](https://docs.mapbox.com/mapbox-gl-js/api/) wrapper.\n\n```js\nconst pickStyle = preview.querySelector('select')\nconst mapbox = preview.querySelector('xin-map')\nconst here = preview.querySelector('button')\n\npickStyle.addEventListener('change', () => {\n mapbox.mapStyle = pickStyle.value\n})\n\nfunction getUserGPSCoordinates() {\n return new Promise((resolve) => {\n // Check if geolocation is supported\n if (!navigator.geolocation) {\n console.log(\"Geolocation is not supported by this browser.\");\n resolve(null);\n return;\n }\n\n // Request position with options\n navigator.geolocation.getCurrentPosition(\n // Success callback\n (position) => {\n resolve({\n latitude: position.coords.latitude,\n longitude: position.coords.longitude\n });\n },\n // Error callback\n (error) => {\n console.log(`Error getting location: ${error.message}`);\n resolve(null);\n },\n // Options\n {\n enableHighAccuracy: true, // Request high accuracy if available\n timeout: 10000, // Time to wait for position (10 seconds)\n maximumAge: 0 // Don't use cached position\n }\n );\n });\n}\n\nhere.addEventListener('click', async () => {\n const location = await getUserGPSCoordinates()\n if (location) {\n mapbox.coords = `${location.latitude},${location.longitude},12`\n }\n})\n```\n```html\n<!-- please don't abuse my mapbox token -->\n<xin-map\n style=\"width: 100%; height: 100%\"\n coords=\"14.0093606,120.995083,17\"\n token=\"pk.eyJ1IjoicG9kcGVyc29uIiwiYSI6ImNqc2JlbWU0bjA1ZmY0YW5ycHZod3VhbWcifQ.arvqfpOqMgFYkKgQ35UScA\"\n map-style=\"mapbox://styles/mapbox/streets-v12\"\n></xin-map>\n<select>\n <option selected value=\"mapbox://styles/mapbox/streets-v12\">Streets</option>\n <option value=\"mapbox://styles/mapbox/satellite-v9\">Satellite</option>\n <option value=\"mapbox://styles/mapbox/light-v11\">Light</option>\n <option value=\"mapbox://styles/mapbox/dark-v11\">Dark</option>\n <option value=\"mapbox://styles/mapbox/outdoors-v12\">Outdoors</option>\n</select>\n<button>\n <xin-icon icon=\"mapPin\"></xin-icon>\n <span>Your Location</span>\n</button>\n```\n```css\n.preview button {\n position: absolute;\n right: 10px;\n top: 10px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.preview select {\n position: absolute;\n bottom: 10px;\n right: 10px;\n}\n```\n\nThere's no need to learn new APIs or write wrappers, just access the element's `map` property\nand [use the standard mapbox APIs directly](https://docs.mapbox.com/api/maps/styles/).\n*/\n\nimport { Component as WebComponent, ElementCreator, elements } from 'tosijs'\nimport { styleSheet, scriptTag } from './via-tag'\n\nconst { div } = elements\n\nexport class MapBox extends WebComponent {\n coords = '65.01715565258993,25.48081004203459,12'\n content = div({ style: { width: '100%', height: '100%' } })\n get map(): any {\n return this._map\n }\n mapStyle = 'mapbox://styles/mapbox/streets-v12'\n token = ''\n\n static mapboxCSSAvailable: Promise<void>\n static mapboxAvailable?: Promise<any>\n\n private _map: any\n\n static styleSpec = {\n ':host': {\n display: 'inline-block',\n position: 'relative',\n width: '400px',\n height: '400px',\n textAlign: 'left',\n },\n }\n\n constructor() {\n super()\n this.initAttributes('coords', 'token', 'mapStyle')\n\n if (MapBox.mapboxCSSAvailable === undefined) {\n MapBox.mapboxCSSAvailable = styleSheet(\n 'https://api.mapbox.com/mapbox-gl-js/v1.4.1/mapbox-gl.css'\n ).catch((e) => {\n console.error('failed to load mapbox-gl.css', e)\n })\n MapBox.mapboxAvailable = scriptTag(\n 'https://api.mapbox.com/mapbox-gl-js/v1.4.1/mapbox-gl.js'\n ).catch((e) => {\n console.error('failed to load mapbox-gl.js', e)\n })\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n if (!this.token) {\n console.error(\n 'mapbox requires an access token which you can provide via the token attribute'\n )\n }\n }\n\n render(): void {\n super.render()\n\n if (!this.token) {\n return\n }\n\n const { div } = this.parts\n\n const [long, lat, zoom] = this.coords.split(',').map((x) => Number(x))\n\n if (this.map) {\n this.map.remove()\n }\n\n MapBox.mapboxAvailable!.then(({ mapboxgl }: { mapboxgl: any }) => {\n console.log(\n \"%cmapbox may complain about missing css -- don't panic!\",\n 'background: orange; color: black; padding: 0 5px;'\n )\n mapboxgl.accessToken = this.token\n this._map = new mapboxgl.Map({\n container: div,\n style: this.mapStyle,\n zoom,\n center: [lat, long],\n })\n\n this._map.on('render', () => this._map.resize())\n })\n }\n}\n\nexport const mapBox = MapBox.elementCreator({\n tag: 'xin-map',\n}) as ElementCreator<MapBox>\n",
|
|
33
|
-
"/**\n * marked v16.4.1 - a markdown parser\n * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=L();function G(u){T=u}var I={exec:()=>null};function h(u,e=\"\"){let t=typeof u==\"string\"?u:u.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var m={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,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] /,listReplaceTask:/^\\[[ 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,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:u=>new RegExp(`^( {0,3}${u})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,\"i\")},be=/^(?:[ \\t]*(?:\\n|$))+/,Re=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Te=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,E=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Oe=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,F=/(?:[*+-]|\\d{1,9}[.)])/,ie=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,oe=h(ie).replace(/bull/g,F).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}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),we=h(ie).replace(/bull/g,F).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}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),j=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,ye=/^[^\\n]+/,Q=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,Pe=h(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",Q).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Se=h(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,F).getRegex(),v=\"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\",U=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,$e=h(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),ae=h(j).replace(\"hr\",E).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),_e=h(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",ae).getRegex(),K={blockquote:_e,code:Re,def:Pe,fences:Te,heading:Oe,hr:E,html:$e,lheading:oe,list:Se,newline:be,paragraph:ae,table:I,text:ye},re=h(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",E).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Le={...K,lheading:we,table:re,paragraph:h(j).replace(\"hr\",E).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",re).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},Me={...K,html:h(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).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:I,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:h(j).replace(\"hr\",E).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",oe).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},ze=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ae=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,le=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ie=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,W=/[\\s\\p{P}\\p{S}]/u,ue=/[^\\s\\p{P}\\p{S}]/u,Ee=h(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,W).getRegex(),pe=/(?!~)[\\p{P}\\p{S}]/u,Ce=/(?!~)[\\s\\p{P}\\p{S}]/u,Be=/(?:[^\\s\\p{P}\\p{S}]|~)/u,qe=h(/link|code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<!`)(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"code\",/(?<!`)(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ce=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,ve=h(ce,\"u\").replace(/punct/g,D).getRegex(),De=h(ce,\"u\").replace(/punct/g,pe).getRegex(),he=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",He=h(he,\"gu\").replace(/notPunctSpace/g,ue).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ze=h(he,\"gu\").replace(/notPunctSpace/g,Be).replace(/punctSpace/g,Ce).replace(/punct/g,pe).getRegex(),Ge=h(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,ue).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ne=h(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),Fe=h(/^<(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(),je=h(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Qe=h(\"^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\",je).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/,Ue=h(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),de=h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",Q).getRegex(),ke=h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",Q).getRegex(),Ke=h(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",de).replace(\"nolink\",ke).getRegex(),se=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,X={_backpedal:I,anyPunctuation:Ne,autolink:Fe,blockSkip:qe,br:le,code:Ae,del:I,emStrongLDelim:ve,emStrongRDelimAst:He,emStrongRDelimUnd:Ge,escape:ze,link:Ue,nolink:ke,punctuation:Ee,reflink:de,reflinkSearch:Ke,tag:Qe,text:Ie,url:I},We={...X,link:h(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:h(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:Ze,emStrongLDelim:De,url:h(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",se).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:h(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",se).getRegex()},Xe={...N,br:h(le).replace(\"{2,}\",\"*\").getRegex(),text:h(N.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},C={normal:K,gfm:Le,pedantic:Me},M={normal:X,gfm:N,breaks:Xe,pedantic:We};var Je={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"},ge=u=>Je[u];function w(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,ge)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,ge);return u}function J(u){try{u=encodeURI(u).replace(m.percentDecode,\"%\")}catch{return null}return u}function V(u,e){let t=u.replace(m.findPipe,(i,s,o)=>{let a=!1,l=s;for(;--l>=0&&o[l]===\"\\\\\";)a=!a;return a?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(u,e,t){let n=u.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=u.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return u.slice(0,n-r)}function fe(u,e){if(u.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<u.length;n++)if(u[n]===\"\\\\\")n++;else if(u[n]===e[0])t++;else if(u[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function me(u,e,t,n,r){let i=e.href,s=e.title||null,o=u[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let a={type:u[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,a}function Ve(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[o]=s;return o.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Ve(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let o=!1,a=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))a.push(n[l]),o=!0;else if(!o)a.push(n[l]);else break;n=n.slice(l);let c=a.join(`\n`),p=c.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${c}`:c,i=i?`${i}\n${p}`:p;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(p,s,!0),this.lexer.state.top=g,n.length===0)break;let d=s.at(-1);if(d?.type===\"code\")break;if(d?.type===\"blockquote\"){let R=d,f=R.raw+`\n`+n.join(`\n`),O=this.blockquote(f);s[s.length-1]=O,r=r.substring(0,r.length-R.raw.length)+O.raw,i=i.substring(0,i.length-R.text.length)+O.text;break}else if(d?.type===\"list\"){let R=d,f=R.raw+`\n`+n.join(`\n`),O=this.list(f);s[s.length-1]=O,r=r.substring(0,r.length-d.raw.length)+O.raw,i=i.substring(0,i.length-R.raw.length)+O.raw,n=f.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),o=!1;for(;e;){let l=!1,c=\"\",p=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;c=t[0],e=e.substring(c.length);let g=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,H=>\" \".repeat(3*H.length)),d=e.split(`\n`,1)[0],R=!g.trim(),f=0;if(this.options.pedantic?(f=2,p=g.trimStart()):R?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,p=g.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(d)&&(c+=d+`\n`,e=e.substring(d.length+1),l=!0),!l){let H=this.rules.other.nextBulletRegex(f),ee=this.rules.other.hrRegex(f),te=this.rules.other.fencesBeginRegex(f),ne=this.rules.other.headingBeginRegex(f),xe=this.rules.other.htmlBeginRegex(f);for(;e;){let Z=e.split(`\n`,1)[0],A;if(d=Z,this.options.pedantic?(d=d.replace(this.rules.other.listReplaceNesting,\" \"),A=d):A=d.replace(this.rules.other.tabCharGlobal,\" \"),te.test(d)||ne.test(d)||xe.test(d)||H.test(d)||ee.test(d))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!d.trim())p+=`\n`+A.slice(f);else{if(R||g.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||te.test(g)||ne.test(g)||ee.test(g))break;p+=`\n`+d}!R&&!d.trim()&&(R=!0),c+=Z+`\n`,e=e.substring(Z.length+1),g=A.slice(f)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(o=!0));let O=null,Y;this.options.gfm&&(O=this.rules.other.listIsTask.exec(p),O&&(Y=O[0]!==\"[ ] \",p=p.replace(this.rules.other.listReplaceTask,\"\"))),i.items.push({type:\"list_item\",raw:c,task:!!O,checked:Y,loose:!1,text:p,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=0;l<i.items.length;l++)if(this.lexer.state.top=!1,i.items[l].tokens=this.lexer.blockTokens(i.items[l].text,[]),!i.loose){let c=i.items[l].tokens.filter(g=>g.type===\"space\"),p=c.length>0&&c.some(g=>this.rules.other.anyLine.test(g.raw));i.loose=p}if(i.loose)for(let l=0;l<i.items.length;l++)i.items[l].loose=!0;return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let o of r)this.rules.other.tableAlignRight.test(o)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(o)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(o)?s.align.push(\"left\"):s.align.push(null);for(let o=0;o<n.length;o++)s.header.push({text:n[o],tokens:this.lexer.inline(n[o]),header:!0,align:s.align[o]});for(let o of i)s.rows.push(V(o,s.header.length).map((a,l)=>({text:a,tokens:this.lexer.inline(a),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=fe(t[2],\"()\");if(s===-2)return;if(s>-1){let a=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,a).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),me(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return me(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,o,a,l=s,c=0,p=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,t=t.slice(-1*e.length+s);(r=p.exec(t))!=null;){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o)continue;if(a=[...o].length,r[3]||r[4]){l+=a;continue}else if((r[5]||r[6])&&s%3&&!((s+a)%3)){c+=a;continue}if(l-=a,l>0)continue;a=Math.min(a,a+l+c);let g=[...r[0]][0].length,d=e.slice(0,s+r.index+g+a);if(Math.min(s,a)%2){let f=d.slice(1,-1);return{type:\"em\",raw:d,text:f,tokens:this.lexer.inlineTokens(f)}}let R=d.slice(2,-2);return{type:\"strong\",raw:d,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class u{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new y,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:m,block:C.normal,inline:M.normal};this.options.pedantic?(t.block=C.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=C.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:C,inline:M}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,o=e.slice(1),a;this.options.extensions.startBlock.forEach(l=>{a=l.call({lexer:this},o),typeof a==\"number\"&&a>=0&&(s=Math.min(s,a))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let i=!1,s=\"\";for(;e;){i||(s=\"\"),i=!1;let o;if(this.options.extensions?.inline?.some(l=>(o=l.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let l=t.at(-1);o.type===\"text\"&&l?.type===\"text\"?(l.raw+=o.raw,l.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,s)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let a=e;if(this.options.extensions?.startInline){let l=1/0,c=e.slice(1),p;this.options.extensions.startInline.forEach(g=>{p=g.call({lexer:this},c),typeof p==\"number\"&&p>=0&&(l=Math.min(l,p))}),l<1/0&&l>=0&&(a=e.substring(0,l+1))}if(o=this.tokenizer.inlineText(a)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(s=o.raw.slice(-1)),i=!0;let l=t.at(-1);l?.type===\"text\"?(l.raw+=o.raw,l.text+=o.text):t.push(o);continue}if(e){let l=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return t}};var P=class{options;parser;constructor(e){this.options=e||T}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let o=0;o<e.items.length;o++){let a=e.items[o];r+=this.listitem(a)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){let t=\"\";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type===\"paragraph\"?(e.tokens[0].text=n+\" \"+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type===\"text\"&&(e.tokens[0].tokens[0].text=n+\" \"+w(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:\"text\",raw:n+\" \",text:n+\" \",escaped:!0}):t+=n+\" \"}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let o=0;o<s.length;o++)n+=this.tablecell(s[o]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}};var b=class u{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e,t=!0){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];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\",\"html\",\"def\",\"paragraph\",\"text\"].includes(o.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"space\":{n+=this.renderer.space(s);continue}case\"hr\":{n+=this.renderer.hr(s);continue}case\"heading\":{n+=this.renderer.heading(s);continue}case\"code\":{n+=this.renderer.code(s);continue}case\"table\":{n+=this.renderer.table(s);continue}case\"blockquote\":{n+=this.renderer.blockquote(s);continue}case\"list\":{n+=this.renderer.list(s);continue}case\"html\":{n+=this.renderer.html(s);continue}case\"def\":{n+=this.renderer.def(s);continue}case\"paragraph\":{n+=this.renderer.paragraph(s);continue}case\"text\":{let o=s,a=this.renderer.text(o);for(;r+1<e.length&&e[r+1].type===\"text\";)o=e[++r],a+=`\n`+this.renderer.text(o);t?n+=this.renderer.paragraph({type:\"paragraph\",raw:a,text:a,tokens:[{type:\"text\",raw:a,text:a,escaped:!0}]}):n+=a;continue}default:{let o='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return n}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let o=this.options.extensions.renderers[i.type].call({parser:this},i);if(o!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=o||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let o='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return n}};var S=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?x.lex:x.lexInline}provideParser(){return this.block?b.parse:b.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=P;TextRenderer=$;Lexer=x;Tokenizer=y;Hooks=S;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let o of s)n=n.concat(this.walkTokens(o.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let o=i[s].flat(1/0);n=n.concat(this.walkTokens(o,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...o){let a=i.renderer.apply(this,o);return a===!1&&(a=s.apply(this,o)),a}:t.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 s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let o=s,a=n.renderer[o],l=i[o];i[o]=(...c)=>{let p=a.apply(i,c);return p===!1&&(p=l.apply(i,c)),p||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let o=s,a=n.tokenizer[o],l=i[o];i[o]=(...c)=>{let p=a.apply(i,c);return p===!1&&(p=l.apply(i,c)),p}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new S;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let o=s,a=n.hooks[o],l=i[o];S.passThroughHooks.has(s)?i[o]=c=>{if(this.defaults.async&&S.passThroughHooksRespectAsync.has(s))return(async()=>{let g=await a.call(i,c);return l.call(i,g)})();let p=a.call(i,c);return l.call(i,p)}:i[o]=(...c)=>{if(this.defaults.async)return(async()=>{let g=await a.apply(i,c);return g===!1&&(g=await l.apply(i,c)),g})();let p=a.apply(i,c);return p===!1&&(p=l.apply(i,c)),p}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(o){let a=[];return a.push(s.call(this,o)),i&&(a=a.concat(i.call(this,o))),a}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},o=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return o(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 n>\"u\"||n===null)return o(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return o(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let a=s.hooks?await s.hooks.preprocess(n):n,c=await(s.hooks?await s.hooks.provideLexer():e?x.lex:x.lexInline)(a,s),p=s.hooks?await s.hooks.processAllTokens(c):c;s.walkTokens&&await Promise.all(this.walkTokens(p,s.walkTokens));let d=await(s.hooks?await s.hooks.provideParser():e?b.parse:b.parseInline)(p,s);return s.hooks?await s.hooks.postprocess(d):d})().catch(o);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer():e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let p=(s.hooks?s.hooks.provideParser():e?b.parse:b.parseInline)(l,s);return s.hooks&&(p=s.hooks.postprocess(p)),p}catch(a){return o(a)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function k(u,e){return _.parse(u,e)}k.options=k.setOptions=function(u){return _.setOptions(u),k.defaults=_.defaults,G(k.defaults),k};k.getDefaults=L;k.defaults=T;k.use=function(...u){return _.use(...u),k.defaults=_.defaults,G(k.defaults),k};k.walkTokens=function(u,e){return _.walkTokens(u,e)};k.parseInline=_.parseInline;k.Parser=b;k.parser=b.parse;k.Renderer=P;k.TextRenderer=$;k.Lexer=x;k.lexer=x.lex;k.Tokenizer=y;k.Hooks=S;k.parse=k;var Ht=k.options,Zt=k.setOptions,Gt=k.use,Nt=k.walkTokens,Ft=k.parseInline,jt=k,Qt=b.parse,Ut=x.lex;export{S as Hooks,x as Lexer,B as Marked,b as Parser,P as Renderer,$ as TextRenderer,y as Tokenizer,T as defaults,L as getDefaults,Ut as lexer,k as marked,Ht as options,jt as parse,Ft as parseInline,Qt as parser,Zt as setOptions,Gt as use,Nt as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n",
|
|
34
|
-
"import { Component, ElementCreator, xin } from 'tosijs'\nimport { marked, MarkedOptions } from 'marked'\n\n/*#\n# markdown\n\n`<xin-md>` renders markdown using [marked](https://www.npmjs.com/package/marked).\n\n`<xin-md>` renders [markdown](https://www.markdownguide.org/) anywhere, either using the\n`src` attribute to load the file asynchronously, or rendering the text inside it.\n\n```html\n<xin-md>\n## hello\nworld\n</xin-md>\n```\n```css\nxin-md {\n display: block;\n padding: var(--spacing);\n}\n```\n\nNote that, by default, `<xin-md>` will use its `textContent` (not its `innerHTML`) as its source.\n\n## rendering markdown from a url\n\nAgain, like an `<img>` tag, you can simply set a `<xin-md>`'s `src` attribute to a URL pointing\nto markdown source and it will load it asynchronously and render it.\n\n```\n<xin-md src=\"/path/to/file.md\">\n```\n\n## setting its `value`\n\nOr, just set the element's `value` and it will render it for you. You can try\nthis in the console, e.g.\n\n```\n$('.preview xin-md').value = 'testing\\n\\n## this is a test'\n```\n\n## elements\n\n`<xin-md>` also (optionally) allows the embedding of inline HTML elements without blocking markdown\nrendering, so that you can embed specific elements while retaining markdown. You need to explicitly set\nthe `elements` property, and for markdown rendering not to be blocked, the html elements need to\nstart on a new line and not be indented. E.g.\n\n```html\n<xin-md elements>\n<form>\n### this is a form\n<label>\nfill in this field.\n**It's important!**\n<input>\n</label>\n</form>\n</xin-md>\n```\n\nIn this case `<xin-md>` uses its `innerHTML` and not its `textContent`.\n\n## context and template variables\n\n`<xin-md>` also supports **template** values. You need to provide data to the element in the form\nof `context` (an arbitrary object, or a JSON string), and then embed the template text using\nhandlebars-style doubled curly braces, e.g. `{{path.to.value}}`.\n\nIf no value is found, the original text is passed through.\n\nFinally, note that template substitution occurs *before* markdown transformation, which means you can\npass context data through to HTML elements.\n\n```html\n<xin-md\n elements\n context='{\"title\": \"template example\", \"foo\": {\"bar\": 17}, \"nested\": \"*work*: {{foo.bar}}\"}'\n>\n## {{title}}\n\nThe magic number is <input type=\"number\" value={{foo.bar}}>\n\nOh, and nested templates {{nested}}.\n</xin-md>\n```\n*/\n\nfunction populate(basePath: string, source?: any): string {\n if (source == null) {\n source = ''\n } else if (typeof source !== 'string') {\n source = String(source)\n }\n return source.replace(\n /\\{\\{([^}]+)\\}\\}/g,\n (original: string, prop: string) => {\n const value = (xin as any)[\n `${basePath}${prop.startsWith('[') ? prop : '.' + prop}`\n ]\n return value === undefined ? original : populate(basePath, String(value))\n }\n )\n}\n\nexport class MarkdownViewer extends Component {\n src = ''\n value = ''\n content = null\n elements = false\n context: { [key: string]: any } = {}\n options = {} as MarkedOptions
|
|
33
|
+
"/**\n * marked v16.4.2 - a markdown parser\n * Copyright (c) 2018-2025, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=L();function G(l){T=l}var E={exec:()=>null};function d(l,e=\"\"){let t=typeof l==\"string\"?l:l.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var be=(()=>{try{return!!new RegExp(\"(?<=1)(?<!1)\")}catch{return!1}})(),m={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,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] /,listReplaceTask:/^\\[[ 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,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}#`),htmlBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}<(?:[a-z].*>|!--)`,\"i\")},Re=/^(?:[ \\t]*(?:\\n|$))+/,Te=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Oe=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,I=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,we=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,F=/(?:[*+-]|\\d{1,9}[.)])/,ie=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,oe=d(ie).replace(/bull/g,F).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}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),ye=d(ie).replace(/bull/g,F).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}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),j=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,Pe=/^[^\\n]+/,Q=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,Se=d(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",Q).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),$e=d(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,F).getRegex(),v=\"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\",U=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,_e=d(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),ae=d(j).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Le=d(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",ae).getRegex(),K={blockquote:Le,code:Te,def:Se,fences:Oe,heading:we,hr:I,html:_e,lheading:oe,list:$e,newline:Re,paragraph:ae,table:E,text:Pe},re=d(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Me={...K,lheading:ye,table:re,paragraph:d(j).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",re).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},ze={...K,html:d(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).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:E,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:d(j).replace(\"hr\",I).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",oe).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Ae=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ee=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,le=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ie=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,W=/[\\s\\p{P}\\p{S}]/u,ue=/[^\\s\\p{P}\\p{S}]/u,Ce=d(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,W).getRegex(),pe=/(?!~)[\\p{P}\\p{S}]/u,Be=/(?!~)[\\s\\p{P}\\p{S}]/u,qe=/(?:[^\\s\\p{P}\\p{S}]|~)/u,ve=d(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",be?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ce=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,De=d(ce,\"u\").replace(/punct/g,D).getRegex(),He=d(ce,\"u\").replace(/punct/g,pe).getRegex(),he=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",Ze=d(he,\"gu\").replace(/notPunctSpace/g,ue).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ge=d(he,\"gu\").replace(/notPunctSpace/g,qe).replace(/punctSpace/g,Be).replace(/punct/g,pe).getRegex(),Ne=d(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,ue).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Fe=d(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),je=d(/^<(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(),Qe=d(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Ue=d(\"^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\",Qe).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/,Ke=d(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),de=d(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",Q).getRegex(),ke=d(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",Q).getRegex(),We=d(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",de).replace(\"nolink\",ke).getRegex(),se=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,X={_backpedal:E,anyPunctuation:Fe,autolink:je,blockSkip:ve,br:le,code:Ee,del:E,emStrongLDelim:De,emStrongRDelimAst:Ze,emStrongRDelimUnd:Ne,escape:Ae,link:Ke,nolink:ke,punctuation:Ce,reflink:de,reflinkSearch:We,tag:Ue,text:Ie,url:E},Xe={...X,link:d(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:d(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:Ge,emStrongLDelim:He,url:d(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",se).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:d(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",se).getRegex()},Je={...N,br:d(le).replace(\"{2,}\",\"*\").getRegex(),text:d(N.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},C={normal:K,gfm:Me,pedantic:ze},M={normal:X,gfm:N,breaks:Je,pedantic:Xe};var Ve={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"},ge=l=>Ve[l];function w(l,e){if(e){if(m.escapeTest.test(l))return l.replace(m.escapeReplace,ge)}else if(m.escapeTestNoEncode.test(l))return l.replace(m.escapeReplaceNoEncode,ge);return l}function J(l){try{l=encodeURI(l).replace(m.percentDecode,\"%\")}catch{return null}return l}function V(l,e){let t=l.replace(m.findPipe,(i,s,a)=>{let o=!1,p=s;for(;--p>=0&&a[p]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(l,e,t){let n=l.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=l.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return l.slice(0,n-r)}function fe(l,e){if(l.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<l.length;n++)if(l[n]===\"\\\\\")n++;else if(l[n]===e[0])t++;else if(l[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function me(l,e,t,n,r){let i=e.href,s=e.title||null,a=l[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:l[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function Ye(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Ye(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],p;for(p=0;p<n.length;p++)if(this.rules.other.blockquoteStart.test(n[p]))o.push(n[p]),a=!0;else if(!a)o.push(n[p]);else break;n=n.slice(p);let u=o.join(`\n`),c=u.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${u}`:u,i=i?`${i}\n${c}`:c;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=g,n.length===0)break;let h=s.at(-1);if(h?.type===\"code\")break;if(h?.type===\"blockquote\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.blockquote(f);s[s.length-1]=O,r=r.substring(0,r.length-R.raw.length)+O.raw,i=i.substring(0,i.length-R.text.length)+O.text;break}else if(h?.type===\"list\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.list(f);s[s.length-1]=O,r=r.substring(0,r.length-h.raw.length)+O.raw,i=i.substring(0,i.length-R.raw.length)+O.raw,n=f.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let p=!1,u=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;u=t[0],e=e.substring(u.length);let g=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,H=>\" \".repeat(3*H.length)),h=e.split(`\n`,1)[0],R=!g.trim(),f=0;if(this.options.pedantic?(f=2,c=g.trimStart()):R?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=g.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(u+=h+`\n`,e=e.substring(h.length+1),p=!0),!p){let H=this.rules.other.nextBulletRegex(f),ee=this.rules.other.hrRegex(f),te=this.rules.other.fencesBeginRegex(f),ne=this.rules.other.headingBeginRegex(f),xe=this.rules.other.htmlBeginRegex(f);for(;e;){let Z=e.split(`\n`,1)[0],A;if(h=Z,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\" \"),te.test(h)||ne.test(h)||xe.test(h)||H.test(h)||ee.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||g.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||te.test(g)||ne.test(g)||ee.test(g))break;c+=`\n`+h}!R&&!h.trim()&&(R=!0),u+=Z+`\n`,e=e.substring(Z.length+1),g=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(a=!0));let O=null,Y;this.options.gfm&&(O=this.rules.other.listIsTask.exec(c),O&&(Y=O[0]!==\"[ ] \",c=c.replace(this.rules.other.listReplaceTask,\"\"))),i.items.push({type:\"list_item\",raw:u,task:!!O,checked:Y,loose:!1,text:c,tokens:[]}),i.raw+=u}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let p=0;p<i.items.length;p++)if(this.lexer.state.top=!1,i.items[p].tokens=this.lexer.blockTokens(i.items[p].text,[]),!i.loose){let u=i.items[p].tokens.filter(g=>g.type===\"space\"),c=u.length>0&&u.some(g=>this.rules.other.anyLine.test(g.raw));i.loose=c}if(i.loose)for(let p=0;p<i.items.length;p++)i.items[p].loose=!0;return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(V(a,s.header.length).map((o,p)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[p]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=fe(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),me(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return me(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,p=s,u=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){p+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){u+=o;continue}if(p-=o,p>0)continue;o=Math.min(o,o+p+u);let g=[...r[0]][0].length,h=e.slice(0,s+r.index+g+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class l{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new y,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:m,block:C.normal,inline:M.normal};this.options.pedantic?(t.block=C.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=C.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:C,inline:M}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(p=>{o=p.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(u=>(o=u.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let u=t.at(-1);o.type===\"text\"&&u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let p=e;if(this.options.extensions?.startInline){let u=1/0,c=e.slice(1),g;this.options.extensions.startInline.forEach(h=>{g=h.call({lexer:this},c),typeof g==\"number\"&&g>=0&&(u=Math.min(u,g))}),u<1/0&&u>=0&&(p=e.substring(0,u+1))}if(o=this.tokenizer.inlineText(p)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let u=t.at(-1);u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(e){let u=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}};var P=class{options;parser;constructor(e){this.options=e||T}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let a=0;a<e.items.length;a++){let o=e.items[a];r+=this.listitem(o)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){let t=\"\";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type===\"paragraph\"?(e.tokens[0].text=n+\" \"+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type===\"text\"&&(e.tokens[0].tokens[0].text=n+\" \"+w(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:\"text\",raw:n+\" \",text:n+\" \",escaped:!0}):t+=n+\" \"}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}};var b=class l{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new l(t).parse(e)}static parseInline(e,t){return new l(t).parseInline(e)}parse(e,t=!0){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=i,o=this.options.extensions.renderers[a.type].call({parser:this},a);if(o!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(a.type)){n+=o||\"\";continue}}let s=i;switch(s.type){case\"space\":{n+=this.renderer.space(s);continue}case\"hr\":{n+=this.renderer.hr(s);continue}case\"heading\":{n+=this.renderer.heading(s);continue}case\"code\":{n+=this.renderer.code(s);continue}case\"table\":{n+=this.renderer.table(s);continue}case\"blockquote\":{n+=this.renderer.blockquote(s);continue}case\"list\":{n+=this.renderer.list(s);continue}case\"html\":{n+=this.renderer.html(s);continue}case\"def\":{n+=this.renderer.def(s);continue}case\"paragraph\":{n+=this.renderer.paragraph(s);continue}case\"text\":{let a=s,o=this.renderer.text(a);for(;r+1<e.length&&e[r+1].type===\"text\";)a=e[++r],o+=`\n`+this.renderer.text(a);t?n+=this.renderer.paragraph({type:\"paragraph\",raw:o,text:o,tokens:[{type:\"text\",raw:o,text:o,escaped:!0}]}):n+=o;continue}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}};var S=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?x.lex:x.lexInline}provideParser(){return this.block?b.parse:b.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=P;TextRenderer=$;Lexer=x;Tokenizer=y;Hooks=S;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.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 s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],p=i[a];i[a]=(...u)=>{let c=o.apply(i,u);return c===!1&&(c=p.apply(i,u)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],p=i[a];i[a]=(...u)=>{let c=o.apply(i,u);return c===!1&&(c=p.apply(i,u)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new S;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],p=i[a];S.passThroughHooks.has(s)?i[a]=u=>{if(this.defaults.async&&S.passThroughHooksRespectAsync.has(s))return(async()=>{let g=await o.call(i,u);return p.call(i,g)})();let c=o.call(i,u);return p.call(i,c)}:i[a]=(...u)=>{if(this.defaults.async)return(async()=>{let g=await o.apply(i,u);return g===!1&&(g=await p.apply(i,u)),g})();let c=o.apply(i,u);return c===!1&&(c=p.apply(i,u)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(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 n>\"u\"||n===null)return a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,u=await(s.hooks?await s.hooks.provideLexer():e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(u):u;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser():e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let p=(s.hooks?s.hooks.provideLexer():e?x.lex:x.lexInline)(n,s);s.hooks&&(p=s.hooks.processAllTokens(p)),s.walkTokens&&this.walkTokens(p,s.walkTokens);let c=(s.hooks?s.hooks.provideParser():e?b.parse:b.parseInline)(p,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function k(l,e){return _.parse(l,e)}k.options=k.setOptions=function(l){return _.setOptions(l),k.defaults=_.defaults,G(k.defaults),k};k.getDefaults=L;k.defaults=T;k.use=function(...l){return _.use(...l),k.defaults=_.defaults,G(k.defaults),k};k.walkTokens=function(l,e){return _.walkTokens(l,e)};k.parseInline=_.parseInline;k.Parser=b;k.parser=b.parse;k.Renderer=P;k.TextRenderer=$;k.Lexer=x;k.lexer=x.lex;k.Tokenizer=y;k.Hooks=S;k.parse=k;var Zt=k.options,Gt=k.setOptions,Nt=k.use,Ft=k.walkTokens,jt=k.parseInline,Qt=k,Ut=b.parse,Kt=x.lex;export{S as Hooks,x as Lexer,B as Marked,b as Parser,P as Renderer,$ as TextRenderer,y as Tokenizer,T as defaults,L as getDefaults,Kt as lexer,k as marked,Zt as options,Qt as parse,jt as parseInline,Ut as parser,Gt as setOptions,Nt as use,Ft as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n",
|
|
34
|
+
"import { Component, ElementCreator, xin } from 'tosijs'\nimport { marked, MarkedOptions } from 'marked'\n\n/*#\n# markdown\n\n`<xin-md>` renders markdown using [marked](https://www.npmjs.com/package/marked).\n\n`<xin-md>` renders [markdown](https://www.markdownguide.org/) anywhere, either using the\n`src` attribute to load the file asynchronously, or rendering the text inside it.\n\n```html\n<xin-md>\n## hello\nworld\n\n\n\n| this | is | a | table |\n|-------|------|-------|-------|\n| one | two | three | four |\n| five | six | seven | eight |\n</xin-md>\n```\n```css\nxin-md {\n display: block;\n padding: var(--spacing);\n}\n```\n\nNote that, by default, `<xin-md>` will use its `textContent` (not its `innerHTML`) as its source.\n\n## rendering markdown from a url\n\nAgain, like an `<img>` tag, you can simply set a `<xin-md>`'s `src` attribute to a URL pointing\nto markdown source and it will load it asynchronously and render it.\n\n```\n<xin-md src=\"/path/to/file.md\">\n```\n\n## setting its `value`\n\nOr, just set the element's `value` and it will render it for you. You can try\nthis in the console, e.g.\n\n```\n$('.preview xin-md').value = 'testing\\n\\n## this is a test'\n```\n\n## elements\n\n`<xin-md>` also (optionally) allows the embedding of inline HTML elements without blocking markdown\nrendering, so that you can embed specific elements while retaining markdown. You need to explicitly set\nthe `elements` property, and for markdown rendering not to be blocked, the html elements need to\nstart on a new line and not be indented. E.g.\n\n```html\n<xin-md elements>\n<form>\n### this is a form\n<label>\nfill in this field.\n**It's important!**\n<input>\n</label>\n</form>\n</xin-md>\n```\n\nIn this case `<xin-md>` uses its `innerHTML` and not its `textContent`.\n\n## context and template variables\n\n`<xin-md>` also supports **template** values. You need to provide data to the element in the form\nof `context` (an arbitrary object, or a JSON string), and then embed the template text using\nhandlebars-style doubled curly braces, e.g. `{{path.to.value}}`.\n\nIf no value is found, the original text is passed through.\n\nFinally, note that template substitution occurs *before* markdown transformation, which means you can\npass context data through to HTML elements.\n\n```html\n<xin-md\n elements\n context='{\"title\": \"template example\", \"foo\": {\"bar\": 17}, \"nested\": \"*work*: {{foo.bar}}\"}'\n>\n## {{title}}\n\nThe magic number is <input type=\"number\" value={{foo.bar}}>\n\nOh, and nested templates {{nested}}.\n</xin-md>\n```\n*/\n\nfunction populate(basePath: string, source?: any): string {\n if (source == null) {\n source = ''\n } else if (typeof source !== 'string') {\n source = String(source)\n }\n return source.replace(\n /\\{\\{([^}]+)\\}\\}/g,\n (original: string, prop: string) => {\n const value = (xin as any)[\n `${basePath}${prop.startsWith('[') ? prop : '.' + prop}`\n ]\n return value === undefined ? original : populate(basePath, String(value))\n }\n )\n}\n\nexport class MarkdownViewer extends Component {\n src = ''\n value = ''\n content = null\n elements = false\n context: { [key: string]: any } = {}\n options = {} as MarkedOptions\n\n constructor() {\n super()\n this.initAttributes('src', 'elements', 'context')\n }\n connectedCallback(): void {\n super.connectedCallback()\n if (this.src !== '') {\n ;(async () => {\n const request = await fetch(this.src)\n this.value = await request.text()\n })()\n } else if (this.value === '') {\n if (this.elements) {\n this.value = this.innerHTML\n } else {\n this.value = this.textContent != null ? this.textContent : ''\n }\n }\n }\n didRender: (() => void) | (() => Promise<void>) = (): void => {\n /* do not care */\n }\n render() {\n super.render()\n\n xin[this.instanceId] =\n typeof this.context === 'string' ? JSON.parse(this.context) : this.context\n\n const source = populate(this.instanceId, this.value)\n if (this.elements) {\n const chunks = source\n .split('\\n')\n .reduce((chunks: string[], line: string) => {\n if (line.startsWith('<') || chunks.length === 0) {\n chunks.push(line)\n } else {\n const lastChunk = chunks[chunks.length - 1]\n if (!lastChunk.startsWith('<') || !lastChunk.endsWith('>')) {\n chunks[chunks.length - 1] += '\\n' + line\n } else {\n chunks.push(line)\n }\n }\n return chunks\n }, [] as string[])\n this.innerHTML = chunks\n .map((chunk) =>\n chunk.startsWith('<') && chunk.endsWith('>')\n ? chunk\n : marked(chunk, this.options)\n )\n .join('')\n } else {\n this.innerHTML = marked(source, this.options) as string\n }\n this.didRender()\n }\n}\n\nexport const markdownViewer = MarkdownViewer.elementCreator({\n tag: 'xin-md',\n}) as ElementCreator<MarkdownViewer>\n",
|
|
35
35
|
"/*#\n# month\n\nThis is a component for displaying a month and selecting days within that month.\n\nIf the user changes the `month` or `year` the component's `monthChanged(year, month)`\nmethod will be called.\n\nThe current date is `[part=\"today\"]` and can easily be targeted for styling.\n\n```js\nimport { tosiMonth, postNotification } from 'tosijs-ui'\n\npreview.append(tosiMonth({\n monthChanged(year, month) {\n postNotification({\n icon: 'calendar',\n message: `Month changed to ${year}-${month}`,\n color: 'hotpink',\n duration: 2,\n })\n }\n}))\n```\n```css\n.preview tosi-month {\n margin: 10px;\n border-radius: 5px;\n box-shadow: 0 0 0 2px hotpink;\n}\n```\n\n## `selectable`\n\nSetting `selectable` allows the user to pick individual dates. It's just a friendlier date picker.\n\nThe value of the component is an ISO date string, as per `<input type=\"date\">`.\n\n`week-start` defaults to `0` (Sunday). You can set it to `1` (Monday) or some other value\nif you want.\n\n> There is a proposed API to obtain the first day of the week for the user's locale from\n> [Intl.Locale](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getWeekInfo)\n> but it is not yet widely supported.\n\n```html\n<tosi-month week-start=1 selectable></tosi-month>\n```\n```js\nconst month = preview.querySelector('tosi-month')\nmonth.addEventListener('change', event => console.log('date picked', event.target.value))\n```\n\n## `range`\n\nSetting `range` allows the user to select date ranges.\n\n```html\n<tosi-month range></tosi-month>\n```\n```js\nconst month = preview.querySelector('tosi-month')\nmonth.addEventListener('change', event => console.log('date range', event.target.value))\n```\n\n## `multiple`\n\nThis allows the user to pick multiple individual dates\n\n```html\n<tosi-month multiple></tosi-month>\n```\n```js\nconst month = preview.querySelector('tosi-month')\nmonth.addEventListener('change', event => console.log('multple dates', event.target.value))\n```\n\n## `readonly` and `disabled`\n\nThese prevent the user from changing the displayed month. This example is `readonly`.\n\n```html\n<tosi-month readonly value=\"1976-04-01\"></tosi-month>\n```\n\n*/\n\nimport { Component, PartsMap, elements, varDefault } from 'tosijs'\nimport { xinSelect, XinSelect } from './select'\nimport { icons } from './icons'\nimport { popMenu, MenuItem } from './menu'\n\nconst { div, span, button } = elements\n\nconst DAY_MS = 24 * 3600 * 1000\nconst WEEK = [0, 1, 2, 3, 4, 5, 6]\nconst MONTHS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n\n// Note this is because Safari is super strict about leading zeros\nconst padLeft = (value: string | number, length = 2, padding = '0'): string =>\n String(value).padStart(length, padding)\nconst dateFromYMD = (year: number, month: number, date: number): Date =>\n new Date(`${year}-${padLeft(month)}-${padLeft(date)}`)\n\ninterface MonthParts extends PartsMap {\n jump: HTMLButtonElement\n month: XinSelect\n year: XinSelect\n previous: HTMLButtonElement\n next: HTMLButtonElement\n}\n\nexport class TosiMonth extends Component<MonthParts> {\n month = NaN\n year = NaN\n minDate = dateFromYMD(new Date().getFullYear() - 100, 1, 1)\n .toISOString()\n .split('T')[0]\n maxDate = dateFromYMD(new Date().getFullYear() + 10, 12, 31)\n .toISOString()\n .split('T')[0]\n weekStart = 0 // Sunday, 1 = Monday\n selectable = false\n multiple = false\n range = false\n disabled = false\n readonly = false\n selectedDays = [] as string[]\n value = ''\n\n get endDay(): number {\n return 1 - this.weekStart\n }\n get months(): { caption: string; value: string }[] {\n return MONTHS.map((value) => ({\n caption: dateFromYMD(2025, value, 1).toString().split(' ')[1],\n value: String(value),\n }))\n }\n get years(): string[] {\n const startYear = Number(this.minDate.split('-')[0])\n const endYear = Number(this.maxDate.split('-')[0])\n const years = [] as string[]\n for (let year = startYear; year <= endYear; year++) {\n years.push(String(year))\n }\n return years\n }\n\n monthChanged = (year: number, month: number) => {}\n\n gotoMonth(year: number, month: number) {\n if (this.month !== month || this.year !== year) {\n this.month = month\n this.year = year\n this.monthChanged(year, month)\n }\n }\n\n setMonth = () => {\n this.gotoMonth(\n Number(this.parts.year.value),\n Number(this.parts.month.value)\n )\n }\n\n get to(): string {\n return this.selectedDays[1] || ''\n }\n\n set to(dateString: string) {\n this.selectedDays[1] = dateString\n this.selectedDays.splice(2)\n }\n\n get from(): string {\n return this.selectedDays[0] || ''\n }\n\n set from(dateString: string) {\n this.selectedDays[0] = dateString\n this.selectedDays.splice(2)\n }\n\n clickDate = (event: Event) => {\n const dateString = (event.target as HTMLElement).getAttribute(\n 'title'\n ) as string\n this.selectDate(dateString)\n }\n\n keyDate = (event: KeyboardEvent) => {\n let stopEvent = false\n switch (event.code) {\n case 'Space':\n const dateString = (event.target as HTMLElement).getAttribute(\n 'title'\n ) as string\n this.selectDate(dateString)\n stopEvent = true\n break\n case 'Tab':\n break\n default:\n console.log(event)\n }\n if (stopEvent) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n\n #focusDate = ''\n selectDate = (dateString: string) => {\n this.#focusDate = dateString\n if (this.range) {\n if (!this.to) {\n this.selectedDays = [dateString, dateString]\n } else if (this.from === dateString && this.to === dateString) {\n this.selectedDays = []\n } else if (this.from === dateString) {\n this.from = this.to\n } else if (this.to === dateString) {\n this.to = this.from\n } else if (dateString < this.from) {\n this.from = dateString\n } else if (dateString > this.to) {\n this.to = dateString\n } else if (dateString < this.from) {\n this.from = dateString\n } else {\n this.to = dateString\n }\n this.value = `${this.from},${this.to}`\n } else if (this.multiple) {\n if (this.selectedDays.includes(dateString)) {\n this.selectedDays.splice(this.selectedDays.indexOf(dateString), 1)\n } else {\n this.selectedDays.push(dateString)\n this.selectedDays.sort()\n }\n this.value = this.selectedDays.join(',')\n } else if (this.selectable) {\n if (this.selectedDays.includes(dateString)) {\n this.value = ''\n this.selectedDays = []\n } else {\n this.value = dateString\n this.selectedDays = [dateString]\n }\n }\n }\n\n nextMonth = () => {\n if (this.month < 12) {\n this.gotoMonth(this.year, this.month + 1)\n } else {\n this.gotoMonth(this.year + 1, 1)\n }\n }\n\n previousMonth = () => {\n if (this.month > 1) {\n this.gotoMonth(this.year, this.month - 1)\n } else {\n this.gotoMonth(this.year - 1, 12)\n }\n }\n\n checkDay = (dateString: string) => {\n if (!this.range) {\n return this.selectedDays.includes(dateString)\n } else if (this.range) {\n return this.from && dateString >= this.from && dateString <= this.to\n }\n return false\n }\n\n dateMenuItem = (dateString: string, caption = ''): MenuItem => {\n dateString = dateString.split('T')[0]\n return {\n caption: caption || dateString,\n enabled: () =>\n !dateString.startsWith(`${this.year}-${padLeft(this.month)}-`),\n action: () => {\n this.gotoDate(dateString)\n },\n }\n }\n\n jumpMenu = () => {\n popMenu({\n target: this.parts.jump,\n menuItems: [\n this.dateMenuItem(new Date().toISOString(), 'This Month'),\n ...(this.selectedDays.length === 0 ? [] : [null]),\n ...this.selectedDays.map((date) => this.dateMenuItem(date)),\n ],\n })\n }\n\n content = () => [\n div(\n { part: 'header' },\n button(\n {\n part: 'previous',\n onClick: this.previousMonth,\n },\n icons.chevronLeft()\n ),\n span({ style: { flex: '1' } }),\n button(\n {\n part: 'jump',\n onClick: this.jumpMenu,\n },\n icons.calendar()\n ),\n xinSelect({\n part: 'month',\n options: this.months,\n onChange: this.setMonth,\n }),\n xinSelect({\n part: 'year',\n options: [this.year],\n onChange: this.setMonth,\n }),\n span({ style: { flex: '1' } }),\n button(\n {\n part: 'next',\n onClick: this.nextMonth,\n },\n icons.chevronRight()\n )\n ),\n div({ part: 'week' }),\n div({ part: 'days' }),\n ]\n\n gotoDate(dateString: string) {\n const date = new Date(dateString)\n this.gotoMonth(date.getFullYear(), date.getMonth() + 1)\n }\n\n constructor() {\n super()\n this.initAttributes(\n 'month',\n 'year',\n 'weekStart',\n 'minDate',\n 'maxDate',\n 'selectable',\n 'multiple',\n 'range',\n 'disabled',\n 'readonly'\n )\n }\n\n connectedCallback() {\n super.connectedCallback()\n const date = new Date(this.value.split(',').pop() || Date.now())\n if (isNaN(this.month)) {\n this.month = date.getMonth() + 1\n }\n if (isNaN(this.year)) {\n this.year = date.getFullYear()\n }\n }\n days = [] as Array<{\n date: Date\n selected: boolean\n inRange: boolean\n inMonth: boolean\n isWeekend: boolean\n isToday: boolean\n }>\n render() {\n const { week, days, jump, month, year, previous, next } = this.parts\n this.selectedDays = this.value ? this.value.split(',') : []\n const firstOfMonth = dateFromYMD(this.year, this.month, 1)\n const weekStart = new Date(\n firstOfMonth.valueOf() -\n ((7 + firstOfMonth.getDay() - this.weekStart) % 7) * DAY_MS\n )\n const nextMonth = this.month === 12 ? 1 : this.month + 1\n const lastOfMonth = new Date(\n dateFromYMD(\n this.year + (this.month === 12 ? 1 : 0),\n nextMonth,\n 1\n ).valueOf() - DAY_MS\n )\n const endDay = new Date(\n lastOfMonth.valueOf() +\n ((this.weekStart * 2 + 5 + this.endDay - lastOfMonth.getDay()) % 7) *\n DAY_MS\n )\n\n const weekDays = WEEK.map(\n (day: number) =>\n new Date(weekStart.valueOf() + day * DAY_MS).toString().split(' ')[0]\n )\n this.days = []\n const today = new Date().toISOString().split('T')[0]\n for (\n let day = weekStart.valueOf();\n day <= endDay.valueOf();\n day += DAY_MS\n ) {\n const date = new Date(day)\n const dateString = date.toISOString().split('T')[0]\n this.days.push({\n date,\n selected: false,\n inMonth: date.getMonth() + 1 === this.month,\n isToday: dateString === today,\n isWeekend: date.getDay() % 6 === 0,\n inRange: !!(\n this.from &&\n dateString >= this.from &&\n dateString <= this.to\n ),\n })\n }\n\n month.value = String(this.month)\n year.value = String(this.year)\n const isDisabled =\n (month.disabled =\n year.disabled =\n jump.disabled =\n previous.disabled =\n next.disabled =\n this.disabled || this.readonly)\n const dateSelectDisabled =\n isDisabled || (!this.selectable && !this.range && !this.multiple)\n year.options = this.years\n week.textContent = ''\n week.append(...weekDays.map((day) => span({ class: 'day' }, day)))\n days.textContent = ''\n let focusElement: HTMLElement | null = null\n const { to, from } = this\n days.append(\n ...this.days.map((day) => {\n const classes = ['date']\n if (day.inMonth) {\n classes.push('in-month')\n }\n if (day.isToday) {\n classes.push('today')\n }\n const dateString = day.date.toISOString().split('T')[0]\n if (this.checkDay(dateString)) {\n classes.push('checked')\n }\n classes.push(day.isWeekend ? 'weekend' : 'weekday')\n if (this.range) {\n if (to === dateString) {\n classes.push('range-end')\n }\n if (from === dateString) {\n classes.push('range-start')\n }\n }\n const element = span(\n {\n class: classes.join(' '),\n title: dateString,\n onClick: this.clickDate,\n onKeydown: this.keyDate,\n tabindex: '0',\n },\n day.date.getDate()\n )\n if (dateString === this.#focusDate) {\n focusElement = element\n }\n return element\n })\n )\n // @ts-ignore-error tsc is too stupid to realize it gets assigned\n if (focusElement) focusElement.focus()\n }\n}\n\nexport const tosiMonth = TosiMonth.elementCreator({\n tag: 'tosi-month',\n styleSpec: {\n ':host': {\n display: 'block',\n },\n ':host [part=header]': {\n display: 'flex',\n alignItems: 'stretch',\n justifyContent: 'stretch',\n },\n ':host[disabled]': {\n pointerEvents: 'none',\n opacity: varDefault.disabledOpacity(0.6),\n },\n ':host [part=\"month\"], :host [part=\"year\"]': {\n _fieldWidth: '4em',\n flex: '1',\n },\n ':host [part=week], :host [part=days]': {\n display: 'grid',\n gridTemplateColumns: 'auto auto auto auto auto auto auto',\n justifyItems: 'stretch',\n },\n ':host .today': {\n background: varDefault.monthTodayBackground('transparent'),\n boxShadow: varDefault.monthTodayShadow(`none`),\n backdropFilter: varDefault.monthTodayBackdropFilter('brightness(0.9)'),\n fontWeight: varDefault.monthTodayFontWeight('800'),\n },\n ':host .day, :host .date': {\n padding: 5,\n display: 'flex',\n justifyContent: 'center',\n userSelect: 'none',\n },\n ':host .day': {\n color: varDefault.monthDayColor('hotpink'),\n background: varDefault.monthDayBackground('white'),\n fontWeight: varDefault.monthDayFontWeight('800'),\n },\n ':host .date': {\n cursor: 'default',\n },\n ':host .weekend': {\n background: varDefault.monthWeekendBackground('#eee'),\n },\n ':host .date:not(.in-month)': {\n opacity: 0.5,\n },\n ':host .date.checked': {\n color: varDefault.monthDateCheckedColor('white'),\n background: varDefault.monthDateCheckedBackground('hotpink'),\n },\n ':host:not([range]) .date.checked': {\n borderRadius: varDefault.monthDateCheckedBorderRadius('10px'),\n },\n ':host .range-start': {\n borderTopLeftRadius: varDefault.monthDateCheckedBorderRadius('10px'),\n borderBottomLeftRadius: varDefault.monthDateCheckedBorderRadius('10px'),\n },\n ':host .range-end': {\n borderTopRightRadius: varDefault.monthDateCheckedBorderRadius('10px'),\n borderBottomRightRadius: varDefault.monthDateCheckedBorderRadius('10px'),\n },\n },\n})\n",
|
|
36
36
|
"/*#\n\n# notifications\n\n`XinNotification` provides a singleton custom `<xin-notification>` element that manages\na list of notifications.\n\nThe notifications are displayed most-recent first. If the notifications would take more than\nhalf the height of the display, they are scrolled.\n\nYou can post a notification simply with `XinNotification.post()` or `postNotification()`.\n\n```\ninterface NotificationSpec {\n message: string\n type?: 'success' | 'info' | 'log' | 'warn' | 'error' | 'progress' // default 'info'\n icon?: SVGElement | string // defaults to an info icon\n duration?: number\n progress?: () => number // return percentage completion\n close?: () => void\n color?: string // specify color\n}\n```\n\nIf you provide a `progress` callback (which is assumed to return a number from `0-100`, with\n100+ indicating completion) then `XinNotification` will poll it every second until the\ntask completes or the notification is closed. Returning 100 or more will automatically close\nthe notification.\n\nIf you configure a notification's `type = \"progress\"` but don't provide a `progress` callback\nthen an indefinite `<progress>` element will be displayed.\n\nIf you provide a `close` callback, it will be fired if the user closes the notification.\n\n`postNotification` returns a callback function that closes the note programmatically (e.g.\nwhen an operation completes). This will *also* call any `close` callback function you\nprovided. (The progress demos in the example exercise this functionality.)\n\n```js\nimport { postNotification, icons } from 'tosijs-ui'\n\nconst form = preview.querySelector('xin-form')\nconst submit = preview.querySelector('.submit')\nconst closeButton = preview.querySelector('.close')\n\nlet close\n\nform.submitCallback = (value, isValid) => {\n if (!isValid) return\n if (value.type.startsWith('progress')) {\n startTime = Date.now()\n const { message, duration, icon } = value\n close = postNotification({\n message,\n type: 'progress',\n icon,\n progress: value.type === 'progress' ? () => (Date.now() - startTime) / (10 * duration) : undefined,\n close: () => { postNotification(`${value.message} cancelled`) },\n })\n } else {\n close = postNotification(value)\n }\n console.log(close)\n closeButton.disabled = false\n}\n\nsubmit.addEventListener('click', form.submit)\ncloseButton.addEventListener('click', () => {\n if (close) {\n close()\n }\n})\n\npostNotification({\n message: 'Welcome to tosijs-ui notifications, this message will disappear in 2s',\n duration: 2\n})\n```\n```html\n<xin-form>\n <h3 slot=\"header\">Notification Test</h3>\n <xin-field caption=\"Message\" key=\"message\" type=\"string\" value=\"This is a test…\"></xin-field>\n <xin-field caption=\"Type\" key=\"type\" value=\"info\">\n <xin-select slot=\"input\"\n options=\"error,warn,info,success,log,,progress,progress (indefinite)\"\n ></xin-select>\n </xin-field>\n <xin-field caption=\"Icon\" key=\"icon\" value=\"info\">\n <xin-select slot=\"input\"\n options=\"info,bug,thumbsUp,thumbsDown,message\"\n ></xin-select>\n </xin-field>\n <xin-field caption=\"Duration\" key=\"duration\" type=\"number\" value=\"2\"></xin-field>\n <button slot=\"footer\" class=\"close\" disabled>Close Last Notification</button>\n <span slot=\"footer\" class=\"elastic\"></span>\n <button slot=\"footer\" class=\"submit\">Post Notification</button>\n</xin-form>\n```\n```css\nxin-form {\n height: 100%;\n}\n\nxin-form::part(content) {\n display: flex;\n flex-direction: column;\n padding: 10px;\n gap: 10px;\n background: var(--background);\n}\n\nxin-form::part(header),\nxin-form::part(footer) {\n background: #eee;\n justify-content: center;\n padding: 10px;\n}\n\nxin-form h3 {\n margin: 0;\n}\n\nxin-form label {\n display: grid;\n grid-template-columns: 120px 1fr;\n}\n```\n\n## `postNotification(spec: NotificationSpec | string)`\n\nThis is simply a wrapper for `XinNotification.post()`.\n*/\n\nimport { Component, elements, vars, ElementCreator } from 'tosijs'\nimport { icons } from './icons'\nimport { findHighestZ } from './track-drag'\nconst { div, button } = elements\n\ninterface NotificationSpec {\n message: string\n type?: 'success' | 'info' | 'log' | 'warn' | 'error' | 'progress' // default 'info'\n icon?: SVGElement | string\n duration?: number\n progress?: () => number\n close?: () => void\n color?: string\n}\n\nconst COLOR_MAP = {\n error: 'red',\n warn: 'orange',\n info: 'royalblue',\n log: 'gray',\n success: 'green',\n progress: 'royalblue',\n}\n\ntype callback = () => void\n\nexport class XinNotification extends Component {\n private static singleton?: XinNotification\n\n static styleSpec = {\n ':host': {\n _notificationSpacing: 8,\n _notificationWidth: 360,\n _notificationPadding: `${vars.notificationSpacing} ${vars.notificationSpacing50} ${vars.notificationSpacing} ${vars.notificationSpacing200}`,\n _notificationBg: '#fafafa',\n _notificationAccentColor: '#aaa',\n _notificationTextColor: '#444',\n _notificationIconSize: vars.notificationSpacing300,\n _notificationButtonSize: 48,\n _notificationBorderWidth: '3px 0 0',\n _notificationBorderRadius: vars.notificationSpacing50,\n position: 'fixed',\n left: 0,\n right: 0,\n bottom: 0,\n paddingBottom: vars.notificationSpacing,\n width: vars.notificationWidth,\n display: 'flex',\n flexDirection: 'column-reverse',\n margin: '0 auto',\n gap: vars.notificationSpacing,\n maxHeight: '50vh',\n overflow: 'hidden auto',\n boxShadow: 'none !important',\n },\n ':host *': {\n color: vars.notificationTextColor,\n },\n ':host .note': {\n display: 'grid',\n background: vars.notificationBg,\n padding: vars.notificationPadding,\n gridTemplateColumns: `${vars.notificationIconSize} 1fr ${vars.notificationButtonSize}`,\n gap: vars.notificationSpacing,\n alignItems: 'center',\n borderRadius: vars.notificationBorderRadius,\n boxShadow: `0 2px 8px #0006, inset 0 0 0 2px ${vars.notificationAccentColor}`,\n borderColor: vars.notificationAccentColor,\n borderWidth: vars.notificationBorderWidth,\n borderStyle: 'solid',\n transition: '0.5s ease-in',\n transitionProperty: 'margin, opacity',\n zIndex: 1,\n },\n ':host .note .icon': {\n stroke: vars.notificationAccentColor,\n },\n ':host .note button': {\n display: 'flex',\n lineHeight: vars.notificationButtonSize,\n padding: 0,\n margin: 0,\n height: vars.notificationButtonSize,\n width: vars.notificationButtonSize,\n background: 'transparent',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: 'none',\n border: 'none',\n position: 'relative',\n },\n ':host .note button:hover svg': {\n stroke: vars.notificationAccentColor,\n },\n ':host .note button:active svg': {\n borderRadius: 99,\n stroke: vars.notificationBg,\n background: vars.notificationAccentColor,\n padding: vars.spacing50,\n },\n ':host .note svg': {\n height: vars.notificationIconSize,\n width: vars.notificationIconSize,\n pointerEvents: 'none',\n },\n ':host .message': {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: vars.notificationSpacing,\n },\n ':host .note.closing': {\n opacity: 0,\n zIndex: 0,\n },\n }\n\n static removeNote(note: HTMLElement) {\n note.classList.add('closing')\n note.style.marginBottom = -note.offsetHeight + 'px'\n const remove = () => {\n note.remove()\n }\n note.addEventListener('transitionend', remove)\n setTimeout(remove, 1000)\n }\n\n static post(spec: NotificationSpec | string): callback {\n const { message, duration, type, close, progress, icon, color } =\n Object.assign(\n { type: 'info', duration: -1 },\n typeof spec === 'string' ? { message: spec } : spec\n )\n\n if (!this.singleton) {\n this.singleton = xinNotification()\n }\n\n const singleton = this.singleton as HTMLElement\n\n document.body.append(singleton)\n singleton.style.zIndex = String(findHighestZ() + 1)\n\n const _notificationAccentColor = color || COLOR_MAP[type]\n const progressBar =\n progress || type === 'progress' ? elements.progress() : {}\n const closeCallback = () => {\n if (close) {\n close()\n }\n XinNotification.removeNote(note)\n }\n const iconElement: SVGElement =\n icon instanceof SVGElement\n ? icon\n : icon\n ? icons[icon]({ class: 'icon' })\n : icons.info({ class: 'icon' })\n const note = div(\n {\n class: `note ${type}`,\n style: {\n _notificationAccentColor,\n },\n },\n iconElement,\n div({ class: 'message' }, div(message), progressBar),\n button(\n {\n class: 'close',\n title: 'close',\n // we can't use onClick because this lives inside a shadowDOM\n apply(elt) {\n elt.addEventListener('click', closeCallback)\n },\n },\n icons.x()\n )\n )\n\n singleton.shadowRoot!.append(note)\n\n if (\n progressBar instanceof HTMLProgressElement &&\n progress instanceof Function\n ) {\n progressBar.setAttribute('max', String(100))\n progressBar.value = progress()\n const interval = setInterval(() => {\n if (!singleton.shadowRoot!.contains(note)) {\n clearInterval(interval)\n return\n }\n const percentage = progress()\n progressBar.value = percentage\n if (percentage >= 100) {\n XinNotification.removeNote(note)\n }\n }, 1000)\n }\n\n if (duration > 0) {\n setTimeout(() => {\n XinNotification.removeNote(note)\n }, duration * 1000)\n }\n\n note.scrollIntoView()\n\n return closeCallback\n }\n\n content = null\n}\n\nexport const xinNotification = XinNotification.elementCreator({\n tag: 'xin-notification',\n}) as ElementCreator<XinNotification>\n\nexport function postNotification(spec: NotificationSpec | string): callback {\n return XinNotification.post(spec)\n}\n",
|
|
37
37
|
"/*#\n# password strength\n\nJust wrap it a `<xin-password-strength>` element around an `<input>`\nand it will gauge its content strength as a password. It will also\nlet you **securely verify** that the password hasn't been breached.\n\n```js\nimport { xinLocalized, localize } from 'tosijs-ui'\n\nconst toggle = preview.querySelector('.toggle')\nconst icon = preview.querySelector('xin-icon')\nconst input = preview.querySelector('input')\nconst breach = preview.querySelector('.breach')\nconst output = preview.querySelector('.output')\nconst passwordStrength = preview.querySelector('xin-password-strength')\n\n// Localization Example\npasswordStrength.append(xinLocalized({\n refString: 'Yes',\n localeChanged () {\n this.parentElement.strengthDescriptions = [\n 'unacceptable',\n 'very weak',\n 'weak',\n 'moderate',\n 'strong',\n 'very strong',\n ].map(localize)\n this.parentElement.queueRender()\n }\n}))\n\ntoggle.addEventListener('click', () => {\n if (icon.icon === 'eye') {\n input.type = 'text'\n icon.icon = 'eyeOff'\n } else {\n input.type = 'password'\n icon.icon = 'eye'\n }\n})\n\nbreach.addEventListener('click', async () => {\n preview.querySelector('xin-password-strength').isBreached().then(isBreached => {\n output.textContent =\n isBreached\n ? 'This password has been breached, look at console for details'\n : 'Seems OK'\n output.classList.toggle('breached', isBreached)\n })\n})\n```\n```html\n<xin-password-strength>\n <input class=\"password\" type=\"password\">\n <button class=\"toggle\">\n <xin-icon icon=\"eye\"></xin-icon>\n </button>\n</xin-password-strength>\n\n<br><br>\n<button class=\"breach\">\n <xin-localized>Check if breached</xin-localized>\n</button>\n<div class=\"output\"></div>\n```\n```css\ninput.password {\n box-shadow: inset 0 0 0 2px var(--indicator-color);\n}\n\n.breached {\n color: white;\n background: red;\n}\n```\n\n## Algorithm\n\nThe password is assessed to have a strength based on:\n\n- **length** one point for at least `goodLength` characters long.\n- **[a-z]** one point for containing a lowercase letter\n- **[A-Z]** one point for containing an uppercase letter\n- **[0-9]** one point for containing a numeric character\n- **^[a-zA-Z0-9]]** one point for containing some other kind of character\n\nA password smaller than `minLength` is an automatic `0`.\n\n## Attributes\n\n- `minLength` defaults to `8`\n- `goodLength` defaults to `12`\n- `indicatorColors` six HTML colors, separated by commas, defaults to `'#f00,#f40,#f80,#ef0,#8f0,#0d4'`\n- `descriptionColors` six HTML colors, sepeated by commans, defaults to `'#000,#000,#000,#000,#000,#fff'`\n\n## Properties\n\n- `value`, `strength` is a number from 0 to 5\n- `issues` is a structure which you can use to generate feedback\n\n```\n<xin-password-strength>.issues = {\n tooShort: boolean,\n short: boolean,\n noUpper: boolean,\n noLower: boolean,\n noNumber: boolean,\n noSpecial: boolean,\n}\n```\n\n## Customizing / Localizing Strings\n\nThe following properties control the feedback generated.\n\n```\nissueDescriptions = {\n tooShort: 'too short',\n short: 'short',\n noUpper: 'no upper case',\n noLower: 'no lower case',\n noNumber: 'no digits',\n noSpecial: 'no unusual characters',\n}\n```\n\n```\nstrengthDescriptions = [\n 'unacceptable',\n 'very weak',\n 'weak',\n 'moderate',\n 'strong',\n 'very strong',\n]\n```\n\n## `isBreached()`\n\n`<xin-password-meter>` also provides an `isBreached(): Promise<boolean>` method\nwhich uses [weakpass.com's API](https://weakpass.com/) to tell you if the password has been\nbreached.\n\n> Note that `isBreached` does not send the plain-text password anywhere. It uses **SHA-1**\nto hash the password and then sends that for lookup.\n\n## Utility Functions\n\nTwo functions used internally for querying [Weakpass,com](https://weakpass.com/) are\nprovided in case they're useful on their own.\n\n`isBreached(password: striing): Promise<boolean>` will return `true` if the password is\nfound in Weakpass's database (and spit out extra info to the console).\n\n`digest(s: string, method=\"sha-1\"): Promise<string>` is just a nice wrapper for `crypto.digest`.\n*/\n\nimport { Component, elements, vars, varDefault } from 'tosijs'\n\nexport const digest = async (s: string, method = 'SHA-1'): Promise<string> => {\n // Convert password to an ArrayBuffer\n const encoder = new TextEncoder()\n const data = encoder.encode(s)\n\n // Hash the password using SHA-1\n const hashBuffer = await crypto.subtle.digest(method, data)\n\n // Convert the hash to a hexadecimal string\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n const hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n\n return hashHex\n}\n\nexport const isBreached = async (password: string): Promise<boolean> => {\n const hashHex = await digest(password)\n\n const response = await fetch(`https://weakpass.com/api/v1/search/${hashHex}`)\n if (response.ok) {\n const result = await response.json()\n console.log('password found in weakpass database', result)\n }\n\n return response.status !== 404\n}\n\nconst { span, xinSlot } = elements\nexport class XinPasswordStrength extends Component {\n minLength = 8\n goodLength = 12\n indicatorColors = '#f00,#f40,#f80,#ef0,#8f0,#0a2'\n descriptionColors = '#000,#000,#000,#000,#000,#fff'\n issues = {\n tooShort: true,\n short: true,\n noUpper: true,\n noLower: true,\n noNumber: true,\n noSpecial: true,\n }\n issueDescriptions = {\n tooShort: 'too short',\n short: 'short',\n noUpper: 'no upper case',\n noLower: 'no lower case',\n noNumber: 'no digits',\n noSpecial: 'no unusual characters',\n }\n value = 0\n strengthDescriptions = [\n 'unacceptable',\n 'very weak',\n 'weak',\n 'moderate',\n 'strong',\n 'very strong',\n ]\n\n constructor() {\n super()\n\n this.initAttributes('minLength', 'goodLength', 'indicatorColors')\n }\n\n strength(password: string): number {\n this.issues = {\n tooShort: password.length < this.minLength,\n short: password.length < this.goodLength,\n noUpper: !password.match(/[A-Z]/),\n noLower: !password.match(/[a-z]/),\n noNumber: !password.match(/[0-9]/),\n noSpecial: !password.match(/[^a-zA-Z0-9]/),\n }\n\n return this.issues.tooShort\n ? 0\n : Object.values(this.issues).filter((v) => !v).length - 1\n }\n\n async isBreached(): Promise<boolean> {\n const password = this.querySelector('input')?.value\n\n if (!password || typeof password !== 'string') {\n return true\n }\n\n return await isBreached(password)\n }\n\n updateIndicator = (password: string) => {\n const { level, description } = this.parts as {\n level: HTMLSpanElement\n description: HTMLSpanElement\n }\n const colors = this.indicatorColors.split(',')\n const descriptionColors = this.descriptionColors.split(',')\n const strength = this.strength(password)\n if (this.value !== strength) {\n this.value = strength\n this.dispatchEvent(new Event('change'))\n }\n level.style.width = `${(strength + 1) * 16.67}%`\n this.style.setProperty('--indicator-color', colors[strength])\n this.style.setProperty('--description-color', descriptionColors[strength])\n description.textContent = this.strengthDescriptions[strength]\n }\n\n update = (event: Event) => {\n const input = (event.target as HTMLElement).closest('input')\n\n this.updateIndicator(input?.value || '')\n }\n\n content = () => [\n xinSlot({ onInput: this.update }),\n span(\n { part: 'meter' },\n span({ part: 'level' }),\n span({ part: 'description' })\n ),\n ]\n\n render() {\n super.render()\n\n const input = this.querySelector('input') as HTMLInputElement\n this.updateIndicator(input?.value)\n }\n}\n\nexport const xinPasswordStrength = XinPasswordStrength.elementCreator({\n tag: 'xin-password-strength',\n styleSpec: {\n ':host': {\n display: 'inline-flex',\n flexDirection: 'column',\n gap: vars.spacing50,\n position: 'relative',\n },\n ':host xin-slot': {\n display: 'flex',\n },\n ':host [part=\"meter\"]': {\n display: 'block',\n position: 'relative',\n height: varDefault.meterHeight('24px'),\n background: varDefault.indicatorBg('white'),\n borderRadius: varDefault.meterRadius('4px'),\n boxShadow: varDefault.meterShadow(\n `inset 0 0 0 2px ${vars.indicatorColor}`\n ),\n },\n ':host [part=\"level\"]': {\n height: varDefault.levelHeight('20px'),\n content: '\" \"',\n display: 'inline-block',\n width: 0,\n transition: '0.15s ease-out',\n background: vars.indicatorColor,\n margin: varDefault.levelMargin('2px'),\n borderRadius: varDefault.levelRadius('2px'),\n },\n ':host [part=\"description\"]': {\n position: 'absolute',\n inset: '0',\n color: vars.descriptionColor,\n height: varDefault.meterHeight('24px'),\n lineHeight: varDefault.meterHeight('24px'),\n textAlign: 'center',\n },\n },\n})\n",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"export const version = '1.0.9'",
|
|
46
46
|
"import * as xinjsui from './index'\nimport * as xinjs from 'tosijs'\n\nconsole.log('foobar')\nObject.assign(globalThis, { xinjs, xinjsui })\n"
|
|
47
47
|
],
|
|
48
|
-
"mappings": "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",
|
|
49
|
-
"debugId": "
|
|
48
|
+
"mappings": "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",
|
|
49
|
+
"debugId": "9561FC52DE437A3564756E2164756E21",
|
|
50
50
|
"names": []
|
|
51
51
|
}
|