tosijs-ui 1.5.21 → 1.5.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data-table.d.ts +1 -1
- package/dist/data-table.js +3 -2
- package/dist/icon-data.js +258 -258
- package/dist/iife.js +16 -16
- package/dist/iife.js.map +8 -8
- package/dist/menu.js +2 -2
- package/dist/segmented.d.ts +3 -2
- package/dist/segmented.js +18 -2
- package/dist/tab-selector.d.ts +1 -1
- package/dist/tab-selector.js +5 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
package/dist/iife.js.map
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"function n(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(n);let M={};for(let L in E){let f=E[L];if(E!=null&&typeof E===\"object\")M[L]=n(f);else M[L]=f}return M}var wE=\"-xin-data\",p=`.${wE}`,vE=\"-xin-event\",uE=`.${vE}`,P=Symbol.for(\"xin-path\"),r=Symbol.for(\"xin-value\"),IM=\"xinObserve\",BM=\"xinBind\",_M=\"xinOn\",jE=Symbol.for(\"tosi-accessor\"),ME=Symbol.for(\"tosi-take\"),QE=Symbol(\"list-binding\"),o=Symbol(\"list-instance\"),cE=new Map;function SM(E,M){let L=cE.get(E);if(L===void 0)L=new Set,cE.set(E,L);L.add(M)}function NM(E){return cE.get(E)}var kM=new Set;function R(E,M){if(!kM.has(E))console.warn(M),kM.add(E)}function gE(E,M){let L=!1;return(...f)=>{if(!L)console.warn(M),L=!0;return E(...f)}}var w=(E)=>{return E&&E[P]||void 0};function C(E){if(typeof E===\"object\"&&E!==null){let M=E[r];return M!==void 0?M:E}return E}function VL(E){return E!=null?E[jE]:void 0}function TL(E,M){if(w(E)===void 0)throw Error(\"tosiSetValue requires a xin or boxed proxy\");E[r]=M}var RL=gE(w,\"xinPath is deprecated. Use tosiPath instead.\"),kL=gE(C,\"xinValue is deprecated. Use tosiValue instead.\"),EE=new WeakMap,c=new WeakMap;var LE=(E)=>{let M=E.cloneNode();if(M instanceof Element){let L=c.get(E),f=EE.get(E);if(L!=null)c.set(M,n(L));if(f!=null)EE.set(M,n(f))}for(let L of Array.from(E instanceof HTMLTemplateElement?E.content.childNodes:E.childNodes))if(L instanceof Element||L instanceof DocumentFragment)M.appendChild(LE(L));else M.appendChild(L.cloneNode());return M};var fE={debug:!1,perf:!1};var IL=(E)=>{try{return JSON.stringify(E)}catch(M){return\"{has circular references}\"}},dE=(...E)=>Error(E.map(IL).join(\" \"));var BL=()=>new Date(parseInt(\"1000000000\",36)+Date.now()).valueOf().toString(36).slice(1),_L=0,SL=()=>(parseInt(\"10000\",36)+ ++_L).toString(36).slice(-5),iE=()=>BL()+SL(),hE=Symbol(\"delete\"),PM=Symbol(\"new-object\"),nE=Symbol(\"automatic-index\");function mM(E){if(E===\"\")return[];if(Array.isArray(E))return E;else{let M=[];while(E.length>0){let L=E.search(/\\[[^\\]]+\\]/);if(L===-1){M.push(E.split(\".\"));break}else{let f=E.slice(0,L);if(E=E.slice(L),f!==\"\")M.push(f.split(\".\"));if(L=E.indexOf(\"]\")+1,M.push(E.slice(1,L-1)),E.slice(L,L+1)===\".\")L+=1;E=E.slice(L)}}return M}}var h=new WeakMap;function bM(E,M){if(h.get(E)===void 0)h.set(E,{});if(h.get(E)[M]===void 0)h.get(E)[M]={};let L=h.get(E)[M];if(M===\"_auto_\")E.forEach((f,H)=>{if(f[nE]===void 0)f[nE]=iE();L[f[nE]+\"\"]=H});else E.forEach((f,H)=>{L[j(f,M)+\"\"]=H});return L}function NL(E,M){if(h.get(E)===void 0||h.get(E)[M]===void 0)return bM(E,M);else return h.get(E)[M]}function xL(E,M,L){L=L+\"\";let f=NL(E,M)[L];if(f===void 0||j(E[f],M)+\"\"!==L)f=bM(E,M)[L];return f}function yL(E,M,L){if(E[M]===void 0&&L!==void 0)E[M]=L;return E[M]}function cM(E,M,L,f){let H=M!==\"\"?xL(E,M,L):L;if(f===hE)return E.splice(H,1),h.delete(E),Symbol(\"deleted\");else if(f===PM){if(M===\"\"&&E[H]===void 0)E[H]={}}else if(f!==void 0)if(H!==void 0)E[H]=f;else if(M!==\"\"&&j(f,M)+\"\"===L+\"\")E.push(f),H=E.length-1;else throw Error(`byIdPath insert failed at [${M}=${L}]`);return E[H]}function xM(E){if(!Array.isArray(E))throw dE(\"setByPath failed: expected array, found\",E)}function yM(E){if(E==null||!(E instanceof Object))throw dE(\"setByPath failed: expected Object, found\",E)}function j(E,M){let L=mM(M),f=E,H,$,J,Q;for(H=0,$=L.length;f!==void 0&&H<$;H++){let Z=L[H];if(Array.isArray(Z))for(J=0,Q=Z.length;f!==void 0&&J<Q;J++){let Y=Z[J];f=f[Y]}else if(f.length===0){if(f=f[Number(Z.slice(1))],Z[0]!==\"=\")return}else if(Z.includes(\"=\")){let[Y,...z]=Z.split(\"=\");f=cM(f,Y,z.join(\"=\"))}else J=parseInt(Z,10),f=f[J]}return f}function l(E,M,L){let f=E;if(M===\"\")throw Error(\"setByPath cannot be used to set the root object\");let H=mM(M);while(f!=null&&H.length>0){let $=H.shift();if(typeof $===\"string\"){let J=$.indexOf(\"=\");if(J>-1){if(J===0)yM(f);else xM(f);let Q=$.slice(0,J),Z=$.slice(J+1);if(f=cM(f,Q,Z,H.length>0?PM:L),H.length===0)return!0}else{xM(f);let Q=parseInt($,10);if(H.length>0)f=f[Q];else{if(L!==hE){if(f[Q]===L)return!1;f[Q]=L}else f.splice(Q,1);return!0}}}else if(Array.isArray($)&&$.length>0){yM(f);while($.length>0){let J=$.shift();if($.length>0||H.length>0)f=yL(f,J,$.length>0?{}:[]);else{if(L!==hE){if(f[J]===L)return!1;f[J]=L}else{if(!Object.prototype.hasOwnProperty.call(f,J))return!1;delete f[J]}return!0}}}else throw Error(`setByPath failed, bad path ${M}`)}throw Error(`setByPath(${E}, ${M}, ${L}) failed`)}var V={},sE=null,vM=(E)=>{sE=E},GE=()=>{if(sE===null)throw Error(\"xin proxy not initialized\");return sE},pE=null,rE=null,uM=(E,M)=>{pE=E,rE=M},gM=()=>{if(pE===null)throw Error(\"bind not initialized\");return pE},dM=()=>{if(rE===null)throw Error(\"on not initialized\");return rE};var nM=Symbol(\"observer should be removed\"),VE=[],YE=[],oE=!1,lE,aE;function PL(E,M,L,f){let H=NM(E);if(H===void 0)return[];let $=[];for(let J of H){let Q=j(L,J);if(Q!==void 0)$.push(`${E}[${J}=${Q}]${f}`)}return $}class hM{description;test;callback;constructor(E,M){let L=typeof M===\"string\"?`\"${M}\"`:`function ${M.name}`,f;if(typeof E===\"string\")this.test=(H)=>typeof H===\"string\"&&H!==\"\"&&(E.startsWith(H)||H.startsWith(E)),f=`test = \"${E}\"`;else if(E instanceof RegExp)this.test=E.test.bind(E),f=`test = \"${E.toString()}\"`;else if(E instanceof Function)this.test=E,f=`test = function ${E.name}`;else throw Error(\"expect listener test to be a string, RegExp, or test function\");if(this.description=`${f}, ${L}`,typeof M===\"function\")this.callback=M;else throw Error(\"expect callback to be a path or function\");VE.push(this)}}var zE=async()=>{if(lE===void 0)return;await lE},mL=()=>{if(fE.perf)console.time(\"xin async update\");let E=Array.from(YE);YE.length=0,oE=!1;for(let M of E)VE.filter((L)=>{let f;try{f=L.test(M)}catch(H){throw Error(`Listener ${L.description} threw \"${H}\" at \"${M}\"`)}if(f===nM)return HE(L),!1;return f}).forEach((L)=>{let f;try{f=L.callback(M)}catch(H){console.error(`Listener ${L.description} threw \"${H}\" handling \"${M}\"`)}if(f===nM)HE(L)});if(typeof aE===\"function\")aE();if(fE.perf)console.timeEnd(\"xin async update\")},B=(E)=>{let M=typeof E===\"string\"?E:w(E);if(M===void 0)throw console.error(\"touch was called on an invalid target\",E),Error(\"touch was called on an invalid target\");if(oE===!1)lE=new Promise((f)=>{aE=f}),oE=setTimeout(mL);if(YE.find((f)=>M.startsWith(f))==null)YE.push(M);let L=M.match(/^(.+)\\[(\\d+)\\](.*)$/);if(L!==null){let[,f,H,$]=L,J=parseInt(H,10),Q=j(V,`${f}[${J}]`);if(Q!=null){let Z=PL(f,J,Q,$);for(let Y of Z)if(YE.find((z)=>Y.startsWith(z))==null)YE.push(Y)}}},i=(E,M)=>{return new hM(E,M)},HE=(E)=>{let M=VE.indexOf(E);if(M>-1)VE.splice(M,1);else throw Error(\"unobserve failed, listener not found\")};var tE=(E,M)=>{let L=new Event(M);E.dispatchEvent(L)},sM=(E)=>{if(E instanceof HTMLInputElement)return E.type;else if(E instanceof HTMLSelectElement&&E.hasAttribute(\"multiple\"))return\"multi-select\";else return\"other\"},pM=(E,M)=>{switch(sM(E)){case\"radio\":E.checked=E.value===M;break;case\"checkbox\":E.checked=!!M;break;case\"date\":E.valueAsDate=new Date(M);break;case\"multi-select\":for(let L of Array.from(E.querySelectorAll(\"option\")))L.selected=M[L.value];break;default:E.value=M}},rM=(E)=>{switch(sM(E)){case\"radio\":{let M=E.parentElement?.querySelector(`[name=\"${E.name}\"]:checked`);return M!=null?M.value:null}case\"checkbox\":return E.checked;case\"date\":return E.valueAsDate?.toISOString();case\"multi-select\":return Array.from(E.querySelectorAll(\"option\")).reduce((M,L)=>{return M[L.value]=L.selected,M},{});default:return E.value}},{ResizeObserver:iM}=globalThis,WE=iM!=null?new iM((E)=>{for(let M of E){let L=M.target;tE(L,\"resize\")}}):{observe(){},unobserve(){}},eE=(E,M,L=!0)=>{if(E!=null&&M!=null)if(typeof M===\"string\")E.textContent=M;else if(Array.isArray(M))M.forEach((f)=>{E.append(f instanceof Node&&L?LE(f):f)});else if(M instanceof Node)E.append(L?LE(M):M);else throw Error(\"expect text content or document node\")};var UE=(E,M=250)=>{let L;return(...f)=>{if(L!==void 0)clearTimeout(L);L=setTimeout(()=>{E(...f)},M)}},FE=(E,M=250)=>{let L,f=Date.now()-M,H=!1;return(...$)=>{if(clearTimeout(L),L=setTimeout(()=>{E(...$),f=Date.now()},M),!H&&Date.now()-f>=M){H=!0;try{E(...$),f=Date.now()}finally{H=!1}}}};var TE={value:{toDOM:pM,fromDOM(E){return rM(E)}},text:{toDOM(E,M){E.textContent=M}},enabled:{toDOM(E,M){E.disabled=!M}},disabled:{toDOM(E,M){E.disabled=Boolean(M)}},list:{toDOM(E,M,L){DE(E,M,L).update(M)}}};function x(E){return E.replace(/[A-Z]/g,(M)=>{return`-${M.toLocaleLowerCase()}`})}function EM(E){return E.replace(/-([a-z])/g,(M,L)=>{return L.toLocaleUpperCase()})}var bL=180/Math.PI,cL=Math.PI/180;function v(E,M,L){return L<E?NaN:M<E?E:M>L?L:M}function s(E,M,L,f=!0){if(f)L=v(0,L,1);return L*(M-E)+E}var vL={RADIANS_TO_DEGREES:bL,DEGREES_TO_RADIANS:cL,clamp:v,lerp:s};function MM(E,M=document.body){let L=getComputedStyle(M);if(E.endsWith(\")\")&&E.startsWith(\"var(\"))E=E.slice(4,-1);return L.getPropertyValue(E).trim()}var uL=(E,M,L)=>{return(0.299*E+0.587*M+0.114*L)/255},JE=(E)=>(\"00\"+Math.round(Number(E)).toString(16)).slice(-2);class oM{h;s;l;constructor(E,M,L){E/=255,M/=255,L/=255;let f=Math.max(E,M,L),H=f-Math.min(E,M,L),$=H!==0?f===E?(M-L)/H:f===M?2+(L-E)/H:4+(E-M)/H:0;this.h=60*$<0?60*$+360:60*$,this.s=H!==0?f<=0.5?H/(2*f-H):H/(2-(2*f-H)):0,this.l=(2*f-H)/2}}var a=globalThis.document!==void 0?globalThis.document.createElement(\"span\"):void 0;if(a)a.style.display=\"none\";class X{r;g;b;a;static fromVar(E,M=document.body){return X.fromCss(MM(E,M))}static fromCss(E){let M=E.match(/^#([0-9a-fA-F]+)$/);if(M){let Z=M[1],Y=(z,F)=>parseInt(Z.slice(z,z+F),16);if(Z.length===3||Z.length===4){let z=(F)=>Y(F,1)*17;return new X(z(0),z(1),z(2),Z.length===4?z(3)/255:1)}if(Z.length===6||Z.length===8)return new X(Y(0,2),Y(2,2),Y(4,2),Z.length===8?Y(6,2)/255:1)}let L=E;if(a instanceof HTMLSpanElement)a.style.color=\"black\",a.style.color=E,document.body.appendChild(a),L=getComputedStyle(a).color,a.remove();let[f,H,$,J]=L.match(/[\\d.]+/g)||[\"0\",\"0\",\"0\",\"0\"],Q=L.startsWith(\"color(srgb\")?255:1;return new X(Number(f)*Q,Number(H)*Q,Number($)*Q,J==null?1:Number(J))}static fromHsl(E,M,L,f=1){let H,$,J;if(M===0)H=$=J=L;else{let Z=(G,T,W)=>{if(W<0)W+=1;if(W>1)W-=1;if(W<0.16666666666666666)return G+(T-G)*6*W;if(W<0.5)return T;if(W<0.6666666666666666)return G+(T-G)*(0.6666666666666666-W)*6;return G},Y=L<0.5?L*(1+M):L+M-L*M,z=2*L-Y,F=(E%360+360)%360/360;H=Z(z,Y,F+0.3333333333333333),$=Z(z,Y,F),J=Z(z,Y,F-0.3333333333333333)}let Q=new X(H*255,$*255,J*255,f);return Q.hslCached={h:(E%360+360)%360,s:M,l:L},Q}static black=new X(0,0,0);static white=new X(255,255,255);constructor(E,M,L,f=1){this.r=v(0,E,255),this.g=v(0,M,255),this.b=v(0,L,255),this.a=v(0,f,1)}get inverse(){return new X(255-this.r,255-this.g,255-this.b,this.a)}get inverseLuminance(){let{h:E,s:M,l:L}=this._hsl;return X.fromHsl(E,M,1-L,this.a)}get opaque(){return this.a===1?this:new X(this.r,this.g,this.b,1)}contrasting(E=1){return this.opaque.blend(this.brightness>0.5?X.black:X.white,E)}get rgb(){let{r:E,g:M,b:L}=this;return`rgb(${E.toFixed(0)},${M.toFixed(0)},${L.toFixed(0)})`}get rgba(){let{r:E,g:M,b:L,a:f}=this;return`rgba(${E.toFixed(0)},${M.toFixed(0)},${L.toFixed(0)},${f.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 oM(this.r,this.g,this.b);return this.hslCached}get hsl(){let{h:E,s:M,l:L}=this._hsl;return`hsl(${E.toFixed(0)}deg ${(M*100).toFixed(0)}% ${(L*100).toFixed(0)}%)`}get hsla(){let{h:E,s:M,l:L}=this._hsl;return`hsl(${E.toFixed(0)}deg ${(M*100).toFixed(0)}% ${(L*100).toFixed(0)}% / ${(this.a*100).toFixed(0)}%)`}get mono(){let E=this.brightness*255;return new X(E,E,E)}get brightness(){return uL(this.r,this.g,this.b)}get html(){return this.toString()}toString(){return this.a===1?\"#\"+JE(this.r)+JE(this.g)+JE(this.b):\"#\"+JE(this.r)+JE(this.g)+JE(this.b)+JE(Math.floor(255*this.a))}brighten(E){let{h:M,s:L,l:f}=this._hsl,H=v(0,f+E*(1-f),1);return X.fromHsl(M,L,H,this.a)}darken(E){let{h:M,s:L,l:f}=this._hsl,H=v(0,f*(1-E),1);return X.fromHsl(M,L,H,this.a)}saturate(E){let{h:M,s:L,l:f}=this._hsl,H=v(0,L+E*(1-L),1);return X.fromHsl(M,H,f,this.a)}desaturate(E){let{h:M,s:L,l:f}=this._hsl,H=v(0,L*(1-E),1);return X.fromHsl(M,H,f,this.a)}rotate(E){let{h:M,s:L,l:f}=this._hsl,H=(M+360+E)%360;return X.fromHsl(H,L,f,this.a)}opacity(E){let{h:M,s:L,l:f}=this._hsl;return X.fromHsl(M,L,f,E)}swatch(){return console.log(`%c %c ${this.html}, ${this.rgba}`,`background-color: ${this.html}`,\"background-color: transparent\"),this}blend(E,M){return new X(s(this.r,E.r,M),s(this.g,E.g,M),s(this.b,E.b,M),s(this.a,E.a,M))}static blendHue(E,M,L){let f=(M-E+720)%360;if(f<180)return E+L*f;else return E-(360-f)*L}mix(E,M){let L=this._hsl,f=E._hsl;return X.fromHsl(L.s===0?f.h:f.s===0?L.h:X.blendHue(L.h,f.h,M),s(L.s,f.s,M),s(L.l,f.l,M),s(this.a,E.a,M))}colorMix(E,M){return X.fromCss(`color-mix(in hsl, ${this.html}, ${E.html} ${(M*100).toFixed(0)}%)`)}static computedColorStylesheet=null;static computedColors=new Map;static recomputeQueued=!1;static registerComputedColor(E,M,L,f){if(!X.computedColors.has(E))X.computedColors.set(E,{varName:M,scale:L,method:f}),X.queueRecompute()}static queueRecompute(){if(X.recomputeQueued)return;X.recomputeQueued=!0,queueMicrotask(()=>{X.recomputeQueued=!1,X.recomputeColors()})}static recomputeColors(){if(X.computedColors.size===0)return;let E=[];for(let[L,{varName:f,scale:H,method:$}]of X.computedColors)try{let J=X.fromVar(f),Q;switch($){case\"b\":Q=H>0?J.brighten(H):J.darken(-H);break;case\"s\":Q=H>0?J.saturate(H):J.desaturate(-H);break;case\"h\":Q=J.rotate(H*100);break;case\"o\":Q=J.opacity(H);break;default:continue}E.push(` ${L}: ${Q.rgba};`)}catch(J){}if(E.length===0)return;let M=`:root {\n${E.join(`\n`)}\n}`;if(X.computedColorStylesheet===null)X.computedColorStylesheet=document.createElement(\"style\"),X.computedColorStylesheet.id=\"tosijs-computed-colors\",document.head.append(X.computedColorStylesheet);X.computedColorStylesheet.textContent=M}}var RE=new Set,lM=!1;function gL(){if(!lM)lM=!0,RE.add(()=>X.queueRecompute())}function dL(E){return RE.add(E),()=>RE.delete(E)}function nL(){gL();for(let E of RE)E()}function hL(E,M){let L=C(M),f=I.style($E(L));f.id=E,document.head.append(f);let H=w(M);if(H!==void 0)KE(H,()=>{f.textContent=$E(C(M)),nL()})}var iL=/^(animation-iteration-count|column-count|flex(-grow|-shrink)?|font-weight|line-height|opacity|order|orphans|scale|tab-size|widows|z-index|zoom)$/,LM=(E,M)=>{if(typeof M===\"number\"&&!iL.test(E))M=`${M}px`;if(E.startsWith(\"_\"))if(E.startsWith(\"__\"))E=\"--\"+E.substring(2),M=`var(${E}-default, ${M})`;else E=\"--\"+E.substring(1);return{prop:E,value:String(M)}},sL=(E,M,L)=>{if(L===void 0)return\"\";if(L instanceof X)L=L.html;let f=LM(M,L);return`${E} ${f.prop}: ${f.value};`},aM=(E,M,L=\"\")=>{let f=x(E);if(typeof M===\"object\"&&!(M instanceof X)){let H=Object.keys(M).map(($)=>aM($,M[$],`${L} `)).join(`\n`);return`${L} ${E} {\n${H}\n${L} }`}else return sL(L,f,M)},$E=(E,M=\"\")=>{return Object.keys(E).map((f)=>{let H=E[f];if(typeof H===\"string\"){if(f===\"@import\")return`@import url('${H}');`;throw Error(\"top-level string value only allowed for `@import`\")}let $=Object.keys(H).map((J)=>aM(J,H[J])).join(`\n`);return`${M}${f} {\n${$}\n}`}).join(`\n\n`)},pL=(E)=>{R(\"initVars\",\"initVars is deprecated. Just use _ and __ prefixes instead.\");let M={};for(let L of Object.keys(E)){let f=E[L],H=x(L);M[`--${H}`]=typeof f===\"number\"&&f!==0?String(f)+\"px\":f}return M},rL=(E)=>{let M={};for(let L of Object.keys(E)){let f=E[L];if(f instanceof X)M[L]=f.inverseLuminance;else if(typeof f===\"string\"&&f.match(/^(#[0-9a-fA-F]{3}|rgba?\\(|hsla?\\()/))M[L]=X.fromCss(f).inverseLuminance}return M},kE=new Proxy({},{get(E,M){if(E[M]===void 0){let L=\"--\"+x(M);E[M]=(f)=>`var(${L}, ${f})`}return E[M]}}),fM=new Proxy({},{get(E,M){if(M===\"default\")return kE;if(E[M]==null){M=x(M);let[,L,,f,H,$]=M.match(/^([-\\w]*?)((_)?(\\d+)(\\w?))?$/)||[\"\",M],J=`--${L}`;if(H!=null){let Q=f==null?Number(H)/100:-Number(H)/100;switch($){case\"b\":case\"s\":case\"h\":case\"o\":{let Z=`--${M}`;X.registerComputedColor(Z,J,Q,$),E[M]=`var(${Z})`}break;case\"\":E[M]=`calc(var(${J}) * ${Q})`;break;default:throw console.error($),Error(`Unrecognized method ${$} for css variable ${J}`)}}else E[M]=`var(${J})`}return E[M]}});function tM(){let E=(M)=>typeof matchMedia<\"u\"&&matchMedia(M).matches;return{colorScheme:E(\"(prefers-color-scheme: dark)\")?\"dark\":\"light\",contrast:E(\"(prefers-contrast: more)\")?\"more\":E(\"(prefers-contrast: less)\")?\"less\":E(\"(prefers-contrast: custom)\")?\"custom\":\"no-preference\",reducedMotion:E(\"(prefers-reduced-motion: reduce)\"),reducedTransparency:E(\"(prefers-reduced-transparency: reduce)\"),forcedColors:E(\"(forced-colors: active)\")}}function oL(E){if(typeof matchMedia>\"u\")return()=>{};let M=[\"(prefers-color-scheme: dark)\",\"(prefers-contrast: more)\",\"(prefers-contrast: less)\",\"(prefers-contrast: custom)\",\"(prefers-reduced-motion: reduce)\",\"(prefers-reduced-transparency: reduce)\",\"(forced-colors: active)\"],L=()=>E(tM()),f=M.map((H)=>matchMedia(H));for(let H of f)H.addEventListener(\"change\",L);return()=>{for(let H of f)H.removeEventListener(\"change\",L)}}var eM=\"http://www.w3.org/1998/Math/MathML\",EL=\"http://www.w3.org/2000/svg\";var IE={},fL=(E,M,L)=>{let f=LM(x(M),L);if(f.prop.startsWith(\"--\"))E.style.setProperty(f.prop,f.value);else E.style[M]=f.value},lL=(E)=>{return{toDOM(M,L){fL(M,E,L)}}},HL=(E,M,L)=>{if(M===\"style\")if(typeof L===\"object\")for(let f of Object.keys(L))if(w(L[f]))u(E,L[f],lL(f));else fL(E,f,L[f]);else E.setAttribute(\"style\",L);else{let f=x(M),H=E.constructor.observedAttributes;if(H?.includes(M)||H?.includes(f))if(typeof L===\"boolean\")L?E.setAttribute(f,\"\"):E.removeAttribute(f);else E.setAttribute(f,L);else if(E[M]!==void 0){let{MathMLElement:J}=globalThis;if(E instanceof SVGElement||J!==void 0&&E instanceof J)E.setAttribute(M,L);else E[M]=L}else if(f===\"class\")L.split(\" \").forEach((J)=>{E.classList.add(J)});else if(E[f]!==void 0)E[f]=L;else if(typeof L===\"boolean\")L?E.setAttribute(f,\"\"):E.removeAttribute(f);else E.setAttribute(f,L)}},HM={},ML=(E)=>{if(!HM[E])HM[E]={toDOM(M,L){HL(M,E,L)}};return HM[E]},BE=(E,M,L)=>{if(M===\"apply\")L(E);else if(M.match(/^on[A-Z]/)!=null){let f=M.substring(2).toLowerCase();XE(E,f,L)}else if(M===\"bind\")if((typeof L.binding===\"string\"?TE[L.binding]:L.binding)!==void 0&&L.value!==void 0)u(E,L.value,L.binding instanceof Function?{toDOM:L.binding}:L.binding);else throw Error(\"bad binding\");else if(M.match(/^bind[A-Z]/)!=null){let f=M.substring(4,5).toLowerCase()+M.substring(5);if(f!==\"value\"){let $=f===\"text\"?\"textContent\":f===\"enabled\"?\"disabled (with .tosi.take(v => !v))\":f===\"disabled\"?\"disabled\":f===\"list\"?\".tosi.listBinding()\":null;if($)R(`bind${f}`,`bind${M.substring(4)} is deprecated. Use { ${$}: ... } instead.`)}let H=TE[f];if(H!==void 0)u(E,L,H);else throw Error(`${M} is not allowed, bindings.${f} is not defined`)}else if(L!=null&&typeof L===\"object\"&&L[ME])u(E,L,ML(M));else if(w(L))u(E,L,ML(M));else HL(E,M,L)},JM=(E,...M)=>{if(IE[E]===void 0){let[H,$]=E.split(\"|\");if($===void 0)IE[E]=globalThis.document.createElement(H);else IE[E]=globalThis.document.createElementNS($,H)}let L=IE[E].cloneNode(),f={};for(let H of M)if(H instanceof Element||H instanceof DocumentFragment||typeof H===\"string\"||typeof H===\"number\")if(L instanceof HTMLTemplateElement)L.content.append(H);else L.append(H);else if(w(H))L.append(I.span({bindText:H}));else Object.assign(f,H);for(let H of Object.keys(f)){let $=f[H];BE(L,H,$)}return L},$M=(...E)=>{let M=globalThis.document.createDocumentFragment();for(let L of E)M.append(L);return M},I=new Proxy({fragment:$M},{get(E,M){if(M=M.replace(/[A-Z]/g,(L)=>`-${L.toLocaleLowerCase()}`),E[M]===void 0)E[M]=(...L)=>JM(M,...L);return E[M]},set(){throw Error(\"You may not add new properties to elements\")}}),ZM=new Proxy({fragment:$M},{get(E,M){if(E[M]===void 0)E[M]=(...L)=>JM(`${M}|${EL}`,...L);return E[M]},set(){throw Error(\"You may not add new properties to elements\")}}),QM=new Proxy({fragment:$M},{get(E,M){if(E[M]===void 0)E[M]=(...L)=>JM(`${M}|${eM}`,...L);return E[M]},set(){throw Error(\"You may not add new properties to elements\")}}),LL=new WeakSet;function aL(E,M,L=\"part\"){let f=`[data-${L}]`;for(let H of Array.from(E.querySelectorAll(f))){if(LL.has(H))continue;let $=H.getAttribute(`data-${L}`);if($==null)continue;let J=M[$];if(J==null)continue;LL.add(H);for(let Q of Object.keys(J))BE(H,Q,J[Q])}}var tL=[\"sort\",\"splice\",\"copyWithin\",\"fill\",\"pop\",\"push\",\"reverse\",\"shift\",\"unshift\"],eL=!0,Ef=/^\\.?([^.[\\](),])+(\\.[^.[\\](),]+|\\[\\d+\\]|\\[[^=[\\](),]*=[^[\\]()]+\\])*$/,Mf=(E)=>Ef.test(E),t=(E=\"\",M=\"\")=>{if(E===\"\")return M;else if(M.match(/^\\d+$/)!==null||M.includes(\"=\"))return`${E}[${M}]`;else return`${E}.${M}`},_E={};function YM(E,M){if(E!==null&&(typeof E===\"object\"||typeof E===\"function\"))return E;return new Proxy(_E,e(M,!0))}var YL=()=>new Proxy({},e(\"^\",!0)),zM=(E)=>{let L=E(YL())?.path;if(!L?.startsWith(\"^.\"))throw Error(\"selector must return a property of the item\");return L.substring(2)},FM=(E,M,L)=>{for(let f=0;f<E.length;f++)if(`${j(E[f],M)}`===`${L}`)return f;return-1},Lf=(E,M)=>({listFind(L,f){if(L instanceof Element){let J=L;while(J&&!J[o]&&J.parentElement)J=J.parentElement;let Q=J?.[o];if(Q==null)return;let Z=M.indexOf(Q);return Z!==-1?_[E][Z]:void 0}let H=zM(L),$=FM(M,H,f);return $!==-1?_[E][$]:void 0},listUpdate(L,f){let H=zM(L),$=j(f,H),J=FM(M,H,$);if(J!==-1){let Q=_[E][J];for(let Z of Object.keys(f))Q[Z]=f[Z];return Q}return _[E].push(f),_[E][M.length-1]},listRemove(L,f){let H=zM(L),$=FM(M,H,f);if($===-1)return!1;return _[E].splice($,1),!0}}),JL=!1;function ff(){if(!JL)console.warn(\"xinValue, tosiValue, xinPath, tosiPath, etc. are deprecated. Use .tosi.value, .tosi.path, .tosi.observe(), etc. instead.\"),JL=!0}var $L=(E)=>{return E===_E},Hf=(E,M)=>({get(L,f){switch(f){case\"value\":return M===_E?j(V,E):M.valueOf?M.valueOf():M;case\"path\":return E;case\"touch\":return()=>B(E);case\"observe\":return(H)=>{let $=i(E,H);return()=>HE($)};case\"bind\":return(H,$,J)=>{gM()(H,E,$,J)};case\"on\":{let H=M===_E?j(V,E):M.valueOf?M.valueOf():M;return($,J)=>dM()($,J,H)}case\"binding\":return(H)=>({bind:{value:E,binding:H}});case\"listBinding\":return(H=({span:J})=>J({bindText:\"^\"}),$={})=>{let J=$.virtual?.itemsPerRow??1,Q=[];for(let Z=0;Z<J;Z++)Q.push(H(I,YL(),Z));return[{bindList:{value:E,...$}},I.template(...Q)]};case\"listFind\":case\"listUpdate\":case\"listRemove\":return Lf(E,Array.isArray(M)?M:[])[f];case\"take\":return(...H)=>{let $=H[H.length-1],Q=H.slice(0,-1).map((Z)=>typeof Z===\"string\"?Z:Z[P]);return{[ME]:!0,paths:[E,...Q],transform:$}}}return},set(L,f,H){if(f===\"value\"){if(H=C(H),C(k[E])!==H&&l(V,E,H))B(E);return!0}return!1}}),qE=(E,M)=>new Proxy(M,Hf(E,M)),ZL=new Set([\"path\",\"value\",\"touch\",\"observe\",\"bind\",\"on\",\"binding\",\"listBinding\",\"listFind\",\"listUpdate\",\"listRemove\",\"take\"]),QL=new Map([[P,\"path\"],[\"xinPath\",\"path\"],[\"tosiPath\",\"path\"],[r,\"value\"],[\"xinValue\",\"value\"],[\"tosiValue\",\"value\"],[IM,\"observe\"],[\"xinObserve\",\"observe\"],[\"tosiObserve\",\"observe\"],[_M,\"on\"],[\"xinOn\",\"on\"],[\"tosiOn\",\"on\"],[BM,\"bind\"],[\"xinBind\",\"bind\"],[\"tosiBind\",\"bind\"],[\"tosiBinding\",\"binding\"],[\"tosiListBinding\",\"listBinding\"]]),e=(E,M)=>({get(L,f){if((f===\"tosi\"||f===jE)&&M)return qE(E,L);if($L(L)){let Z=()=>j(V,E);switch(f){case\"valueOf\":case\"toJSON\":return()=>Z();case Symbol.toPrimitive:return(F)=>{let G=Z();if(F===\"number\")return Number(G);if(F===\"string\")return String(G);return G};case\"toString\":return()=>String(Z())}if(ZL.has(f))return qE(E,L)[f];let Y=QL.get(f);if(Y!==void 0)return ff(),qE(E,L)[Y];let z=Z();if(z!=null){let F=Object(z);if(f in F){let G=F[f];return typeof G===\"function\"?G.bind(F):G}}return}if(M&&(f===\"valueOf\"||f===\"toJSON\"))return()=>L.valueOf?L.valueOf():L;if(M&&!(f in L)&&ZL.has(f))return qE(E,L)[f];let H=QL.get(f);if(H!==void 0)return qE(E,L)[H];if(typeof f===\"symbol\")return L[f];let $=Object.getOwnPropertyDescriptor(L,f);if($&&!$.configurable&&!$.writable&&\"value\"in $)return $.value;let J=f,Q=J.match(/^([^.[]+)\\.(.+)$/)??J.match(/^([^\\]]+)(\\[.+)/)??J.match(/^(\\[[^\\]]+\\])\\.(.+)$/)??J.match(/^(\\[[^\\]]+\\])\\[(.+)$/);if(Q!==null){let[,Z,Y]=Q,z=t(E,Z),F=C(j(L,Z));return F!==null&&typeof F===\"object\"?new Proxy(F,e(z,M))[Y]:F}if(J.startsWith(\"[\")&&J.endsWith(\"]\"))J=J.substring(1,J.length-1);if(!Array.isArray(L)&&L[J]!==void 0||Array.isArray(L)&&J.includes(\"=\")){let Z;if(J.includes(\"=\")){let[Y,z]=J.split(\"=\");Z=L.find((F)=>`${j(F,Y)}`===z)}else Z=L[J];if(Z instanceof Object){Z=C(Z);let Y=t(E,J);return new Proxy(Z instanceof Function?Z.bind(L):Z,e(Y,M))}else return M?YM(Z,t(E,J)):Z}else if(Array.isArray(L)){let Z=L[J];return typeof Z===\"function\"?(...Y)=>{let z=Y.map((G)=>C(G)),F=Z.apply(L,z);if(tL.includes(J))B(E);if(F!=null&&typeof F===\"object\"){if(J===\"find\"||J===\"findLast\"||J===\"at\"){let G=L.indexOf(F);if(G!==-1)return new Proxy(F,e(t(E,String(G)),M))}}return F}:typeof Z===\"object\"?new Proxy(C(Z),e(t(E,J),M)):M?YM(Z,t(E,J)):Z}else{let Z=L[J];if(Z!==null&&typeof Z===\"object\")Z=C(Z);return M?YM(Z,t(E,J)):Z}},set(L,f,H){if(H=C(H),H!==null&&typeof H===\"object\")if(Array.isArray(H))for(let Z=0;Z<H.length;Z++)H[Z]=C(H[Z]);else for(let Z of Object.keys(H))H[Z]=C(H[Z]);let J=f===r||f===\"xinValue\"||f===\"tosiValue\"||f===\"value\"&&($L(L)||M)?E:t(E,f);if(eL&&!Mf(J))throw Error(`setting invalid path ${J}`);if(C(k[J])!==H&&l(V,J,H))B(J);return!0}}),KE=(E,M)=>{let L=typeof M===\"function\"?M:k[M];if(typeof L!==\"function\")throw Error(`observe expects a function or path to a function, ${M} is neither`);return i(E,L)},k=new Proxy(V,e(\"\",!1));vM(k);var _=new Proxy(V,e(\"\",!0));var Jf=16,$f=100;function zL(E,M){let L=Array.from(E.querySelectorAll(p));if(E.matches(p))L.unshift(E);for(let f of L){let H=c.get(f);for(let $ of H){if($.path.startsWith(\"^\"))$.path=`${M}${$.path.substring(1)}`;if($.binding.toDOM!=null)$.binding.toDOM(f,k[$.path])}}}class FL{boundElement;listTop;listBottom;isNamespaced;templates;options;itemToElement;idToElement=new Map;array=[];_filteredCache;_update;_previousSlice;static filterBoundObservers=new WeakMap;constructor(E,M,L={}){if(this.boundElement=E,this.itemToElement=new WeakMap,L.idPath!=null){let Q=w(M);if(Q!=null)SM(Q,L.idPath)}let f=L.virtual?.itemsPerRow??1,H=Array.from(E.children).find((Q)=>Q instanceof HTMLTemplateElement),$=null;if(H!=null){let Q=f;if(H.content.children.length<1||H.content.children.length!==Q)throw Error(`ListBinding expects a template with exactly ${Q} child element(s)`);this.templates=Array.from(H.content.children).map((Z)=>LE(Z)),$=H.nextElementSibling,H.remove()}else if(E.children.length===1)this.templates=[E.children[0]],this.templates[0].remove();else throw Error(\"ListBinding expects a <template> child or exactly one child element\");this.options=L;let J=E.namespaceURI;if(this.isNamespaced=J===\"http://www.w3.org/2000/svg\"||J===\"http://www.w3.org/1998/Math/MathML\",this.isNamespaced)this.listTop=null,this.listBottom=null;else if(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.listTop.setAttribute(\"role\",\"presentation\"),this.listBottom.setAttribute(\"role\",\"presentation\"),this.listTop.setAttribute(\"aria-hidden\",\"true\"),this.listBottom.setAttribute(\"aria-hidden\",\"true\"),$!=null)this.boundElement.insertBefore(this.listTop,$),this.boundElement.insertBefore(this.listBottom,$);else this.boundElement.append(this.listTop),this.boundElement.append(this.listBottom);if(f>1){this.boundElement.classList.add(\"tosi-virtual-grid\");let Q=this.boundElement.style;if(Q!=null)Q.setProperty(\"--tosi-columns\",String(f)),Q.display=Q.display||\"grid\",Q.gridTemplateColumns=Q.gridTemplateColumns||\"repeat(var(--tosi-columns), 1fr)\";if(this.listTop!=null&&this.listBottom!=null)this.listTop.style.gridColumn=\"1 / -1\",this.listBottom.style.gridColumn=\"1 / -1\"}if(L.virtual!=null&&!this.boundElement.getAttribute(\"role\"))this.boundElement.setAttribute(\"role\",f>1?\"grid\":\"list\");if(this.boundElement[QE]=this,this.isNamespaced&&L.virtual!=null)console.warn(\"ListBinding: virtual scrolling is not supported in SVG/MathML containers, ignoring virtual option\");if(!this.isNamespaced&&L.virtual!=null)if(WE.observe(this.boundElement),this._update=FE(()=>{this.update(this.array,!0)},Jf),this.boundElement.addEventListener(\"resize\",this._update),L.virtual.scrollContainer===\"window\")window.addEventListener(\"scroll\",this._update),window.addEventListener(\"resize\",this._update);else this.boundElement.addEventListener(\"scroll\",this._update)}filteredArray(){if(this._filteredCache!=null)return this._filteredCache;let{hiddenProp:E,visibleProp:M}=this.options,L=this.array;if(E!==void 0)L=L.filter((f)=>f[E]!==!0);if(M!==void 0)L=L.filter((f)=>f[M]===!0);if(this.options.filter&&this.needle!==void 0)L=this.options.filter(L,this.needle);return this._filteredCache=L,L}visibleSlice(){let{virtual:E}=this.options,M=this.filteredArray(),L=0,f=M.length-1,H=0,$=0;if(E!=null&&this.boundElement instanceof HTMLElement){let J=this.boundElement.offsetWidth,Q=E.scrollContainer===\"window\",Z,Y;if(Q){Z=window.innerHeight;let G=this.boundElement.getBoundingClientRect();Y=Math.max(0,-G.top)}else Z=this.boundElement.offsetHeight,Y=this.boundElement.scrollTop;let z=E.width!=null?Math.max(1,Math.floor(J/E.width)):E.visibleColumns??1,F=Math.ceil(M.length/z);if(E.minHeight!=null){let G=E.minHeight,T=Math.ceil(Z/G)+(E.rowChunkSize||1),W=z*T,U=F*G,K=Math.max(0,U-Z),S=K>0?Math.min(1,Math.max(0,Y/K)):0,y=Math.max(0,F-T+1),m=S*y,b=Math.floor(m);if(E.rowChunkSize)b-=b%E.rowChunkSize;return L=b*z,f=L+W-1,H=Y,$=Math.max(0,U-Y-Z),{items:M,firstItem:L,lastItem:f,topBuffer:H,bottomBuffer:$,interpolation:{t:S,position:m,scrollTop:Y,viewportHeight:Z,totalScrollHeight:U,rowHeight:E.height}}}else{let G=Math.ceil(Z/E.height)+(E.rowChunkSize||1),T=z*G,W=Math.floor(Y/E.height);if(W>F-G+1)W=Math.max(0,F-G+1);if(E.rowChunkSize)W-=W%E.rowChunkSize;L=W*z,f=L+T-1,H=W*E.height,$=Math.max((F-G)*E.height-H,0)}}return{items:M,firstItem:L,lastItem:f,topBuffer:H,bottomBuffer:$}}needle;filter=FE((E)=>{if(this.needle!==E)this.needle=E,this.update(this.array)},$f);update(E,M){if(E==null)E=[];if(this.array=E,!M)this._filteredCache=void 0;let{hiddenProp:L,visibleProp:f}=this.options,H=w(E),$=this.visibleSlice();if(this.boundElement.classList.toggle(\"-xin-empty-list\",$.items.length===0),this.options.virtual!=null)this.boundElement.setAttribute(\"aria-rowcount\",String($.items.length));let J=this._previousSlice,{firstItem:Q,lastItem:Z,topBuffer:Y,bottomBuffer:z}=$,F=L===void 0&&f===void 0&&M===!0&&J!=null&&Q===J.firstItem&&Z===J.lastItem;if(F&&$.interpolation==null&&Y===J.topBuffer&&z===J.bottomBuffer)return;if(F&&$.interpolation!=null){this._updateInterpolatedBuffers($);return}this._previousSlice=$;let G=0,T=0,W=0,{idPath:U}=this.options,K=this.options.virtual?.itemsPerRow??1,S;if(U!=null){S=new Set;for(let D=Q;D<=Z;D++){let q=$.items[D];if(q!==void 0)S.add(String(q[U]))}}let y=new Set;for(let D of Array.from(this.boundElement.children)){if(D===this.listTop||D===this.listBottom)continue;let q=D[o];if(q==null)continue;else if(q===!0)D.remove(),G++;else{if(y.has(q))continue;let O;if(U!=null)O=!S.has(String(q[U]));else{let N=$.items.indexOf(q);O=N<Q||N>Z}if(O){y.add(q);let N=this.itemToElement.get(q);if(N!=null)for(let A of N)A.remove();else D.remove();if(this.itemToElement.delete(q),U!=null)this.idToElement.delete(String(q[U]));G++}}}if(this.listTop!=null&&this.listBottom!=null)this.listTop.style.height=String(Y)+\"px\",this.listBottom.style.height=String(z)+\"px\";let m=[];for(let D=Q;D<=Z;D++){let q=$.items[D];if(q===void 0)continue;let O=this.itemToElement.get(C(q));if(O==null&&U!=null){let N=String(q[U]);if(O=this.idToElement.get(N),O!=null){let A=C(q);this.itemToElement.set(A,O);for(let d of O)d[o]=A}}if(O==null){W++;let N=C(q);if(O=this.templates.map((A)=>LE(A)),typeof q===\"object\")this.itemToElement.set(N,O);for(let A of O)A[o]=typeof q===\"object\"?N:!0;for(let A of O)if(this.listBottom!=null)this.boundElement.insertBefore(A,this.listBottom);else this.boundElement.append(A);if(U!=null){let A=q[U],d=`${H}[${U}=${A}]`;for(let jL of O)zL(jL,d);this.idToElement.set(String(A),O)}else{let A=`${H}[${D}]`;for(let d of O)zL(d,A)}}if(this.options.virtual!=null){let N=String(D+1);if(K>1)for(let A=0;A<O.length;A++){let d=O[A];d.setAttribute(\"role\",\"gridcell\"),d.setAttribute(\"aria-rowindex\",N),d.setAttribute(\"aria-colindex\",String(A+1))}else for(let A of O)A.setAttribute(\"role\",\"listitem\"),A.setAttribute(\"aria-rowindex\",N)}m.push(...O)}let b=null;for(let D of m){if(D.previousElementSibling!==b)if(T++,b?.nextElementSibling!=null)this.boundElement.insertBefore(D,b.nextElementSibling);else if(this.listBottom!=null)this.boundElement.insertBefore(D,this.listBottom);else this.boundElement.append(D);b=D}if($.interpolation!=null)this._updateInterpolatedBuffers($);if(fE.perf)console.log(H,\"updated\",{removed:G,created:W,moved:T})}_updateInterpolatedBuffers(E){let{t:M,position:L,scrollTop:f,viewportHeight:H,totalScrollHeight:$,rowHeight:J}=E.interpolation,Q=0;for(let F of Array.from(this.boundElement.children)){if(F===this.listTop||F===this.listBottom)continue;Q+=F.offsetHeight||J}let Z=f,Y=f+H-Q,z=Math.max(0,M*Y+(1-M)*Z-L%1*J);if(this.listTop!=null&&this.listBottom!=null)this.listTop.style.height=String(z)+\"px\",this.listBottom.style.height=String(Math.max(0,$-z-Q))+\"px\"}}var DE=(E,M,L)=>{let f=E[QE];if(M&&f===void 0)f=new FL(E,M,L),E[QE]=f;return f},XM=(E)=>{let M;while(!(M=E[o])&&E&&E.parentElement)E=E.parentElement;return M?{element:E,item:M}:void 0},GM=(E)=>{let M=XM(E);return M?M.item:void 0},Zf=(E)=>{let M=XM(E);if(!M)return console.error(\"deleteListItem failed, element is not part of a list instance\",E),!1;let L=DE(M.element.parentElement);if(!L.options.idPath)return console.error(\"deleteListItem failed, list binding has no idPath\",E.parentElement,L),!1;let f=L.array.indexOf(M.item);if(f>-1)return L.array.splice(f,1),!0;return!1},Qf={start:\"start\",middle:\"center\",end:\"end\",nearest:\"nearest\"},Yf=(E,M,L={})=>{let f=DE(E);if(f==null)return console.error(\"scrollListItemIntoView failed, element has no list binding\",E),!1;let{position:H=\"middle\"}=L,$=f.filteredArray(),J=C(M)??M,Q=$.indexOf(J);if(Q===-1)return console.error(\"scrollListItemIntoView failed, item not found in list\",M),!1;let{virtual:Z}=f.options;if(Z!=null&&E instanceof HTMLElement){let Y=Z.width!=null?Math.max(1,Math.floor(E.offsetWidth/Z.width)):Z.visibleColumns??1,z=Math.floor(Q/Y),F=Z.minHeight??Z.height,G=Math.ceil($.length/Y),T=Z.scrollContainer===\"window\",W=T?window.innerHeight:E.offsetHeight,U;if(Z.minHeight!=null){let K=Math.ceil(W/F)+(Z.rowChunkSize||1),S=G*F,y=Math.max(0,S-W),m=Math.max(1,G-K+1),b=z/m;switch(H){case\"start\":U=b*y;break;case\"end\":U=Math.max(0,(z-K+1)/m*y);break;case\"nearest\":{let D=T?Math.max(0,-E.getBoundingClientRect().top):E.scrollTop,q=y>0?D/y:0,O=Math.floor(q*m);if(z<O)U=b*y;else if(z>=O+K)U=Math.max(0,(z-K+1)/m*y);else return!0;break}default:{let D=z-Math.floor(K/2);U=Math.max(0,D)/m*y}}}else{let K=z*Z.height;switch(H){case\"start\":U=K;break;case\"end\":U=K-W+Z.height;break;case\"nearest\":{let S=T?Math.max(0,-E.getBoundingClientRect().top):E.scrollTop;if(K<S)U=K;else if(K+Z.height>S+W)U=K-W+Z.height;else return!0;break}default:U=K-(W-Z.height)/2}}if(U=Math.max(0,U),T){let K=E.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:K+U,behavior:\"smooth\"})}else E.scrollTo({top:U,behavior:\"smooth\"})}else{let Y=f.itemToElement.get(J);if(Y==null||Y.length===0)return console.error(\"scrollListItemIntoView failed, no DOM element found for item\",M),!1;Y[0].scrollIntoView({block:Qf[H]??\"center\",behavior:\"smooth\"})}return!0};var{document:OE,MutationObserver:XL}=globalThis,WM=(E,M)=>{let L=c.get(E);if(L==null)return;for(let f of L){let{binding:H,options:$}=f,{path:J}=f,{toDOM:Q}=H;if(Q!=null){if(J.startsWith(\"^\")){let Z=GM(E);if(Z!=null&&Z[P]!=null)J=f.path=`${Z[P]}${J.substring(1)}`;else{if(E instanceof HTMLElement)console.warn(`Unresolved relative binding \"${J}\" —`,E,\"is not part of a list. If this is a list template, wrap it in a <template>.\");continue}}if(M==null||J.startsWith(M))Q(E,GE()[J],$)}}};if(XL!=null)new XL((M)=>{M.forEach((L)=>{Array.from(L.addedNodes).forEach((f)=>{if(f instanceof Element)Array.from(f.querySelectorAll(p)).forEach((H)=>WM(H))})})}).observe(OE.body,{subtree:!0,childList:!0});i(()=>!0,(E)=>{let M=Array.from(OE.querySelectorAll(p));for(let L of M)WM(L,E)});var GL=(E)=>{let M=E.target?.closest(p);while(M!=null){let L=c.get(M);for(let f of L){let{binding:H,path:$}=f,{fromDOM:J}=H;if(J!=null){let Q;try{Q=J(M,f.options)}catch(Z){throw console.error(\"Cannot get value from\",M,\"via\",f),Error(\"Cannot obtain value fromDOM\")}if(Q!=null){let Z=GE(),Y=Z[$];if(Y==null)Z[$]=Q;else{let z=Y[P]!=null?Y[r]:Y,F=Q[P]!=null?Q[r]:Q;if(z!==F)Z[$]=F}}}}M=M.parentElement.closest(p)}};if(globalThis.document!=null)OE.body.addEventListener(\"change\",GL,!0),OE.body.addEventListener(\"input\",GL,!0);function zf(E,M,L,f){let{paths:H,transform:$}=M,{toDOM:J}=L;if(J==null)return E;let Q=null,Z={toDOM(z,F,G){let T=GE(),W=H.map((K)=>T[K]);if(Q!==null&&W.every((K,S)=>K===Q[S]))return;Q=W;let U=$(...W);J(z,U,G)},fromDOM:L.fromDOM};E.classList?.add(wE);let Y=c.get(E);if(Y==null)Y=[],c.set(E,Y);for(let z of H)Y.push({path:z,binding:Z,options:f});if(!H[0].startsWith(\"^\"))B(H[0]);return E}function u(E,M,L,f){if(E instanceof DocumentFragment)throw Error(\"bind cannot bind to a DocumentFragment\");if(M!=null&&typeof M===\"object\"&&M[ME])return zf(E,M,L,f);let H;if(typeof M===\"object\"&&M[P]===void 0&&f===void 0){let{value:Q}=M;H=typeof Q===\"string\"?Q:Q[P],f=M,delete f.value}else H=typeof M===\"string\"?M:M[P];if(H==null)throw Error(\"bind requires a path or object with xin Proxy\");let{toDOM:$}=L;E.classList?.add(wE);let J=c.get(E);if(J==null)J=[],c.set(E,J);if(J.push({path:H,binding:L,options:f}),$!=null&&!H.startsWith(\"^\"))B(H);if(f?.filter&&f?.needle)u(E,f.needle,{toDOM(Q,Z){console.log({needle:Z}),Q[QE]?.filter(Z)}});return E}var WL=new Set,Ff=(E)=>{let M=E?.target?.closest(uE),L=!1,f=new Proxy(E,{get($,J){if(J===\"stopPropagation\")return()=>{E.stopPropagation(),L=!0};else{let Q=$[J];return typeof Q===\"function\"?Q.bind($):Q}}}),H=new Set;while(!L&&M!=null){let J=EE.get(M)[E.type]||H;for(let Q of J){if(typeof Q===\"function\")Q(f);else{let Z=GE()[Q];if(typeof Z===\"function\")Z(f);else throw Error(`no event handler found at path ${Q}`)}if(L)continue}M=M.parentElement!=null?M.parentElement.closest(uE):null}};function XE(E,M,L){let f=EE.get(E);if(E.classList.add(vE),f==null)f={},EE.set(E,f);if(!f[M])f[M]=new Set;if(f[M].add(L),!WL.has(M))WL.add(M),OE.body.addEventListener(M,Ff,!0);return()=>{f[M].delete(L)}}uM(u,XE);function UM(E,M){if(!E.internals)return;let L={},f=\"\";if(E.hasAttribute(\"required\")&&M===\"\")L.valueMissing=!0,f=\"Please fill out this field.\";let H=E.getAttribute(\"minlength\");if(H&&M.length<parseInt(H,10))L.tooShort=!0,f=`Please use at least ${H} characters.`;let $=E.getAttribute(\"maxlength\");if($&&M.length>parseInt($,10))L.tooLong=!0,f=`Please use no more than ${$} characters.`;let J=E.getAttribute(\"pattern\");if(J&&M!==\"\")try{if(!new RegExp(`^(?:${J})$`).test(M))L.patternMismatch=!0,f=\"Please match the requested format.\"}catch{}if(Object.keys(L).length>0)E.internals.setValidity(L,f,E);else E.internals.setValidity({})}var Xf=0;function DM(){return`custom-elt${(Xf++).toString(36)}`}var UL=0,KM=null;function Gf(){if(KM===null)KM=new MutationObserver((E)=>{let M=new Set;for(let L of E)if(L.type===\"attributes\"&&L.target instanceof g){let f=L.target,H=EM(L.attributeName);if(f._legacyTrackedAttrs?.has(H))M.add(f)}for(let L of M)L.queueRender(!1)});return KM}var AE={};function Wf(E,M){let L=AE[E],f=$E(M).replace(/:host\\(([^)]+)\\)/g,`${E}$1`).replace(/:host\\b/g,E);AE[E]=L?L+`\n`+f:f}function Uf(E){if(AE[E])document.head.append(I.style({id:E+\"-component\"},AE[E]));delete AE[E]}class g extends HTMLElement{static elements=I;static _elementCreator;static initAttributes;static formAssociated;static preferredTagName;static shadowStyleSpec;static lightStyleSpec;static extends;internals;get validity(){return this.internals?.validity}get validationMessage(){return this.internals?.validationMessage??\"\"}get willValidate(){return this.internals?.willValidate??!1}checkValidity(){return this.internals?.checkValidity()??!0}reportValidity(){return this.internals?.reportValidity()??!0}setCustomValidity(E){if(this.internals)if(E)this.internals.setValidity({customError:!0},E);else this.internals.setValidity({})}setValidity(E,M,L){this.internals?.setValidity(E,M,L)}setFormValue(E,M){this.internals?.setFormValue(E,M)}static get observedAttributes(){let E=this.initAttributes;if(E)return[\"hidden\",...Object.keys(E).map(x)];return[\"hidden\"]}instanceId;styleNode;static styleSpec;static styleNode;content=I.slot();isSlotted;static _tagName=null;static get tagName(){return this._tagName}_legacyTrackedAttrs;_attrValues;_valueChanged=!1;static StyleNode(E){return console.warn(\"StyleNode is deprecated, use static shadowStyleSpec instead\"),I.style($E(E))}static elementCreator(E={}){let M=this;if(!Object.prototype.hasOwnProperty.call(M,\"_elementCreator\")){if(E.tag!==void 0)R(\"elementCreator-tag\",\"Passing tag to elementCreator() is deprecated. Use static preferredTagName instead.\");if(E.styleSpec!==void 0)R(\"elementCreator-styleSpec\",\"Passing styleSpec to elementCreator() is deprecated. Use static lightStyleSpec instead.\");if(E.extends!==void 0)R(\"elementCreator-extends\",\"Passing extends to elementCreator() is deprecated. Use static extends instead.\");let L=E.tag??M.preferredTagName;if(L==null)if(typeof M.name===\"string\"&&M.name!==\"\"){if(L=x(M.name),L.startsWith(\"-\"))L=L.slice(1)}else L=DM();if(customElements.get(L)!=null)console.warn(`${L} is already defined`);if(L.match(/\\w+(-\\w+)+/)==null)console.warn(`${L} is not a legal tag for a custom-element`),L=DM();while(customElements.get(L)!==void 0)L=DM();M._tagName=L;let f=E.styleSpec??M.lightStyleSpec;if(f!==void 0)Wf(L,f);let H=E.extends??M.extends,$=H?{extends:H}:void 0;window.customElements.define(L,this,$),M._elementCreator=I[L]}return M._elementCreator}initAttributes(...E){if(R(\"initAttributes\",\"initAttributes() is deprecated. Use static initAttributes = { ... } instead.\"),!this._legacyTrackedAttrs)this._legacyTrackedAttrs=new Set;for(let H of E)this._legacyTrackedAttrs.add(H);Gf().observe(this,{attributes:!0});let L={},f={};E.forEach((H)=>{L[H]=n(this[H]);let $=x(H);Object.defineProperty(this,H,{enumerable:!1,get(){if(typeof L[H]===\"boolean\")return this.hasAttribute($);else if(this.hasAttribute($))return typeof L[H]===\"number\"?parseFloat(this.getAttribute($)):this.getAttribute($);else if(f[H]!==void 0)return f[H];else return L[H]},set(J){if(typeof L[H]===\"boolean\"){if(J!==this[H]){if(J)this.setAttribute($,\"\");else this.removeAttribute($);this.queueRender()}}else if(typeof L[H]===\"number\"){if(J!==parseFloat(this[H]))this.setAttribute($,J),this.queueRender()}else if(typeof J===\"object\"||`${J}`!==`${this[H]}`){if(J===null||J===void 0||typeof J===\"object\")this.removeAttribute($);else this.setAttribute($,J);this.queueRender(),f[H]=J}}})})}initValue(){let E=Object.getOwnPropertyDescriptor(this,\"value\");if(E===void 0||E.get!==void 0||E.set!==void 0)return;let M=this.hasAttribute(\"value\")?this.getAttribute(\"value\"):n(this.value);delete this.value,Object.defineProperty(this,\"value\",{enumerable:!1,get(){return M},set(L){if(M!==L)M=L,this._valueChanged=!0,this.queueRender(!0)}})}_parts;get parts(){let E=this.shadowRoot!=null?this.shadowRoot:this;if(this._parts==null)this._parts=new Proxy({},{get(M,L){if(M[L]===void 0){let f=E.querySelector(`[part=\"${L}\"]`);if(f==null)f=E.querySelector(L);if(f==null)throw Error(`elementRef \"${L}\" does not exist!`);f.removeAttribute(\"data-ref\"),M[L]=f}return M[L]}});return this._parts}attributeChangedCallback(E,M,L){let f=EM(E);if(!this._legacyTrackedAttrs?.has(f))this.queueRender(!1)}constructor(){super();if(UL+=1,this.constructor.formAssociated&&typeof this.attachInternals===\"function\"&&!this.internals)this.internals=this.attachInternals();let E=this.constructor.initAttributes;if(E)this._setupAttributeAccessors(E);this.instanceId=`${this.tagName.toLocaleLowerCase()}-${UL}`,this._value=n(this.defaultValue)}_setupAttributeAccessors(E){if(!this._attrValues)this._attrValues=new Map;for(let M of Object.keys(E)){let L=x(M),f=E[M];if(M===\"value\"){console.warn(`${this.tagName}: 'value' cannot be an attribute. Use the Component value property instead.`);continue}if(typeof f===\"object\"&&f!==null){console.warn(`${this.tagName}: initAttributes.${M} is an object. Use a regular property instead.`);continue}let H=this,$=!1;while(H){let J=Object.getOwnPropertyDescriptor(H,M);if(J){if(!J.configurable||J.get||J.set){$=!0;break}break}H=Object.getPrototypeOf(H)}if($)continue;Object.defineProperty(this,M,{enumerable:!1,get:()=>{if(typeof f===\"boolean\")return this.hasAttribute(L);else if(this.hasAttribute(L))return typeof f===\"number\"?parseFloat(this.getAttribute(L)):this.getAttribute(L);else if(this._attrValues.has(M))return this._attrValues.get(M);else return f},set:(J)=>{if(typeof f===\"boolean\"){if(J!==this[M]){if(J)this.setAttribute(L,\"\");else this.removeAttribute(L);this.queueRender()}}else if(typeof f===\"number\"){if(J!==parseFloat(this[M]))this.setAttribute(L,J),this.queueRender()}else if(typeof J===\"object\"||`${J}`!==`${this[M]}`){if(J===null||J===void 0||typeof J===\"object\")this.removeAttribute(L);else this.setAttribute(L,J);this.queueRender(),this._attrValues.set(M,J)}}})}}connectedCallback(){if(Uf(this.constructor.tagName),this.hydrate(),this.role!=null)this.setAttribute(\"role\",this.role);if(this.constructor.formAssociated&&!this.hasAttribute(\"tabindex\"))this.setAttribute(\"tabindex\",\"0\");if(this.onResize!==void 0){if(WE.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\");if(this.internals&&this.value!==void 0)this.internals.setFormValue(this.value),this.validateValue();this.queueRender()}disconnectedCallback(){WE.unobserve(this)}formResetCallback(){if(this.value!==void 0)this.value=this.defaultValue??\"\"}formDisabledCallback(E){if(E)this.setAttribute(\"disabled\",\"\");else this.removeAttribute(\"disabled\")}formStateRestoreCallback(E){if(this.value!==void 0&&typeof E===\"string\")this.value=E}_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){if(tE(this,\"change\"),this.internals&&this.value!==void 0)this.internals.setFormValue(this.value)}this._changeQueued=!1,this._renderQueued=!1,this.render()})}_hydrated=!1;hydrate(){if(!this._hydrated){this.initValue();let E=typeof this.content!==\"function\",M=typeof this.content===\"function\"?this.content(I):this.content;if(Array.isArray(M)){let $={};M=M.filter((J)=>{if(J instanceof Node||typeof J===\"string\"||typeof J===\"number\"||w(J))return!0;return Object.assign($,J),!1});for(let J of Object.keys($))BE(this,J,$[J])}let L=this.constructor,f=L.shadowStyleSpec??L.styleSpec;if(L.styleSpec&&!L.shadowStyleSpec)R(\"static-styleSpec\",\"static styleSpec is deprecated. Use static shadowStyleSpec instead.\");let{styleNode:H}=L;if(f)H=L.styleNode=I.style($E(f)),delete L.styleNode;if(this.styleNode)console.warn(this,\"styleNode is deprecated, use static shadowStyleSpec instead\"),H=this.styleNode;if(H){let $=this.attachShadow({mode:\"open\"});$.appendChild(H.cloneNode(!0)),eE($,M,E)}else if(M!==null){let $=Array.from(this.childNodes);eE(this,M,E),this.isSlotted=this.querySelector(\"slot,tosi-slot,xin-slot\")!==void 0;let J=Array.from(this.querySelectorAll(\"slot\"));if(J.length>0)J.forEach(SE.replaceSlot);if($.length>0){let Q={\"\":this};Array.from(this.querySelectorAll(\"tosi-slot,xin-slot\")).forEach((Z)=>{Q[Z.name]=Z}),$.forEach((Z)=>{let Y=Q[\"\"],z=Z instanceof Element?Q[Z.slot]:Y;(z!==void 0?z:Y).append(Z)})}}this._hydrated=!0}}render(){if(this._valueChanged&&this.internals&&this.value!==void 0)this.internals.setFormValue(this.value),this.validateValue();this._valueChanged=!1}validateValue(){if(!this.internals||this.value===void 0)return;let E=typeof this.value===\"string\"?this.value:String(this.value);UM(this,E)}}class SE extends g{static preferredTagName=\"tosi-slot\";static initAttributes={name:\"\"};content=null;static replaceSlot(E){let M=document.createElement(\"tosi-slot\");if(E.name!==\"\")M.setAttribute(\"name\",E.name);E.replaceWith(M)}}var Df=SE.elementCreator();class DL extends g{static preferredTagName=\"xin-slot\";static initAttributes={name:\"\"};content=null;constructor(){super();R(\"xin-slot\",\"<xin-slot> is deprecated. Use <tosi-slot> instead.\")}static replaceSlot=SE.replaceSlot}var Kf=DL.elementCreator();var qf=(E=()=>!0)=>{let M=localStorage.getItem(\"xin-state\");if(M!=null){let f=JSON.parse(M);for(let H of Object.keys(f).filter(E))if(k[H]!==void 0)Object.assign(k[H],f[H]);else k[H]=f[H]}let L=UE(()=>{let f={},H=C(k);for(let $ of Object.keys(H).filter(E))f[$]=H[$];localStorage.setItem(\"xin-state\",JSON.stringify(f)),console.log(\"xin state saved to localStorage\")},500);KE(E,L)};var Of=\"tosijs-share\",Af=\"tosijs-share\",CE=\"shared\",Cf=1,OM=new Set,AM=new Set,qM=new Map,ZE=null,CM=\"\",NE=null,wf=null;function KL(){if(NE!=null)return Promise.resolve(NE);return new Promise((E,M)=>{let L=indexedDB.open(Af,Cf);L.onupgradeneeded=()=>{L.result.createObjectStore(CE)},L.onsuccess=()=>{NE=L.result,E(NE)},L.onerror=()=>M(L.error)})}var jf={async get(E){let M=await KL();return new Promise((L,f)=>{let $=M.transaction(CE,\"readonly\").objectStore(CE).get(E);$.onsuccess=()=>L($.result),$.onerror=()=>f($.error)})},async set(E,M){let L=await KL();return new Promise((f,H)=>{let $=L.transaction(CE,\"readwrite\");$.objectStore(CE).put(M,E),$.oncomplete=()=>f(),$.onerror=()=>H($.error)})}};function qL(){return wf??jf}function Vf(E){return E!=null&&E.type===\"tosijs-share\"&&typeof E.path===\"string\"}function OL(E){for(let M of OM)if(E===M||E.startsWith(M+\".\"))return M;return}function Tf(E){for(let M of AM)if(E===M||E.startsWith(M+\".\"))return!0;return!1}function Rf(E,M){AM.add(E),l(V,E,M),B(E),zE().then(()=>{AM.delete(E)})}function kf(){if(ZE!=null)return ZE;return CM=crypto.randomUUID(),ZE=new BroadcastChannel(Of),ZE.onmessage=(E)=>{let M=E.data;if(!Vf(M))return;if(M.origin===CM)return;if(OL(M.path)===void 0)return;Rf(M.path,M.value)},ZE}function If(E,M){if(ZE==null)return;let L={type:\"tosijs-share\",path:E,value:M,origin:CM};ZE.postMessage(L)}function Bf(E){if(!qM.has(E))qM.set(E,UE(()=>{let M=j(V,E);qL().set(E,M)},500));qM.get(E)()}async function _f(...E){if(typeof BroadcastChannel>\"u\")return{restored:[]};kf();let M=[],L=qL();for(let f of E){let H=typeof f===\"string\"?f:w(f);if(H===void 0)throw Error(\"share() requires boxed proxies or string paths. Got a non-proxy value.\");if(OM.has(H))continue;OM.add(H);let $=await L.get(H);if($!==void 0)l(V,H,$),B(H),M.push(f);else{let J=j(V,H);await L.set(H,J)}i((J)=>J===H||J.startsWith(H+\".\"),(J)=>{if(Tf(J))return;let Q=OL(J);if(Q===void 0)return;let Z=j(V,J);If(J,Z),Bf(Q)})}return{restored:M}}var wM=new Set;function AL(E,M){for(let L of E)if(M===L||M.startsWith(L+\".\"))return L;return}function Sf(E){for(let M of wM)if(E===M||E.startsWith(M+\".\"))return!0;return!1}function Nf(E,M){wM.add(E),l(V,E,M),B(E),zE().then(()=>{wM.delete(E)})}async function xf(E,M,...L){let f=new Set,H=[],$=[],J=M.throttleInterval??100;await E.connect();let Q=FE(()=>{if(H.length===0)return;let Z=H.splice(0);E.send(Z)},J);E.onReceive((Z)=>{for(let Y of Z){if(AL(f,Y.path)===void 0)continue;Nf(Y.path,Y.value)}});for(let Z of L){let Y=typeof Z===\"string\"?Z:w(Z);if(Y===void 0)throw Error(\"sync() requires boxed proxies or string paths. Got a non-proxy value.\");f.add(Y);let z=i((F)=>F===Y||F.startsWith(Y+\".\"),(F)=>{if(Sf(F))return;if(AL(f,F)===void 0)return;let G=j(V,F);H.push({path:F,value:G}),Q()});$.push(z)}return{disconnect(){for(let Z of $)HE(Z);$.length=0,f.clear(),H.length=0,E.disconnect()}}}var jM=\"1.6.1\";function xE(E){return Object.assign(_,E),_}function yE(E){return R(\"boxedProxy\",\"boxedProxy is deprecated, please use tosi() instead\"),xE(E)}var yf=new FinalizationRegistry((E)=>{E()});function Pf(E,M){let L=iE();_[L]=E;let f=_[L],H=()=>{delete k[L]};if(M)yf.register(M,H);return[f,H]}function VM(E,M=!1){if(M)return R(\"xinProxy-boxed\",\"xinProxy(..., true) is deprecated; use tosi(...) instead\"),yE(E);return Object.keys(E).forEach((L)=>{k[L]=E[L]}),k}var mf={};async function PE(E,M){let L=await M(E,{Color:X,Component:g,elements:I,svgElements:ZM,mathML:QM,varDefault:kE,vars:fM,xin:k,boxed:_,xinProxy:VM,boxedProxy:yE,tosi:xE,makeComponent:PE,bind:u,on:XE,version:jM}),{type:f}=L;f.preferredTagName=E;let H=L.lightStyleSpec??L.styleSpec;if(H)f.lightStyleSpec=H;let $={type:f,creator:f.elementCreator()};return mf[E]=$,$}var mE={\":host\":{display:\"none\"}},TM={},bf=(E)=>import(E);class bE extends g{static preferredTagName=\"tosi-blueprint\";static lightStyleSpec=mE;static initAttributes={tag:\"anon-elt\",src:\"\",property:\"default\"};loaded;blueprintLoaded=(E)=>{};async packaged(){let{tag:E,src:M,property:L}=this,f=`${E}.${L}:${M}`;if(!this.loaded){if(TM[f]===void 0)TM[f]=bf(M).then((H)=>{let $=H[L];return PE(E,$)});else console.log(`using cached ${E} with signature ${f}`);this.loaded=await TM[f],this.blueprintLoaded(this.loaded)}return this.loaded}}var cf=bE.elementCreator();class RM extends g{static preferredTagName=\"tosi-loader\";static lightStyleSpec=mE;allLoaded=()=>{};async load(){let M=Array.from(this.querySelectorAll(\"tosi-blueprint, xin-blueprint\")).filter((L)=>L.src).map((L)=>L.packaged());await Promise.all(M),this.allLoaded()}connectedCallback(){super.connectedCallback(),this.load()}}var vf=RM.elementCreator();class CL extends bE{static preferredTagName=\"xin-blueprint\";static lightStyleSpec=mE;constructor(){super();R(\"xin-blueprint\",\"<xin-blueprint> is deprecated. Use <tosi-blueprint> instead.\")}}var uf=CL.elementCreator();class wL extends g{static preferredTagName=\"xin-loader\";static lightStyleSpec=mE;allLoaded=()=>{};constructor(){super();R(\"xin-loader\",\"<xin-loader> is deprecated. Use <tosi-loader> instead.\")}async load(){let M=Array.from(this.querySelectorAll(\"xin-blueprint\")).filter((L)=>L.src).map((L)=>L.packaged());await Promise.all(M),this.allLoaded()}connectedCallback(){super.connectedCallback(),this.load()}}var gf=wL.elementCreator();export{kL as xinValue,Kf as xinSlot,VM as xinProxy,RL as xinPath,k as xin,R as warnDeprecated,jM as version,fM as vars,kE as varDefault,UM as validateAgainstConstraints,zE as updates,HE as unobserve,WM as touchElement,B as touch,C as tosiValue,Pf as tosiUnique,Df as tosiSlot,TL as tosiSetValue,w as tosiPath,vf as tosiLoader,cf as tosiBlueprint,VL as tosiAccessor,xE as tosi,FE as throttle,xf as sync,ZM as svgElements,_f as share,fE as settings,Yf as scrollListItemIntoView,oL as onThemePreferencesChange,dL as onStylesheetChange,XE as on,KE as observe,QM as mathML,PE as makeComponent,rL as invertLuminance,pL as initVars,qf as hotReload,tM as getThemePreferences,GM as getListItem,XM as getListInstance,DE as getListBinding,MM as getCssVar,I as elements,gE as deprecated,Zf as deleteListItem,UE as debounce,$E as css,yE as boxedProxy,_ as boxed,gf as blueprintLoader,uf as blueprint,TE as bindings,aL as bindParts,u as bind,jE as TOSI_ACCESSOR,ME as TAKE_DESCRIPTOR,hL as StyleSheet,vL as MoreMath,g as Component,X as Color,RM as BlueprintLoader,bE as Blueprint};\n\n//# debugId=3C7198AAF6DB780964756E2164756E21\n//# sourceMappingURL=module.js.map\n",
|
|
6
6
|
"/*#\n# ab-test\n\n`<tosi-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 <tosi-ab class=\"a\" condition=\"testA\">\n <p>testA</p>\n </tosi-ab>\n <tosi-ab class=\"not-a\" not condition=\"testA\">\n <p>not testA</p>\n </tosi-ab>\n <tosi-ab class=\"b\" condition=\"testB\">\n <p>testB</p>\n </tosi-ab>\n <tosi-ab class=\"not-b\" not condition=\"testB\">\n <p>not testB</p>\n </tosi-ab>\n <tosi-ab class=\"c\" condition=\"testC\">\n <p>testC</p>\n </tosi-ab>\n <tosi-ab class=\"not-c\" not condition=\"testC\">\n <p>not testC</p>\n </tosi-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 tosi-ab[not] p {\n background: red;\n}\n```\n\n- Set `AbTest.conditions` to anything you like.\n- Use `<tosi-ab>` elements to display conditional content.\n- `condition` attribute determines which value in `AbTest.conditions` controls the element\n- `not` reverses the condition (so `<tosi-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 preferredTagName = 'tosi-ab'\n\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 static initAttributes = {\n condition: '',\n not: false,\n }\n\n static instances: Set<AbTest> = new Set()\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()\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 `<tosi-code>`, `<tosi-lottie>`, and `<tosi-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`<tosi-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 `<tosi-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 const existing = (globalThis as Record<string, unknown>)[\n existingSymbolName\n ]\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
|
-
"export 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.1,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.4,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.2 C15.69,42.2,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.4,4.79,18.4,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.4,4.79 C18.4,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.2,15.69,42.2 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.4,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.9,10,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.5,14.5 C18.5,14.5,21.5,15.5,21.5,17.5 C21.5,19.5,18.5,19.5,18.5,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.9,3,9,3 C9,3,20,3,20,3 C21.1,3,22,3.94,22,5.09 C22,5.09,22,12.41,22,12.41 C22,13.56,21.1,14.5,20,14.5 C20,14.5,9,14.5,9,14.5 C7.9,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.2,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.6,17.5 C10.6,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.1,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,14.25 C8,14.25,5,15.25,5,17.25 C5,19.25,8,19.25,8,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,14.25 C16,14.25,19,15.25,19,17.25 C19,19.25,16,19.25,16,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.5,4.85 C4.5,3.69,5.4,2.75,6.5,2.75 C6.5,2.75,17.5,2.75,17.5,2.75 C18.61,2.75,19.5,3.69,19.5,4.85 C19.5,4.85,19.5,12.16,19.5,12.16 C19.5,13.32,18.61,14.25,17.5,14.25 C17.5,14.25,6.5,14.25,6.5,14.25 C5.4,14.25,4.5,13.32,4.5,12.16 C4.5,12.16,4.5,4.85,4.5,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,5.25 C12,5.25,12,11.25,12,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,7.25 C14,7.25,14,8.25,14,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,7.25 C10,7.25,10,8.25,10,8.25\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M16,21.25 C16,21.25,15,20.25,15,20.25 C15,20.25,14,21.25,14,21.25\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M10,21.25 C10,21.25,9,20.25,9,20.25 C9,20.25,8,21.25,8,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,14.25 C8,14.25,16,14.25,16,14.25 C16,14.25,16,19.25,16,19.25 C16,19.25,8,19.25,8,19.25 C8,19.25,8,14.25,8,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,4 C12,4,11.99,4,11.99,4 C6.19,4,3,4.73,3,8.5 C3,11.39,4.66,13,7.27,13 C9.88,13,10.68,11.13,11.99,11.13 C11.99,11.13,12,11.13,12,11.13 C12,11.13,12.01,11.13,12.01,11.13 C13.32,11.13,14.12,13,16.73,13 C19.34,13,21,11.39,21,8.5 C21,4.73,17.81,4,12.01,4 C12.01,4,12,4,12,4 C12,4,12,4,12,4 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,10.88 C10.9,10.01,9.51,9.5,8,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,10.88 z\\\"/><path style=\\\"fill:#0000ff;fill-rule:evenodd;\\\" d=\\\"M12,10.88 C13.1,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,10.88 C12,10.88,12,10.88,12,10.88 z\\\"/><path style=\\\"fill:#000000;fill-rule:evenodd;\\\" d=\\\"M9.78,14.11 C10.17,12.81,10.96,11.69,12,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.6,14.71,9.5,15.34,9.5,16 C9.5,18.08,10.48,19.93,12,21.12 C13.52,19.93,14.5,18.08,14.5,16 C14.5,15.34,14.4,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.6,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.4,9.29,18.22,9.89 C17.53,9.64,16.78,9.5,16,9.5 C14.49,9.5,13.1,10.01,12,10.88 C10.9,10.01,9.51,9.5,8,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.8,1.5,13.19,1.5,16 C1.5,19.59,4.41,22.5,8,22.5 C9.51,22.5,10.9,21.99,12,21.12 C10.48,19.93,9.5,18.08,9.5,16 C9.5,15.34,9.6,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.8,22.5,13.19,22.5,16 C22.5,19.59,19.59,22.5,16,22.5 C14.49,22.5,13.1,21.99,12,21.12 C13.52,19.93,14.5,18.08,14.5,16 C14.5,15.34,14.4,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,10.88 C10.9,10.01,9.51,9.5,8,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,10.88 z\\\"/><path style=\\\"fill:#ffff00;fill-rule:evenodd;\\\" d=\\\"M12,10.88 C13.1,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,10.88 C12,10.88,12,10.88,12,10.88 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:evenodd;\\\" d=\\\"M9.78,14.11 C10.17,12.81,10.96,11.69,12,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.6,14.71,9.5,15.34,9.5,16 C9.5,18.08,10.48,19.93,12,21.12 C13.52,19.93,14.5,18.08,14.5,16 C14.5,15.34,14.4,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.6,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.4,9.29,18.22,9.89 C17.53,9.64,16.78,9.5,16,9.5 C14.49,9.5,13.1,10.01,12,10.88 C10.9,10.01,9.51,9.5,8,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.8,1.5,13.19,1.5,16 C1.5,19.59,4.41,22.5,8,22.5 C9.51,22.5,10.9,21.99,12,21.12 C10.48,19.93,9.5,18.08,9.5,16 C9.5,15.34,9.6,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.8,22.5,13.19,22.5,16 C22.5,19.59,19.59,22.5,16,22.5 C14.49,22.5,13.1,21.99,12,21.12 C13.52,19.93,14.5,18.08,14.5,16 C14.5,15.34,14.4,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,2 C19.99,2,19.98,2,19.98,2 C8.39,2,2,3.61,2,12 C2,18.41,5.32,22,10.54,22 C15.77,22,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,29.46,22 C34.68,22,38,18.41,38,12 C38,3.61,31.61,2,20.02,2 C20.02,2,20.01,2,20,2 C20,2,20,2,20,2 z\\\"/></g><path style=\\\"fill:#fbed21;fill-rule:evenodd;\\\" d=\\\"M12.2,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.1,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.4,33.98,16.5,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.5,8.46,19.4,12.2,19.84 z\\\"/><path style=\\\"fill:#8cc63f;fill-rule:evenodd;\\\" d=\\\"M12.2,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.1,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.2,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.4,33.98,16.5,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.2,19.84 C11.9,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.5,8.46,19.4,12.2,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.2,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.2,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.8,19.99,15.5 C19.99,15.87,20.3,16.18,20.64,16.17 C20.99,16.18,21.3,15.87,21.29,15.5 C21.29,11.8,21.29,8.09,21.29,4.39 C21.3,4.02,20.99,3.71,20.64,3.72 C20.3,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.2,8.63 C16.2,9.05,16.2,9.46,16.2,9.88 C16.19,10.25,16.5,10.56,16.85,10.55 C17.19,10.56,17.5,10.25,17.5,9.88 C17.5,9.46,17.5,9.05,17.5,8.63 C17.5,8.26,17.19,7.95,16.85,7.96 C16.5,7.95,16.19,8.26,16.2,8.63 z\\\"/><path style=\\\"fill:#fe1a22;fill-rule:nonzero;\\\" d=\\\"M18.87,4.39 C18.87,8.09,18.87,11.8,18.87,15.5 C18.87,15.87,19.18,16.18,19.52,16.17 C19.86,16.18,20.18,15.87,20.17,15.5 C20.17,11.8,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.8,19.41,15.5 C19.41,15.87,19.72,16.18,20.07,16.17 C20.41,16.18,20.72,15.87,20.72,15.5 C20.72,11.8,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.9,3.9,31,5,31 C5,31,43,31,43,31 C44.1,31,45,31.9,45,33 C45,33,45,43,45,43 C45,44.1,44.1,45,43,45 C43,45,5,45,5,45 C3.9,45,3,44.1,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,3 C13,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,26,13,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,29 C32,29,38,31,38,35 C38,39,32,39,32,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.6,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.6,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.7 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.2,29.95,37.2 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,21.82,34.76 C21.82,34.76,20.22,31.78,20.22,31.78 C18.99,29.5,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.7,38.35,31.7 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.7 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.2,19.05,37.2 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,27.18,34.76 C27.18,34.76,28.78,31.78,28.78,31.78 C30.01,29.5,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.7,10.65,31.7 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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\\\"><g><path style=\\\"\\\" d=\\\"M4.78,6.75 C6.02,7.26,7.26,6.02,6.75,4.78 C6.75,4.78,6.24,3.57,6.24,3.57 C5.93,2.8,6.29,1.92,7.06,1.6 C7.06,1.6,8.14,1.15,8.14,1.15 C8.91,0.83,9.79,1.2,10.11,1.96 C10.11,1.96,10.61,3.18,10.61,3.18 C11.12,4.42,12.88,4.42,13.39,3.18 C13.39,3.18,13.89,1.97,13.89,1.97 C14.21,1.2,15.09,0.83,15.86,1.15 C15.86,1.15,16.94,1.6,16.94,1.6 C17.71,1.92,18.08,2.8,17.76,3.57 C17.76,3.57,17.15,5.03,17.15,5.03 C16.64,6.27,17.88,7.51,19.12,7 C19.12,7,20.51,6.42,20.51,6.42 C21.28,6.1,22.16,6.47,22.47,7.23 C22.47,7.23,22.92,8.32,22.92,8.32 C23.24,9.09,22.88,9.96,22.11,10.28 C22.11,10.28,21.07,10.71,21.07,10.71 C19.83,11.23,19.83,12.98,21.07,13.49 C21.07,13.49,22.04,13.89,22.04,13.89 C22.8,14.21,23.17,15.09,22.85,15.86 C22.85,15.86,22.4,16.94,22.4,16.94 C22.08,17.71,21.2,18.07,20.43,17.76 C20.43,17.76,19.22,17.25,19.22,17.25 C17.98,16.74,16.74,17.98,17.25,19.22 C17.25,19.22,17.76,20.43,17.76,20.43 C18.07,21.2,17.71,22.08,16.94,22.4 C16.94,22.4,15.86,22.85,15.86,22.85 C15.09,23.17,14.21,22.8,13.89,22.04 C13.89,22.04,13.39,20.82,13.39,20.82 C12.88,19.58,11.12,19.58,10.61,20.82 C10.61,20.82,10.11,22.04,10.11,22.04 C9.79,22.8,8.91,23.17,8.14,22.85 C8.14,22.85,7.06,22.4,7.06,22.4 C6.29,22.08,5.93,21.2,6.24,20.44 C6.24,20.44,6.64,19.47,6.64,19.47 C7.16,18.23,5.92,16.99,4.68,17.5 C4.68,17.5,3.64,17.93,3.64,17.93 C2.87,18.25,1.99,17.89,1.67,17.12 C1.67,17.12,1.22,16.04,1.22,16.04 C0.91,15.27,1.27,14.39,2.04,14.07 C2.04,14.07,3.43,13.49,3.43,13.49 C4.67,12.98,4.67,11.23,3.43,10.71 C3.43,10.71,1.96,10.11,1.96,10.11 C1.2,9.79,0.83,8.91,1.15,8.14 C1.15,8.14,1.6,7.06,1.6,7.06 C1.92,6.29,2.8,5.93,3.57,6.24 C3.57,6.24,4.78,6.75,4.78,6.75 z M14.31,11.04 C14.84,12.32,14.23,13.78,12.96,14.31 C11.68,14.84,10.22,14.23,9.69,12.96 C9.16,11.68,9.77,10.22,11.04,9.69 C12.32,9.16,13.78,9.77,14.31,11.04 z\\\"/></g></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 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 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 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 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 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 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 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 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 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 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 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 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 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 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\\\" y2=\\\"7.75\\\"></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 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 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 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\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M464 0h-416c-26 0-48 22-48 48v416c0 26 22 48 48 48h208v-224h-64v-64h64v-32c0-53 43-96 96-96h64v64h-64c-18 0-32 14-32 32v32h96l-16 64h-80v224h144c26 0 48-22 48-48v-416c0-26-22-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 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 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\\\" viewBox=\\\"0 0 512 512\\\"><g></g><path d=\\\"M507 154c0 0-5-35-20-51-20-20-41-21-51-22-72-5-179-5-179-5h-0c0 0-108 0-179 5-10 1-32 1-51 22-15 16-20 51-20 51s-5 41-5 83v39c0 41 5 83 5 83s5 35 20 51c20 20 45 20 57 22 41 4 174 5 174 5s108-0 179-5c10-1 32-1 51-22 15-16 20-51 20-51s5-41 5-83v-39c-0-41-5-83-5-83zM203 322v-144l138 72-138 72z\\\"></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 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 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 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 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 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 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 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 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 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 chevronRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"9 18 15 12 9 6\\\"></polyline></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 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 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 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 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 pin: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><g><path style=\\\"\\\" d=\\\"M16.23,4.73 C16.23,4.73,19.42,7.9,19.42,7.9 C19.42,7.9,14.46,15.69,14.46,15.69 C14.46,15.69,8.45,9.68,8.45,9.68 C8.45,9.68,16.23,4.73,16.23,4.73 z\\\"/><path style=\\\"\\\" d=\\\"M20.84,9.32 C20.84,9.32,14.47,2.95,14.47,2.95\\\"/><path style=\\\"\\\" d=\\\"M16.6,17.8 C16.6,17.8,6.7,7.9,6.7,7.9\\\"/><path style=\\\"\\\" d=\\\"M10.23,11.44 C10.23,11.44,5.99,18.51,5.99,18.51 C5.99,18.51,13.06,14.27,13.06,14.27\\\"/></g></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,4.5 C17,4.5,13,4.5,13,4.5\\\"/><path style=\\\"\\\" d=\\\"M11,19.5 C11,19.5,7,19.5,7,19.5\\\"/><path style=\\\"\\\" d=\\\"M15,4.5 C15,4.5,9,19.5,9,19.5\\\"/></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.5,10,5.5,10 C6.05,10,6.5,10.45,6.5,11 C6.5,11,6.5,11,6.5,11 C6.5,11.55,6.05,12,5.5,12 C5.5,12,5.5,12,5.5,12 C4.95,12,4.5,12.45,4.5,13 C4.5,13,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.5,16,5.5,16 C6.05,16,6.5,16.45,6.5,17 C6.5,17,6.5,17,6.5,17 C6.5,17.55,6.05,18,5.5,18 C5.5,18,4.5,18,4.5,18 C4.5,18,5.5,18,5.5,18 C6.05,18,6.5,18.45,6.5,19 C6.5,19,6.5,19,6.5,19 C6.5,19.55,6.05,20,5.5,20 C5.5,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.3,9,18,9.7,18,10.56 C18,10.56,18,15,18,15 C18,18.31,15.31,21,12,21 C8.69,21,6,18.31,6,15 C6,15,6,10.56,6,10.56 C6,9.7,6.7,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.6,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\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M0 0v512h512v-512h-512zM416 416h-64v-256h-96v256h-160v-320h320v320z\\\"></path></svg> \",\n game: \"<svg class=\\\"filled\\\" version=\\\"1\\\" viewBox=\\\"0 0 704 512\\\"><path d=\\\"M528 97v-1h-336c-88 0-160 72-160 160s72 160 160 160c52 0 99-25 128-64h64c29 39 76 64 128 64 88 0 160-72 160-160 0-83-63-151-144-159zM288 288h-64v64h-64v-64h-64v-64h64v-64h64v64h64v64zM480 288c-18 0-32-14-32-32s14-32 32-32 32 14 32 32-14 32-32 32zM576 288c-18 0-32-14-32-32 0-18 14-32 32-32s32 14 32 32c0 18-14 32-32 32z\\\"></path></svg> \",\n google: \"<svg class=\\\"filled\\\" version=\\\"1\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M256 0c-141 0-256 115-256 256s115 256 256 256 256-115 256-256-115-256-256-256zM260 448c-106 0-192-86-192-192s86-192 192-192c52 0 95 19 129 50l-52 50c-14-14-39-30-77-30-66 0-119 54-119 121s54 121 119 121c76 0 105-55 109-83h-109v-66h181c2 10 3 19 3 32 0 110-73 188-184 188z\\\"></path></svg> \",\n discord: \"<svg class=\\\"filled\\\" version=\\\"1\\\" viewBox=\\\"0 0 1013 768\\\"><path d=\\\"M858 64c-60-28-131-51-204-64l-5-1c-8 14-17 32-25 51l-1 4c-35-6-75-9-116-9s-81 3-120 9l4-1c-9-22-18-40-28-57l1 3c-79 14-149 36-214 67l5-2c-132 196-168 387-150 575v0c73 55 158 99 250 127l6 2c19-26 38-55 53-85l2-3c-33-13-62-27-89-43l2 1c7-5 14-11 21-16 75 36 163 57 256 57s181-21 260-59l-4 2c7 6 14 11 21 16-25 15-53 29-83 40l-4 1c17 34 36 63 56 90l-1-2c98-30 183-74 259-130l-2 2c21-218-36-407-151-575zM338 524c-50 0-91-45-91-101s40-102 91-102 92 46 91 102-40 101-91 101zM675 524c-50 0-91-45-91-101s40-102 91-102 92 46 91 102-40 101-91 101z\\\"></path></svg> \",\n cornerLeftUp: \"cornerRightUp0f\",\n cornerUpLeft: \"cornerUpRight0f\",\n toggleLeft: \"toggleRight0f\",\n cornerDownLeft: \"cornerDownRight0f\",\n cornerLeftDown: \"cornerRightDown0f\",\n skipBack: \"skipForward0f\",\n refreshCcw: \"refreshCw0f\",\n rotateCcw: \"rotateCw0f\",\n thumbsDown: \"thumbsUp1f\",\n chevronsDown: \"chevronsRight90r\",\n chevronsLeft: \"chevronsRight180r\",\n chevronsUp: \"chevronsRight270r\",\n chevronDown: \"chevronRight90r\",\n chevronLeft: \"chevronRight180r\",\n chevronUp: \"chevronRight270r\",\n arrowDown: \"arrowRight90r\",\n arrowLeft: \"arrowRight180r\",\n arrowUp: \"arrowRight270r\",\n arrowDownCircle: \"arrowRightCircle90r\",\n arrowLeftCircle: \"arrowRightCircle180r\",\n arrowUpCircle: \"arrowRightCircle270r\",\n arrowDownRight: \"arrowUpRight90r\",\n arrowDownLeft: \"arrowUpRight180r\",\n arrowUpLeft: \"arrowUpRight270r\"\n} as IconData\n",
|
|
8
|
+
"export interface IconData { [key: string]: string }\n\nexport default {\n game: \"<svg class=\\\"filled\\\" version=\\\"1\\\" viewBox=\\\"0 0 704 512\\\"><path d=\\\"M528 97v-1h-336c-88 0-160 72-160 160s72 160 160 160c52 0 99-25 128-64h64c29 39 76 64 128 64 88 0 160-72 160-160 0-83-63-151-144-159zM288 288h-64v64h-64v-64h-64v-64h64v-64h64v64h64v64zM480 288c-18 0-32-14-32-32s14-32 32-32 32 14 32 32-14 32-32 32zM576 288c-18 0-32-14-32-32 0-18 14-32 32-32s32 14 32 32c0 18-14 32-32 32z\\\"></path></svg> \",\n youtube: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\\\"></path><polygon points=\\\"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02\\\"></polygon></svg>\",\n discord: \"<svg class=\\\"filled\\\" version=\\\"1\\\" viewBox=\\\"0 0 1013 768\\\"><path d=\\\"M858 64c-60-28-131-51-204-64l-5-1c-8 14-17 32-25 51l-1 4c-35-6-75-9-116-9s-81 3-120 9l4-1c-9-22-18-40-28-57l1 3c-79 14-149 36-214 67l5-2c-132 196-168 387-150 575v0c73 55 158 99 250 127l6 2c19-26 38-55 53-85l2-3c-33-13-62-27-89-43l2 1c7-5 14-11 21-16 75 36 163 57 256 57s181-21 260-59l-4 2c7 6 14 11 21 16-25 15-53 29-83 40l-4 1c17 34 36 63 56 90l-1-2c98-30 183-74 259-130l-2 2c21-218-36-407-151-575zM338 524c-50 0-91-45-91-101s40-102 91-102 92 46 91 102-40 101-91 101zM675 524c-50 0-91-45-91-101s40-102 91-102 92 46 91 102-40 101-91 101z\\\"></path></svg> \",\n facebook: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\\\"></path></svg>\",\n google: \"<svg class=\\\"filled\\\" version=\\\"1\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M256 0c-141 0-256 115-256 256s115 256 256 256 256-115 256-256-115-256-256-256zM260 448c-106 0-192-86-192-192s86-192 192-192c52 0 95 19 129 50l-52 50c-14-14-39-30-77-30-66 0-119 54-119 121s54 121 119 121c76 0 105-55 109-83h-109v-66h181c2 10 3 19 3 32 0 110-73 188-184 188z\\\"></path></svg> \",\n npm: \"<svg class=\\\"filled\\\" version=\\\"1\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M0 0v512h512v-512h-512zM416 416h-64v-256h-96v256h-160v-320h320v320z\\\"></path></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,14.25 C8,14.25,5,15.25,5,17.25 C5,19.25,8,19.25,8,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,14.25 C16,14.25,19,15.25,19,17.25 C19,19.25,16,19.25,16,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.5,4.85 C4.5,3.69,5.4,2.75,6.5,2.75 C6.5,2.75,17.5,2.75,17.5,2.75 C18.61,2.75,19.5,3.69,19.5,4.85 C19.5,4.85,19.5,12.16,19.5,12.16 C19.5,13.32,18.61,14.25,17.5,14.25 C17.5,14.25,6.5,14.25,6.5,14.25 C5.4,14.25,4.5,13.32,4.5,12.16 C4.5,12.16,4.5,4.85,4.5,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,5.25 C12,5.25,12,11.25,12,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,7.25 C14,7.25,14,8.25,14,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,7.25 C10,7.25,10,8.25,10,8.25\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M16,21.25 C16,21.25,15,20.25,15,20.25 C15,20.25,14,21.25,14,21.25\\\"/><path style=\\\"fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-width:1;\\\" d=\\\"M10,21.25 C10,21.25,9,20.25,9,20.25 C9,20.25,8,21.25,8,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,14.25 C8,14.25,16,14.25,16,14.25 C16,14.25,16,19.25,16,19.25 C16,19.25,8,19.25,8,19.25 C8,19.25,8,14.25,8,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,4 C12,4,11.99,4,11.99,4 C6.19,4,3,4.73,3,8.5 C3,11.39,4.66,13,7.27,13 C9.88,13,10.68,11.13,11.99,11.13 C11.99,11.13,12,11.13,12,11.13 C12,11.13,12.01,11.13,12.01,11.13 C13.32,11.13,14.12,13,16.73,13 C19.34,13,21,11.39,21,8.5 C21,4.73,17.81,4,12.01,4 C12.01,4,12,4,12,4 C12,4,12,4,12,4 z\\\"/></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,2 C19.99,2,19.98,2,19.98,2 C8.39,2,2,3.61,2,12 C2,18.41,5.32,22,10.54,22 C15.77,22,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,29.46,22 C34.68,22,38,18.41,38,12 C38,3.61,31.61,2,20.02,2 C20.02,2,20.01,2,20,2 C20,2,20,2,20,2 z\\\"/></g><path style=\\\"fill:#fbed21;fill-rule:evenodd;\\\" d=\\\"M12.2,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.1,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.4,33.98,16.5,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.5,8.46,19.4,12.2,19.84 z\\\"/><path style=\\\"fill:#8cc63f;fill-rule:evenodd;\\\" d=\\\"M12.2,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.1,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.2,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.4,33.98,16.5,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.2,19.84 C11.9,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.5,8.46,19.4,12.2,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.2,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.2,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.8,19.99,15.5 C19.99,15.87,20.3,16.18,20.64,16.17 C20.99,16.18,21.3,15.87,21.29,15.5 C21.29,11.8,21.29,8.09,21.29,4.39 C21.3,4.02,20.99,3.71,20.64,3.72 C20.3,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.2,8.63 C16.2,9.05,16.2,9.46,16.2,9.88 C16.19,10.25,16.5,10.56,16.85,10.55 C17.19,10.56,17.5,10.25,17.5,9.88 C17.5,9.46,17.5,9.05,17.5,8.63 C17.5,8.26,17.19,7.95,16.85,7.96 C16.5,7.95,16.19,8.26,16.2,8.63 z\\\"/><path style=\\\"fill:#fe1a22;fill-rule:nonzero;\\\" d=\\\"M18.87,4.39 C18.87,8.09,18.87,11.8,18.87,15.5 C18.87,15.87,19.18,16.18,19.52,16.17 C19.86,16.18,20.18,15.87,20.17,15.5 C20.17,11.8,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.8,19.41,15.5 C19.41,15.87,19.72,16.18,20.07,16.17 C20.41,16.18,20.72,15.87,20.72,15.5 C20.72,11.8,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 cmy: \"<svg class=\\\"color filled\\\" viewBox=\\\"0 0 24 24\\\"><g><g><path style=\\\"fill:#00ff00;fill-rule:evenodd;\\\" d=\\\"M12,10.88 C10.9,10.01,9.51,9.5,8,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,10.88 z\\\"/><path style=\\\"fill:#0000ff;fill-rule:evenodd;\\\" d=\\\"M12,10.88 C13.1,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,10.88 C12,10.88,12,10.88,12,10.88 z\\\"/><path style=\\\"fill:#000000;fill-rule:evenodd;\\\" d=\\\"M9.78,14.11 C10.17,12.81,10.96,11.69,12,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.6,14.71,9.5,15.34,9.5,16 C9.5,18.08,10.48,19.93,12,21.12 C13.52,19.93,14.5,18.08,14.5,16 C14.5,15.34,14.4,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.6,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.4,9.29,18.22,9.89 C17.53,9.64,16.78,9.5,16,9.5 C14.49,9.5,13.1,10.01,12,10.88 C10.9,10.01,9.51,9.5,8,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.8,1.5,13.19,1.5,16 C1.5,19.59,4.41,22.5,8,22.5 C9.51,22.5,10.9,21.99,12,21.12 C10.48,19.93,9.5,18.08,9.5,16 C9.5,15.34,9.6,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.8,22.5,13.19,22.5,16 C22.5,19.59,19.59,22.5,16,22.5 C14.49,22.5,13.1,21.99,12,21.12 C13.52,19.93,14.5,18.08,14.5,16 C14.5,15.34,14.4,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,10.88 C10.9,10.01,9.51,9.5,8,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,10.88 z\\\"/><path style=\\\"fill:#ffff00;fill-rule:evenodd;\\\" d=\\\"M12,10.88 C13.1,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,10.88 C12,10.88,12,10.88,12,10.88 z\\\"/><path style=\\\"fill:#ffffff;fill-rule:evenodd;\\\" d=\\\"M9.78,14.11 C10.17,12.81,10.96,11.69,12,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.6,14.71,9.5,15.34,9.5,16 C9.5,18.08,10.48,19.93,12,21.12 C13.52,19.93,14.5,18.08,14.5,16 C14.5,15.34,14.4,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.6,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.4,9.29,18.22,9.89 C17.53,9.64,16.78,9.5,16,9.5 C14.49,9.5,13.1,10.01,12,10.88 C10.9,10.01,9.51,9.5,8,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.8,1.5,13.19,1.5,16 C1.5,19.59,4.41,22.5,8,22.5 C9.51,22.5,10.9,21.99,12,21.12 C10.48,19.93,9.5,18.08,9.5,16 C9.5,15.34,9.6,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.8,22.5,13.19,22.5,16 C22.5,19.59,19.59,22.5,16,22.5 C14.49,22.5,13.1,21.99,12,21.12 C13.52,19.93,14.5,18.08,14.5,16 C14.5,15.34,14.4,14.71,14.22,14.11 C16.13,13.42,17.63,11.85,18.22,9.89 z\\\"/></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.7 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.2,29.95,37.2 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,21.82,34.76 C21.82,34.76,20.22,31.78,20.22,31.78 C18.99,29.5,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.7,38.35,31.7 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.7 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.2,19.05,37.2 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,27.18,34.76 C27.18,34.76,28.78,31.78,28.78,31.78 C30.01,29.5,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.7,10.65,31.7 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 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.5,14.5 C18.5,14.5,21.5,15.5,21.5,17.5 C21.5,19.5,18.5,19.5,18.5,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.9,3,9,3 C9,3,20,3,20,3 C21.1,3,22,3.94,22,5.09 C22,5.09,22,12.41,22,12.41 C22,13.56,21.1,14.5,20,14.5 C20,14.5,9,14.5,9,14.5 C7.9,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.2,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.6,17.5 C10.6,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.1,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 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.6,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.6,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 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.1,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.4,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.2 C15.69,42.2,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.4,4.79,18.4,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.4,4.79 C18.4,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.2,15.69,42.2 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.4,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.9,10,33.82,6.57 z\\\"/></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,29 C32,29,38,31,38,35 C38,39,32,39,32,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 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.9,3.9,31,5,31 C5,31,43,31,43,31 C44.1,31,45,31.9,45,33 C45,33,45,43,45,43 C45,44.1,44.1,45,43,45 C43,45,5,45,5,45 C3.9,45,3,44.1,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,3 C13,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,26,13,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 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 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.5,10,5.5,10 C6.05,10,6.5,10.45,6.5,11 C6.5,11,6.5,11,6.5,11 C6.5,11.55,6.05,12,5.5,12 C5.5,12,5.5,12,5.5,12 C4.95,12,4.5,12.45,4.5,13 C4.5,13,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.5,16,5.5,16 C6.05,16,6.5,16.45,6.5,17 C6.5,17,6.5,17,6.5,17 C6.5,17.55,6.05,18,5.5,18 C5.5,18,4.5,18,4.5,18 C4.5,18,5.5,18,5.5,18 C6.05,18,6.5,18.45,6.5,19 C6.5,19,6.5,19,6.5,19 C6.5,19.55,6.05,20,5.5,20 C5.5,20,4.5,20,4.5,20\\\"/></g></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 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 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 pin: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><g><path style=\\\"\\\" d=\\\"M16.23,4.73 C16.23,4.73,19.42,7.9,19.42,7.9 C19.42,7.9,14.46,15.69,14.46,15.69 C14.46,15.69,8.45,9.68,8.45,9.68 C8.45,9.68,16.23,4.73,16.23,4.73 z\\\"/><path style=\\\"\\\" d=\\\"M20.84,9.32 C20.84,9.32,14.47,2.95,14.47,2.95\\\"/><path style=\\\"\\\" d=\\\"M16.6,17.8 C16.6,17.8,6.7,7.9,6.7,7.9\\\"/><path style=\\\"\\\" d=\\\"M10.23,11.44 C10.23,11.44,5.99,18.51,5.99,18.51 C5.99,18.51,13.06,14.27,13.06,14.27\\\"/></g></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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 play: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"5 3 19 12 5 21 5 3\\\"></polygon></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 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 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 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 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 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 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 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 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 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 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 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 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 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 framer: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\\\"></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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 minus: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></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 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 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 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 navigation2: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"12 2 19 21 12 17 5 21 12 2\\\"></polygon></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 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 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 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 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 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 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 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 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\\\" y2=\\\"7.75\\\"></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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 twitch: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7\\\"></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 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 check: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"20 6 9 17 4 12\\\"></polyline></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 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 circle: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle></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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 settings: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M4.78,6.75 C6.02,7.26,7.26,6.02,6.75,4.78 C6.75,4.78,6.24,3.57,6.24,3.57 C5.93,2.8,6.29,1.92,7.06,1.6 C7.06,1.6,8.14,1.15,8.14,1.15 C8.91,0.83,9.79,1.2,10.11,1.96 C10.11,1.96,10.61,3.18,10.61,3.18 C11.12,4.42,12.88,4.42,13.39,3.18 C13.39,3.18,13.89,1.97,13.89,1.97 C14.21,1.2,15.09,0.83,15.86,1.15 C15.86,1.15,16.94,1.6,16.94,1.6 C17.71,1.92,18.08,2.8,17.76,3.57 C17.76,3.57,17.15,5.03,17.15,5.03 C16.64,6.27,17.88,7.51,19.12,7 C19.12,7,20.51,6.42,20.51,6.42 C21.28,6.1,22.16,6.47,22.47,7.23 C22.47,7.23,22.92,8.32,22.92,8.32 C23.24,9.09,22.88,9.96,22.11,10.28 C22.11,10.28,21.07,10.71,21.07,10.71 C19.83,11.23,19.83,12.98,21.07,13.49 C21.07,13.49,22.04,13.89,22.04,13.89 C22.8,14.21,23.17,15.09,22.85,15.86 C22.85,15.86,22.4,16.94,22.4,16.94 C22.08,17.71,21.2,18.07,20.43,17.76 C20.43,17.76,19.22,17.25,19.22,17.25 C17.98,16.74,16.74,17.98,17.25,19.22 C17.25,19.22,17.76,20.43,17.76,20.43 C18.07,21.2,17.71,22.08,16.94,22.4 C16.94,22.4,15.86,22.85,15.86,22.85 C15.09,23.17,14.21,22.8,13.89,22.04 C13.89,22.04,13.39,20.82,13.39,20.82 C12.88,19.58,11.12,19.58,10.61,20.82 C10.61,20.82,10.11,22.04,10.11,22.04 C9.79,22.8,8.91,23.17,8.14,22.85 C8.14,22.85,7.06,22.4,7.06,22.4 C6.29,22.08,5.93,21.2,6.24,20.44 C6.24,20.44,6.64,19.47,6.64,19.47 C7.16,18.23,5.92,16.99,4.68,17.5 C4.68,17.5,3.64,17.93,3.64,17.93 C2.87,18.25,1.99,17.89,1.67,17.12 C1.67,17.12,1.22,16.04,1.22,16.04 C0.91,15.27,1.27,14.39,2.04,14.07 C2.04,14.07,3.43,13.49,3.43,13.49 C4.67,12.98,4.67,11.23,3.43,10.71 C3.43,10.71,1.96,10.11,1.96,10.11 C1.2,9.79,0.83,8.91,1.15,8.14 C1.15,8.14,1.6,7.06,1.6,7.06 C1.92,6.29,2.8,5.93,3.57,6.24 C3.57,6.24,4.78,6.75,4.78,6.75 z M14.31,11.04 C14.84,12.32,14.23,13.78,12.96,14.31 C11.68,14.84,10.22,14.23,9.69,12.96 C9.16,11.68,9.77,10.22,11.04,9.69 C12.32,9.16,13.78,9.77,14.31,11.04 z\\\"/></g></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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 chevronRight: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polyline points=\\\"9 18 15 12 9 6\\\"></polyline></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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 navigation: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><polygon points=\\\"3 11 22 2 13 21 11 13 3 11\\\"></polygon></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 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 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 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 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 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 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 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 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 fontItalic: \"<svg class=\\\"stroked\\\" viewBox=\\\"0 0 24 24\\\"><g><path style=\\\"\\\" d=\\\"M17,4.5 C17,4.5,13,4.5,13,4.5\\\"/><path style=\\\"\\\" d=\\\"M11,19.5 C11,19.5,7,19.5,7,19.5\\\"/><path style=\\\"\\\" d=\\\"M15,4.5 C15,4.5,9,19.5,9,19.5\\\"/></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 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 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.3,9,18,9.7,18,10.56 C18,10.56,18,15,18,15 C18,18.31,15.31,21,12,21 C8.69,21,6,18.31,6,15 C6,15,6,10.56,6,10.56 C6,9.7,6.7,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.6,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 toggleLeft: \"toggleRight0f\",\n cornerLeftDown: \"cornerRightDown0f\",\n skipBack: \"skipForward0f\",\n cornerUpLeft: \"cornerUpRight0f\",\n rotateCcw: \"rotateCw0f\",\n cornerLeftUp: \"cornerRightUp0f\",\n cornerDownLeft: \"cornerDownRight0f\",\n refreshCcw: \"refreshCw0f\",\n chevronsDown: \"chevronsRight90r\",\n chevronsLeft: \"chevronsRight180r\",\n chevronsUp: \"chevronsRight270r\",\n chevronDown: \"chevronRight90r\",\n chevronLeft: \"chevronRight180r\",\n chevronUp: \"chevronRight270r\",\n arrowDown: \"arrowRight90r\",\n arrowLeft: \"arrowRight180r\",\n arrowUp: \"arrowRight270r\",\n arrowDownCircle: \"arrowRightCircle90r\",\n arrowLeftCircle: \"arrowRightCircle180r\",\n arrowUpCircle: \"arrowRightCircle270r\",\n thumbsDown: \"thumbsUp1f\",\n arrowDownRight: \"arrowUpRight90r\",\n arrowDownLeft: \"arrowUpRight180r\",\n arrowUpLeft: \"arrowUpRight270r\"\n} as IconData\n",
|
|
9
9
|
"/*#\n# icons\n\n<div class=\"center\" style=\"display: flex; gap: 10px; padding: 10px\">\n <tosi-icon title=\"tosijs\" icon=\"tosiFavicon\" style=\"--tosi-icon-size: 128px\"></tosi-icon>\n <tosi-icon title=\"tosijs-ui\" icon=\"tosiUi\" style=\"--tosi-icon-size: 128px\"></tosi-icon>\n <tosi-icon title=\"tosi-platform\" icon=\"tosiPlatform\" style=\"--tosi-icon-size: 128px\"></tosi-icon>\n</div>\n\n`icons` is a proxy that generates an `ElementCreator` for a given icon on demand,\ne.g. `icons.chevronDown()` produces an `<svg>` element containing a downward-pointing chevron\nicon with the class `icon-chevron-down`.\n\n```js\nconst { tosi, elements } = tosijs\nimport { icons, svgIcon, postNotification } from 'tosijs-ui'\n\nconst { div, span, input, select, option } = elements\n\nconst prefixes = ['', 'un', 'check', 'cancel', 'search', 'spin120', 'spin360']\nconst suffixes = [\n '', '90r', '180r', '_90r', '0f', '1f',\n '50o', '75s', '_ff0000F', '_00fS', '4W',\n]\n\nconst iconNames = Object.keys(icons).sort()\n\nconst { iconDemo } = tosi({\n iconDemo: {\n icon: '',\n prefix: '',\n suffix: '',\n }\n})\n\nfunction composeName(prefix, suffix, base) {\n let name = base\n if (prefix) name = prefix + name[0].toUpperCase() + name.slice(1)\n if (suffix) name = name + suffix\n return name\n}\n\nconst scroller = div({ class: 'scroller' })\n\nfunction rebuildGrid() {\n const prefix = iconDemo.prefix.value\n const suffix = iconDemo.suffix.value\n scroller.textContent = ''\n for (const iconName of iconNames) {\n const composed = composeName(prefix, suffix, iconName)\n scroller.append(div(\n {\n class: 'tile',\n onClick() {\n iconDemo.icon = iconDemo.icon != composed ? composed : ''\n postNotification({\n icon: iconName,\n message: `${composed} clicked`,\n duration: 2,\n color: 'hotpink'\n })\n },\n onMouseleave() {\n iconDemo.icon = ''\n }\n },\n svgIcon({ icon: composed, size: 24 }),\n div((prefix || suffix) ? composed : iconName)\n ))\n }\n}\n\niconDemo.prefix.observe(rebuildGrid)\niconDemo.suffix.observe(rebuildGrid)\nrebuildGrid()\n\nconst detailIcon = svgIcon({\n class: 'icon-detail',\n size: 256,\n bind: {\n binding: {\n toDOM(element, value) {\n element.style.opacity = value ? 1 : 0\n if (value) element.icon = value\n }\n },\n value: iconDemo.icon\n }\n})\n\npreview.append(\n div(\n { class: 'toolbar' },\n input({\n placeholder: 'filter icons by name',\n type: 'search',\n onInput(event) {\n const needle = event.target.value.toLocaleLowerCase()\n const tiles = Array.from(scroller.querySelectorAll('.tile'))\n tiles.forEach(tile => {\n tile.style.display = tile.textContent.toLocaleLowerCase().includes(needle) ? '' : 'none'\n })\n }\n }),\n select(\n { bindValue: iconDemo.prefix },\n ...prefixes.map(p => option({ value: p }, p || 'prefix'))\n ),\n select(\n { bindValue: iconDemo.suffix },\n ...suffixes.map(s => option({ value: s }, s || 'suffix'))\n ),\n ),\n scroller,\n detailIcon\n)\n```\n```css\n.preview .toolbar {\n display: flex;\n gap: 10px;\n padding: 10px;\n align-items: center;\n}\n\n.preview .toolbar input[type=search] {\n flex: 1;\n}\n\n.preview .scroller {\n display: grid;\n grid-template-columns: calc(33% - 5px) calc(33% - 5px) calc(33% - 5px);\n grid-auto-rows: 44px;\n flex-wrap: wrap;\n padding: var(--spacing);\n gap: var(--spacing);\n overflow: hidden scroll !important;\n height: 100%;\n}\n\n.preview .tile {\n display: flex;\n text-align: center;\n cursor: pointer;\n background: #8882;\n padding: 10px;\n gap: 10px;\n border-radius: 5px;\n}\n\n.preview .tile:hover {\n background: #8884;\n color: var(--brand-color);\n}\n\n.preview .tile > div {\n font-family: Menlo, Monaco, monospace;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.preview .icon-detail {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: 0.5s ease-out;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 20px;\n background: #8886;\n border-radius: 20px;\n pointer-events: none;\n}\n```\n```test\nconst tiles = preview.querySelectorAll('.tile')\ntest('icons are rendered', () => {\n expect(tiles.length).toBeGreaterThan(100)\n})\ntest('icon tiles have svg icons', () => {\n const firstIcon = tiles[0].querySelector('tosi-icon')\n expect(firstIcon).toBeTruthy()\n})\ntest('filter input and prefix select exist', () => {\n expect(preview.querySelector('input[type=\"search\"]')).toBeTruthy()\n expect(preview.querySelector('select')).toBeTruthy()\n})\n```\n\nThese icons are completely unstyled and can be colored using the css `fill` property. This will\nprobably be broken out as a standalone library to allow the use of whatever icons you like\n(its source data is currently generated from an [icomoon](https://icomoon.com/app)\n`selection.json` file, but could just as easily be generated from a directory full of SVGs).\n\n## Adding and redefining icons\n\nSimply pass a map of icon names to svg source strings…\n\n```\ndefineIcons({\n someIcon: '<svg ....',\n otherIcon: '<svg ...',\n})\n```\n\n### Icon Classes\n\nIcons will be generated with the class `tosi-icon`.\n\nYou can also assign the classes `filled`, `stroked`, and `color` to icons to set default\nicon styling.\n\n## `<tosi-icon>`\n\n`<tosi-icon>` is a simple component that lets you embed icons as HTML. Check the CSS tab to see\nhow it's styled.\n\n`<tosi-icon>` supports four attributes:\n\n- `size` (defaults to 0) if non-zero sets the height of the icon in pixels\n- `icon` is the name of the icon\n- `color` is the fill color (if you don't want to style it using CSS)\n- `stroke` is the stroke color\n- `stroke-width` (defaults to 1) is the width of the stroke assuming the icon's viewBox is 1024 units tall but the\n icon is rendered at 32px (so it's multiplied by 32).\n\n> **Aside**: the tool used to build the icon library scales up the viewBox to 1024 tall and then rounds\n> all coordinates to nearest integer on the assumption that this is plenty precise enough for icons and\n> makes everything smaller and easier to compress.\n\n## SVGs as data-urls\n\n```js\nimport { elements } from 'tosijs'\nimport { icons, svg2DataUrl } from 'tosijs-ui'\n\npreview.append(\n elements.span({\n style: {\n display: 'inline-block',\n width: '120px',\n height: '24px',\n content: '\" \"',\n background: svg2DataUrl(icons.search(), 'none', '#bbb', 3)\n }\n }),\n elements.span({\n style: {\n display: 'inline-block',\n width: '120px',\n height: '24px',\n content: '\" \"',\n background: svg2DataUrl(icons.star(), 'gold', 'orange', 4)\n }\n }),\n // Note that this is a color icon whose fill and stroke are \"baked in\"\n elements.span({\n style: {\n display: 'inline-block',\n width: '100px',\n height: '200px',\n content: '\" \"',\n background: svg2DataUrl(icons.tosi(), undefined, undefined, 2)\n }\n }),\n)\n```\n\n`svg2DataUrl(svg: SVGElement, fill?: string, stroke?: string, strokeWidth?: number): string` is provided as a\nutility for converting SVG elements into data-urls (e.g. for incorporation into\nCSS properties. (It's used by the `<tosi-3d>` component to render the XR widget.)\n\nIf you're using `SVGElement`s created using the `icons` proxy, you'll want to provide `fill` and/or\n`stroke` values, because images loaded via css properties cannot be styled.\n\n## Color Icons\n\n```html\n<tosi-icon icon=\"tosiFavicon\" class=\"demo-icon\"></tosi-icon>\n<tosi-icon icon=\"tosiPlatform\" class=\"demo-icon recolored\"></tosi-icon>\n<tosi-icon icon=\"tosiXr\" class=\"demo-icon animated\"></tosi-icon>\n```\n```css\n.demo-icon {\n --tosi-icon-size: 160px\n}\n\n.recolored > svg {\n pointer-events: all;\n transition: 0.25s ease-out;\n transform: scale(1);\n filter: grayscale(0.5)\n}\n\n.recolored:hover > svg {\n opacity: 1;\n transform: scale(1.1);\n filter: grayscale(0);\n}\n\n.animated > svg {\n animation: 2s linear 0s infinite rainbow;\n}\n\n@keyframes rainbow {\n 0% {\n filter: hue-rotate(0deg);\n }\n 100% {\n filter: hue-rotate(360deg);\n }\n}\n```\n\nColored icons have the `color` class added to them, so you can easily create css rules\nthat, for example, treat all colored icons inside buttons the same way.\n\n> Earlier versions of this library replaced color specifications with CSS-variables in a\n> very convoluted way, but in practice this isn't terribly useful as SVG properties can't\n> be animated by CSS, so this functionality has been stripped out.\n\n## Icon Composition & Math\n\n<tosi-icon icon=\"tosi$map50o_brandColorS\" size=128></tosi-icon>\n<tosi-icon icon=\"lock50s75o_10y$shield_brandColorS\" size=128></tosi-icon>\n<tosi-icon icon=\"unLock_brandColorS\" size=128></tosi-icon>\n<tosi-icon icon=\"checkFile\" size=128></tosi-icon>\n<tosi-icon icon=\"spin120Loader40s_30x_brandColorS$cloud\" size=128></tosi-icon>\n\n### Why?\n\nI needed a pin icon for column pinning in the data table. The only pin\nin the feather set is a map pin, so I created a push-pin icon\n<tosi-icon icon=\"pin_brandColorS\" size=24></tosi-icon>.\nBut immediately I also needed unpin, pin-left, and pin-right — a lot\nof new icons for one feature. Of course I could flip the pin with CSS, but\nthis is a problem *everywhere, all the time*: every directional icon\nneeds 2–4 variants, every action needs a negation, every status needs\nan overlay.\n\nWhy not fix it once and also eliminate the need to maintain trivial\nvariations on every icon?\n\n<tosi-icon icon=\"pin_brandColorS\" size=64></tosi-icon>\n<tosi-icon icon=\"pin0f_brandColorS\" size=64></tosi-icon>\n<tosi-icon icon=\"unPin_brandColorS\" size=64></tosi-icon>\n\nAnd now we can just create icon languages…\n\n<tosi-icon icon=\"checkUsers\" size=64></tosi-icon>\n<tosi-icon icon=\"searchMap\" size=64></tosi-icon>\n<tosi-icon icon=\"cancelHeart\" size=64></tosi-icon>\n\n### Icon modifier suffixes\n\nThe suffix system is inspired by tosijs's CSS variable math, where\n`borderRadius50` becomes `calc(var(--border-radius) * 0.5)` and\n`someColor50o` adjusts opacity to 50%. The same `value + letter`\nconvention works for icons:\n\n- `NNo` — opacity N% (e.g. `lock50o` = 50% opacity)\n- `NNs` — scale N% (e.g. `star75s` = 75% scale)\n- `NNr` — rotate N° (e.g. `chevronRight90r` = chevron pointing down)\n- `_NNr` — rotate -N° (e.g. `arrow_45r`)\n- `0f` — flip horizontally (e.g. `sidebar0f`)\n- `1f` — flip vertically\n- `NNx` — translateX N% (e.g. `plus20x` = shift right 20%)\n- `NNy` — translateY N% (e.g. `plus_20y` = shift up 20%)\n- `_<HEX>F` — fill color (e.g. `star_FF0000F` = red fill; use uppercase hex)\n- `_<HEX>S` — stroke color (e.g. `lock_00FS` = blue stroke)\n- `_<camelCase>F` — fill CSS variable (e.g. `star_brandColorF` = `var(--brand-color)`)\n- `_<camelCase>S` — stroke CSS variable (e.g. `lock_accentS` = `var(--accent)`)\n- CSS color math works too: `star_brandColor40oF` = brand color at 40% opacity\n- `NW` — stroke width (e.g. `lock4W` = stroke-width 4)\n\nSuffixes combine freely: `plus50o60s25x25y_f00F` = plus at 50% opacity,\n60% scale, shifted 25% right and down, filled red.\n\n### Stacking icons\n\nUse `$` to stack icons: `overlay$base`, or `top$middle$bottom` for\nmultiple layers. The last segment is the base (sets the size), everything\nbefore it is overlaid on top. Each segment is resolved independently —\nsuffixes, redirects, and rules all work:\n\n icons['tosi$map50o']() // tosi logo on a 50% opacity map\n icons['star45r$circle']() // rotated star on a circle\n icons['lock50s75o_10y$shield']() // translucent lock on a shield\n icons['star25o$lock50o$shield']() // three layers\n\n### Icon redirects\n\nIcon definitions that don't start with `<svg` are treated as redirects.\nThis is how we eliminate redundant SVG files — `chevronDown` doesn't\nneed its own SVG:\n\n defineIcons({\n chevronDown: 'chevronRight90r',\n chevronLeft: 'chevronRight180r',\n chevronUp: 'chevronRight270r',\n userAdd: 'plus50o60s25x25y$user',\n })\n\n### Prefix rules\n\nRules apply named prefixes to icons. Built-in rules use string rewrites\nthat feed back into the resolution pipeline:\n\n- `un<Icon>` — translucent slash overlay (e.g. `unPin`, `unLock`)\n- `check<Icon>` — green check overlay\n- `cancel<Icon>` — red x overlay\n- `search<Icon>` — magnifier overlay\n- `spin<dps><Icon>` — continuous rotation at N°/second (e.g. `spin360Loader`)\n- `spin_<dps><Icon>` — counter-clockwise (e.g. `spin_180Star`)\n\nThe overlay rules are just string rewrites — for example, `unFoo`\nbecomes `slash25o$foo75s75o`. **Overlay icons should have a square\nviewBox** for best results on non-square base icons.\n\n### Custom rules\n\n`iconRules` is a mutable array. Each rule has a `prefix` (string or\nRegExp) and an `apply` function that returns a **string** (resolved\nthrough the full pipeline), an **Element** (used directly), or **null**\n(skip to next rule).\n\nString rewrites are the simplest — just return a composition string:\n\n // String rewrite: addFoo → plus75o_0000ffS$foo75s50o\n iconRules.push({\n prefix: 'add',\n apply: (baseName) => `plus75o_0000ffS$${baseName}75s50o`,\n })\n\nFunction rules can use `resolveIcon()` and `wrapIcon()` (both exported)\nfor more control:\n\n // Function rule: glowNNFoo → foo with brightness filter\n iconRules.push({\n prefix: /^glow(\\d+)/,\n apply: (baseName, match, parts) => {\n const icon = resolveIcon(baseName, parts)\n icon.style.filter = `brightness(${match[1]}%)`\n return wrapIcon(baseName, parts, icon)\n },\n })\n\n- `resolveIcon(name, parts)` — resolve any icon name through the full\n pipeline (redirects, suffixes, rules, stacking)\n- `wrapIcon(name, parts, ...children)` — wrap elements in a composite\n container with proper sizing, `pointer-events: none`, and `data-icon`\n\n### Building an icon vocabulary\n\nYou don't need to spell out the DSL every time. The real power is in\ndefining named patterns that become your application's icon language.\nFor example, a `remove` prefix that overlays a trash icon:\n\n iconRules.push({\n prefix: 'remove',\n apply: (baseName) =>\n `trash75o_actionColorS$${baseName}50o`,\n })\n\nNow `removeUser`, `removeFile`, `removeProject` all just work — and\nthey're consistent. If you redesign the trash icon or change\n`--action-color`, every \"remove\" icon updates automatically.\n\nYou can also use `defineIcons` for one-off named compositions:\n\n defineIcons({\n cloudSync: 'spin120Loader40s_30x$cloud',\n secureShield: 'lock50s75o_10y$shield',\n newFile: 'plus75o60s25x25y$file',\n })\n\nThen just use `icons.cloudSync()` or `<tosi-icon icon=\"cloudSync\">` —\nthe composition is invisible to consumers of the icon.\n\n### Composites and `svg2DataUrl`\n\nComposed icons (stacked, overlay rules) are wrapped in a `<span>`, not\na single SVG. `svg2DataUrl()` will render only the base icon and log a\nconsole error. Simple suffix transforms and plain icons work normally\nwith `svg2DataUrl`.\n\n## Missing Icons\n\nIf you ask for an icon that isn't defined, the `icons` proxy will print a warning to console\nand render a `square` (in fact, `icons.square()`) as a fallback.\n\n## Icon Sources\n\nMany of these icons are sourced from [Feather Icons](https://github.com/feathericons/feather), but\nall the icons have been processed to have integer coordinates in a `viewBox` typically scaled to 1024 × 1024.\n\nThe corporate logos (Google, etc.) are from a variety of sources, in many cases ultimately from the\norganizations themselves. It's up to you to use them correctly.\n\nThe remaining icons I have created myself using the excellent but sometimes flawed\n[Amadine](https://apps.apple.com/us/app/amadine-vector-design-art/id1339198386?mt=12)\nand before that [Graphic](https://apps.apple.com/us/app/graphic/id404705039?mt=12).\n\n### Building icon data\n\nUse [make-icon-data](/?make-icon-data.js) to generate icon data from SVG files.\nIt supports directional folder conventions to auto-generate rotated and flipped\nvariants, eliminating redundant SVGs.\n\n### Feather Icons Copyright Notice\n\nThe MIT License (MIT)\n\nCopyright (c) 2013-2023 Cole Bemis\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n*/\n\nimport {\n elements,\n svgElements,\n ElementCreator,\n ElementPart,\n Component as WebComponent,\n XinStyleRule,\n Color,\n vars,\n varDefault,\n} from 'tosijs'\nimport { SVGIconMap } from './icon-types'\nimport iconData from './icon-data'\n\nexport const defineIcons = (newIcons: { [key: string]: string }): void => {\n Object.assign(iconData, newIcons)\n}\n\nexport const svg2DataUrl = (\n icon: Element,\n fill?: string,\n stroke?: string,\n strokeWidth?: number\n): string => {\n // Handle composite icons (span wrappers) by finding the inner SVG(s)\n const svgs =\n icon instanceof SVGElement\n ? [icon]\n : Array.from(icon.querySelectorAll('svg'))\n\n if (svgs.length > 1) {\n const name = (icon as HTMLElement).dataset?.icon || 'unknown'\n console.error(\n `svg2DataUrl: composite icon \"${name}\" cannot be serialized as a data URL, rendering base icon only`\n )\n }\n\n const svg = svgs[0]\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n for (const path of svg.querySelectorAll(\n 'path, polygon, line, circle, rect, ellipse, polyline'\n )) {\n if (fill !== undefined) path.setAttribute('fill', fill)\n if (stroke !== undefined) path.setAttribute('stroke', stroke)\n if (strokeWidth !== undefined)\n path.setAttribute('stroke-width', String(strokeWidth))\n }\n\n const styled = svg.querySelectorAll('[style]')\n svg.removeAttribute('style')\n for (const item of [...styled] as HTMLElement[]) {\n const s = item.style\n if (s.fill) item.setAttribute('fill', Color.fromCss(s.fill).html)\n if (s.stroke) item.setAttribute('stroke', Color.fromCss(s.stroke).html)\n if (s.strokeWidth) item.setAttribute('strokeWidth', s.strokeWidth)\n if (s.strokeLinecap) item.setAttribute('strokeLinecap', s.strokeLinecap)\n if (s.strokeLinejoin) item.setAttribute('strokeLinejoin', s.strokeLinejoin)\n item.removeAttribute('style')\n }\n\n const text = encodeURIComponent(svg.outerHTML)\n return `url(data:image/svg+xml;charset=UTF-8,${text})`\n}\n\n// Compositional icon rules — when an icon isn't found, try to compose it\nexport interface IconRule {\n prefix: string | RegExp\n apply: (\n baseName: string,\n match: RegExpMatchArray | string,\n parts: ElementPart[]\n ) => Element | string | null\n}\n\n// Appends _ to names ending in digits to prevent suffix ambiguity\nconst safeIconSuffix = (name: string): string =>\n /\\d$/.test(name) ? name + '_' : name\n\nexport const iconRules: IconRule[] = [\n {\n prefix: /^spin(_?\\d+)/,\n apply(baseName, match, parts) {\n const dps = (match as RegExpMatchArray)[1].replace('_', '-')\n const duration = 360 / Math.abs(parseFloat(dps))\n const direction = dps.startsWith('-') ? 'reverse' : 'normal'\n // Resolve baseName with suffixes intact — they apply to the icon\n const icon = resolveIcon(baseName, [])\n const el = icon as HTMLElement\n if (el.animate) {\n const base = el.style.transform || ''\n el.animate(\n [\n { transform: `${base} rotate(0deg)` },\n { transform: `${base} rotate(360deg)` },\n ],\n {\n duration: duration * 1000,\n iterations: Infinity,\n direction,\n }\n )\n }\n return wrapIcon(baseName, parts, icon)\n },\n },\n {\n prefix: 'un',\n apply: (baseName) => `slash25o$${baseName}75s75o`,\n },\n {\n prefix: 'check',\n apply: (baseName) => `check75o_00aa00S$${baseName}75s50o`,\n },\n {\n prefix: 'cancel',\n apply: (baseName) => `x75o_cc0000S$${baseName}75s50o`,\n },\n {\n prefix: 'search',\n apply: (baseName) => `search80s30x30y$${baseName}50o`,\n },\n]\n\nlet iconIdCounter = 0\n\nfunction makeIcon(spec: string, parts: ElementPart[]): SVGElement {\n const div = elements.div()\n div.innerHTML = spec\n const sourceSvg = div.querySelector('svg') as SVGElement\n\n // Uniquify IDs (clipPath, mask, gradient, etc.) to prevent collisions\n const idEls = sourceSvg.querySelectorAll('[id]')\n if (idEls.length > 0) {\n const idMap = new Map<string, string>()\n for (const el of idEls) {\n const oldId = el.id\n const newId = `tosi_svg_id_${++iconIdCounter}`\n idMap.set(oldId, newId)\n el.id = newId\n }\n // Update all url(#...) and href references\n const html = sourceSvg.innerHTML\n let updated = html\n for (const [oldId, newId] of idMap) {\n const escaped = oldId.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n updated = updated\n .replace(new RegExp(`url\\\\(#${escaped}\\\\)`, 'g'), `url(#${newId})`)\n .replace(new RegExp(`href=\"#${escaped}\"`, 'g'), `href=\"#${newId}\"`)\n }\n if (updated !== html) {\n sourceSvg.innerHTML = updated\n }\n }\n\n const classes = new Set(sourceSvg.classList)\n classes.add('tosi-icon')\n const svg = svgElements.svg(\n {\n class: Array.from(classes).join(' '),\n viewBox: sourceSvg.getAttribute('viewBox'),\n },\n ...parts,\n ...sourceSvg.children\n )\n svg.style.strokeWidth = varDefault.tosiIconStrokeWidth('2px')\n if (classes.has('filled')) {\n svg.style.stroke = 'none'\n svg.style.fill = 'currentColor'\n } else if (classes.has('stroked')) {\n svg.style.stroke = varDefault.tosiIconStroke('currentColor')\n svg.style.fill = 'none'\n } else {\n svg.style.stroke = varDefault.tosiIconStroke('currentColor')\n svg.style.fill = varDefault.tosiIconFill('currentColor')\n }\n svg.style.height = varDefault.tosiIconSize('16px')\n return svg\n}\n\n/** Wrap icon elements in a composite container (for custom function rules) */\nexport function wrapIcon(\n prop: string,\n parts: ElementPart[],\n ...children: Element[]\n): HTMLSpanElement {\n const wrapper = elements.span(\n {\n class: 'tosi-icon-composite',\n dataIcon: prop,\n style: {\n display: 'inline-flex',\n position: 'relative',\n pointerEvents: 'none',\n },\n },\n ...children\n )\n // Merge any style parts without clobbering the wrapper's own styles\n for (const part of parts) {\n if (part && typeof part === 'object' && !('nodeType' in (part as any))) {\n const props = part as Record<string, any>\n if (props.style && typeof props.style === 'object') {\n Object.assign(wrapper.style, props.style)\n }\n if (props.class) {\n wrapper.classList.add(...String(props.class).split(' '))\n }\n }\n }\n return wrapper\n}\n\nfunction canResolve(name: string): boolean {\n const data = iconData as Record<string, string>\n if (data[name]) return true\n const parsed = parseStyleSuffixes(name)\n return parsed != null && !!data[parsed.baseName]\n}\n\nfunction composeIcon(prop: string, parts: ElementPart[]): Element | null {\n for (const rule of iconRules) {\n let baseName: string\n let match: RegExpMatchArray | string\n\n if (rule.prefix instanceof RegExp) {\n const re = new RegExp(rule.prefix.source + '(.+)$')\n const m = prop.match(re)\n if (!m) continue\n baseName = m[m.length - 1]\n baseName = baseName[0].toLowerCase() + baseName.slice(1)\n match = m\n } else {\n if (!prop.startsWith(rule.prefix) || prop.length <= rule.prefix.length)\n continue\n baseName =\n prop[rule.prefix.length].toLowerCase() +\n prop.slice(rule.prefix.length + 1)\n match = rule.prefix\n }\n\n // Only apply if baseName can actually resolve to an icon\n if (!canResolve(baseName)) continue\n\n const result = rule.apply(safeIconSuffix(baseName), match, parts)\n if (typeof result === 'string') return resolveIcon(result, parts)\n if (result) return result\n }\n\n return null\n}\n\nconst MAX_REDIRECTS = 10\n\n// Style suffixes — value then letter code:\n// 50o (opacity), 75s (scale), 20x (translateX%), _10y (translateY%)\n// 90r (rotate 90°), _45r (rotate -45°), 0f (flipH), 1f (flipV)\n// _FF0000F (fill hex), _f00S (stroke hex), 3W (stroke-width)\n// _brandColorF (fill var), _accentS (stroke var)\n// Icon names ending in digits need _ separator: edit2_50o\nconst SUFFIX_RE =\n /(?:(?<=[a-zA-Z_])(?:_?\\d+[osxyr]|[01]f|\\d+W)|_[a-zA-Z0-9]+[FS])+$/\n\nfunction parseStyleSuffixes(name: string): {\n baseName: string\n style: Partial<CSSStyleDeclaration>\n} | null {\n const match = name.match(SUFFIX_RE)\n if (!match) return null\n let baseName = name.slice(0, match.index!)\n if (!baseName) return null\n // Strip trailing _ separator (for digit-ending names: edit2_50o)\n if (baseName.endsWith('_')) baseName = baseName.slice(0, -1)\n if (!baseName) return null\n const data = iconData as Record<string, string>\n // Accept if baseName is in iconData, or matches a composition rule prefix\n if (!data[baseName]) {\n const matchesRule = iconRules.some((rule) => {\n if (rule.prefix instanceof RegExp) {\n return rule.prefix.test(baseName)\n }\n return (\n baseName.startsWith(rule.prefix) && baseName.length > rule.prefix.length\n )\n })\n if (!matchesRule) return null\n }\n\n const style: Partial<CSSStyleDeclaration> = {}\n const suffixes = match[0].match(/_?\\d+[osxyr]|[01]f|_[a-zA-Z0-9]+[FS]|\\d+W/g)!\n if (!suffixes) return null\n const transforms: string[] = []\n for (const s of suffixes) {\n const code = s[s.length - 1]\n if (code === 'F' || code === 'S') {\n const raw = s.slice(1, -1)\n const isHex = /^[0-9a-fA-F]{3,8}$/.test(raw)\n const value = isHex ? '#' + raw : (vars as any)[raw]\n if (code === 'F') {\n style.fill = value\n } else {\n style.stroke = value\n }\n } else if (code === 'W') {\n style.strokeWidth = s.slice(0, -1)\n } else {\n const val = parseInt(s.replace('_', '-'))\n switch (code) {\n case 'o':\n style.opacity = String(val / 100)\n break\n case 's':\n transforms.push(`scale(${val / 100})`)\n break\n case 'x':\n transforms.push(`translateX(${val}%)`)\n break\n case 'y':\n transforms.push(`translateY(${val}%)`)\n break\n case 'r':\n transforms.push(`rotate(${val}deg)`)\n break\n case 'f':\n transforms.push(val === 0 ? 'scaleX(-1)' : 'scaleY(-1)')\n break\n }\n }\n }\n if (transforms.length > 0) {\n style.transform = transforms.join(' ')\n style.transformOrigin = '50% 50%'\n }\n return { baseName, style }\n}\n\n/** Resolve an icon name through the full pipeline (redirects, suffixes, rules, stacking) */\nexport function resolveIcon(prop: string, parts: ElementPart[]): Element {\n if (prop.endsWith('_')) prop = prop.slice(0, -1)\n const data = iconData as Record<string, string>\n // Direct match or redirect chain\n let name = prop\n for (let i = 0; i < MAX_REDIRECTS; i++) {\n const spec = data[name]\n if (!spec) break\n if (spec.startsWith('<')) return makeIcon(spec, parts)\n name = spec\n }\n if (name !== prop) {\n const composed = composeIcon(name, parts)\n if (composed) return composed\n const parsed = parseStyleSuffixes(name)\n if (parsed) {\n const icon = resolveIcon(parsed.baseName, parts)\n Object.assign((icon as HTMLElement).style, parsed.style)\n return icon\n }\n }\n\n // Stack: foo$bar$baz → baz on bottom, bar on top, foo on top\n if (prop.includes('$')) {\n const segments = prop.split('$')\n // Last segment is the base (sets the size), rest are overlays\n const base = resolveIcon(segments[segments.length - 1], [])\n const overlays = segments\n .slice(0, -1)\n .reverse()\n .map((name) => {\n const icon = resolveIcon(name, [])\n Object.assign((icon as HTMLElement).style, {\n position: 'absolute',\n inset: '0',\n width: '100%',\n height: '100%',\n })\n return icon\n })\n return wrapIcon(prop, parts, base as Element, ...(overlays as Element[]))\n }\n\n // Try composition (spin, un, check, etc.)\n const composed = composeIcon(prop, parts)\n if (composed) return composed\n\n // Style suffixes — strip them, resolve the base, apply after\n const parsed = parseStyleSuffixes(prop)\n if (parsed) {\n const icon = resolveIcon(parsed.baseName, parts)\n Object.assign((icon as HTMLElement).style, parsed.style)\n return icon\n }\n\n if (prop) {\n console.warn(`icon ${prop} does not exist`)\n }\n return makeIcon(iconData.square, parts)\n}\n\nexport const icons = new Proxy(iconData, {\n get(target, prop: string): ElementCreator {\n return (...parts: ElementPart[]) => resolveIcon(prop, parts)\n },\n}) as unknown as SVGIconMap\n\nexport class SvgIcon extends WebComponent {\n static preferredTagName = 'tosi-icon'\n static lightStyleSpec = {\n ':host': {\n // New --tosi-icon-* variables with legacy fallbacks\n '--tosi-icon-size': 'var(--xin-icon-size, 16px)',\n '--tosi-icon-stroke-width':\n 'var(--xin-icon-stroke-width, var(--icon-stroke-width, 2px))',\n '--tosi-icon-stroke-linejoin': 'var(--icon-stroke-linejoin, round)',\n '--tosi-icon-stroke-linecap': 'var(--icon-stroke-linecap, round)',\n '--tosi-icon-fill': 'var(--xin-icon-fill, var(--icon-fill, none))',\n display: 'inline-flex',\n verticalAlign: 'text-bottom',\n stroke: 'currentColor',\n strokeWidth: varDefault.tosiIconStrokeWidth('2px'),\n strokeLinejoin: varDefault.tosiIconStrokeLinejoin('round'),\n strokeLinecap: varDefault.tosiIconStrokeLinecap('round'),\n fill: varDefault.tosiIconFill('none'),\n height: vars.tosiIconSize,\n },\n ':host svg, :host .tosi-icon-composite': {\n height: varDefault.tosiIconSize('16px'),\n },\n }\n\n static initAttributes = {\n icon: '',\n size: 0,\n fill: '',\n stroke: '',\n strokeWidth: 1,\n }\n\n render(): void {\n super.render()\n this.textContent = ''\n const style: XinStyleRule = {}\n if (this.size) {\n style.height = this.size + 'px'\n this.style.setProperty('--tosi-icon-size', `${this.size}px`)\n // Legacy alias\n this.style.setProperty('--xin-icon-size', `${this.size}px`)\n }\n if (this.stroke) {\n style.stroke = this.stroke\n style.strokeWidth = this.strokeWidth\n }\n if (this.fill) {\n style.fill = this.fill\n }\n this.append(icons[this.icon]({ style }))\n }\n}\n\nexport const svgIcon = SvgIcon.elementCreator()\n",
|
|
10
10
|
"/*#\n# 3d\n\nA [babylonjs](https://www.babylonjs.com/) wrapper.\n\nA `<tosi-3d>` element is initialized with an `engine`, `canvas`, `scene`, and an update-loop.\n\nIf you view this example with an XR-enabled device, such as the\n[Meta Quest 3](https://www.meta.com/quest/quest-3/), then you should be able to view this\nas an AR scene.\n\n```js\nimport { b3d, gamepadText, xrControllers, xrControllersText } from 'tosijs-ui'\n\npreview.append(b3d({\n async sceneCreated(element, BABYLON) {\n const camera = new BABYLON.FreeCamera(\n 'camera',\n new BABYLON.Vector3(0, 1, -4),\n element.scene\n )\n camera.attachControl(element.parts.canvas, true)\n\n new BABYLON.HemisphericLight('light', new BABYLON.Vector3(0.25, 1, -0.5))\n\n this.loadScene('/', 'xin3d.glb')\n\n const size = 1024\n const textTexture = new BABYLON.DynamicTexture('Text', size, element.scene)\n const textContext = textTexture.getContext()\n textTexture.update()\n\n const textMaterial = new BABYLON.StandardMaterial('Text', element.scene)\n textMaterial.diffuseTexture = textTexture\n textMaterial.emissiveTexture = textTexture\n textMaterial.backfaceCulling = false\n\n const plaque = BABYLON.MeshBuilder.CreatePlane('Plaque', {size: 1}, element.scene)\n plaque.position.x = 0\n plaque.position.y = 2\n plaque.billboardMode = BABYLON.Mesh.BILLBOARDMODE_ALL\n plaque.material = textMaterial\n\n let controllers\n if (navigator.xr) {\n const xrHelper = await element.scene.createDefaultXRExperienceAsync({\n uiOptions: {\n sessionMode: 'immersive-ar'\n }\n })\n controllers = xrControllers(xrHelper)\n }\n\n const interval = setInterval(() => {\n if (document.body.contains(element)) {\n textContext.fillStyle = '#204020'\n textContext.fillRect(0, 0, size, size)\n const text = gamepadText() + '\\n' + xrControllersText(controllers)\n const lines = text.split('\\n')\n textContext.fillStyle = '#afa'\n textContext.font = '32px monospace'\n for(let i = 0; i < lines.length; i++) {\n const line = lines[i]\n textContext.fillText(line, 40, 70 + i * 40)\n }\n textContext.fillStyle = '#bbb'\n textContext.fillText('tosijs-xr — debug info', 40, 984)\n textTexture.update()\n } else {\n clearInterval(interval)\n }\n }, 100)\n },\n}))\n```\n```css\n.preview tosi-3d {\n width: 100%;\n height: 100%;\n}\n```\n\n> Note: for more involved 3d work there's [tosijs-3d](https://3d.tosijs.net),\n> a library of modular components for 3d development.\n\nYou can access the `scene` and `engine` properties. You can also assign `sceneCreated`\nand `update` callbacks that will be executed when the scene is first initialized and\nbefore each update, respectively. (See the example, it does both.)\n\nBoth `sceneCreated` and `update` may be `async`. The component will `await` `sceneCreated`\nbefore starting the renderLoop, but `update` is simply passed to babylon, so be careful.\n\nBy default, this component loads `babylon.js` from the [babylonjs CDN](https://doc.babylonjs.com/setup/frameworkPackages/CDN),\nbut if `BABYLON` is already defined (e.g. if you've bundled it) then it will use that instead.\n\nIf you need additional libraries, e.g. `https://cdn.babylonjs.com/loaders/babylonjs.loaders.min.js` for loading models such as `gltf` and `glb` files, you should load those in `sceneCreated`.\n\nHere's a simple example of a terrain mesh comprising 125k triangles, 50% of which is being scaled using a `profileScale` function that\ntakes an array of numbers that use a linear profile to change the landform.\n\n```js\nimport { b3d } from 'tosijs-ui'\nimport { MoreMath } from 'tosijs'\n\nconst debugCutoff = 0.5\nconst defaultProfile = [0, 1, 5, 8, 10].map(x => x/10)\n\nconst { clamp } = MoreMath\nfunction profileScale(t = 0, bypass = false, profile = defaultProfile) {\n if (bypass) {\n return t\n }\n const count = profile.length - 1\n if (count < 1) {\n throw new Error('profile must be of length ≥ 2')\n }\n\n const s = clamp(0, (t + 1) / 2, 1)\n const index = Math.floor(s * count)\n const dt = (s - index / count) * count\n const min = profile[index]\n const max = profile[index + 1]\n const p = dt * (max - min) + min\n return 2 * p - 1\n}\n\npreview.append(b3d({\n async sceneCreated(element, BABYLON) {\n const { scene } = element\n const { createNoise2D } = await import('https://cdn.jsdelivr.net/npm/simplex-noise@4.0.1/+esm')\n\n new BABYLON.HemisphericLight('light', new BABYLON.Vector3(0.25, 1, 2))\n\n const terrain = new BABYLON.Mesh('terrain', scene)\n const vertexData = new BABYLON.VertexData()\n\n const noise2D = createNoise2D()\n const positions = []\n const indices = []\n const gridSize = 100\n const gridResolution = 250\n const gridPoints = gridResolution + 1\n const noiseScale = 0.03\n const heightScale = 4.5\n terrain.position.y = -5\n const scale = t => t * gridSize / gridResolution - gridSize * 0.5\n for(let x = 0; x <= gridResolution; x++) {\n for(let z = 0; z <= gridResolution; z++) {\n const y = profileScale(noise2D(scale(x) * noiseScale, scale(z) * noiseScale), x < gridResolution * debugCutoff)\n positions.push(scale(x), y * heightScale, scale(z))\n if (x > 0 && z > 0) {\n const i = x * gridPoints + z\n indices.push(\n i, i - gridPoints - 1, i - 1,\n i, i - gridPoints, i - gridPoints - 1,\n )\n }\n }\n }\n const normals = []\n BABYLON.VertexData.ComputeNormals(positions, indices, normals);\n\n vertexData.positions = positions\n vertexData.indices = indices\n vertexData.normals = normals\n vertexData.applyToMesh(terrain)\n },\n}))\n```\n\n## loadScene\n\n`<tosi-3d>.loadScene(path: string, file: string, callBack(meshes: any[]): void)` can\nbe used to load `.glb` files.\n\n## loadUI\n\n`<tosi-3d>.loadUI(options: B3dUIOptions)` loads babylonjs guis, which you can create programmatically or using the [babylonjs gui tool](https://gui.babylonjs.com/).\n*/\nimport { Component as WebComponent, ElementCreator, elements } from 'tosijs'\nimport { scriptTag } from './via-tag'\nimport { icons, svg2DataUrl } from './icons'\n\ntype B3dCallback =\n | ((element: B3d, BABYLON: any) => void)\n | ((element: B3d, BABYLON: any) => Promise<void>)\n\ninterface B3dUIOptions {\n snippetId?: string\n jsonUrl?: string\n data?: any\n size?: number\n}\n\ntype MeshProcessCallback = (meshes: any[]) => void\n\nconst noop = () => {\n /* do not care */\n}\n\nexport class B3d extends WebComponent {\n static preferredTagName = 'tosi-3d'\n\n babylonReady: Promise<any>\n BABYLON?: any\n\n static shadowStyleSpec = {\n ':host': {\n display: 'block',\n position: 'relative',\n },\n ':host canvas': {\n width: '100%',\n height: '100%',\n },\n ':host .babylonVRicon': {\n height: 50,\n width: 80,\n backgroundColor: 'transparent',\n filter: 'drop-shadow(0 0 4px #000c)',\n backgroundImage: svg2DataUrl(icons.xrColor()),\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n border: 'none',\n borderRadius: 5,\n borderStyle: 'none',\n outline: 'none',\n transition: 'transform 0.125s ease-out',\n },\n ':host .babylonVRicon:hover': {\n transform: 'scale(1.1)',\n },\n }\n\n content = elements.canvas({ part: 'canvas' })\n\n constructor() {\n super()\n\n this.babylonReady = (async () => {\n const { BABYLON } = await scriptTag(\n 'https://cdn.babylonjs.com/babylon.js',\n 'BABYLON'\n )\n return BABYLON\n })()\n }\n\n scene: any\n engine: any\n\n sceneCreated: B3dCallback = noop\n update: B3dCallback = noop\n\n private _update = () => {\n if (this.scene) {\n if (this.update !== undefined) {\n this.update(this, this.BABYLON)\n }\n if (this.scene.activeCamera !== undefined) {\n this.scene.render()\n }\n }\n }\n\n onResize() {\n if (this.engine) {\n this.engine.resize()\n }\n }\n\n loadScene = async (\n path: string,\n file: string,\n processCallback?: MeshProcessCallback\n ): Promise<void> => {\n const { BABYLON } = await scriptTag(\n 'https://cdn.babylonjs.com/loaders/babylonjs.loaders.min.js',\n 'BABYLON'\n )\n\n BABYLON.SceneLoader.Append(path, file, this.scene, processCallback)\n }\n\n loadUI = async (options: B3dUIOptions): Promise<any> => {\n const { BABYLON } = await scriptTag(\n 'https://cdn.babylonjs.com/gui/babylon.gui.min.js',\n 'BABYLON'\n )\n const advancedTexture =\n BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI(\n 'GUI',\n true,\n this.scene\n )\n const { snippetId, jsonUrl, data, size } = options\n if (size) {\n advancedTexture.idealWidth = size\n advancedTexture.renderAtIdealSize = true\n }\n // edit or create your own snippet here\n // https://gui.babylonjs.com/\n let gui\n if (snippetId) {\n gui = await advancedTexture.parseFromSnippetAsync(snippetId)\n } else if (jsonUrl) {\n gui = await advancedTexture.parseFromURLAsync(jsonUrl)\n } else if (data) {\n gui = advancedTexture.parseContent(data)\n } else {\n return null\n }\n\n const root = advancedTexture.getChildren()[0]\n const widgets = root.children.reduce(\n (map: { [key: string]: any }, widget: any) => {\n map[widget.name] = widget\n return map\n },\n {}\n )\n\n return { advancedTexture, gui, root, widgets }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n const { canvas } = this.parts as { canvas: HTMLCanvasElement }\n\n this.babylonReady.then(async (BABYLON) => {\n this.BABYLON = BABYLON\n this.engine = new BABYLON.Engine(canvas, true)\n this.scene = new BABYLON.Scene(this.engine)\n if (this.sceneCreated) {\n await this.sceneCreated(this, BABYLON)\n }\n if (this.scene.activeCamera === undefined) {\n const camera = new BABYLON.ArcRotateCamera(\n 'default-camera',\n -Math.PI / 2,\n Math.PI / 2.5,\n 3,\n new BABYLON.Vector3(0, 0, 0)\n )\n camera.attachControl(this.parts.canvas, true)\n }\n this.engine.runRenderLoop(this._update)\n })\n }\n}\n\nexport const b3d = B3d.elementCreator() as ElementCreator<B3d>\n",
|
|
11
11
|
"/*#\n# lottie / bodymovin\n\nA [lottie](https://airbnb.io/lottie/#/web) (a.k.a. **bodymovin**) player.\n\nIt's designed to work like an `<img>` element (just set its `src` attribute).\n\n```js\nimport { icons, popFloat, tosiSelect } from 'tosijs-ui'\nimport { div, label, input, select, option, span } from 'tosijs'.elements\n\nconst tosiPlatform = preview.querySelector('tosi-lottie')\nsetTimeout(\n () => {\n preview.append(\n popFloat({\n draggable: true,\n content: [\n { class: 'panel' },\n div({ class: 'panel-header' }, 'Player Controls' ),\n label(\n { class: 'no-drag' },\n 'speed',\n input({ type: 'range', min: -1, max: 1, step: 0.1, value: 0, onInput(event) {\n const speed = Math.pow(5, Number(event.target.value))\n tosiPlatform.animation.setSpeed(speed)\n event.target.nextSibling.textContent = (speed * 100).toFixed(0) + '%'\n } }),\n span('100%', {style: { textAlign: 'right', width: '40px'}})\n ),\n label(\n { class: 'no-drag' },\n 'direction',\n tosiSelect({\n value: '1',\n options: [\n { caption: 'Forward', value: '1' },\n { caption: 'Backward', value: '-1' }\n ],\n onChange(event) {\n tosiPlatform.animation.setDirection(event.target.value)\n }\n })\n )\n ],\n target: tosiPlatform,\n position: 's'\n })\n )\n },\n 500\n)\n```\n```html\n<tosi-lottie\n style=\"width: 200px; height: 200px;\"\n src=\"/tosi-platform.json\"\n></tosi-lottie>\n<div class=\"caption\">\n Animation created by <a target=\"_blank\" href=\"https://pro.fiverr.com/freelancers/anicoremotion\">@anicoremotion</a>\n</div>\n```\n```css\n.preview {\n padding: var(--spacing);\n text-align: center;\n}\n\n.preview .panel {\n padding: 10px;\n border-radius: 5px;\n gap: 5px;\n background: var(--background);\n box-shadow: var(--menu-shadow);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.preview .caption {\n position: absolute;\n right: 5px;\n bottom: 5px;\n}\n\n.preview .panel-header {\n margin: 0;\n text-align: center;\n font-weight: bold;\n background: var(--brand-color);\n color: white;\n padding: 5px;\n margin: -10px -10px 0 -10px;\n cursor: move;\n}\n```\n\nYou can also directly set its `json` property to the content of a `lottie.json` file.\n\nAnd of course just access the element's `animation` property to [use the bodymovin API](https://airbnb.io/lottie/#/web).\n\nAlso see the [documentation for advanced interactions](https://lottiefiles.github.io/lottie-docs/advanced_interactions/)\n*/\n\nimport { Component as WebComponent, ElementCreator } from 'tosijs'\nimport { scriptTag } from './via-tag'\n\nexport interface LottieConfig {\n container?: HTMLElement | ShadowRoot\n renderer: 'svg' | 'canvas' | 'html'\n loop: boolean\n autoplay: boolean\n animationData?: string\n path?: string\n [key: string]: any\n}\n\nexport class BodymovinPlayer extends WebComponent {\n static preferredTagName = 'tosi-lottie'\n\n static initAttributes = {\n src: '',\n json: '',\n }\n\n content = null\n config: LottieConfig = {\n renderer: 'svg',\n loop: true,\n autoplay: true,\n }\n\n static bodymovinAvailable?: Promise<any>\n\n animation: any\n\n static shadowStyleSpec = {\n ':host': {\n width: 400,\n height: 400,\n display: 'inline-block',\n },\n }\n\n private _loading = false\n\n get loading(): boolean {\n return this._loading\n }\n\n constructor() {\n super()\n if (BodymovinPlayer.bodymovinAvailable === undefined) {\n BodymovinPlayer.bodymovinAvailable = scriptTag(\n 'https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.12.2/lottie.min.js',\n 'bodymovin'\n )\n }\n }\n\n private readonly doneLoading = (): void => {\n this._loading = false\n }\n\n private readonly load = ({ bodymovin }: { bodymovin: any }): void => {\n this._loading = true\n\n this.config.container =\n this.shadowRoot !== null ? this.shadowRoot : undefined\n if (this.json !== '') {\n this.config.animationData = this.json\n delete this.config.path\n } else if (this.src !== '') {\n delete this.config.animationData\n this.config.path = this.src\n } else {\n console.log(\n '%c<tosi-lottie>%c expected either %cjson%c (animation data) or %csrc% c(url) but found neither.',\n 'color: #44f; background: #fff; padding: 0 5px',\n 'color: default',\n 'color: #44f; background: #fff; padding: 0 5px',\n 'color: default',\n 'color: #44f; background: #fff; padding: 0 5px',\n 'color: default'\n )\n }\n\n if (this.animation) {\n this.animation.destroy()\n const root = this.shadowRoot\n if (root !== null) {\n root.querySelector('svg')?.remove()\n }\n }\n this.animation = bodymovin.loadAnimation(this.config)\n this.animation.addEventListener('DOMLoaded', this.doneLoading)\n }\n\n render(): void {\n super.render()\n\n BodymovinPlayer.bodymovinAvailable!.then(this.load).catch(\n (e: string): void => {\n console.error(e)\n }\n )\n }\n}\n\nexport const bodymovinPlayer = BodymovinPlayer.elementCreator() as ElementCreator<BodymovinPlayer>\n",
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
"/*#\n# localize\n\n`tosijs-ui` provides support for localization via the `localize` method and the `<tosi-locale-picker>`\nand `<tosi-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## TosiLocalePicker\n\nA selector that lets the user pick from among supported languages.\n\n```html\n<h3>Locale Picker</h3>\n<tosi-locale-picker></tosi-locale-picker>\n\n<h3>Locale Picker with <code>hide-captions</code></h3>\n<tosi-locale-picker hide-caption></tosi-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## TosiLocalized\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 `<tosi-localized>` elements should display a **red\nunderline**.\n\n```html\n<h3>Localized Widgets</h3>\n<button><tosi-localized>Yes</tosi-localized></button>\n<button><tosi-localized>No</tosi-localized></button>\n<button><tosi-localized>Open…</tosi-localized></button> <i>note the ellipsis</i>\n\n<h3>Lowercase is preserved</h3>\n<button><tosi-localized>yes</tosi-localized></button>\n<button><tosi-localized>no</tosi-localized></button>\n<button><tosi-localized>open…</tosi-localized></button>\n\n<h3>Localized Attribute</h3>\n<input>\n```\n```css\ntosi-localized {\n border-bottom: 2px solid red;\n}\n```\n```js\nimport { tosiLocalized, localize } from 'tosijs-ui'\n\npreview.append(tosiLocalized({\n refString: 'localized placeholder',\n localeChanged() {\n this.previousElementSibling.setAttribute('placeholder', localize(this.refString))\n }\n}))\n```\n\n`<tosi-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> `<tosi-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## String Annotations (`#`)\n\nSometimes a single term in your reference language needs different translations\ndepending on context. For example, \"OK\" might translate to both \"D'accord\" and\n\"Bien\" in French depending on usage.\n\nUse `#` annotations to create context-specific variants:\n\n- In your TSV data, add rows like `OK#confirm` or `OK#accept` alongside the base `OK` row.\n- Use `\"` (a double-quote) in any language column to mean \"same as the base translation.\"\n This avoids duplicating translations for languages that don't need a variant.\n- `localize('OK#confirm')` looks up the `OK#confirm` entry first. If no entry exists\n (or the cell is empty), it falls back to the base `OK` translation.\n- The `#` annotation is always stripped from the output — the user never sees it.\n\nExample TSV rows:\n```\nOK\tD'accord\tOk\t好的\nOK#confirm\t\"\t\"\t\"\nOK#accept\tBien\t\"\t\"\n```\n\nWith the above data:\n- `localize('OK')` → `D'accord` (French), `Ok` (Finnish), `好的` (Chinese)\n- `localize('OK#confirm')` → `D'accord` (French — inherited via `\"`)\n- `localize('OK#accept')` → `Bien` (French — specific override), `Ok` (Finnish — inherited)\n\nEllipsis and case handling work normally with annotations:\n- `localize('ok#confirm')` → `d'accord` (lowercase preserved)\n- `localize('OK#confirm…')` → `D'accord…`\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 TosiLocalized Automatic Updates\n\nIf you want to leverage TosiLocalized's automatic updates you simply need to\nimplement `updateLocale` and register yourself with `TosiLocalized.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 TosiLocalized.allInstances.add(this)\n }\n\n // avoid leaking!\n disconnectecCallback() {\n super.connectedCallback()\n\n TosiLocalized.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 { Component, tosi, tosiValue, elements, bindings } from 'tosijs'\nimport { makeSorter } from './make-sorter'\nimport { tosiSelect, TosiSelect } from './select'\n\ninterface TranslationMap {\n [key: string]: string[]\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 TosiSelect) {\n select.options = options\n }\n },\n}\n\nexport const setLocale = (language: string) => {\n if (i18n.locales.value.includes(language)) {\n i18n.locale.value = language\n } else {\n console.error(`language ${language} is not available`)\n }\n}\n\nexport const updateLocalized = () => {\n const localizeds = Array.from(TosiLocalized.allInstances)\n for (const localized of localizeds) {\n localized.localeChanged()\n }\n}\n\n// Use BoxedScalar's observe method directly\ni18n.locale.observe(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.value = locales\n i18n.languages.value = languages\n i18n.emoji.value = emoji\n i18n.stringMap.value = strings.reduce(\n (map: TranslationMap, strings: string[]) => {\n map[strings[0].toLocaleLowerCase()] = strings\n return map\n },\n {} as TranslationMap\n )\n i18n.localeOptions.value = 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.value.includes(i18n.locale.value)) {\n const language = (i18n.locale.value as string).substring(0, 2)\n i18n.locale.value =\n i18n.locales.value.find(\n (locale: string) => locale.substring(0, 2) === language\n ) || i18n.locales.value[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.value.indexOf(i18n.locale.value)\n if (index > -1) {\n const stringMapValue = tosiValue(\n i18n.stringMap\n ) as unknown as TranslationMap\n const lowerRef = ref.toLocaleLowerCase()\n const map = stringMapValue[lowerRef]\n let localized = map && map[index]\n // fall back to base string for ditto marks (\") and missing annotations\n if ((!localized || localized === '\"') && lowerRef.includes('#')) {\n const baseMap =\n stringMapValue[lowerRef.substring(0, lowerRef.indexOf('#'))]\n localized = baseMap && baseMap[index]\n }\n if (localized) {\n localized = localized.split('#', 2)[0]\n ref =\n ref.toLocaleLowerCase() === ref\n ? localized.toLocaleLowerCase()\n : localized\n } else {\n ref = ref.split('#', 2)[0]\n }\n } else {\n ref = ref.split('#', 2)[0]\n }\n return ref\n}\n\nexport class TosiLocalePicker extends Component {\n static preferredTagName = 'tosi-locale-picker'\n\n static initAttributes = {\n hideCaption: false,\n }\n\n content = () => {\n return tosiSelect({\n part: 'select',\n showIcon: true,\n title: localize('Language'),\n bindValue: i18n.locale,\n bindLocaleOptions: i18n.localeOptions,\n })\n }\n\n render(): void {\n super.render()\n\n this.parts.select.toggleAttribute('hide-caption', this.hideCaption)\n }\n}\n\n/** @deprecated Use TosiLocalePicker instead */\nexport type LocalePicker = TosiLocalePicker\n/** @deprecated Use TosiLocalePicker instead */\nexport const LocalePicker: typeof TosiLocalePicker = TosiLocalePicker\n\nexport const tosiLocalePicker = TosiLocalePicker.elementCreator()\n\n/** @deprecated Use tosiLocalePicker instead */\nexport const localePicker = tosiLocalePicker\n\ninterface AbstractLocalized {\n localeChanged: () => void\n connectedCallback: () => void\n disconnectedCallback: () => void\n}\n\nexport class TosiLocalized extends Component {\n static preferredTagName = 'tosi-localized'\n static lightStyleSpec = {\n ':host': {\n pointerEvents: 'none',\n },\n }\n\n static allInstances = new Set<AbstractLocalized>()\n static initAttributes = {\n refString: '',\n }\n\n contents = () => elements.tosiSlot()\n\n connectedCallback() {\n super.connectedCallback()\n\n TosiLocalized.allInstances.add(this as unknown as AbstractLocalized)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n TosiLocalized.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\n/** @deprecated Use TosiLocalized instead */\nexport type XinLocalized = TosiLocalized\n/** @deprecated Use TosiLocalized instead */\nexport const XinLocalized: typeof TosiLocalized = TosiLocalized\n\nexport const tosiLocalized = TosiLocalized.elementCreator()\n\n/** @deprecated Use tosiLocalized instead */\nexport const xinLocalized = tosiLocalized\n",
|
|
21
21
|
"export interface KeyboardEventLike {\n key: string\n code?: string\n ctrlKey: boolean\n metaKey: boolean\n altKey: boolean\n shiftKey: boolean\n}\n\nconst isMacOS =\n typeof navigator !== 'undefined' &&\n /Mac|iPhone|iPad|iPod/.test(navigator.platform || '')\n\nexport const modifierKeys: Record<string, string> = isMacOS\n ? { meta: '⌘', ctrl: '⌃', alt: '⌥', shift: '⇧', escape: '⎋' }\n : { meta: 'Meta', ctrl: 'Ctrl', alt: 'Alt', shift: 'Shift', escape: 'Esc' }\n\nexport const keycode = (evt: KeyboardEventLike): string => {\n if (evt.code) {\n return evt.code.replace(/^Key|^Digit/, '')\n }\n return evt.key\n}\n\nexport const keystroke = (evt: KeyboardEventLike): string => {\n const parts: string[] = []\n if (evt.altKey) parts.push('alt')\n if (evt.ctrlKey) parts.push('ctrl')\n if (evt.metaKey) parts.push('meta')\n if (evt.shiftKey) parts.push('shift')\n parts.push(keycode(evt))\n return parts.join('-')\n}\n\ninterface ParsedShortcut {\n ctrlKey: boolean\n metaKey: boolean\n altKey: boolean\n shiftKey: boolean\n key: string\n}\n\nconst MODIFIER_PATTERNS: [RegExp, keyof ParsedShortcut][] = [\n [/\\^|ctrl-?/i, 'ctrlKey'],\n [/⌘|meta-?/i, 'metaKey'],\n [/⌥|⎇|alt-?|option-?/i, 'altKey'],\n [/⇧|shift-?/i, 'shiftKey'],\n]\n\nexport const parseShortcut = (shortcut: string): ParsedShortcut => {\n let remaining = shortcut.trim()\n const result: ParsedShortcut = {\n ctrlKey: false,\n metaKey: false,\n altKey: false,\n shiftKey: false,\n key: '',\n }\n\n for (const [pattern, prop] of MODIFIER_PATTERNS) {\n if (pattern.test(remaining)) {\n ;(result as any)[prop] = true\n remaining = remaining.replace(pattern, '')\n }\n }\n\n // Strip any remaining hyphens from between modifiers and key\n remaining = remaining.replace(/^-+/, '')\n result.key = remaining.toLowerCase()\n\n return result\n}\n\nexport const matchShortcut = (\n event: KeyboardEventLike,\n shortcut: string,\n): boolean => {\n const parsed = parseShortcut(shortcut)\n\n return (\n event.key.toLowerCase() === parsed.key &&\n event.metaKey === parsed.metaKey &&\n event.ctrlKey === parsed.ctrlKey &&\n event.altKey === parsed.altKey &&\n event.shiftKey === parsed.shiftKey\n )\n}\n\nexport const canonicalShortcut = (shortcut: string): string => {\n const parsed = parseShortcut(shortcut)\n const parts: string[] = []\n if (parsed.altKey) parts.push('alt')\n if (parsed.ctrlKey) parts.push('ctrl')\n if (parsed.metaKey) parts.push('meta')\n if (parsed.shiftKey) parts.push('shift')\n parts.push(parsed.key)\n return parts.join('-')\n}\n\nexport const displayShortcut = (shortcut: string): string => {\n const parsed = parseShortcut(shortcut)\n if (isMacOS) {\n const parts: string[] = []\n if (parsed.ctrlKey) parts.push('⌃')\n if (parsed.altKey) parts.push('⌥')\n if (parsed.shiftKey) parts.push('⇧')\n if (parsed.metaKey) parts.push('⌘')\n parts.push(parsed.key.toUpperCase())\n return parts.join('')\n }\n const parts: string[] = []\n if (parsed.ctrlKey) parts.push('Ctrl')\n if (parsed.altKey) parts.push('Alt')\n if (parsed.shiftKey) parts.push('Shift')\n if (parsed.metaKey) parts.push('Meta')\n parts.push(parsed.key.toUpperCase())\n return parts.join('+')\n}\n",
|
|
22
22
|
"/*#\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). Drop zones added dynamically during a drag (e.g. menu items)\nare automatically detected and marked.\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\nexport const 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 if (dropObserver) {\n dropObserver.disconnect()\n dropObserver = null\n }\n activeDragTypes = []\n removeClass('drag-over')\n removeClass('drag-source')\n removeClass('drag-target')\n}\n\nexport const stringToTypes = (\n s: string | undefined,\n delimiter = ';'\n): string[] => {\n return (s || '')\n .split(delimiter)\n .map((t) => t.trim())\n .filter((i) => i !== '')\n}\n\nlet activeDragTypes: readonly string[] = []\nlet dropObserver: MutationObserver | null = null\n\nconst markDroppable = (types: readonly string[] | undefined) => {\n if (!types) types = []\n activeDragTypes = 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 if (!dropObserver) {\n dropObserver = new MutationObserver(() => markDroppable(activeDragTypes))\n dropObserver.observe(document.body, { childList: true, subtree: true })\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",
|
|
23
|
-
"/*#\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 `<tosi-menu>`\n\n`popMenu({target, menuItems, …})` will spawn a menu from a target.\n\nThe `<tosi-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, tosiMenu, postNotification, tosiLocalized, 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 caption: 'deep shortcut',\n shortcut: '⌘⇧D',\n action() {\n postNotification({\n message: 'Deep shortcut fired!',\n duration: 1\n })\n }\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 shortcut: '⌘1',\n checked: () => picked === 'one',\n action () {\n picked = 'one'\n }\n },\n {\n caption: 'two',\n shortcut: '⌘2',\n checked: () => picked === 'two',\n action () {\n picked = 'two'\n }\n },\n {\n caption: 'three',\n shortcut: '⌘3',\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 tosiMenu(\n {\n menuItems,\n localized: true,\n },\n tosiLocalized('Menu'),\n icons.chevronDown()\n )\n)\n```\n```html\n<button title=\"menu test\">\n <tosi-icon icon=\"moreVertical\"></tosi-icon>\n</button>\n<button title=\"menu test from bottom-right\" style=\"position: absolute; bottom: 0; right: 0\">\n <tosi-icon icon=\"moreVertical\"></tosi-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 hideDisabled?: boolean, // if true, non-applicable items are hidden (default: shown disabled)\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 four 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- A `() => HTMLElement` function returns a custom element to embed inline in\n the menu (see `MenuElement` below).\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 tooltip?: string\n properties?: ElementProps\n}\n```\n\n### SubMenu\n\n```\ninterface SubMenu {\n caption: string\n enabled?: () => boolean\n menuItems: MenuItem[]\n icon?: string | Element\n tooltip?: string\n properties?: ElementProps\n}\n```\n\n### MenuElement\n\nFor embedding a custom widget inline in a menu — e.g. a `<tosi-segmented>` for\nquick option-picking — pass a function that returns an `HTMLElement`:\n\n```\ntype MenuElement = () => HTMLElement\n```\n\nThe returned element is added as-is and tagged with the `tosi-menu-element`\nclass, which sets `min-height` to match standard menu items so the row\naligns visually. The widget is responsible for its own click/focus behaviour.\n\n```js\nimport { popMenu, tosiSegmented } from 'tosijs-ui'\nimport { elements } from 'tosijs'\n\nconst { button } = elements\n\nlet view = 'list'\n\nconst btn = button('View options')\nbtn.addEventListener('click', () => {\n popMenu({\n target: btn,\n menuItems: [\n { caption: 'Refresh', icon: 'refreshCcw', action() {} },\n null,\n () => tosiSegmented({\n choices: 'list,grid,table',\n value: view,\n style: { margin: '0 1em' },\n onChange(event) {\n view = event.target.value\n },\n // stop the menu's outer onClick from closing it when the user\n // picks a segment\n onClick(event) { event.stopPropagation() },\n }),\n null,\n { caption: 'Settings…', icon: 'settings', action() {} },\n ]\n })\n})\n\npreview.append(btn)\n```\n\n### Keyboard Shortcuts\n\nIf a menu is embodied in a `<tosi-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> `<tosi-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 { tosiLocalized, 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 tosiLocalized(\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## Drop Menus\n\n`popDropMenu` extends the menu system to support drag-and-drop. A single `menuItems`\narray can serve both click navigation (via `popMenu`) and drag-to-drop (via `popDropMenu`).\n\nItems with `acceptsDrop` (array of MIME types) participate in drop mode.\nItems with `dropAction` are valid drop targets. Submenus auto-disclose when\na matching drag hovers over them.\n\n### DropMenu Interfaces\n\n`MenuAction` and `SubMenu` gain two optional fields:\n\n```\nacceptsDrop?: string[] // MIME types this item accepts\ndropAction?: (dataTransfer: DataTransfer) => void\n```\n\n- A **SubMenu** with `acceptsDrop` auto-discloses on drag hover\n- A **SubMenu** with `dropAction` can also receive drops directly\n- A **MenuAction** with `dropAction` is a drop target\n- Items without `acceptsDrop` are shown disabled in drop mode (or hidden if `hideDisabled` is set)\n\n### popDropMenu({target, menuItems, dataTypes, …})\n\n```\nexport interface PopDropMenuOptions extends PopMenuOptions {\n dataTypes: readonly string[] // MIME types from the current drag\n}\n```\n\n`popDropMenu` filters menuItems to only those matching `dataTypes`,\nthen opens the menu in drop mode. Non-matching items are shown\ndisabled by default; set `hideDisabled: true` to remove them entirely.\n\n`disclosureDelay` (ms, default 200) controls how long a drag must hover\nover a submenu before it auto-discloses.\n\n### hideDisabled\n\nBy default (`hideDisabled: false`), non-matching items remain visible but disabled.\nThis preserves spatial stability — items don't jump around as you drag different\ntypes. Set `hideDisabled: true` to hide them entirely for a cleaner menu.\n\nApplies symmetrically to both `filterForDrop` and `filterForClick`.\n\n### filterForDrop / filterForClick\n\n```\nfilterForDrop(items: MenuItem[], dataTypes: readonly string[], hideDisabled?: boolean): MenuItem[]\nfilterForClick(items: MenuItem[], hideDisabled?: boolean): MenuItem[]\n```\n\nUtility functions to filter a single menu definition for each mode.\nWhen `hideDisabled` is false (default), non-matching items are kept but disabled.\n\n### TosiMenu accepts-drop\n\nSet `accepts-drop` (semicolon-delimited MIME types) on `<tosi-menu>` to auto-open\nin drop mode when a matching drag enters. Set `dropAction` to accept drops\ndirectly on the trigger (e.g. saving to the root folder). Set `disclosure-delay`\n(ms) to control submenu auto-disclosure speed.\n\n <tosi-menu accepts-drop=\"text/plain;text/html\" disclosure-delay=\"150\">Files</tosi-menu>\n\n menuElement.dropAction = (data) => saveToRoot(data)\n\n### Drop Menu Example\n\n```js\nimport { popMenu, popDropMenu, tosiMenu, dragAndDrop, icons, postNotification } from 'tosijs-ui'\nimport { elements } from 'tosijs'\n\ndragAndDrop.init()\n\nconst { button, div, span } = elements\n\nconst adjectives = ['Important', 'Old', 'Shared', 'Archive', 'Draft', 'Final', 'Review', 'Backup']\nconst randomFolders = (type) => () => {\n const count = 2 + Math.floor(Math.random() * 3)\n const picked = []\n const pool = [...adjectives]\n for (let i = 0; i < count; i++) {\n const idx = Math.floor(Math.random() * pool.length)\n picked.push(pool.splice(idx, 1)[0])\n }\n return picked.map(name => ({\n caption: name,\n icon: 'folder',\n acceptsDrop: [type],\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to ' + name + ': ' + (data.getData(type) || 'file'),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Opened ' + name, duration: 1 })\n },\n }))\n}\n\nconst menuItems = [\n {\n caption: 'Documents',\n icon: 'folder',\n acceptsDrop: ['text/*'],\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to Documents: ' + (data.getData('text/plain') || data.getData('text/html')),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Navigated to Documents', duration: 1 })\n },\n menuItems: [\n {\n caption: 'Text Files',\n icon: 'folder',\n acceptsDrop: ['text/plain'],\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to Text Files: ' + data.getData('text/plain'),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Navigated to Text Files', duration: 1 })\n },\n menuItems: randomFolders('text/plain'),\n },\n {\n caption: 'HTML Files',\n icon: 'folder',\n acceptsDrop: ['text/html'],\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to HTML Files: ' + data.getData('text/html'),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Navigated to HTML Files', duration: 1 })\n },\n menuItems: randomFolders('text/html'),\n },\n {\n caption: 'readme.txt',\n icon: 'file',\n action() {\n postNotification({ message: 'Opened readme.txt', duration: 1 })\n },\n },\n ]\n },\n null,\n {\n caption: 'Trash',\n icon: 'trash',\n acceptsDrop: ['special/any'],\n dropAction(data) {\n postNotification({\n type: 'error',\n message: 'Trashed: ' + (data.getData('text/plain') || 'item'),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Opened Trash', duration: 1 })\n },\n },\n]\n\nconst clickBtn = button('Click: Browse Files', {\n onClick(event) {\n popMenu({ target: event.target.closest('button'), menuItems })\n }\n})\n\nconst dropMenu = tosiMenu(\n {\n menuItems,\n acceptsDrop: 'text/plain;text/html',\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to root: ' + (data.getData('text/plain') || data.getData('text/html')),\n duration: 2\n })\n },\n },\n icons.folder(),\n span(' Drop (show all)')\n)\n\nconst dropMenuHidden = tosiMenu(\n {\n menuItems,\n acceptsDrop: 'text/plain;text/html',\n hideDisabled: true,\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to root: ' + (data.getData('text/plain') || data.getData('text/html')),\n duration: 2\n })\n },\n },\n icons.folder(),\n span(' Drop (hide disabled)')\n)\n\npreview.append(\n div(\n { style: { display: 'flex', gap: '10px', alignItems: 'flex-start' } },\n div(\n { draggable: 'true', dataDrag: 'text/plain', dataDragContent: 'quarterly-report.txt', style: { padding: '8px', border: '1px dashed #888', borderRadius: '4px', cursor: 'grab' } },\n 'quarterly-report.txt'\n ),\n div(\n { draggable: 'true', dataDrag: 'text/html', dataDragContent: '<b>notes</b>', style: { padding: '8px', border: '1px dashed #888', borderRadius: '4px', cursor: 'grab' } },\n 'notes.html'\n ),\n ),\n div(\n { style: { display: 'flex', gap: '10px', marginTop: '10px', flexWrap: 'wrap' } },\n clickBtn,\n dropMenu,\n dropMenuHidden,\n )\n)\n```\n```css\n.preview {\n padding: 10px;\n}\n```\n\n> **Try it:** Click \"Browse Files\" to navigate the menu normally.\n> Drag a file over \"Drop (show all)\" — non-matching items appear\n> disabled. Drag over \"Drop (hide disabled)\" — non-matching items\n> are hidden entirely. \"Text Files\" only accepts .txt, \"HTML Files\"\n> only accepts .html. Subfolders are randomly generated each time\n> a folder is disclosed (dynamic `menuItems`).\n\n## Shadow DOM\n\nMenus work when triggered from inside a shadow DOM. Clicking outside\nthe menu dismisses it; clicking the shadow DOM target toggles it.\n\n```js\nimport { popMenu, removeLastMenu } from 'tosijs-ui'\n\nclass ShadowMenuHost extends HTMLElement {\n constructor() {\n super()\n const shadow = this.attachShadow({ mode: 'open' })\n const wrapper = document.createElement('div')\n wrapper.style.cssText = 'padding: 20px; background: #d0dce8; border-radius: 8px; display: inline-block'\n const btn = document.createElement('button')\n btn.textContent = 'Shadow Menu'\n btn.id = 'shadow-btn'\n btn.style.cssText = 'padding: 8px 16px; cursor: pointer'\n btn.addEventListener('click', () => {\n popMenu({\n target: btn,\n menuItems: [\n { caption: 'Alpha', action() {} },\n { caption: 'Bravo', action() {} },\n { caption: 'Charlie', action() {} },\n ]\n })\n })\n wrapper.appendChild(btn)\n shadow.appendChild(wrapper)\n }\n}\nif (!customElements.get('shadow-menu-host')) {\n customElements.define('shadow-menu-host', ShadowMenuHost)\n}\n\nconst host = document.createElement('shadow-menu-host')\nconst outside = document.createElement('button')\noutside.textContent = 'Click to dismiss'\noutside.id = 'outside-btn'\noutside.style.cssText = 'padding: 8px 16px; margin-left: 10px'\npreview.append(host, outside)\n```\n```test\nimport { removeLastMenu } from 'tosijs-ui'\n\ntest('shadow DOM menu: open and dismiss', async () => {\n const host = preview.querySelector('shadow-menu-host')\n const btn = host.shadowRoot.querySelector('#shadow-btn')\n const countFloats = () => document.querySelectorAll('tosi-float').length\n\n // opens from shadow DOM button click\n const before = countFloats()\n btn.click()\n await waitMs(100)\n expect(countFloats()).toBe(before + 1)\n\n // removeLastMenu dismisses it\n removeLastMenu(0)\n expect(countFloats()).toBe(before)\n\n // re-open and verify target mousedown keeps it open\n btn.click()\n await waitMs(100)\n expect(countFloats()).toBe(before + 1)\n btn.dispatchEvent(new MouseEvent('mousedown', { bubbles: true, composed: true }))\n await waitMs(100)\n expect(countFloats()).toBe(before + 1)\n removeLastMenu(0)\n})\n```\n\n## Menu Item Tooltips\n\nAdd `tooltip` to any menu item to show a tooltip on hover (requires\n`initTooltips()`).\n\n```js\nimport { elements } from 'tosijs'\nimport { popMenu, initTooltips, icons } from 'tosijs-ui'\n\ninitTooltips()\n\nconst { button } = elements\nconst btn = button('Tooltipped Menu')\n\nbtn.addEventListener('click', () => {\n popMenu({\n target: btn,\n menuItems: [\n { caption: 'Copy', icon: 'copy', tooltip: 'Copy to **clipboard**', shortcut: '⌘C', action() {} },\n { caption: 'Paste', icon: 'clipboard', tooltip: 'Paste from clipboard', shortcut: '⌘V', action() {} },\n null,\n { caption: 'Export', icon: 'download', tooltip: 'Export as `JSON` or `CSV`', menuItems: [\n { caption: 'JSON', action() {} },\n { caption: 'CSV', action() {} },\n ]},\n ]\n })\n})\n\npreview.append(btn)\n```\n\n*/\n\nimport {\n elements,\n ElementProps,\n varDefault,\n vars,\n StyleSheet,\n Component,\n PartsMap,\n} from 'tosijs'\nimport { popFloat, FloatPosition } from './pop-float'\nimport { icons, SvgIcon } from './icons'\nimport { localize } from './localize'\nimport { matchShortcut, displayShortcut } from './match-shortcut'\nimport { isTypeAllowed, stringToTypes } from './drag-and-drop'\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 tooltip?: string\n properties?: ElementProps\n acceptsDrop?: string[]\n dropAction?: (dataTransfer: DataTransfer) => void\n}\n\nexport type MenuItemsProvider = MenuItem[] | (() => MenuItem[])\n\nexport interface SubMenu {\n caption: string\n checked?: () => boolean\n enabled?: () => boolean\n menuItems: MenuItemsProvider\n icon?: string | Element\n tooltip?: string\n properties?: ElementProps\n acceptsDrop?: string[]\n dropAction?: (dataTransfer: DataTransfer) => void\n}\n\nexport type MenuSeparator = null\n\n// A function returning an HTMLElement is rendered as-is, sized to match the\n// height of standard menu items via `tosi-menu-element`. Useful for embedding\n// custom controls (e.g. a tosiSegmented for inline option pickers).\nexport type MenuElement = () => HTMLElement\n\nexport type MenuItem = MenuAction | SubMenu | MenuSeparator | MenuElement\n\nexport const resolveMenuItems = (provider: MenuItemsProvider): MenuItem[] =>\n typeof provider === 'function' ? provider() : provider\n\nconst { div, button, span, a, tosiSlot } = elements\n\nconst cleanSeparators = (items: MenuItem[]): MenuItem[] => {\n const result: MenuItem[] = []\n for (const item of items) {\n if (item === null) {\n if (result.length > 0 && result[result.length - 1] !== null) {\n result.push(item)\n }\n } else {\n result.push(item)\n }\n }\n while (result.length > 0 && result[result.length - 1] === null) {\n result.pop()\n }\n return result\n}\n\nexport const filterForDrop = (\n items: MenuItem[],\n dataTypes: readonly string[],\n hideDisabled = false\n): MenuItem[] => {\n const filtered: MenuItem[] = []\n for (const item of items) {\n if (item === null) {\n filtered.push(item)\n continue\n }\n if (typeof item === 'function') {\n filtered.push(item)\n continue\n }\n const { acceptsDrop } = item\n if (!acceptsDrop) {\n if (!hideDisabled) {\n filtered.push({ ...item, enabled: () => false } as MenuItem)\n }\n continue\n }\n const matches = dataTypes.some((t) => isTypeAllowed(acceptsDrop, t))\n if (!matches) {\n if (!hideDisabled) {\n filtered.push({ ...item, enabled: () => false } as MenuItem)\n }\n continue\n }\n const subMenu = item as SubMenu\n if (subMenu.menuItems) {\n // Always check with hideDisabled=true to see if there are valid children\n const validChildren = filterForDrop(\n resolveMenuItems(subMenu.menuItems),\n dataTypes,\n true\n )\n if (validChildren.length > 0 || subMenu.dropAction) {\n const childItems = hideDisabled\n ? validChildren\n : filterForDrop(resolveMenuItems(subMenu.menuItems), dataTypes, false)\n filtered.push({ ...subMenu, menuItems: childItems })\n } else if (!hideDisabled) {\n filtered.push({ ...subMenu, enabled: () => false } as MenuItem)\n }\n } else {\n filtered.push(item)\n }\n }\n return cleanSeparators(filtered)\n}\n\nexport const filterForClick = (\n items: MenuItem[],\n hideDisabled = false\n): MenuItem[] => {\n const filtered: MenuItem[] = []\n for (const item of items) {\n if (item === null) {\n filtered.push(item)\n continue\n }\n if (typeof item === 'function') {\n filtered.push(item)\n continue\n }\n const action = (item as MenuAction).action\n const menuItemsProvider = (item as SubMenu).menuItems\n if (action || menuItemsProvider) {\n if (menuItemsProvider) {\n // Always check with hideDisabled=true to see if there are valid children\n const validChildren = filterForClick(\n resolveMenuItems(menuItemsProvider),\n true\n )\n if (validChildren.length > 0) {\n const childItems = hideDisabled\n ? validChildren\n : filterForClick(resolveMenuItems(menuItemsProvider), false)\n filtered.push({ ...item, menuItems: childItems } as SubMenu)\n } else if (!hideDisabled) {\n filtered.push({ ...item, enabled: () => false } as MenuItem)\n }\n } else {\n filtered.push(item)\n }\n } else if (!hideDisabled) {\n filtered.push({ ...item, enabled: () => false } as MenuItem)\n }\n }\n return cleanSeparators(filtered)\n}\n\n// @deprecated xin-menu-* classes — use tosi-menu-* instead; remove in next major\nconst menuStyles = {\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}\nconst menuItemStyles = {\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 8px'),\n height: varDefault.menuItemHeight('48px'),\n lineHeight: varDefault.menuItemHeight('48px'),\n textAlign: 'left',\n}\nconst menuItemColorStyles = {\n color: varDefault.menuItemColor('#222'),\n}\nconst menuItemHoverStyles = {\n boxShadow: 'none !important',\n background: varDefault.menuItemHoverBg('#eee'),\n}\nconst menuItemActiveStyles = {\n boxShadow: 'none !important',\n background: varDefault.menuItemActiveBg('#aaa'),\n color: varDefault.menuItemActiveColor('#000'),\n}\nconst dropOverStyles = {\n background: `${varDefault.menuDropOverBg('#2196F3')} !important`,\n color: `${varDefault.menuDropOverColor('#fff')} !important`,\n}\nconst dropOverSpanStyles = {\n color: `${varDefault.menuDropOverColor('#fff')} !important`,\n}\nconst dropOverSvgStyles = {\n stroke: `${varDefault.menuDropOverColor('#fff')} !important`,\n}\nconst dragTargetHoverStyles = {\n boxShadow: `inset 0 0 0 2px color-mix(in srgb, ${varDefault.menuDropOverBg(\n '#2196F3'\n )} 50%, transparent) !important`,\n}\n\nStyleSheet('xin-menu-helper', {\n '.xin-menu, .tosi-menu': menuStyles,\n '.xin-menu > div, .tosi-menu > div': {\n width: varDefault.menuWidth('auto'),\n },\n '.xin-menu-trigger, .tosi-menu-trigger': {\n paddingLeft: 0,\n paddingRight: 0,\n minWidth: varDefault.touchSize('48px'),\n },\n '.xin-menu-separator, .tosi-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-element, .tosi-menu-element': {\n minHeight: varDefault.menuItemHeight('48px'),\n },\n '.xin-menu-item, .tosi-menu-item': menuItemStyles,\n '.xin-menu-item, .xin-menu-item > span, .tosi-menu-item, .tosi-menu-item > span':\n menuItemColorStyles,\n '.xin-menu-with-icons .xin-menu-item, .tosi-menu-with-icons .tosi-menu-item':\n {\n gridTemplateColumns: '24px 1fr 30px',\n gap: varDefault.menuItemGap('8px'),\n },\n '.xin-menu-item > :first-child, .tosi-menu-item > :first-child': {\n justifySelf: 'center',\n alignSelf: 'center',\n },\n '.xin-menu-item svg, .tosi-menu-item svg': {\n stroke: varDefault.menuItemIconColor('#222'),\n },\n '.xin-menu-item.xin-menu-item-checked, .tosi-menu-item.tosi-menu-item-checked':\n {\n background: varDefault.menuItemHoverBg('#eee'),\n },\n '.xin-menu-item > span:nth-child(2), .tosi-menu-item > span:nth-child(2)': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'left',\n },\n '.xin-menu-item:hover, .tosi-menu-item:hover': menuItemHoverStyles,\n '.xin-menu-item.drag-target:hover, .tosi-menu-item.drag-target:hover':\n dragTargetHoverStyles,\n '.xin-menu-item:active, .tosi-menu-item:active': menuItemActiveStyles,\n '.xin-menu-item:active svg, .tosi-menu-item:active svg': {\n stroke: varDefault.menuItemIconActiveColor('#000'),\n },\n '.xin-menu-item-highlight, .tosi-menu-item-highlight': menuItemActiveStyles,\n '.xin-menu-item-highlight svg, .tosi-menu-item-highlight svg': {\n stroke: varDefault.menuItemIconActiveColor('#000'),\n },\n '.xin-drop-over, .tosi-drop-over': dropOverStyles,\n '.xin-drop-over > span, .tosi-drop-over > span': dropOverSpanStyles,\n '.xin-drop-over svg, .tosi-drop-over svg': dropOverSvgStyles,\n '.drag-target': dragTargetHoverStyles,\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 const itemRole = options.role === 'listbox' ? 'option' : 'menuitem'\n let menuItem: HTMLElement\n const props = item.properties || {}\n if (typeof item?.action === 'string') {\n menuItem = a(\n props,\n {\n role: itemRole,\n href: item.action,\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(item.shortcut ? displayShortcut(item.shortcut) : ' ')\n )\n } else {\n menuItem = button(\n props,\n {\n role: itemRole,\n onClick: item.action,\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(item.shortcut ? displayShortcut(item.shortcut) : ' ')\n )\n }\n menuItem.classList.add('xin-menu-item', 'tosi-menu-item')\n menuItem.classList.toggle('xin-menu-item-checked', checked !== false)\n menuItem.classList.toggle('tosi-menu-item-checked', checked !== false)\n if (item.tooltip) {\n menuItem.dataset.tooltip = item.tooltip\n }\n if (options.role === 'listbox' && checked) {\n menuItem.setAttribute('aria-selected', 'true')\n }\n if (item?.enabled && !item.enabled()) {\n menuItem.setAttribute('disabled', '')\n menuItem.setAttribute('aria-disabled', 'true')\n }\n return menuItem\n}\n\nexport const createDropMenuItem = (\n item: MenuAction,\n options: PopMenuOptions\n): HTMLElement => {\n let icon = item?.icon || span(' ')\n if (typeof icon === 'string') {\n icon = icons[icon]()\n }\n const props = item.properties || {}\n const menuItem = button(\n props,\n {\n onDragenter(event: DragEvent) {\n clearDropGraceTimer()\n menuItem.classList.add('xin-drop-over', 'tosi-drop-over')\n event.preventDefault()\n },\n onDragover(event: DragEvent) {\n event.preventDefault()\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy'\n }\n },\n onDragleave(event: DragEvent) {\n const related = event.relatedTarget as Node | null\n if (related && menuItem.contains(related)) return\n menuItem.classList.remove('xin-drop-over', 'tosi-drop-over')\n },\n onDrop(event: DragEvent) {\n event.preventDefault()\n event.stopPropagation()\n menuItem.classList.remove('xin-drop-over', 'tosi-drop-over')\n if (item.dropAction && event.dataTransfer) {\n item.dropAction(event.dataTransfer)\n }\n removeLastMenu(0)\n },\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(' ')\n )\n menuItem.classList.add('xin-menu-item', 'tosi-menu-item')\n if (item.tooltip) {\n menuItem.dataset.tooltip = item.tooltip\n }\n if (item.dropAction && item.acceptsDrop) {\n menuItem.dataset.drop = item.acceptsDrop.join(';')\n }\n if (item?.enabled && !item.enabled()) {\n menuItem.setAttribute('disabled', '')\n menuItem.setAttribute('aria-disabled', 'true')\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\n let disclosureTimer: ReturnType<typeof setTimeout> | null = null\n let disclosed = false\n\n const props = item.properties || {}\n const submenuItem = button(\n props,\n {\n disabled: !(!item.enabled || item.enabled()),\n onClick(event: Event) {\n if (options._dropMode) return\n popMenu(\n Object.assign({}, options, {\n menuItems: resolveMenuItems(item.menuItems),\n target: submenuItem,\n submenuDepth: (options.submenuDepth || 0) + 1,\n position: 'side',\n })\n )\n event.stopPropagation()\n event.preventDefault()\n },\n onDragenter(event: DragEvent) {\n if (!options._dropMode) return\n clearDropGraceTimer()\n event.preventDefault()\n event.stopPropagation()\n const from = event.relatedTarget as Node | null\n // Ignore dragenter from own child elements (icon, text, chevron)\n if (from && submenuItem.contains(from)) return\n submenuItem.classList.add('xin-drop-over', 'tosi-drop-over')\n if (disclosed) {\n // Dragged back to this item — close child menus, don't re-disclose\n removeLastMenu((options.submenuDepth || 0) + 1)\n disclosed = false\n if (disclosureTimer) clearTimeout(disclosureTimer)\n disclosureTimer = null\n return\n }\n if (disclosureTimer) clearTimeout(disclosureTimer)\n disclosureTimer = setTimeout(() => {\n disclosed = true\n const resolved = resolveMenuItems(item.menuItems)\n const filteredItems = options._dataTypes\n ? filterForDrop(resolved, options._dataTypes, options.hideDisabled)\n : resolved\n if (filteredItems.length > 0) {\n popMenu(\n Object.assign({}, options, {\n menuItems: filteredItems,\n target: submenuItem,\n submenuDepth: (options.submenuDepth || 0) + 1,\n position: 'side',\n _dropMode: true,\n _dataTypes: options._dataTypes,\n })\n )\n }\n }, options.disclosureDelay ?? 200)\n },\n onDragover(event: DragEvent) {\n if (!options._dropMode) return\n event.preventDefault()\n event.stopPropagation()\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = item.dropAction ? 'copy' : 'link'\n }\n },\n onDragleave(event: DragEvent) {\n if (!options._dropMode) return\n const related = event.relatedTarget as Node | null\n if (related && submenuItem.contains(related)) return\n // Keep highlight if cursor moved into the disclosed child menu\n if (\n disclosed &&\n related &&\n poppedMenus.some(\n (p) => p.menu.contains(related) || p.target.contains(related)\n )\n ) {\n return\n }\n submenuItem.classList.remove('xin-drop-over', 'tosi-drop-over')\n if (disclosureTimer) {\n clearTimeout(disclosureTimer)\n disclosureTimer = null\n }\n },\n onDrop(event: DragEvent) {\n if (!options._dropMode || !item.dropAction) return\n event.preventDefault()\n event.stopPropagation()\n submenuItem.classList.remove('xin-drop-over', 'tosi-drop-over')\n if (event.dataTransfer) {\n item.dropAction(event.dataTransfer)\n }\n removeLastMenu(0)\n },\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n icons.chevronRight({ style: { justifySelf: 'flex-end' } })\n )\n submenuItem.classList.add('xin-menu-item', 'tosi-menu-item')\n if (item.tooltip) {\n submenuItem.dataset.tooltip = item.tooltip\n }\n if (options._dropMode && item.dropAction && item.acceptsDrop) {\n submenuItem.dataset.drop = item.acceptsDrop.join(';')\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 tosi-menu-separator' })\n } else if (typeof item === 'function') {\n const el = item()\n el.classList.add('xin-menu-element', 'tosi-menu-element')\n return el\n } else if (options._dropMode) {\n const sub = item as SubMenu\n const hasChildren =\n sub.menuItems && resolveMenuItems(sub.menuItems).length > 0\n if (hasChildren) {\n return createSubMenu(sub, options)\n } else if ((item as MenuAction).dropAction) {\n return createDropMenuItem(item as MenuAction, options)\n } else {\n // Drop mode item with acceptsDrop but no dropAction and no children\n // Render as non-interactive label\n let icon = item?.icon || span(' ')\n if (typeof icon === 'string') {\n icon = icons[icon]()\n }\n return button(\n {\n class: 'xin-menu-item tosi-menu-item',\n disabled: true,\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(' ')\n )\n }\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, role = 'menu' } = options\n const hasIcons = menuItems.find(\n (item) =>\n item != null &&\n typeof item !== 'function' &&\n ((item as MenuAction).icon || (item as MenuAction).checked)\n )\n\n const menuDepth = options.submenuDepth || 0\n\n const menuDiv = div(\n {\n class: hasIcons\n ? 'xin-menu tosi-menu xin-menu-with-icons tosi-menu-with-icons'\n : 'xin-menu tosi-menu',\n role,\n onClick() {\n if (!options._dropMode) {\n removeLastMenu(0)\n }\n },\n onDragover(event: DragEvent) {\n if (!options._dropMode) return\n event.preventDefault()\n },\n onDragenter() {\n if (!options._dropMode) return\n clearDropGraceTimer()\n },\n onDragleave(event: DragEvent) {\n if (!options._dropMode) return\n const related = event.relatedTarget as Node | null\n if (related && menuDiv.contains(related)) return\n // Check if we moved into a child submenu float\n if (\n related &&\n poppedMenus.some(\n (p) => p.menu.contains(related) || p.target.contains(related)\n )\n ) {\n return\n }\n startDropGraceTimer(menuDepth)\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 return menuDiv\n}\n\ninterface PoppedMenu {\n target: HTMLElement\n menu: HTMLElement\n onClose?: () => void\n}\nlet lastPopped: PoppedMenu | undefined\nconst poppedMenus: PoppedMenu[] = []\nlet dropGraceTimer: ReturnType<typeof setTimeout> | null = null\n\nconst clearDropGraceTimer = () => {\n if (dropGraceTimer) {\n clearTimeout(dropGraceTimer)\n dropGraceTimer = null\n }\n}\n\nconst startDropGraceTimer = (depth: number) => {\n clearDropGraceTimer()\n dropGraceTimer = setTimeout(() => {\n dropGraceTimer = null\n removeLastMenu(depth)\n }, 500)\n}\n\nexport const removeLastMenu = (depth = 0): PoppedMenu | undefined => {\n clearDropGraceTimer()\n if (depth === 0) {\n document\n .querySelectorAll('tosi-menu.xin-drop-over, tosi-menu.tosi-drop-over')\n .forEach((el) =>\n el.classList.remove('xin-drop-over', 'tosi-drop-over')\n )\n }\n const toBeRemoved = poppedMenus.splice(depth)\n for (const popped of toBeRemoved) {\n popped.menu.remove()\n if (popped.onClose) {\n popped.onClose()\n }\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 hideDisabled?: boolean\n onClose?: () => void\n role?: 'menu' | 'listbox'\n _dropMode?: boolean\n _dataTypes?: readonly string[]\n disclosureDelay?: number\n}\n\nexport interface PopDropMenuOptions\n extends Omit<PopMenuOptions, '_dropMode' | '_dataTypes'> {\n dataTypes: readonly string[]\n}\n\ndocument.addEventListener('mousedown', (event: Event) => {\n if (poppedMenus.length === 0) return\n const path = event.composedPath()\n if (\n !poppedMenus.find(\n (popped) => path.includes(popped.target) || path.includes(popped.menu)\n )\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 (options._dropMode) {\n // In drop mode, don't toggle — just ensure the right depth is open\n // If this exact submenu is already open at this depth, leave it\n if (\n poppedMenus.length > submenuDepth! &&\n poppedMenus[submenuDepth!]?.target === target\n ) {\n return\n }\n removeLastMenu(submenuDepth)\n } else {\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\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 = options._dropMode ? 'remain' : 'remove'\n poppedMenus.push({\n target,\n menu: float,\n onClose: options.onClose,\n })\n}\n\nexport const popDropMenu = (options: PopDropMenuOptions): void => {\n const { dataTypes, ...rest } = options\n const filtered = filterForDrop(\n options.menuItems,\n dataTypes,\n options.hideDisabled\n )\n if (!filtered.length) return\n popMenu({\n ...rest,\n menuItems: filtered,\n _dropMode: true,\n _dataTypes: dataTypes,\n })\n}\n\ninterface ShortcutMatch {\n action: MenuAction\n path: SubMenu[]\n}\n\nexport function findShortcutAction(\n items: MenuItem[],\n event: KeyboardEvent,\n path: SubMenu[] = []\n): ShortcutMatch | undefined {\n for (const item of items) {\n if (!item) continue\n if (typeof item === 'function') continue\n const { shortcut } = item as MenuAction\n const { menuItems } = item as SubMenu\n\n if (shortcut) {\n if (matchShortcut(event, shortcut)) {\n const menuAction = item as MenuAction\n // Check if the action itself is disabled\n if (menuAction.enabled && !menuAction.enabled()) return undefined\n // Check if any parent submenu is disabled\n if (path.some((sub) => sub.enabled && !sub.enabled())) return undefined\n return { action: menuAction, path }\n }\n } else if (menuItems) {\n const found = findShortcutAction(resolveMenuItems(menuItems), event, [\n ...path,\n item as SubMenu,\n ])\n if (found) return found\n }\n }\n return undefined\n}\n\ninterface TosiMenuParts extends PartsMap {\n trigger: HTMLButtonElement\n icon: SvgIcon\n}\n\nexport class TosiMenu extends Component<TosiMenuParts> {\n static preferredTagName = 'tosi-menu'\n static lightStyleSpec = {\n ':host': {\n display: 'inline-flex',\n minWidth: vars.touchSize,\n minHeight: vars.touchSize,\n },\n ':host button': {\n margin: 0,\n padding: 0,\n alignSelf: 'stretch',\n flex: '1',\n textAlign: 'center',\n },\n ':host button > tosi-slot': {\n display: 'flex',\n alignItems: 'center',\n gap: varDefault.tosiMenuTriggerGap('10px'),\n },\n }\n\n static initAttributes = {\n menuWidth: 'auto',\n localized: false,\n icon: '',\n acceptsDrop: '',\n disclosureDelay: 0,\n hideDisabled: false,\n }\n\n menuItems: MenuItem[] = []\n dropAction: ((dataTransfer: DataTransfer) => void) | null = null\n\n private _dragMatches = false\n\n private _matchesDrag(event: DragEvent): boolean {\n if (!this.acceptsDrop) return false\n const accepted = stringToTypes(this.acceptsDrop)\n const dragTypes = [...(event.dataTransfer?.types || [])]\n return dragTypes.some((t) => accepted.some((a) => isTypeAllowed([a], t)))\n }\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 handleDragEnter = (event: DragEvent) => {\n this._dragMatches = this._matchesDrag(event)\n if (!this._dragMatches) return\n clearDropGraceTimer()\n this.classList.add('xin-drop-over', 'tosi-drop-over')\n const dragTypes = [...(event.dataTransfer?.types || [])]\n if (this.menuItems.length) {\n popDropMenu({\n target: this.parts.trigger,\n menuItems: this.menuItems,\n dataTypes: dragTypes,\n width: this.menuWidth,\n localized: this.localized,\n disclosureDelay: this.disclosureDelay || undefined,\n hideDisabled: this.hideDisabled,\n })\n }\n event.preventDefault()\n }\n\n handleDragOver = (event: DragEvent) => {\n if (!this._dragMatches) return\n event.preventDefault()\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = this.dropAction ? 'copy' : 'link'\n }\n }\n\n handleDragLeave = (event: DragEvent) => {\n if (!this._dragMatches) return\n const related = event.relatedTarget as Node | null\n if (related && this.contains(related)) return\n // Check if moved into an open drop menu\n if (\n related &&\n poppedMenus.some(\n (p) => p.menu.contains(related) || p.target.contains(related)\n )\n ) {\n this.classList.remove('xin-drop-over', 'tosi-drop-over')\n return\n }\n this.classList.remove('xin-drop-over', 'tosi-drop-over')\n startDropGraceTimer(0)\n }\n\n handleDrop = (event: DragEvent) => {\n if (!this._dragMatches || !this.dropAction) return\n event.preventDefault()\n event.stopPropagation()\n this.classList.remove('xin-drop-over', 'tosi-drop-over')\n if (event.dataTransfer) {\n this.dropAction(event.dataTransfer)\n }\n removeLastMenu(0)\n }\n\n content = () =>\n button({ tabindex: 0, part: 'trigger', onClick: this.showMenu }, tosiSlot())\n\n handleShortcut = async (event: KeyboardEvent) => {\n const match = findShortcutAction(this.menuItems, event)\n if (!match) return\n\n event.preventDefault()\n event.stopImmediatePropagation()\n\n const { action: menuAction, path } = match\n\n // Animate: disclose menu path, highlight item, then execute\n if (this.isConnected && document.body.contains(this)) {\n await this.animateShortcut(path, menuAction)\n }\n\n if (menuAction.action instanceof Function) {\n menuAction.action()\n }\n }\n\n private findMenuItemByCaption(\n container: Element,\n caption: string\n ): HTMLElement | null {\n for (const el of container.querySelectorAll('.xin-menu-item')) {\n // Menu items are: icon (svg or span), span(caption), span(shortcut/chevron)\n // Caption is always children[1]\n const captionEl = el.children[1]\n if (captionEl && captionEl.textContent === caption) {\n return el as HTMLElement\n }\n }\n return null\n }\n\n private async animateShortcut(\n path: SubMenu[],\n action: MenuAction\n ): Promise<void> {\n // Ensure any existing menus are closed first\n removeLastMenu(0)\n\n // Open root menu\n popMenu({\n target: this.parts.trigger,\n width: this.menuWidth,\n localized: this.localized,\n menuItems: this.menuItems,\n })\n await new Promise((r) => setTimeout(r, 80))\n\n // Disclose each submenu in the path\n for (let i = 0; i < path.length; i++) {\n const depth = i + 1\n const parentFloat = poppedMenus[i]?.menu\n if (!parentFloat) break\n\n const submenuEl = this.findMenuItemByCaption(parentFloat, path[i].caption)\n if (!submenuEl) break\n\n popMenu({\n target: submenuEl,\n width: this.menuWidth,\n localized: this.localized,\n menuItems: resolveMenuItems(path[i].menuItems),\n submenuDepth: depth,\n position: 'side' as FloatPosition,\n })\n await new Promise((r) => setTimeout(r, 80))\n }\n\n // Highlight the matching action item\n const lastFloat = poppedMenus[poppedMenus.length - 1]?.menu\n if (lastFloat) {\n const itemEl = this.findMenuItemByCaption(lastFloat, action.caption)\n if (itemEl) {\n itemEl.classList.add('xin-menu-item-highlight', 'tosi-menu-item-highlight')\n }\n }\n\n // Brief pause so user can see the highlight\n await new Promise((r) => setTimeout(r, 300))\n\n // Close everything\n removeLastMenu(0)\n }\n\n constructor() {\n super()\n this.addEventListener('keydown', this.showMenu)\n this.addEventListener('dragenter', this.handleDragEnter)\n this.addEventListener('dragover', this.handleDragOver)\n this.addEventListener('dragleave', this.handleDragLeave)\n this.addEventListener('drop', this.handleDrop)\n }\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('keydown', this.handleShortcut, true)\n if (this.acceptsDrop) {\n this.dataset.drop = this.acceptsDrop\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n document.removeEventListener('keydown', this.handleShortcut)\n }\n}\n\nexport const tosiMenu = TosiMenu.elementCreator()\n\n/** @deprecated Use tosiMenu instead */\nexport const xinMenu = tosiMenu\n/** @deprecated Use TosiMenu instead */\nexport type XinMenu = TosiMenu\n/** @deprecated Use TosiMenu instead */\nexport const XinMenu: typeof TosiMenu = TosiMenu\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 { tosiTable } 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\nconst table = tosiTable({\n multiple: true,\n array: emojiData,\n localized: true,\n columns,\n rowHeight: 40,\n})\n\ntable.addEventListener('mouseover', (e) => {\n for (const el of table.querySelectorAll('.row-hover')) {\n el.classList.remove('row-hover')\n }\n const item = table.getItem(e.target)\n if (!item) return\n table.getCells(item)?.forEach(c => c.classList.add('row-hover'))\n})\n\npreview.append(table)\n```\n```css\n.preview input.td {\n margin: 0;\n border-radius: 0;\n box-shadow: none !important;\n}\n\n.preview input.td:focus {\n background: #fff4;\n}\n\n.preview tosi-table {\n height: 100%;\n}\n\n.preview .row-hover {\n background: #08835810;\n}\n```\n```test\nconst table = await waitFor('tosi-table')\nawait new Promise(resolve => {\n const check = () => {\n if (table.visibleRows.length > 0) return resolve()\n setTimeout(check, 100)\n }\n check()\n})\n\ntest('table renders with data', () => {\n expect(table.multiple).toBe(true)\n expect(table.visibleRows.length).toBeGreaterThan(0)\n expect(table.array.length).toBeGreaterThan(0)\n})\n\ntest('row selection: data model + aria-selected on row (incl. custom dataCell)', async () => {\n // Wait for listBinding to stamp DOM cells for the visible window\n const items = table.visibleRows\n await new Promise(resolve => {\n const check = () => {\n if (table.getCells(items[0]) && table.getCells(items[1])) return resolve()\n setTimeout(check, 100)\n }\n check()\n })\n\n table.deSelect()\n table.selectRow(items[0])\n table.selectRow(items[1])\n\n // Data model reflects selection immediately\n expect(items[0][table.selectedKey]).toBe(true)\n expect(items[1][table.selectedKey]).toBe(true)\n expect(table.selectedRows.length).toBe(2)\n\n // DOM: aria-selected lives on the row element. CSS targets\n // .tr[aria-selected=\"true\"] .td to highlight cells.\n const cells0 = table.getCells(items[0])\n const cells1 = table.getCells(items[1])\n expect(cells0.length).toBe(table.visibleColumns.length)\n expect(cells1.length).toBe(table.visibleColumns.length)\n const row0 = cells0[0].closest('.tr')\n const row1 = cells1[0].closest('.tr')\n expect(row0.hasAttribute('aria-selected')).toBe(true)\n expect(row1.hasAttribute('aria-selected')).toBe(true)\n // The `name` column (index 1) uses a dataCell input — confirm the custom\n // element is the actual cell living inside the same selected row.\n expect(cells0[1].tagName).toBe('INPUT')\n expect(cells0[1].closest('.tr')).toBe(row0)\n\n // Deselect and verify both data model and DOM clear\n table.deSelect()\n expect(table.selectedRows.length).toBe(0)\n expect(items[0][table.selectedKey]).not.toBe(true)\n expect(items[1][table.selectedKey]).not.toBe(true)\n expect(row0.hasAttribute('aria-selected')).toBe(false)\n expect(row1.hasAttribute('aria-selected')).toBe(false)\n})\n\ntest('getCells and getItem', async () => {\n // Wait for list binding to stamp DOM elements\n const items = table.visibleRows\n let cells\n await new Promise(resolve => {\n const check = () => {\n cells = table.getCells(items[0])\n if (cells) return resolve()\n setTimeout(check, 100)\n }\n check()\n })\n\n expect(cells.length).toBe(table.visibleColumns.length)\n\n // getItem round-trips back to the same item\n const item = table.getItem(cells[0])\n expect(item).toBe(items[0])\n\n // getCells from a cell element\n const cellsFromCell = table.getCells(cells[1])\n expect(cellsFromCell).toBe(cells)\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 `$('tosi-table').visibleRows`\n> and $('tosi-table').selectedRows`.\n\nYou can set the `<tosi-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 pinned?: 'left' | 'right'\n sort?: false | 'ascending' | 'descending'\n headerCell?: (options: ColumnOptions) => HTMLElement\n dataCell?: (options: ColumnOptions) => HTMLElement\n}\n```\n\n## Pinned Columns and Rows\n\nSet `pinned: 'left'` or `pinned: 'right'` on individual columns to pin\nthem during horizontal scroll. Pinned columns are sorted to the edges\nautomatically. You can also pin/unpin columns via the header menu, or by\ndragging a column into/out of a pinned zone.\n\nSet `pinnedTop` and `pinnedBottom` to pin the first/last N data rows\n(pinned top rows appear below the header row).\n\nAll pinning uses CSS `position: sticky` for frame-perfect rendering with\nno jitter.\n\n```js\nimport { elements } from 'tosijs'\nimport { tosiTable, icons } from 'tosijs-ui'\n\nconst { button, span } = elements\n\nconst count = 100\nconst cols = ['Q1', 'Q2', 'Q3', 'Q4']\nconst numKeys = []\nconst rows = Array.from({ length: count }, (_, i) => {\n const row = { id: i + 1, name: 'Item ' + (i + 1) }\n for (const year of [2024, 2025, 2026]) {\n for (const q of cols) {\n const key = q + ' ' + year\n row[key] = Math.round((Math.random() * 200 - 100) * 100) / 100\n if (i === 0) numKeys.push(key)\n }\n }\n return row\n})\n\n// totals row\nconst totals = { id: '', name: 'Total' }\nfor (const key of numKeys) {\n totals[key] = Math.round(rows.reduce((sum, r) => sum + r[key], 0) * 100) / 100\n}\nrows.push(totals)\n\n// custom cell that colors negative numbers red\nfunction numCell(options) {\n return span({\n class: 'td num-cell',\n bindText: '^.' + options.prop,\n bind: {\n value: '^.' + options.prop,\n binding: {\n toDOM(el, val) {\n el.style.color = val < 0 ? '#c00' : ''\n }\n }\n }\n })\n}\n\nconst dataColumns = numKeys.map(key => ({\n prop: key, width: 100, align: 'right', dataCell: numCell,\n}))\n\nconst table = tosiTable({\n array: rows,\n rowHeight: 32,\n pinnedBottom: 1,\n rowRendered(item, cells) {\n const total = numKeys.reduce((sum, key) => sum + (item[key] || 0), 0)\n const rowClass = total < 0 ? 'row-negative' : 'row-positive'\n for (const c of cells) {\n if (c.classList.contains('num-cell')) {\n c.classList.add(rowClass)\n }\n }\n },\n columns: [\n { prop: 'id', name: '#', width: 50, align: 'right', pinned: 'left' },\n { prop: 'name', width: 120, pinned: 'left' },\n ...dataColumns,\n {\n prop: '_actions',\n name: '',\n width: 48,\n sort: false,\n pinned: 'right',\n dataCell() {\n return button(\n {\n class: 'td actions-btn',\n onClick(e) { e.stopPropagation() },\n onMouseup(e) { e.stopPropagation() },\n },\n icons.moreVertical(),\n )\n },\n },\n ],\n})\n\npreview.append(table)\n```\n```css\n.preview tosi-table {\n height: 100%;\n}\n.preview .actions-btn {\n border: none;\n padding: 0;\n cursor: pointer;\n display: block;\n text-align: center;\n width: 100%;\n}\n.preview tosi-table .pinned-bottom {\n background: #eee;\n font-weight: bold;\n}\n.preview .row-pinned .td {\n background: #eee;\n}\n.preview .num-cell {\n font-variant-numeric: tabular-nums;\n}\n```\n```test\nconst tables = document.querySelectorAll('tosi-table')\nconst table = tables[tables.length - 1]\n// Wait until the pinned row has been stamped AND its bindings have settled\n// (numeric cells show their text, the actions button is in place).\nawait new Promise(resolve => {\n const check = () => {\n const row = table.querySelector('.tbody-pinned-bottom .tr')\n if (\n row &&\n row.querySelector('button') &&\n Array.from(row.children).some(c => c.classList.contains('num-cell') && c.textContent.trim().length > 0)\n ) return resolve()\n setTimeout(check, 100)\n }\n check()\n})\n\ntest('pinned row goes through the same listBinding as virtual rows', () => {\n const totals = table.array[table.array.length - 1]\n const pinnedRow = table.querySelector('.tbody-pinned-bottom .tr')\n const pinnedCells = Array.from(pinnedRow.children)\n\n // Sanity: same number of cells as visible columns\n expect(pinnedCells.length).toBe(table.visibleColumns.length)\n\n // dataCell honoured: numeric columns kept their `num-cell` class, and the\n // _actions column rendered its <button>\n const numCells = pinnedCells.filter(c => c.classList.contains('num-cell'))\n expect(numCells.length).toBeGreaterThan(0)\n expect(pinnedCells.some(c => c.tagName === 'BUTTON')).toBe(true)\n\n // numCell uses bindText: '^.<prop>' — confirm path-bindings resolved\n // (this requires the cell to live inside a list-bound row).\n const renderedTexts = numCells.map(c => c.textContent?.trim() ?? '')\n expect(renderedTexts.every(t => t.length > 0)).toBe(true)\n expect(renderedTexts.some(t => /^-?\\d/.test(t))).toBe(true)\n\n // rowRendered fired: numeric cells of this row carry `row-negative` or\n // `row-positive` based on the totals row's sign. Either way the loop did\n // *something* — so the test verifies the work happened regardless of the\n // randomized data.\n const total = Object.keys(totals)\n .filter(k => typeof totals[k] === 'number')\n .reduce((s, k) => s + totals[k], 0)\n const expected = total < 0 ? 'row-negative' : 'row-positive'\n expect(numCells.every(c => c.classList.contains(expected))).toBe(true)\n\n // getCells / getItem round-trip works for pinned items\n const cellsForTotals = table.getCells(totals)\n expect(cellsForTotals?.length).toBe(table.visibleColumns.length)\n expect(table.getItem(cellsForTotals[0])).toBe(totals)\n\n // Selection on a pinned row sets aria-selected on the row element\n table.deSelect()\n table.selectRow(totals)\n expect(pinnedRow.hasAttribute('aria-selected')).toBe(true)\n\n table.deSelect()\n expect(pinnedRow.hasAttribute('aria-selected')).toBe(false)\n})\n```\n\n## Selection\n\n`<tosi-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`<tosi-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- `<tosi-table>.selectRow(row: any, select = true)` (de)selects specified row\n- `<tosi-table>.selectRows(rows?: any[], select = true)` (de)selects specified rows\n- `<tosi-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## Row Access\n\nBecause the table uses a flat CSS grid (no `.tr` row elements), two methods\nprovide O(1) access between items and their cells:\n\n- `<tosi-table>.getCells(itemOrCell)` — returns the `HTMLElement[]` of cells for a\n given data item or any cell in the row, or `undefined` if the row isn't\n currently rendered (virtual scroll)\n- `<tosi-table>.getItem(cell)` — returns the data item bound to a cell element\n\nThese are useful for row-level hover effects, styling, and event handling:\n\n```typescript\ntable.addEventListener('mouseover', (e) => {\n for (const el of table.querySelectorAll('.row-hover')) {\n el.classList.remove('row-hover')\n }\n const item = table.getItem(e.target)\n if (!item) return\n table.getCells(item)?.forEach(c => c.classList.add('row-hover'))\n})\n```\n\n### `rowRendered` callback\n\nFor virtual tables, cells are created and destroyed as you scroll. The\n`rowRendered` callback fires whenever a row's cells are rendered, letting\nyou apply styling that survives virtualisation:\n\n```typescript\ntable.rowRendered = (item, cells) => {\n if (item.overdue) {\n cells.forEach(c => c.classList.add('overdue'))\n }\n}\n```\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 `<tosi-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 `<tosi-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 `<tosi-table>`.\n\n## Row Height\n\nIf you set the `<tosi-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\nThe component uses a flat CSS grid layout where every cell (header, data, pinned)\nis a direct child of the grid container. This means standard CSS works for styling,\nand `position: sticky` handles all pinning.\n\n**Breaking change in v1.5.0:** The table no longer uses `.thead`, `.tbody`, or `.tr`\nwrapper elements. All cells are direct children of a single `.grid` container.\nUpdate any custom CSS targeting those classes:\n\n- `.thead` → `.th` (header cells)\n- `.tbody` → the `.grid` container itself\n- `.tr` → no equivalent; cells are flat grid children\n- `[part=\"pinnedTopRows\"]` → `.pinned-top`\n- `[part=\"pinnedBottomRows\"]` → `.pinned-bottom`\n- `.td-pinned`, `.th-pinned` → `.col-pinned`\n- `.pin-left`, `.pin-right` → no longer needed (CSS `sticky` handles positioning)\n\n## Localization\n\n`<tosi-table>` supports the `localized` attribute which simply causes its default `headerCell`\nto render a `<tosi-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- Pin\n- Unpin\n- Left\n- Right\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 tosiValue,\n getListItem,\n getListBinding,\n tosi,\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 { tosiLocalized, 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 } = elements\n\nexport interface ColumnOptions {\n name?: string\n prop: string\n width: number\n visible?: boolean\n align?: string\n pinned?: 'left' | 'right'\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\ninterface StickyInfo {\n left?: string\n right?: string\n edgeClass?: string\n}\n\nexport class TosiTable extends WebComponent {\n static preferredTagName = 'tosi-table'\n\n // Layout: a single .scroll-area inside :host is the only scroll container\n // (both axes). It also hosts the virtualised visible-rows listBinding, so\n // virtualisation reads from the same scroll context that sticky cells stick\n // against. The header, optional pinned-top tbody, and optional pinned-bottom\n // tbody are siblings inside .scroll-area; the pinned tbodies use\n // `display: contents` so their stamped .tr rows participate in\n // .scroll-area's layout directly. Each .tr is its own CSS grid keyed off\n // --tosi-table-grid-columns, so column resize updates one variable and every\n // row reflows.\n static lightStyleSpec = {\n ':host': {\n '--tosi-table-row-height': '32px',\n '--tosi-table-touch-size': 'var(--tosi-touch-size, 44px)',\n '--tosi-table-dragged-header-bg': '#0004',\n '--tosi-table-dragged-header-color': '#fff',\n '--tosi-table-drop-header-bg': '#fff4',\n display: 'block',\n overflow: 'hidden',\n background: varDefault.tosiTableBg('var(--tosi-bg, #fff)'),\n },\n ':host .scroll-area': {\n width: '100%',\n height: '100%',\n overflow: 'auto',\n overscrollBehavior: 'none',\n },\n // The thead and pinned tbodies are layout pass-throughs so their .tr rows\n // are direct children of .scroll-area for sticky positioning. Without\n // display:contents, the .tr can only stick within its narrow parent and\n // scrolls out of view as soon as the parent does.\n ':host .thead, :host .tbody': {\n display: 'contents',\n },\n ':host .tr': {\n display: 'grid',\n gridTemplateColumns: vars.tosiTableGridColumns,\n width: vars.tosiTableGridRowWidth,\n height: vars.tosiTableRowHeight,\n background: varDefault.tosiTableBg('var(--tosi-bg, #fff)'),\n },\n ':host .thead .tr': {\n position: 'sticky',\n top: '0',\n zIndex: '2',\n background: varDefault.tosiTableHeaderBg(\n varDefault.tosiTableBg('var(--tosi-bg, #fff)')\n ),\n },\n // Per-row sticky offsets are set inline in tagPinnedRows so multiple\n // pinned rows stack instead of overlapping at the same sticky position.\n ':host .tbody-pinned-top .tr, :host .tbody-pinned-bottom .tr': {\n position: 'sticky',\n zIndex: '1',\n },\n ':host .th, :host .td': {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n display: 'flex',\n alignItems: 'center',\n height: vars.tosiTableRowHeight,\n lineHeight: vars.tosiTableRowHeight,\n },\n ':host .col-pinned': {\n position: 'sticky',\n zIndex: '1',\n background: varDefault.tosiTableBg('var(--tosi-bg, #fff)'),\n },\n ':host .th.col-pinned': {\n zIndex: '3',\n background: varDefault.tosiTableHeaderBg(\n varDefault.tosiTableBg('var(--tosi-bg, #fff)')\n ),\n },\n ':host .tr[aria-selected=\"true\"] .td': {\n background: varDefault.tosiTableSelectedBg(\n 'var(--tosi-accent, #007AFF22)'\n ),\n },\n ':host .td:focus, :host .th:focus': {\n outline: '2px solid var(--tosi-accent, #007AFF)',\n outlineOffset: '-2px',\n zIndex: '1',\n },\n ':host .col-pinned:focus': {\n zIndex: '4',\n },\n ':host .col-edge-right': {\n boxShadow: '1px 0 0 var(--tosi-table-edge-color, #0002)',\n },\n ':host .col-edge-left': {\n boxShadow: '-1px 0 0 var(--tosi-table-edge-color, #0002)',\n },\n ':host .row-edge-bottom': {\n boxShadow: '0 1px 0 var(--tosi-table-edge-color, #0002)',\n },\n ':host .row-edge-top': {\n boxShadow: '0 -1px 0 var(--tosi-table-edge-color, #0002)',\n },\n ':host .th .menu-trigger': {\n color: 'currentColor',\n background: 'none',\n padding: 0,\n lineHeight: vars.tosiTableTouchSize,\n height: vars.tosiTableTouchSize,\n width: vars.tosiTableTouchSize,\n },\n ':host [draggable=\"true\"]': {\n cursor: 'ew-resize',\n },\n ':host [draggable=\"true\"]:active': {\n background: vars.tosiTableDraggedHeaderBg,\n color: vars.tosiTableDraggedHeaderColor,\n },\n ':host .drag-over': {\n background: vars.tosiTableDropHeaderBg,\n },\n }\n\n static initAttributes = {\n rowHeight: 30,\n charWidth: 15,\n minColumnWidth: 30,\n select: false,\n multiple: false,\n pinnedTop: 0,\n pinnedBottom: 0,\n nosort: false,\n nohide: false,\n noreorder: false,\n localized: false,\n }\n\n selectionChanged: SelectCallback = () => {\n /* do not care */\n }\n\n rowRendered: ((item: any, cells: HTMLElement[]) => void) | null = null\n\n private selectedKey = Symbol('selected')\n private selectBinding = (elt: Element, obj: any) => {\n if (obj == null) return\n elt.toggleAttribute('aria-selected', obj[this.selectedKey] === true)\n }\n\n maxVisibleRows = 10000\n\n // Region elements rendered in render(). The visible-rows listBinding lives\n // on _scrollArea (the single scroll container); pinned tbodies are\n // display:contents wrappers each holding their own listBinding.\n private _head: HTMLElement | null = null\n private _scrollArea: HTMLElement | null = null\n private _tbodyTop: HTMLElement | null = null\n private _tbodyBottom: HTMLElement | null = null\n private _pinnedRowEdgeObserver: MutationObserver | null = null\n // Cache the cells array per row to preserve array identity across getCells\n // calls — consumers compare by reference.\n private _rowCellsCache = new WeakMap<Element, HTMLElement[]>()\n\n // Resolve the row item from a cell or any element inside a row. Cells live\n // inside list-bound `.tr` rows, so getListItem walks up to find the item.\n private itemFor(cell: Element): any {\n return getListItem(cell)\n }\n\n // Resolve the cells of a row by checking each region's listBinding.\n private cellsFor(item: any): HTMLElement[] | undefined {\n const key = tosiValue(item)\n for (const region of [\n this._tbodyTop,\n this._scrollArea,\n this._tbodyBottom,\n ]) {\n if (!region) continue\n const binding = getListBinding(region)\n if (!binding) continue\n const rowEls = binding.itemToElement.get(key) as Element[] | undefined\n if (rowEls && rowEls.length > 0) {\n const row = rowEls[0]\n let cached = this._rowCellsCache.get(row)\n if (!cached) {\n cached = Array.from(row.children) as HTMLElement[]\n this._rowCellsCache.set(row, cached)\n }\n return cached\n }\n }\n return undefined\n }\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 } = tosiValue(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 pinnedTopData: [] as any[],\n pinnedBottomData: [] as any[],\n }\n\n private _array: any[] = []\n private _columns: ColumnOptions[] | null = null\n private _filter: ArrayFilter = passThru\n private _sort?: SortCallback\n // Optional explicit arrays of pinned items. When set, they are managed\n // separately from `array` and override the `pinnedTop` / `pinnedBottom`\n // count-based slicing.\n private _pinnedTopRows?: any[]\n private _pinnedBottomRows?: any[]\n\n get pinnedTopRows(): any[] | undefined {\n return this._pinnedTopRows\n }\n\n set pinnedTopRows(rows: any[] | undefined) {\n this._pinnedTopRows = rows ? tosiValue(rows) : undefined\n this.queueRender()\n }\n\n get pinnedBottomRows(): any[] | undefined {\n return this._pinnedBottomRows\n }\n\n set pinnedBottomRows(rows: any[] | undefined) {\n this._pinnedBottomRows = rows ? tosiValue(rows) : undefined\n this.queueRender()\n }\n\n // Resolve pinned-top items. If pinnedTopRows is set, it wins; otherwise\n // slice the first `pinnedTop` items from `_array`.\n get effectivePinnedTopData(): any[] {\n if (this._pinnedTopRows) return this._pinnedTopRows\n return this.pinnedTop > 0 ? this._array.slice(0, this.pinnedTop) : []\n }\n\n get effectivePinnedBottomData(): any[] {\n if (this._pinnedBottomRows) return this._pinnedBottomRows\n return this.pinnedBottom > 0 ? this._array.slice(-this.pinnedBottom) : []\n }\n\n // Visible (non-pinned) data. With explicit pinnedTopRows/pinnedBottomRows,\n // _array is rendered untouched; otherwise we slice off the count-pinned ends.\n private get effectiveBaseData(): any[] {\n if (this._pinnedTopRows || this._pinnedBottomRows) return this._array\n return this._array.slice(\n this.pinnedTop,\n this._array.length - this.pinnedBottom\n )\n }\n\n constructor() {\n super()\n\n this.rowData = tosi({\n [this.instanceId]: this.rowData,\n })[this.instanceId]\n }\n\n get array(): any[] {\n return this._array\n }\n\n set array(newArray: any[]) {\n this._array = tosiValue(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: SortCallback | undefined) {\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 const visible = this.columns.filter((c) => c.visible !== false)\n const left = visible.filter((c) => c.pinned === 'left')\n const middle = visible.filter((c) => !c.pinned)\n const right = visible.filter((c) => c.pinned === 'right')\n return [...left, ...middle, ...right]\n }\n\n /** @deprecated Set pinned: 'left' on individual columns instead */\n get pinnedLeft(): number {\n return this.visibleColumns.filter((c) => c.pinned === 'left').length\n }\n\n /** @deprecated Set pinned: 'left' on individual columns instead */\n set pinnedLeft(n: number) {\n const visible = this.columns.filter((c) => c.visible !== false)\n for (const col of visible) {\n if (col.pinned === 'left') delete col.pinned\n }\n for (let i = 0; i < n && i < visible.length; i++) {\n visible[i].pinned = 'left'\n }\n this.queueRender()\n }\n\n /** @deprecated Set pinned: 'right' on individual columns instead */\n get pinnedRight(): number {\n return this.visibleColumns.filter((c) => c.pinned === 'right').length\n }\n\n /** @deprecated Set pinned: 'right' on individual columns instead */\n set pinnedRight(n: number) {\n const visible = this.columns.filter((c) => c.visible !== false)\n for (const col of visible) {\n if (col.pinned === 'right') delete col.pinned\n }\n for (let i = visible.length - n; i < visible.length; i++) {\n if (i >= 0) visible[i].pinned = 'right'\n }\n this.queueRender()\n }\n\n content = null\n\n private computeStickyInfo(cols: ColumnOptions[]): StickyInfo[] {\n const info: StickyInfo[] = cols.map(() => ({}))\n\n // Left-pinned columns\n let leftOffset = 0\n let lastLeft = -1\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].pinned !== 'left') break\n info[i].left = leftOffset + 'px'\n leftOffset += cols[i].width\n lastLeft = i\n }\n if (lastLeft >= 0) {\n info[lastLeft].edgeClass = 'col-edge-right'\n }\n\n // Right-pinned columns\n let rightOffset = 0\n let firstRight = cols.length\n for (let i = cols.length - 1; i >= 0; i--) {\n if (cols[i].pinned !== 'right') break\n info[i].right = rightOffset + 'px'\n rightOffset += cols[i].width\n firstRight = i\n }\n if (firstRight < cols.length) {\n info[firstRight].edgeClass = 'col-edge-left'\n }\n\n return info\n }\n\n private cellClasses(base: string, si: StickyInfo): string {\n let cls = base\n if (si.left != null || si.right != null) cls += ' col-pinned'\n if (si.edgeClass) cls += ' ' + si.edgeClass\n return cls\n }\n\n private rowClasses(\n region: 'visible' | 'pinned-top' | 'pinned-bottom'\n ): string {\n return region === 'visible' ? 'tr' : 'tr row-pinned'\n }\n\n // Tag the boundary rows of each pinned tbody so consumers can style them,\n // and assign per-row sticky offsets so stacked pinned rows don't overlap\n // at the same `top`/`bottom` value. listBinding inserts listTop/listBottom\n // padding divs around its stamped rows, so we walk `.tr` children rather\n // than relying on :first-child / :last-child.\n private tagPinnedRows = () => {\n this.tagPinnedTbody(this._tbodyTop, 'top')\n this.tagPinnedTbody(this._tbodyBottom, 'bottom')\n }\n\n private tagPinnedTbody(\n tbody: HTMLElement | null,\n axis: 'top' | 'bottom'\n ): void {\n if (!tbody) return\n const rows = Array.from(tbody.querySelectorAll('.tr')) as HTMLElement[]\n if (rows.length === 0) return\n // For top-pinned, header occupies row 0 so first pinned row sits at\n // 1*rowHeight; for bottom-pinned, last row sticks at 0 with earlier rows\n // stacked above it.\n const last = rows.length - 1\n const edgeClass = axis === 'top' ? 'row-edge-bottom' : 'row-edge-top'\n rows.forEach((r, i) => {\n r.classList.remove(edgeClass)\n const steps = axis === 'top' ? i + 1 : last - i\n r.style[axis] = `calc(var(--tosi-table-row-height) * ${steps})`\n })\n const edgeRow = axis === 'top' ? rows[last] : rows[0]\n edgeRow.classList.add(edgeClass)\n }\n\n private cellStyle(\n col: ColumnOptions,\n si: StickyInfo,\n extra?: Record<string, string>\n ): Record<string, string> {\n // position: sticky lives in `.col-pinned` (added by cellClasses), so only\n // the per-cell offsets need to be set inline here.\n const style: Record<string, string> = {\n justifyContent: col.align || 'left',\n ...extra,\n }\n if (si.left != null) style.left = si.left\n if (si.right != null) style.right = si.right\n return style\n }\n\n private applyGridCellAttrs(\n cell: HTMLElement,\n colIndex: number,\n si: StickyInfo,\n style: Record<string, string>\n ): void {\n cell.setAttribute('aria-colindex', String(colIndex + 1))\n cell.tabIndex = -1\n cell.classList.add(...this.cellClasses('td', si).split(' '))\n Object.assign(cell.style, style)\n }\n\n // Build a single data cell for a column. Cells live inside list-bound `.tr`\n // rows, so path-based bindings inside col.dataCell() (e.g. bindText:'^.prop')\n // resolve against the row's list-instance automatically.\n private buildCell(\n col: ColumnOptions,\n colIndex: number,\n si: StickyInfo,\n item: any\n ): HTMLElement {\n const style = this.cellStyle(col, si)\n if (col.dataCell !== undefined) {\n const cell = col.dataCell(col) as HTMLElement\n this.applyGridCellAttrs(cell, colIndex, si, style)\n return cell\n }\n return span({\n class: this.cellClasses('td', si),\n role: 'gridcell',\n tabindex: -1,\n ariaColindex: String(colIndex + 1),\n style,\n bindText: item[col.prop],\n } as any)\n }\n\n // Build a `.tr` row element with all cells for a single item. The row is\n // bound to the item so selection state and rowRendered fire correctly.\n // Note: listBinding sets role=\"listitem\" on stamped elements; that's good\n // enough — selectors throughout this file use `.tr` for row matching.\n private buildRow(\n item: any,\n cols: ColumnOptions[],\n stickyInfo: StickyInfo[],\n rowClass = 'tr'\n ): HTMLElement {\n const cells = cols.map((col, i) =>\n this.buildCell(col, i, stickyInfo[i], item)\n )\n const selectBindingFn = this.selectBinding\n const tableInst = this\n const props: any = { class: rowClass }\n // `item` here is the placeholder proxy from template-build time. The\n // actual stamped row's item is delivered to toDOM as the second arg\n // (resolved via the rewritten path) — use that, not the closure-captured\n // placeholder.\n props.bind = {\n value: item,\n binding: {\n toDOM: (rowEl: Element, value: any) => {\n selectBindingFn(rowEl, value)\n const fn = tableInst.rowRendered\n if (fn) {\n fn(value, Array.from(rowEl.children) as HTMLElement[])\n }\n },\n },\n }\n return div(props, ...cells)\n }\n\n // Build the header row (one `.tr` of header cells inside a `.thead`).\n private buildHeaderCell(\n col: ColumnOptions,\n colIndex: number,\n si: StickyInfo\n ): HTMLElement {\n const { popColumnMenu } = this\n let ariaSort = 'none'\n let sortIcon: SVGElement | undefined\n switch (col.sort) {\n case 'ascending':\n sortIcon = icons.sortAscending()\n ariaSort = 'descending'\n break\n case 'descending':\n ariaSort = 'ascending'\n sortIcon = icons.sortDescending()\n break\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, col)\n event.stopPropagation()\n },\n },\n sortIcon || icons.moreVertical()\n )\n : {}\n\n const cell =\n col.headerCell !== undefined\n ? col.headerCell(col)\n : span(\n {\n class: this.cellClasses('th', si),\n role: 'columnheader',\n tabindex: -1,\n ariaSort,\n ariaColindex: String(colIndex + 1),\n style: this.cellStyle(col, si),\n },\n this.captionSpan(\n { style: { flex: '1' } },\n typeof col.name === 'string' ? col.name : col.prop\n ),\n menuButton\n )\n\n if (col.headerCell !== undefined) {\n this.applyGridCellAttrs(\n cell as HTMLElement,\n colIndex,\n si,\n this.cellStyle(col, si)\n )\n cell.classList.remove('td')\n cell.classList.add('th')\n cell.setAttribute('role', 'columnheader')\n }\n\n if (!this.noreorder && cell.children[0]) {\n dragAndDrop.init()\n const dragId = this.instanceId + '-column-header'\n const caption = cell.children[0] as HTMLElement\n caption.setAttribute('draggable', 'true')\n caption.style.pointerEvents = 'all'\n caption.dataset.drag = dragId\n ;(cell as HTMLElement).dataset.drop = dragId\n caption.addEventListener('dragstart', () => {\n this.draggedColumn = col\n })\n cell.addEventListener('drop', this.dropColumn)\n }\n\n return cell as HTMLElement\n }\n\n private buildHeader(\n cols: ColumnOptions[],\n stickyInfo: StickyInfo[]\n ): HTMLElement {\n const headerCells = cols.map((col, i) =>\n this.buildHeaderCell(col, i, stickyInfo[i])\n )\n return div(\n { class: 'thead', role: 'rowgroup' },\n div({ class: 'tr', role: 'row' }, ...headerCells)\n )\n }\n\n // Build a pinned tbody (top or bottom) — a `display: contents` wrapper with\n // its own non-virtualised listBinding so each pinned row goes through the\n // same dataCell / rowRendered / `^.prop` pipeline as the virtual rows. The\n // wrapper has no box of its own, so its stamped rows are layout children of\n // .scroll-area and share its single sticky context. Returns null when the\n // region is empty so render() can drop it from the DOM.\n private buildPinnedBody(\n rowsProxy: any,\n cols: ColumnOptions[],\n stickyInfo: StickyInfo[],\n region: 'pinned-top' | 'pinned-bottom'\n ): HTMLElement | null {\n const data = tosiValue(rowsProxy) as any[] | undefined\n if (!data || data.length === 0) return null\n const part = region === 'pinned-top' ? 'pinnedTopRows' : 'pinnedBottomRows'\n const rowClass = this.rowClasses(region)\n const binding = (rowsProxy as any).listBinding(\n (_elements: any, item: any) =>\n this.buildRow(item, cols, stickyInfo, rowClass),\n {}\n )\n return div(\n {\n class: `tbody tbody-${region}`,\n role: 'rowgroup',\n part,\n },\n ...binding\n )\n }\n\n getColumn(event: any): ColumnOptions | undefined {\n if (!this._scrollArea) return undefined\n const pointerX =\n (event.touches !== undefined ? event.touches[0].clientX : event.clientX) -\n this._scrollArea.getBoundingClientRect().x\n const epsilon = event.touches !== undefined ? 20 : 5\n const { scrollLeft, clientWidth, scrollWidth } = this._scrollArea\n const cols = this.visibleColumns\n const rightScroll = scrollWidth - clientWidth - scrollLeft\n\n let boundaryX = 0\n return cols.find((options: ColumnOptions, i: number) => {\n if (options.visible === false) return false\n boundaryX += options.width\n let visualBoundary: number\n if (options.pinned === 'left') {\n visualBoundary = boundaryX\n } else if (options.pinned === 'right') {\n visualBoundary = boundaryX - scrollLeft - rightScroll\n } else {\n visualBoundary = boundaryX - scrollLeft\n }\n return Math.abs(pointerX - visualBoundary) < epsilon\n })\n }\n\n private setCursor = (event: Event) => {\n const column = this.getColumn(event)\n this.style.cursor = column !== undefined ? 'col-resize' : ''\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 this.updateSelectionVisuals()\n }\n\n selectRows(rows?: any[], select = true) {\n for (const row of rows || this.array) {\n if (select) {\n row[this.selectedKey] = true\n } else {\n delete row[this.selectedKey]\n }\n }\n this.updateSelectionVisuals()\n }\n\n deSelect(rows?: any[]) {\n this.selectRows(rows, false)\n }\n\n private updateSelectionVisuals() {\n // Apply selection state to every body row currently in the DOM. Header\n // rows live inside .thead and don't have a list-instance, so itemFor\n // returns null and they're skipped.\n const rows = this._scrollArea?.querySelectorAll('.tr') ?? []\n for (const row of rows) {\n const item = this.itemFor(row)\n if (item != null) {\n this.selectBinding(row, item)\n }\n }\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 pickedItem = this.itemFor(target)\n if (pickedItem == null) {\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 this.updateSelectionVisuals()\n }\n\n // Resolve a (rowIndex, colIndex) coordinate to a DOM cell.\n // rowIndex semantics: -1 = header, 0..pinnedTop.length-1 = pinned-top rows,\n // then visible rows, then pinned-bottom rows.\n private findCell(rowIndex: number, colIndex: number): HTMLElement | null {\n if (rowIndex === -1) {\n return this.querySelector(\n `.thead .th[aria-colindex=\"${colIndex + 1}\"]`\n ) as HTMLElement | null\n }\n\n const top = this.effectivePinnedTopData\n const visible = this.visibleRows\n const bottom = this.effectivePinnedBottomData\n\n let item: any\n if (rowIndex < top.length) {\n item = top[rowIndex]\n } else if (rowIndex < top.length + visible.length) {\n item = visible[rowIndex - top.length]\n } else if (rowIndex < top.length + visible.length + bottom.length) {\n item = bottom[rowIndex - top.length - visible.length]\n } else {\n return null\n }\n\n const cells = this.cellsFor(item)\n return (cells?.[colIndex] as HTMLElement | undefined) ?? null\n }\n\n private _pendingFocus: { row: number; col: number } | null = null\n\n private onScrollEnd = () => {\n if (!this._pendingFocus) return\n const { row, col } = this._pendingFocus\n this._pendingFocus = null\n const cell = this.findCell(row, col)\n if (cell) cell.focus()\n }\n\n private focusCell(rowIndex: number, colIndex: number): void {\n this._pendingFocus = { row: rowIndex, col: colIndex }\n\n const cell = this.findCell(rowIndex, colIndex)\n if (cell) {\n cell.focus()\n cell.scrollIntoView({ block: 'nearest', inline: 'nearest' })\n } else if (this._scrollArea) {\n // Not in DOM — rough scroll to bring it into virtualisation range\n const top = this.effectivePinnedTopData\n const dataRowIndex = rowIndex - top.length\n if (dataRowIndex >= 0 && dataRowIndex < this.visibleRows.length) {\n this._scrollArea.scrollTop = dataRowIndex * this.rowHeight\n }\n }\n }\n\n private handleKeyNav = (event: KeyboardEvent) => {\n const el = event.target as HTMLElement\n const target = el.closest('.td') || el.closest('.th')\n if (!target) return\n\n const ariaCol = parseInt(target.getAttribute('aria-colindex') || '', 10)\n if (isNaN(ariaCol)) return\n const colIndex = ariaCol - 1\n\n const cols = this.visibleColumns.length\n const top = this.effectivePinnedTopData\n const visible = this.visibleRows\n const bottom = this.effectivePinnedBottomData\n const totalRows = top.length + visible.length + bottom.length\n const meta = event.metaKey || event.ctrlKey\n const isHeader = target.classList.contains('th')\n\n // Resolve the row's logical index in the unified row-space:\n // -1 = header, 0..top-1 = pinned-top, then visible, then pinned-bottom.\n let rowIndex: number\n if (isHeader) {\n rowIndex = -1\n } else {\n const row = target.closest('.tr') as HTMLElement | null\n if (!row) return\n const item = getListItem(row)\n if (item == null) return\n const idxTop = top.indexOf(item)\n const idxVisible = idxTop === -1 ? visible.indexOf(item) : -1\n const idxBottom =\n idxTop === -1 && idxVisible === -1 ? bottom.indexOf(item) : -1\n if (idxTop !== -1) {\n rowIndex = idxTop\n } else if (idxVisible !== -1) {\n rowIndex = top.length + idxVisible\n } else if (idxBottom !== -1) {\n rowIndex = top.length + visible.length + idxBottom\n } else {\n return\n }\n }\n\n let nextRow = rowIndex\n let nextCol = colIndex\n\n switch (event.key) {\n case 'ArrowUp':\n nextRow = meta ? 0 : Math.max(-1, rowIndex - 1)\n break\n case 'ArrowDown':\n nextRow = meta ? totalRows - 1 : Math.min(totalRows - 1, rowIndex + 1)\n break\n case 'ArrowLeft':\n nextCol = meta ? 0 : Math.max(0, colIndex - 1)\n break\n case 'ArrowRight':\n nextCol = meta ? cols - 1 : Math.min(cols - 1, colIndex + 1)\n break\n case 'Tab':\n if (event.shiftKey) {\n if (colIndex > 0) {\n nextCol = colIndex - 1\n } else if (rowIndex > 0) {\n nextRow = rowIndex - 1\n nextCol = cols - 1\n } else {\n return // let tab leave the table\n }\n } else {\n if (colIndex < cols - 1) {\n nextCol = colIndex + 1\n } else if (rowIndex < totalRows - 1) {\n nextRow = rowIndex + 1\n nextCol = 0\n } else {\n return // let tab leave the table\n }\n }\n break\n case 'Home':\n if (meta) {\n nextRow = 0\n nextCol = 0\n } else {\n nextCol = 0\n }\n break\n case 'End':\n if (meta) {\n nextRow = totalRows - 1\n nextCol = cols - 1\n } else {\n nextCol = cols - 1\n }\n break\n default:\n return\n }\n\n if (nextRow !== rowIndex || nextCol !== colIndex) {\n event.preventDefault()\n this.focusCell(nextRow, nextCol)\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 this.addEventListener('keydown', this.handleKeyNav)\n }\n\n setColumnWidths() {\n const cols = this.visibleColumns\n const columns = cols.map((c) => c.width + 'px').join(' ')\n const rowWidth = cols.reduce((w, c) => w + c.width, 0) + 'px'\n\n // The CSS variable is consumed by every `.tr` (display:grid) and by .thead\n // / .tbody for explicit width — one var, all rows reflow.\n this.style.setProperty('--tosi-table-grid-columns', columns)\n this.style.setProperty('--tosi-table-grid-row-width', rowWidth)\n // Legacy aliases\n this.style.setProperty('--grid-columns', columns)\n this.style.setProperty('--grid-row-width', rowWidth)\n\n // Update sticky positions for column-pinned cells across all regions\n const stickyInfo = this.computeStickyInfo(cols)\n for (const cell of this.querySelectorAll('.col-pinned')) {\n const ci = parseInt(cell.getAttribute('aria-colindex') || '', 10) - 1\n if (!isNaN(ci) && stickyInfo[ci]) {\n const si = stickyInfo[ci]\n if (si.left != null) (cell as HTMLElement).style.left = si.left\n if (si.right != null) (cell as HTMLElement).style.right = si.right\n }\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) => tosiValue(c.sort) !== false\n )) {\n if (tosiValue(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 if (menu.length) {\n menu.push(null)\n }\n const pinIcon =\n options.pinned === 'left'\n ? 'pin'\n : options.pinned === 'right'\n ? 'pin0f'\n : 'pin50o'\n menu.push({\n caption: this.localized ? localize('Pin') : 'Pin',\n icon: pinIcon,\n menuItems: [\n {\n caption: this.localized ? localize('Left') : 'Left',\n icon: 'pin',\n enabled: () => options.pinned !== 'left',\n action() {\n options.pinned = 'left'\n queueRender()\n },\n },\n {\n caption: this.localized ? localize('Right') : 'Right',\n icon: 'pin0f',\n enabled: () => options.pinned !== 'right',\n action() {\n options.pinned = 'right'\n queueRender()\n },\n },\n {\n caption: this.localized ? localize('Unpin') : 'Unpin',\n icon: 'unPin',\n enabled: () => !!options.pinned,\n action() {\n delete options.pinned\n queueRender()\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 ? tosiLocalized : span\n }\n\n get visibleRows(): any[] {\n return tosiValue(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 // With the array form, pinned items live outside _array — include them\n // in the search. With the count form, they're already inside _array.\n if (this._pinnedTopRows || this._pinnedBottomRows) {\n const all = [\n ...(this._pinnedTopRows ?? []),\n ...this._array,\n ...(this._pinnedBottomRows ?? []),\n ]\n return all.filter((obj) => obj[this.selectedKey])\n }\n return this._array.filter((obj) => obj[this.selectedKey])\n }\n\n getCells(itemOrCell: any): HTMLElement[] | undefined {\n const item =\n itemOrCell instanceof Element ? this.itemFor(itemOrCell) : itemOrCell\n return item == null ? undefined : this.cellsFor(item)\n }\n\n getItem(cell: Element): any {\n return this.itemFor(cell)\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 colIndex =\n parseInt(target.getAttribute('aria-colindex') || '', 10) - 1\n const dropped = this.visibleColumns[colIndex]\n const draggedIndex = this.columns.indexOf(this.draggedColumn!)\n const droppedIndex = this.columns.indexOf(dropped)\n // Inherit pinning from the drop target's zone\n this.draggedColumn!.pinned = dropped.pinned\n this.columns.splice(draggedIndex, 1)\n this.columns.splice(droppedIndex, 0, this.draggedColumn!)\n this.queueRender()\n\n event.preventDefault()\n event.stopPropagation()\n }\n\n render() {\n super.render()\n this.textContent = ''\n\n // Resolve data sources\n const pinnedTopData = this.effectivePinnedTopData\n const pinnedBottomData = this.effectivePinnedBottomData\n const baseData = this.effectiveBaseData\n const cap = Math.min(baseData.length, this.maxVisibleRows)\n const visibleData = this.filter(baseData.slice(0, cap))\n const { sort } = this\n if (sort) visibleData.sort(sort)\n\n this.rowData.pinnedTopData = pinnedTopData\n this.rowData.pinnedBottomData = pinnedBottomData\n this.rowData.visible = visibleData\n\n // Column layout\n const cols = this.visibleColumns\n if (cols.length === 0) return\n const stickyInfo = this.computeStickyInfo(cols)\n\n this.style.setProperty(\n '--tosi-table-row-height',\n this.rowHeight > 0 ? `${this.rowHeight}px` : 'auto'\n )\n this.setColumnWidths()\n\n // Build the regions. Header + optional pinned tbodies are siblings\n // alongside the visible-rows listBinding, all inside a single .scroll-area\n // which is the only scroll container. Pinned tbodies use display: contents\n // so their stamped rows participate in .scroll-area's layout directly,\n // sharing one sticky context with the visible rows and the header.\n this._head = this.buildHeader(cols, stickyInfo)\n this._tbodyTop = this.buildPinnedBody(\n this.rowData.pinnedTopData,\n cols,\n stickyInfo,\n 'pinned-top'\n )\n this._tbodyBottom = this.buildPinnedBody(\n this.rowData.pinnedBottomData,\n cols,\n stickyInfo,\n 'pinned-bottom'\n )\n\n // The visible-rows listBinding is bound directly to .scroll-area so\n // virtualisation observes the same scroll container that sticky cells\n // stick against.\n const visibleBinding = (this.rowData.visible as any).listBinding(\n (_elements: any, item: any) => this.buildRow(item, cols, stickyInfo),\n this.rowHeight > 0 ? { virtual: { height: this.rowHeight } } : {}\n )\n\n this._scrollArea = div(\n { class: 'scroll-area', part: 'visibleRows' },\n ...[\n this._head,\n this._tbodyTop,\n ...visibleBinding,\n this._tbodyBottom,\n ].filter(Boolean)\n )\n this._scrollArea.addEventListener('scrollend', this.onScrollEnd)\n\n this.append(this._scrollArea)\n\n this.observePinnedRowMutations()\n this.tagPinnedRows()\n }\n\n // Edge classes need to track listBinding mutations (pinned data may change\n // without a full re-render), so observe each pinned tbody and re-tag on\n // childList changes.\n private observePinnedRowMutations(): void {\n this._pinnedRowEdgeObserver?.disconnect()\n this._pinnedRowEdgeObserver = new MutationObserver(this.tagPinnedRows)\n for (const tbody of [this._tbodyTop, this._tbodyBottom]) {\n if (tbody) {\n this._pinnedRowEdgeObserver.observe(tbody, { childList: true })\n }\n }\n }\n}\n\n/** @deprecated Use TosiTable instead */\nexport type DataTable = TosiTable\n/** @deprecated Use TosiTable instead */\nexport const DataTable: typeof TosiTable = TosiTable\n\nexport const tosiTable = TosiTable.elementCreator() as ElementCreator<TosiTable>\n\n/** @deprecated Use tosiTable instead */\nexport const dataTable = tosiTable\n\n/** @deprecated Use tosiTable instead */\nexport const xinTable = tosiTable\n",
|
|
23
|
+
"/*#\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 `<tosi-menu>`\n\n`popMenu({target, menuItems, …})` will spawn a menu from a target.\n\nThe `<tosi-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, tosiMenu, postNotification, tosiLocalized, 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 caption: 'deep shortcut',\n shortcut: '⌘⇧D',\n action() {\n postNotification({\n message: 'Deep shortcut fired!',\n duration: 1\n })\n }\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 shortcut: '⌘1',\n checked: () => picked === 'one',\n action () {\n picked = 'one'\n }\n },\n {\n caption: 'two',\n shortcut: '⌘2',\n checked: () => picked === 'two',\n action () {\n picked = 'two'\n }\n },\n {\n caption: 'three',\n shortcut: '⌘3',\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 tosiMenu(\n {\n menuItems,\n localized: true,\n },\n tosiLocalized('Menu'),\n icons.chevronDown()\n )\n)\n```\n```html\n<button title=\"menu test\">\n <tosi-icon icon=\"moreVertical\"></tosi-icon>\n</button>\n<button title=\"menu test from bottom-right\" style=\"position: absolute; bottom: 0; right: 0\">\n <tosi-icon icon=\"moreVertical\"></tosi-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 hideDisabled?: boolean, // if true, non-applicable items are hidden (default: shown disabled)\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 four 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- A `() => HTMLElement` function returns a custom element to embed inline in\n the menu (see `MenuElement` below).\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 tooltip?: string\n properties?: ElementProps\n}\n```\n\n### SubMenu\n\n```\ninterface SubMenu {\n caption: string\n enabled?: () => boolean\n menuItems: MenuItem[]\n icon?: string | Element\n tooltip?: string\n properties?: ElementProps\n}\n```\n\n### MenuElement\n\nFor embedding a custom widget inline in a menu — e.g. a `<tosi-segmented>` for\nquick option-picking — pass a function that returns an `HTMLElement`:\n\n```\ntype MenuElement = () => HTMLElement\n```\n\nThe returned element is added as-is and tagged with the `tosi-menu-element`\nclass, which sets `min-height` to match standard menu items so the row\naligns visually. The widget is responsible for its own click/focus behaviour.\n\n```js\nimport { popMenu, tosiSegmented } from 'tosijs-ui'\nimport { elements } from 'tosijs'\n\nconst { button } = elements\n\nlet view = 'list'\n\nconst btn = button('View options')\nbtn.addEventListener('click', () => {\n popMenu({\n target: btn,\n menuItems: [\n { caption: 'Refresh', icon: 'refreshCcw', action() {} },\n null,\n () => tosiSegmented({\n choices: 'list,grid,table',\n value: view,\n style: { margin: '0 1em' },\n onChange(event) {\n view = event.target.value\n },\n // stop the menu's outer onClick from closing it when the user\n // picks a segment\n onClick(event) { event.stopPropagation() },\n }),\n null,\n { caption: 'Settings…', icon: 'settings', action() {} },\n ]\n })\n})\n\npreview.append(btn)\n```\n\n### Keyboard Shortcuts\n\nIf a menu is embodied in a `<tosi-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> `<tosi-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 { tosiLocalized, 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 tosiLocalized(\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## Drop Menus\n\n`popDropMenu` extends the menu system to support drag-and-drop. A single `menuItems`\narray can serve both click navigation (via `popMenu`) and drag-to-drop (via `popDropMenu`).\n\nItems with `acceptsDrop` (array of MIME types) participate in drop mode.\nItems with `dropAction` are valid drop targets. Submenus auto-disclose when\na matching drag hovers over them.\n\n### DropMenu Interfaces\n\n`MenuAction` and `SubMenu` gain two optional fields:\n\n```\nacceptsDrop?: string[] // MIME types this item accepts\ndropAction?: (dataTransfer: DataTransfer) => void\n```\n\n- A **SubMenu** with `acceptsDrop` auto-discloses on drag hover\n- A **SubMenu** with `dropAction` can also receive drops directly\n- A **MenuAction** with `dropAction` is a drop target\n- Items without `acceptsDrop` are shown disabled in drop mode (or hidden if `hideDisabled` is set)\n\n### popDropMenu({target, menuItems, dataTypes, …})\n\n```\nexport interface PopDropMenuOptions extends PopMenuOptions {\n dataTypes: readonly string[] // MIME types from the current drag\n}\n```\n\n`popDropMenu` filters menuItems to only those matching `dataTypes`,\nthen opens the menu in drop mode. Non-matching items are shown\ndisabled by default; set `hideDisabled: true` to remove them entirely.\n\n`disclosureDelay` (ms, default 200) controls how long a drag must hover\nover a submenu before it auto-discloses.\n\n### hideDisabled\n\nBy default (`hideDisabled: false`), non-matching items remain visible but disabled.\nThis preserves spatial stability — items don't jump around as you drag different\ntypes. Set `hideDisabled: true` to hide them entirely for a cleaner menu.\n\nApplies symmetrically to both `filterForDrop` and `filterForClick`.\n\n### filterForDrop / filterForClick\n\n```\nfilterForDrop(items: MenuItem[], dataTypes: readonly string[], hideDisabled?: boolean): MenuItem[]\nfilterForClick(items: MenuItem[], hideDisabled?: boolean): MenuItem[]\n```\n\nUtility functions to filter a single menu definition for each mode.\nWhen `hideDisabled` is false (default), non-matching items are kept but disabled.\n\n### TosiMenu accepts-drop\n\nSet `accepts-drop` (semicolon-delimited MIME types) on `<tosi-menu>` to auto-open\nin drop mode when a matching drag enters. Set `dropAction` to accept drops\ndirectly on the trigger (e.g. saving to the root folder). Set `disclosure-delay`\n(ms) to control submenu auto-disclosure speed.\n\n <tosi-menu accepts-drop=\"text/plain;text/html\" disclosure-delay=\"150\">Files</tosi-menu>\n\n menuElement.dropAction = (data) => saveToRoot(data)\n\n### Drop Menu Example\n\n```js\nimport { popMenu, popDropMenu, tosiMenu, dragAndDrop, icons, postNotification } from 'tosijs-ui'\nimport { elements } from 'tosijs'\n\ndragAndDrop.init()\n\nconst { button, div, span } = elements\n\nconst adjectives = ['Important', 'Old', 'Shared', 'Archive', 'Draft', 'Final', 'Review', 'Backup']\nconst randomFolders = (type) => () => {\n const count = 2 + Math.floor(Math.random() * 3)\n const picked = []\n const pool = [...adjectives]\n for (let i = 0; i < count; i++) {\n const idx = Math.floor(Math.random() * pool.length)\n picked.push(pool.splice(idx, 1)[0])\n }\n return picked.map(name => ({\n caption: name,\n icon: 'folder',\n acceptsDrop: [type],\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to ' + name + ': ' + (data.getData(type) || 'file'),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Opened ' + name, duration: 1 })\n },\n }))\n}\n\nconst menuItems = [\n {\n caption: 'Documents',\n icon: 'folder',\n acceptsDrop: ['text/*'],\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to Documents: ' + (data.getData('text/plain') || data.getData('text/html')),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Navigated to Documents', duration: 1 })\n },\n menuItems: [\n {\n caption: 'Text Files',\n icon: 'folder',\n acceptsDrop: ['text/plain'],\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to Text Files: ' + data.getData('text/plain'),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Navigated to Text Files', duration: 1 })\n },\n menuItems: randomFolders('text/plain'),\n },\n {\n caption: 'HTML Files',\n icon: 'folder',\n acceptsDrop: ['text/html'],\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to HTML Files: ' + data.getData('text/html'),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Navigated to HTML Files', duration: 1 })\n },\n menuItems: randomFolders('text/html'),\n },\n {\n caption: 'readme.txt',\n icon: 'file',\n action() {\n postNotification({ message: 'Opened readme.txt', duration: 1 })\n },\n },\n ]\n },\n null,\n {\n caption: 'Trash',\n icon: 'trash',\n acceptsDrop: ['special/any'],\n dropAction(data) {\n postNotification({\n type: 'error',\n message: 'Trashed: ' + (data.getData('text/plain') || 'item'),\n duration: 2\n })\n },\n action() {\n postNotification({ message: 'Opened Trash', duration: 1 })\n },\n },\n]\n\nconst clickBtn = button('Click: Browse Files', {\n onClick(event) {\n popMenu({ target: event.target.closest('button'), menuItems })\n }\n})\n\nconst dropMenu = tosiMenu(\n {\n menuItems,\n acceptsDrop: 'text/plain;text/html',\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to root: ' + (data.getData('text/plain') || data.getData('text/html')),\n duration: 2\n })\n },\n },\n icons.folder(),\n span(' Drop (show all)')\n)\n\nconst dropMenuHidden = tosiMenu(\n {\n menuItems,\n acceptsDrop: 'text/plain;text/html',\n hideDisabled: true,\n dropAction(data) {\n postNotification({\n type: 'success',\n message: 'Saved to root: ' + (data.getData('text/plain') || data.getData('text/html')),\n duration: 2\n })\n },\n },\n icons.folder(),\n span(' Drop (hide disabled)')\n)\n\npreview.append(\n div(\n { style: { display: 'flex', gap: '10px', alignItems: 'flex-start' } },\n div(\n { draggable: 'true', dataDrag: 'text/plain', dataDragContent: 'quarterly-report.txt', style: { padding: '8px', border: '1px dashed #888', borderRadius: '4px', cursor: 'grab' } },\n 'quarterly-report.txt'\n ),\n div(\n { draggable: 'true', dataDrag: 'text/html', dataDragContent: '<b>notes</b>', style: { padding: '8px', border: '1px dashed #888', borderRadius: '4px', cursor: 'grab' } },\n 'notes.html'\n ),\n ),\n div(\n { style: { display: 'flex', gap: '10px', marginTop: '10px', flexWrap: 'wrap' } },\n clickBtn,\n dropMenu,\n dropMenuHidden,\n )\n)\n```\n```css\n.preview {\n padding: 10px;\n}\n```\n\n> **Try it:** Click \"Browse Files\" to navigate the menu normally.\n> Drag a file over \"Drop (show all)\" — non-matching items appear\n> disabled. Drag over \"Drop (hide disabled)\" — non-matching items\n> are hidden entirely. \"Text Files\" only accepts .txt, \"HTML Files\"\n> only accepts .html. Subfolders are randomly generated each time\n> a folder is disclosed (dynamic `menuItems`).\n\n## Shadow DOM\n\nMenus work when triggered from inside a shadow DOM. Clicking outside\nthe menu dismisses it; clicking the shadow DOM target toggles it.\n\n```js\nimport { popMenu, removeLastMenu } from 'tosijs-ui'\n\nclass ShadowMenuHost extends HTMLElement {\n constructor() {\n super()\n const shadow = this.attachShadow({ mode: 'open' })\n const wrapper = document.createElement('div')\n wrapper.style.cssText = 'padding: 20px; background: #d0dce8; border-radius: 8px; display: inline-block'\n const btn = document.createElement('button')\n btn.textContent = 'Shadow Menu'\n btn.id = 'shadow-btn'\n btn.style.cssText = 'padding: 8px 16px; cursor: pointer'\n btn.addEventListener('click', () => {\n popMenu({\n target: btn,\n menuItems: [\n { caption: 'Alpha', action() {} },\n { caption: 'Bravo', action() {} },\n { caption: 'Charlie', action() {} },\n ]\n })\n })\n wrapper.appendChild(btn)\n shadow.appendChild(wrapper)\n }\n}\nif (!customElements.get('shadow-menu-host')) {\n customElements.define('shadow-menu-host', ShadowMenuHost)\n}\n\nconst host = document.createElement('shadow-menu-host')\nconst outside = document.createElement('button')\noutside.textContent = 'Click to dismiss'\noutside.id = 'outside-btn'\noutside.style.cssText = 'padding: 8px 16px; margin-left: 10px'\npreview.append(host, outside)\n```\n```test\nimport { removeLastMenu } from 'tosijs-ui'\n\ntest('shadow DOM menu: open and dismiss', async () => {\n const host = preview.querySelector('shadow-menu-host')\n const btn = host.shadowRoot.querySelector('#shadow-btn')\n const countFloats = () => document.querySelectorAll('tosi-float').length\n\n // opens from shadow DOM button click\n const before = countFloats()\n btn.click()\n await waitMs(100)\n expect(countFloats()).toBe(before + 1)\n\n // removeLastMenu dismisses it\n removeLastMenu(0)\n expect(countFloats()).toBe(before)\n\n // re-open and verify target mousedown keeps it open\n btn.click()\n await waitMs(100)\n expect(countFloats()).toBe(before + 1)\n btn.dispatchEvent(new MouseEvent('mousedown', { bubbles: true, composed: true }))\n await waitMs(100)\n expect(countFloats()).toBe(before + 1)\n removeLastMenu(0)\n})\n```\n\n## Menu Item Tooltips\n\nAdd `tooltip` to any menu item to show a tooltip on hover (requires\n`initTooltips()`).\n\n```js\nimport { elements } from 'tosijs'\nimport { popMenu, initTooltips, icons } from 'tosijs-ui'\n\ninitTooltips()\n\nconst { button } = elements\nconst btn = button('Tooltipped Menu')\n\nbtn.addEventListener('click', () => {\n popMenu({\n target: btn,\n menuItems: [\n { caption: 'Copy', icon: 'copy', tooltip: 'Copy to **clipboard**', shortcut: '⌘C', action() {} },\n { caption: 'Paste', icon: 'clipboard', tooltip: 'Paste from clipboard', shortcut: '⌘V', action() {} },\n null,\n { caption: 'Export', icon: 'download', tooltip: 'Export as `JSON` or `CSV`', menuItems: [\n { caption: 'JSON', action() {} },\n { caption: 'CSV', action() {} },\n ]},\n ]\n })\n})\n\npreview.append(btn)\n```\n\n*/\n\nimport {\n elements,\n ElementProps,\n varDefault,\n vars,\n StyleSheet,\n Component,\n PartsMap,\n} from 'tosijs'\nimport { popFloat, FloatPosition } from './pop-float'\nimport { icons, SvgIcon } from './icons'\nimport { localize } from './localize'\nimport { matchShortcut, displayShortcut } from './match-shortcut'\nimport { isTypeAllowed, stringToTypes } from './drag-and-drop'\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 tooltip?: string\n properties?: ElementProps\n acceptsDrop?: string[]\n dropAction?: (dataTransfer: DataTransfer) => void\n}\n\nexport type MenuItemsProvider = MenuItem[] | (() => MenuItem[])\n\nexport interface SubMenu {\n caption: string\n checked?: () => boolean\n enabled?: () => boolean\n menuItems: MenuItemsProvider\n icon?: string | Element\n tooltip?: string\n properties?: ElementProps\n acceptsDrop?: string[]\n dropAction?: (dataTransfer: DataTransfer) => void\n}\n\nexport type MenuSeparator = null\n\n// A function returning an HTMLElement is rendered as-is, sized to match the\n// height of standard menu items via `tosi-menu-element`. Useful for embedding\n// custom controls (e.g. a tosiSegmented for inline option pickers).\nexport type MenuElement = () => HTMLElement\n\nexport type MenuItem = MenuAction | SubMenu | MenuSeparator | MenuElement\n\nexport const resolveMenuItems = (provider: MenuItemsProvider): MenuItem[] =>\n typeof provider === 'function' ? provider() : provider\n\nconst { div, button, span, a, tosiSlot } = elements\n\nconst cleanSeparators = (items: MenuItem[]): MenuItem[] => {\n const result: MenuItem[] = []\n for (const item of items) {\n if (item === null) {\n if (result.length > 0 && result[result.length - 1] !== null) {\n result.push(item)\n }\n } else {\n result.push(item)\n }\n }\n while (result.length > 0 && result[result.length - 1] === null) {\n result.pop()\n }\n return result\n}\n\nexport const filterForDrop = (\n items: MenuItem[],\n dataTypes: readonly string[],\n hideDisabled = false\n): MenuItem[] => {\n const filtered: MenuItem[] = []\n for (const item of items) {\n if (item === null) {\n filtered.push(item)\n continue\n }\n if (typeof item === 'function') {\n filtered.push(item)\n continue\n }\n const { acceptsDrop } = item\n if (!acceptsDrop) {\n if (!hideDisabled) {\n filtered.push({ ...item, enabled: () => false } as MenuItem)\n }\n continue\n }\n const matches = dataTypes.some((t) => isTypeAllowed(acceptsDrop, t))\n if (!matches) {\n if (!hideDisabled) {\n filtered.push({ ...item, enabled: () => false } as MenuItem)\n }\n continue\n }\n const subMenu = item as SubMenu\n if (subMenu.menuItems) {\n // Always check with hideDisabled=true to see if there are valid children\n const validChildren = filterForDrop(\n resolveMenuItems(subMenu.menuItems),\n dataTypes,\n true\n )\n if (validChildren.length > 0 || subMenu.dropAction) {\n const childItems = hideDisabled\n ? validChildren\n : filterForDrop(resolveMenuItems(subMenu.menuItems), dataTypes, false)\n filtered.push({ ...subMenu, menuItems: childItems })\n } else if (!hideDisabled) {\n filtered.push({ ...subMenu, enabled: () => false } as MenuItem)\n }\n } else {\n filtered.push(item)\n }\n }\n return cleanSeparators(filtered)\n}\n\nexport const filterForClick = (\n items: MenuItem[],\n hideDisabled = false\n): MenuItem[] => {\n const filtered: MenuItem[] = []\n for (const item of items) {\n if (item === null) {\n filtered.push(item)\n continue\n }\n if (typeof item === 'function') {\n filtered.push(item)\n continue\n }\n const action = (item as MenuAction).action\n const menuItemsProvider = (item as SubMenu).menuItems\n if (action || menuItemsProvider) {\n if (menuItemsProvider) {\n // Always check with hideDisabled=true to see if there are valid children\n const validChildren = filterForClick(\n resolveMenuItems(menuItemsProvider),\n true\n )\n if (validChildren.length > 0) {\n const childItems = hideDisabled\n ? validChildren\n : filterForClick(resolveMenuItems(menuItemsProvider), false)\n filtered.push({ ...item, menuItems: childItems } as SubMenu)\n } else if (!hideDisabled) {\n filtered.push({ ...item, enabled: () => false } as MenuItem)\n }\n } else {\n filtered.push(item)\n }\n } else if (!hideDisabled) {\n filtered.push({ ...item, enabled: () => false } as MenuItem)\n }\n }\n return cleanSeparators(filtered)\n}\n\n// @deprecated xin-menu-* classes — use tosi-menu-* instead; remove in next major\nconst menuStyles = {\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}\nconst menuItemStyles = {\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 8px'),\n height: varDefault.menuItemHeight('48px'),\n lineHeight: varDefault.menuItemHeight('48px'),\n textAlign: 'left',\n}\nconst menuItemColorStyles = {\n color: varDefault.menuItemColor('#222'),\n}\nconst menuItemHoverStyles = {\n boxShadow: 'none !important',\n background: varDefault.menuItemHoverBg('#eee'),\n}\nconst menuItemActiveStyles = {\n boxShadow: 'none !important',\n background: varDefault.menuItemActiveBg('#aaa'),\n color: varDefault.menuItemActiveColor('#000'),\n}\nconst dropOverStyles = {\n background: `${varDefault.menuDropOverBg('#2196F3')} !important`,\n color: `${varDefault.menuDropOverColor('#fff')} !important`,\n}\nconst dropOverSpanStyles = {\n color: `${varDefault.menuDropOverColor('#fff')} !important`,\n}\nconst dropOverSvgStyles = {\n stroke: `${varDefault.menuDropOverColor('#fff')} !important`,\n}\nconst dragTargetHoverStyles = {\n boxShadow: `inset 0 0 0 2px color-mix(in srgb, ${varDefault.menuDropOverBg(\n '#2196F3'\n )} 50%, transparent) !important`,\n}\n\nStyleSheet('xin-menu-helper', {\n '.xin-menu, .tosi-menu': menuStyles,\n '.xin-menu > div, .tosi-menu > div': {\n width: varDefault.menuWidth('auto'),\n },\n '.xin-menu-trigger, .tosi-menu-trigger': {\n paddingLeft: 0,\n paddingRight: 0,\n minWidth: varDefault.touchSize('48px'),\n },\n '.xin-menu-separator, .tosi-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-element, .tosi-menu-element': {\n minHeight: varDefault.menuItemHeight('48px'),\n },\n '.xin-menu-item, .tosi-menu-item': menuItemStyles,\n '.xin-menu-item, .xin-menu-item > span, .tosi-menu-item, .tosi-menu-item > span':\n menuItemColorStyles,\n '.xin-menu-with-icons .xin-menu-item, .tosi-menu-with-icons .tosi-menu-item':\n {\n gridTemplateColumns: '24px 1fr 30px',\n gap: varDefault.menuItemGap('8px'),\n },\n '.xin-menu-item > :first-child, .tosi-menu-item > :first-child': {\n justifySelf: 'center',\n alignSelf: 'center',\n },\n '.xin-menu-item svg, .tosi-menu-item svg': {\n stroke: varDefault.menuItemIconColor('#222'),\n },\n '.xin-menu-item.xin-menu-item-checked, .tosi-menu-item.tosi-menu-item-checked':\n {\n background: varDefault.menuItemHoverBg('#eee'),\n },\n '.xin-menu-item > span:nth-child(2), .tosi-menu-item > span:nth-child(2)': {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textAlign: 'left',\n },\n '.xin-menu-item:hover, .tosi-menu-item:hover': menuItemHoverStyles,\n '.xin-menu-item.drag-target:hover, .tosi-menu-item.drag-target:hover':\n dragTargetHoverStyles,\n '.xin-menu-item:active, .tosi-menu-item:active': menuItemActiveStyles,\n '.xin-menu-item:active svg, .tosi-menu-item:active svg': {\n stroke: varDefault.menuItemIconActiveColor('#000'),\n },\n '.xin-menu-item-highlight, .tosi-menu-item-highlight': menuItemActiveStyles,\n '.xin-menu-item-highlight svg, .tosi-menu-item-highlight svg': {\n stroke: varDefault.menuItemIconActiveColor('#000'),\n },\n '.xin-drop-over, .tosi-drop-over': dropOverStyles,\n '.xin-drop-over > span, .tosi-drop-over > span': dropOverSpanStyles,\n '.xin-drop-over svg, .tosi-drop-over svg': dropOverSvgStyles,\n '.drag-target': dragTargetHoverStyles,\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 const itemRole = options.role === 'listbox' ? 'option' : 'menuitem'\n let menuItem: HTMLElement\n const props = item.properties || {}\n if (typeof item?.action === 'string') {\n menuItem = a(\n props,\n {\n role: itemRole,\n href: item.action,\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(item.shortcut ? displayShortcut(item.shortcut) : ' ')\n )\n } else {\n menuItem = button(\n props,\n {\n role: itemRole,\n onClick: item.action,\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(item.shortcut ? displayShortcut(item.shortcut) : ' ')\n )\n }\n menuItem.classList.add('xin-menu-item', 'tosi-menu-item')\n menuItem.classList.toggle('xin-menu-item-checked', checked !== false)\n menuItem.classList.toggle('tosi-menu-item-checked', checked !== false)\n if (item.tooltip) {\n menuItem.dataset.tooltip = item.tooltip\n }\n if (options.role === 'listbox') {\n menuItem.toggleAttribute('aria-selected', checked !== false)\n }\n if (item?.enabled && !item.enabled()) {\n menuItem.setAttribute('disabled', '')\n menuItem.setAttribute('aria-disabled', 'true')\n }\n return menuItem\n}\n\nexport const createDropMenuItem = (\n item: MenuAction,\n options: PopMenuOptions\n): HTMLElement => {\n let icon = item?.icon || span(' ')\n if (typeof icon === 'string') {\n icon = icons[icon]()\n }\n const props = item.properties || {}\n const menuItem = button(\n props,\n {\n onDragenter(event: DragEvent) {\n clearDropGraceTimer()\n menuItem.classList.add('xin-drop-over', 'tosi-drop-over')\n event.preventDefault()\n },\n onDragover(event: DragEvent) {\n event.preventDefault()\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy'\n }\n },\n onDragleave(event: DragEvent) {\n const related = event.relatedTarget as Node | null\n if (related && menuItem.contains(related)) return\n menuItem.classList.remove('xin-drop-over', 'tosi-drop-over')\n },\n onDrop(event: DragEvent) {\n event.preventDefault()\n event.stopPropagation()\n menuItem.classList.remove('xin-drop-over', 'tosi-drop-over')\n if (item.dropAction && event.dataTransfer) {\n item.dropAction(event.dataTransfer)\n }\n removeLastMenu(0)\n },\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(' ')\n )\n menuItem.classList.add('xin-menu-item', 'tosi-menu-item')\n if (item.tooltip) {\n menuItem.dataset.tooltip = item.tooltip\n }\n if (item.dropAction && item.acceptsDrop) {\n menuItem.dataset.drop = item.acceptsDrop.join(';')\n }\n if (item?.enabled && !item.enabled()) {\n menuItem.setAttribute('disabled', '')\n menuItem.setAttribute('aria-disabled', 'true')\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\n let disclosureTimer: ReturnType<typeof setTimeout> | null = null\n let disclosed = false\n\n const props = item.properties || {}\n const submenuItem = button(\n props,\n {\n disabled: !(!item.enabled || item.enabled()),\n onClick(event: Event) {\n if (options._dropMode) return\n popMenu(\n Object.assign({}, options, {\n menuItems: resolveMenuItems(item.menuItems),\n target: submenuItem,\n submenuDepth: (options.submenuDepth || 0) + 1,\n position: 'side',\n })\n )\n event.stopPropagation()\n event.preventDefault()\n },\n onDragenter(event: DragEvent) {\n if (!options._dropMode) return\n clearDropGraceTimer()\n event.preventDefault()\n event.stopPropagation()\n const from = event.relatedTarget as Node | null\n // Ignore dragenter from own child elements (icon, text, chevron)\n if (from && submenuItem.contains(from)) return\n submenuItem.classList.add('xin-drop-over', 'tosi-drop-over')\n if (disclosed) {\n // Dragged back to this item — close child menus, don't re-disclose\n removeLastMenu((options.submenuDepth || 0) + 1)\n disclosed = false\n if (disclosureTimer) clearTimeout(disclosureTimer)\n disclosureTimer = null\n return\n }\n if (disclosureTimer) clearTimeout(disclosureTimer)\n disclosureTimer = setTimeout(() => {\n disclosed = true\n const resolved = resolveMenuItems(item.menuItems)\n const filteredItems = options._dataTypes\n ? filterForDrop(resolved, options._dataTypes, options.hideDisabled)\n : resolved\n if (filteredItems.length > 0) {\n popMenu(\n Object.assign({}, options, {\n menuItems: filteredItems,\n target: submenuItem,\n submenuDepth: (options.submenuDepth || 0) + 1,\n position: 'side',\n _dropMode: true,\n _dataTypes: options._dataTypes,\n })\n )\n }\n }, options.disclosureDelay ?? 200)\n },\n onDragover(event: DragEvent) {\n if (!options._dropMode) return\n event.preventDefault()\n event.stopPropagation()\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = item.dropAction ? 'copy' : 'link'\n }\n },\n onDragleave(event: DragEvent) {\n if (!options._dropMode) return\n const related = event.relatedTarget as Node | null\n if (related && submenuItem.contains(related)) return\n // Keep highlight if cursor moved into the disclosed child menu\n if (\n disclosed &&\n related &&\n poppedMenus.some(\n (p) => p.menu.contains(related) || p.target.contains(related)\n )\n ) {\n return\n }\n submenuItem.classList.remove('xin-drop-over', 'tosi-drop-over')\n if (disclosureTimer) {\n clearTimeout(disclosureTimer)\n disclosureTimer = null\n }\n },\n onDrop(event: DragEvent) {\n if (!options._dropMode || !item.dropAction) return\n event.preventDefault()\n event.stopPropagation()\n submenuItem.classList.remove('xin-drop-over', 'tosi-drop-over')\n if (event.dataTransfer) {\n item.dropAction(event.dataTransfer)\n }\n removeLastMenu(0)\n },\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n icons.chevronRight({ style: { justifySelf: 'flex-end' } })\n )\n submenuItem.classList.add('xin-menu-item', 'tosi-menu-item')\n if (item.tooltip) {\n submenuItem.dataset.tooltip = item.tooltip\n }\n if (options._dropMode && item.dropAction && item.acceptsDrop) {\n submenuItem.dataset.drop = item.acceptsDrop.join(';')\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 tosi-menu-separator' })\n } else if (typeof item === 'function') {\n const el = item()\n el.classList.add('xin-menu-element', 'tosi-menu-element')\n return el\n } else if (options._dropMode) {\n const sub = item as SubMenu\n const hasChildren =\n sub.menuItems && resolveMenuItems(sub.menuItems).length > 0\n if (hasChildren) {\n return createSubMenu(sub, options)\n } else if ((item as MenuAction).dropAction) {\n return createDropMenuItem(item as MenuAction, options)\n } else {\n // Drop mode item with acceptsDrop but no dropAction and no children\n // Render as non-interactive label\n let icon = item?.icon || span(' ')\n if (typeof icon === 'string') {\n icon = icons[icon]()\n }\n return button(\n {\n class: 'xin-menu-item tosi-menu-item',\n disabled: true,\n },\n icon,\n options.localized ? span(localize(item.caption)) : span(item.caption),\n span(' ')\n )\n }\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, role = 'menu' } = options\n const hasIcons = menuItems.find(\n (item) =>\n item != null &&\n typeof item !== 'function' &&\n ((item as MenuAction).icon || (item as MenuAction).checked)\n )\n\n const menuDepth = options.submenuDepth || 0\n\n const menuDiv = div(\n {\n class: hasIcons\n ? 'xin-menu tosi-menu xin-menu-with-icons tosi-menu-with-icons'\n : 'xin-menu tosi-menu',\n role,\n onClick() {\n if (!options._dropMode) {\n removeLastMenu(0)\n }\n },\n onDragover(event: DragEvent) {\n if (!options._dropMode) return\n event.preventDefault()\n },\n onDragenter() {\n if (!options._dropMode) return\n clearDropGraceTimer()\n },\n onDragleave(event: DragEvent) {\n if (!options._dropMode) return\n const related = event.relatedTarget as Node | null\n if (related && menuDiv.contains(related)) return\n // Check if we moved into a child submenu float\n if (\n related &&\n poppedMenus.some(\n (p) => p.menu.contains(related) || p.target.contains(related)\n )\n ) {\n return\n }\n startDropGraceTimer(menuDepth)\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 return menuDiv\n}\n\ninterface PoppedMenu {\n target: HTMLElement\n menu: HTMLElement\n onClose?: () => void\n}\nlet lastPopped: PoppedMenu | undefined\nconst poppedMenus: PoppedMenu[] = []\nlet dropGraceTimer: ReturnType<typeof setTimeout> | null = null\n\nconst clearDropGraceTimer = () => {\n if (dropGraceTimer) {\n clearTimeout(dropGraceTimer)\n dropGraceTimer = null\n }\n}\n\nconst startDropGraceTimer = (depth: number) => {\n clearDropGraceTimer()\n dropGraceTimer = setTimeout(() => {\n dropGraceTimer = null\n removeLastMenu(depth)\n }, 500)\n}\n\nexport const removeLastMenu = (depth = 0): PoppedMenu | undefined => {\n clearDropGraceTimer()\n if (depth === 0) {\n document\n .querySelectorAll('tosi-menu.xin-drop-over, tosi-menu.tosi-drop-over')\n .forEach((el) =>\n el.classList.remove('xin-drop-over', 'tosi-drop-over')\n )\n }\n const toBeRemoved = poppedMenus.splice(depth)\n for (const popped of toBeRemoved) {\n popped.menu.remove()\n if (popped.onClose) {\n popped.onClose()\n }\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 hideDisabled?: boolean\n onClose?: () => void\n role?: 'menu' | 'listbox'\n _dropMode?: boolean\n _dataTypes?: readonly string[]\n disclosureDelay?: number\n}\n\nexport interface PopDropMenuOptions\n extends Omit<PopMenuOptions, '_dropMode' | '_dataTypes'> {\n dataTypes: readonly string[]\n}\n\ndocument.addEventListener('mousedown', (event: Event) => {\n if (poppedMenus.length === 0) return\n const path = event.composedPath()\n if (\n !poppedMenus.find(\n (popped) => path.includes(popped.target) || path.includes(popped.menu)\n )\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 (options._dropMode) {\n // In drop mode, don't toggle — just ensure the right depth is open\n // If this exact submenu is already open at this depth, leave it\n if (\n poppedMenus.length > submenuDepth! &&\n poppedMenus[submenuDepth!]?.target === target\n ) {\n return\n }\n removeLastMenu(submenuDepth)\n } else {\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\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 = options._dropMode ? 'remain' : 'remove'\n poppedMenus.push({\n target,\n menu: float,\n onClose: options.onClose,\n })\n}\n\nexport const popDropMenu = (options: PopDropMenuOptions): void => {\n const { dataTypes, ...rest } = options\n const filtered = filterForDrop(\n options.menuItems,\n dataTypes,\n options.hideDisabled\n )\n if (!filtered.length) return\n popMenu({\n ...rest,\n menuItems: filtered,\n _dropMode: true,\n _dataTypes: dataTypes,\n })\n}\n\ninterface ShortcutMatch {\n action: MenuAction\n path: SubMenu[]\n}\n\nexport function findShortcutAction(\n items: MenuItem[],\n event: KeyboardEvent,\n path: SubMenu[] = []\n): ShortcutMatch | undefined {\n for (const item of items) {\n if (!item) continue\n if (typeof item === 'function') continue\n const { shortcut } = item as MenuAction\n const { menuItems } = item as SubMenu\n\n if (shortcut) {\n if (matchShortcut(event, shortcut)) {\n const menuAction = item as MenuAction\n // Check if the action itself is disabled\n if (menuAction.enabled && !menuAction.enabled()) return undefined\n // Check if any parent submenu is disabled\n if (path.some((sub) => sub.enabled && !sub.enabled())) return undefined\n return { action: menuAction, path }\n }\n } else if (menuItems) {\n const found = findShortcutAction(resolveMenuItems(menuItems), event, [\n ...path,\n item as SubMenu,\n ])\n if (found) return found\n }\n }\n return undefined\n}\n\ninterface TosiMenuParts extends PartsMap {\n trigger: HTMLButtonElement\n icon: SvgIcon\n}\n\nexport class TosiMenu extends Component<TosiMenuParts> {\n static preferredTagName = 'tosi-menu'\n static lightStyleSpec = {\n ':host': {\n display: 'inline-flex',\n minWidth: vars.touchSize,\n minHeight: vars.touchSize,\n },\n ':host button': {\n margin: 0,\n padding: 0,\n alignSelf: 'stretch',\n flex: '1',\n textAlign: 'center',\n },\n ':host button > tosi-slot': {\n display: 'flex',\n alignItems: 'center',\n gap: varDefault.tosiMenuTriggerGap('10px'),\n },\n }\n\n static initAttributes = {\n menuWidth: 'auto',\n localized: false,\n icon: '',\n acceptsDrop: '',\n disclosureDelay: 0,\n hideDisabled: false,\n }\n\n menuItems: MenuItem[] = []\n dropAction: ((dataTransfer: DataTransfer) => void) | null = null\n\n private _dragMatches = false\n\n private _matchesDrag(event: DragEvent): boolean {\n if (!this.acceptsDrop) return false\n const accepted = stringToTypes(this.acceptsDrop)\n const dragTypes = [...(event.dataTransfer?.types || [])]\n return dragTypes.some((t) => accepted.some((a) => isTypeAllowed([a], t)))\n }\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 handleDragEnter = (event: DragEvent) => {\n this._dragMatches = this._matchesDrag(event)\n if (!this._dragMatches) return\n clearDropGraceTimer()\n this.classList.add('xin-drop-over', 'tosi-drop-over')\n const dragTypes = [...(event.dataTransfer?.types || [])]\n if (this.menuItems.length) {\n popDropMenu({\n target: this.parts.trigger,\n menuItems: this.menuItems,\n dataTypes: dragTypes,\n width: this.menuWidth,\n localized: this.localized,\n disclosureDelay: this.disclosureDelay || undefined,\n hideDisabled: this.hideDisabled,\n })\n }\n event.preventDefault()\n }\n\n handleDragOver = (event: DragEvent) => {\n if (!this._dragMatches) return\n event.preventDefault()\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = this.dropAction ? 'copy' : 'link'\n }\n }\n\n handleDragLeave = (event: DragEvent) => {\n if (!this._dragMatches) return\n const related = event.relatedTarget as Node | null\n if (related && this.contains(related)) return\n // Check if moved into an open drop menu\n if (\n related &&\n poppedMenus.some(\n (p) => p.menu.contains(related) || p.target.contains(related)\n )\n ) {\n this.classList.remove('xin-drop-over', 'tosi-drop-over')\n return\n }\n this.classList.remove('xin-drop-over', 'tosi-drop-over')\n startDropGraceTimer(0)\n }\n\n handleDrop = (event: DragEvent) => {\n if (!this._dragMatches || !this.dropAction) return\n event.preventDefault()\n event.stopPropagation()\n this.classList.remove('xin-drop-over', 'tosi-drop-over')\n if (event.dataTransfer) {\n this.dropAction(event.dataTransfer)\n }\n removeLastMenu(0)\n }\n\n content = () =>\n button({ tabindex: 0, part: 'trigger', onClick: this.showMenu }, tosiSlot())\n\n handleShortcut = async (event: KeyboardEvent) => {\n const match = findShortcutAction(this.menuItems, event)\n if (!match) return\n\n event.preventDefault()\n event.stopImmediatePropagation()\n\n const { action: menuAction, path } = match\n\n // Animate: disclose menu path, highlight item, then execute\n if (this.isConnected && document.body.contains(this)) {\n await this.animateShortcut(path, menuAction)\n }\n\n if (menuAction.action instanceof Function) {\n menuAction.action()\n }\n }\n\n private findMenuItemByCaption(\n container: Element,\n caption: string\n ): HTMLElement | null {\n for (const el of container.querySelectorAll('.xin-menu-item')) {\n // Menu items are: icon (svg or span), span(caption), span(shortcut/chevron)\n // Caption is always children[1]\n const captionEl = el.children[1]\n if (captionEl && captionEl.textContent === caption) {\n return el as HTMLElement\n }\n }\n return null\n }\n\n private async animateShortcut(\n path: SubMenu[],\n action: MenuAction\n ): Promise<void> {\n // Ensure any existing menus are closed first\n removeLastMenu(0)\n\n // Open root menu\n popMenu({\n target: this.parts.trigger,\n width: this.menuWidth,\n localized: this.localized,\n menuItems: this.menuItems,\n })\n await new Promise((r) => setTimeout(r, 80))\n\n // Disclose each submenu in the path\n for (let i = 0; i < path.length; i++) {\n const depth = i + 1\n const parentFloat = poppedMenus[i]?.menu\n if (!parentFloat) break\n\n const submenuEl = this.findMenuItemByCaption(parentFloat, path[i].caption)\n if (!submenuEl) break\n\n popMenu({\n target: submenuEl,\n width: this.menuWidth,\n localized: this.localized,\n menuItems: resolveMenuItems(path[i].menuItems),\n submenuDepth: depth,\n position: 'side' as FloatPosition,\n })\n await new Promise((r) => setTimeout(r, 80))\n }\n\n // Highlight the matching action item\n const lastFloat = poppedMenus[poppedMenus.length - 1]?.menu\n if (lastFloat) {\n const itemEl = this.findMenuItemByCaption(lastFloat, action.caption)\n if (itemEl) {\n itemEl.classList.add('xin-menu-item-highlight', 'tosi-menu-item-highlight')\n }\n }\n\n // Brief pause so user can see the highlight\n await new Promise((r) => setTimeout(r, 300))\n\n // Close everything\n removeLastMenu(0)\n }\n\n constructor() {\n super()\n this.addEventListener('keydown', this.showMenu)\n this.addEventListener('dragenter', this.handleDragEnter)\n this.addEventListener('dragover', this.handleDragOver)\n this.addEventListener('dragleave', this.handleDragLeave)\n this.addEventListener('drop', this.handleDrop)\n }\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('keydown', this.handleShortcut, true)\n if (this.acceptsDrop) {\n this.dataset.drop = this.acceptsDrop\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n document.removeEventListener('keydown', this.handleShortcut)\n }\n}\n\nexport const tosiMenu = TosiMenu.elementCreator()\n\n/** @deprecated Use tosiMenu instead */\nexport const xinMenu = tosiMenu\n/** @deprecated Use TosiMenu instead */\nexport type XinMenu = TosiMenu\n/** @deprecated Use TosiMenu instead */\nexport const XinMenu: typeof TosiMenu = TosiMenu\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 { tosiTable } 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\nconst table = tosiTable({\n multiple: true,\n array: emojiData,\n localized: true,\n columns,\n rowHeight: 40,\n})\n\ntable.addEventListener('mouseover', (e) => {\n for (const el of table.querySelectorAll('.row-hover')) {\n el.classList.remove('row-hover')\n }\n const item = table.getItem(e.target)\n if (!item) return\n table.getCells(item)?.forEach(c => c.classList.add('row-hover'))\n})\n\npreview.append(table)\n```\n```css\n.preview input.td {\n margin: 0;\n border-radius: 0;\n box-shadow: none !important;\n}\n\n.preview input.td:focus {\n background: #fff4;\n}\n\n.preview tosi-table {\n height: 100%;\n}\n\n.preview .row-hover {\n background: #08835810;\n}\n```\n```test\nconst table = await waitFor('tosi-table')\nawait new Promise(resolve => {\n const check = () => {\n if (table.visibleRows.length > 0) return resolve()\n setTimeout(check, 100)\n }\n check()\n})\n\ntest('table renders with data', () => {\n expect(table.multiple).toBe(true)\n expect(table.visibleRows.length).toBeGreaterThan(0)\n expect(table.array.length).toBeGreaterThan(0)\n})\n\ntest('row selection: data model + aria-selected on row (incl. custom dataCell)', async () => {\n // Wait for listBinding to stamp DOM cells for the visible window\n const items = table.visibleRows\n await new Promise(resolve => {\n const check = () => {\n if (table.getCells(items[0]) && table.getCells(items[1])) return resolve()\n setTimeout(check, 100)\n }\n check()\n })\n\n table.deSelect()\n table.selectRow(items[0])\n table.selectRow(items[1])\n\n // Data model reflects selection immediately\n expect(items[0][table.selectedKey]).toBe(true)\n expect(items[1][table.selectedKey]).toBe(true)\n expect(table.selectedRows.length).toBe(2)\n\n // DOM: aria-selected lives on the row element. CSS targets\n // .tr[aria-selected] .td to highlight cells. The attribute is set via\n // toggleAttribute, so its value is \"\" (presence-only) — match accordingly.\n const cells0 = table.getCells(items[0])\n const cells1 = table.getCells(items[1])\n expect(cells0.length).toBe(table.visibleColumns.length)\n expect(cells1.length).toBe(table.visibleColumns.length)\n const row0 = cells0[0].closest('.tr')\n const row1 = cells1[0].closest('.tr')\n expect(row0.hasAttribute('aria-selected')).toBe(true)\n expect(row1.hasAttribute('aria-selected')).toBe(true)\n // The `name` column (index 1) uses a dataCell input — confirm the custom\n // element is the actual cell living inside the same selected row.\n expect(cells0[1].tagName).toBe('INPUT')\n expect(cells0[1].closest('.tr')).toBe(row0)\n\n // Deselect and verify both data model and DOM clear\n table.deSelect()\n expect(table.selectedRows.length).toBe(0)\n expect(items[0][table.selectedKey]).not.toBe(true)\n expect(items[1][table.selectedKey]).not.toBe(true)\n expect(row0.hasAttribute('aria-selected')).toBe(false)\n expect(row1.hasAttribute('aria-selected')).toBe(false)\n})\n\ntest('getCells and getItem', async () => {\n // Wait for list binding to stamp DOM elements\n const items = table.visibleRows\n let cells\n await new Promise(resolve => {\n const check = () => {\n cells = table.getCells(items[0])\n if (cells) return resolve()\n setTimeout(check, 100)\n }\n check()\n })\n\n expect(cells.length).toBe(table.visibleColumns.length)\n\n // getItem round-trips back to the same item\n const item = table.getItem(cells[0])\n expect(item).toBe(items[0])\n\n // getCells from a cell element\n const cellsFromCell = table.getCells(cells[1])\n expect(cellsFromCell).toBe(cells)\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 `$('tosi-table').visibleRows`\n> and $('tosi-table').selectedRows`.\n\nYou can set the `<tosi-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 pinned?: 'left' | 'right'\n sort?: false | 'ascending' | 'descending'\n headerCell?: (options: ColumnOptions) => HTMLElement\n dataCell?: (options: ColumnOptions) => HTMLElement\n}\n```\n\n## Pinned Columns and Rows\n\nSet `pinned: 'left'` or `pinned: 'right'` on individual columns to pin\nthem during horizontal scroll. Pinned columns are sorted to the edges\nautomatically. You can also pin/unpin columns via the header menu, or by\ndragging a column into/out of a pinned zone.\n\nSet `pinnedTop` and `pinnedBottom` to pin the first/last N data rows\n(pinned top rows appear below the header row).\n\nAll pinning uses CSS `position: sticky` for frame-perfect rendering with\nno jitter.\n\n```js\nimport { elements } from 'tosijs'\nimport { tosiTable, icons } from 'tosijs-ui'\n\nconst { button, span } = elements\n\nconst count = 100\nconst cols = ['Q1', 'Q2', 'Q3', 'Q4']\nconst numKeys = []\nconst rows = Array.from({ length: count }, (_, i) => {\n const row = { id: i + 1, name: 'Item ' + (i + 1) }\n for (const year of [2024, 2025, 2026]) {\n for (const q of cols) {\n const key = q + ' ' + year\n row[key] = Math.round((Math.random() * 200 - 100) * 100) / 100\n if (i === 0) numKeys.push(key)\n }\n }\n return row\n})\n\n// totals row\nconst totals = { id: '', name: 'Total' }\nfor (const key of numKeys) {\n totals[key] = Math.round(rows.reduce((sum, r) => sum + r[key], 0) * 100) / 100\n}\nrows.push(totals)\n\n// custom cell that colors negative numbers red\nfunction numCell(options) {\n return span({\n class: 'td num-cell',\n bindText: '^.' + options.prop,\n bind: {\n value: '^.' + options.prop,\n binding: {\n toDOM(el, val) {\n el.style.color = val < 0 ? '#c00' : ''\n }\n }\n }\n })\n}\n\nconst dataColumns = numKeys.map(key => ({\n prop: key, width: 100, align: 'right', dataCell: numCell,\n}))\n\nconst table = tosiTable({\n array: rows,\n rowHeight: 32,\n pinnedBottom: 1,\n rowRendered(item, cells) {\n const total = numKeys.reduce((sum, key) => sum + (item[key] || 0), 0)\n const rowClass = total < 0 ? 'row-negative' : 'row-positive'\n for (const c of cells) {\n if (c.classList.contains('num-cell')) {\n c.classList.add(rowClass)\n }\n }\n },\n columns: [\n { prop: 'id', name: '#', width: 50, align: 'right', pinned: 'left' },\n { prop: 'name', width: 120, pinned: 'left' },\n ...dataColumns,\n {\n prop: '_actions',\n name: '',\n width: 48,\n sort: false,\n pinned: 'right',\n dataCell() {\n return button(\n {\n class: 'td actions-btn',\n onClick(e) { e.stopPropagation() },\n onMouseup(e) { e.stopPropagation() },\n },\n icons.moreVertical(),\n )\n },\n },\n ],\n})\n\npreview.append(table)\n```\n```css\n.preview tosi-table {\n height: 100%;\n}\n.preview .actions-btn {\n border: none;\n padding: 0;\n cursor: pointer;\n display: block;\n text-align: center;\n width: 100%;\n}\n.preview tosi-table .pinned-bottom {\n background: #eee;\n font-weight: bold;\n}\n.preview .row-pinned .td {\n background: #eee;\n}\n.preview .num-cell {\n font-variant-numeric: tabular-nums;\n}\n```\n```test\nconst tables = document.querySelectorAll('tosi-table')\nconst table = tables[tables.length - 1]\n// Wait until the pinned row has been stamped AND its bindings have settled\n// (numeric cells show their text, the actions button is in place).\nawait new Promise(resolve => {\n const check = () => {\n const row = table.querySelector('.tbody-pinned-bottom .tr')\n if (\n row &&\n row.querySelector('button') &&\n Array.from(row.children).some(c => c.classList.contains('num-cell') && c.textContent.trim().length > 0)\n ) return resolve()\n setTimeout(check, 100)\n }\n check()\n})\n\ntest('pinned row goes through the same listBinding as virtual rows', () => {\n const totals = table.array[table.array.length - 1]\n const pinnedRow = table.querySelector('.tbody-pinned-bottom .tr')\n const pinnedCells = Array.from(pinnedRow.children)\n\n // Sanity: same number of cells as visible columns\n expect(pinnedCells.length).toBe(table.visibleColumns.length)\n\n // dataCell honoured: numeric columns kept their `num-cell` class, and the\n // _actions column rendered its <button>\n const numCells = pinnedCells.filter(c => c.classList.contains('num-cell'))\n expect(numCells.length).toBeGreaterThan(0)\n expect(pinnedCells.some(c => c.tagName === 'BUTTON')).toBe(true)\n\n // numCell uses bindText: '^.<prop>' — confirm path-bindings resolved\n // (this requires the cell to live inside a list-bound row).\n const renderedTexts = numCells.map(c => c.textContent?.trim() ?? '')\n expect(renderedTexts.every(t => t.length > 0)).toBe(true)\n expect(renderedTexts.some(t => /^-?\\d/.test(t))).toBe(true)\n\n // rowRendered fired: numeric cells of this row carry `row-negative` or\n // `row-positive` based on the totals row's sign. Either way the loop did\n // *something* — so the test verifies the work happened regardless of the\n // randomized data.\n const total = Object.keys(totals)\n .filter(k => typeof totals[k] === 'number')\n .reduce((s, k) => s + totals[k], 0)\n const expected = total < 0 ? 'row-negative' : 'row-positive'\n expect(numCells.every(c => c.classList.contains(expected))).toBe(true)\n\n // getCells / getItem round-trip works for pinned items\n const cellsForTotals = table.getCells(totals)\n expect(cellsForTotals?.length).toBe(table.visibleColumns.length)\n expect(table.getItem(cellsForTotals[0])).toBe(totals)\n\n // Selection on a pinned row sets aria-selected on the row element\n table.deSelect()\n table.selectRow(totals)\n expect(pinnedRow.hasAttribute('aria-selected')).toBe(true)\n\n table.deSelect()\n expect(pinnedRow.hasAttribute('aria-selected')).toBe(false)\n})\n```\n\n## Selection\n\n`<tosi-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`<tosi-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- `<tosi-table>.selectRow(row: any, select = true)` (de)selects specified row\n- `<tosi-table>.selectRows(rows?: any[], select = true)` (de)selects specified rows\n- `<tosi-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## Row Access\n\nBecause the table uses a flat CSS grid (no `.tr` row elements), two methods\nprovide O(1) access between items and their cells:\n\n- `<tosi-table>.getCells(itemOrCell)` — returns the `HTMLElement[]` of cells for a\n given data item or any cell in the row, or `undefined` if the row isn't\n currently rendered (virtual scroll)\n- `<tosi-table>.getItem(cell)` — returns the data item bound to a cell element\n\nThese are useful for row-level hover effects, styling, and event handling:\n\n```typescript\ntable.addEventListener('mouseover', (e) => {\n for (const el of table.querySelectorAll('.row-hover')) {\n el.classList.remove('row-hover')\n }\n const item = table.getItem(e.target)\n if (!item) return\n table.getCells(item)?.forEach(c => c.classList.add('row-hover'))\n})\n```\n\n### `rowRendered` callback\n\nFor virtual tables, cells are created and destroyed as you scroll. The\n`rowRendered` callback fires whenever a row's cells are rendered, letting\nyou apply styling that survives virtualisation:\n\n```typescript\ntable.rowRendered = (item, cells) => {\n if (item.overdue) {\n cells.forEach(c => c.classList.add('overdue'))\n }\n}\n```\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 `<tosi-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 `<tosi-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 `<tosi-table>`.\n\n## Row Height\n\nIf you set the `<tosi-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\nThe component uses a flat CSS grid layout where every cell (header, data, pinned)\nis a direct child of the grid container. This means standard CSS works for styling,\nand `position: sticky` handles all pinning.\n\n**Breaking change in v1.5.0:** The table no longer uses `.thead`, `.tbody`, or `.tr`\nwrapper elements. All cells are direct children of a single `.grid` container.\nUpdate any custom CSS targeting those classes:\n\n- `.thead` → `.th` (header cells)\n- `.tbody` → the `.grid` container itself\n- `.tr` → no equivalent; cells are flat grid children\n- `[part=\"pinnedTopRows\"]` → `.pinned-top`\n- `[part=\"pinnedBottomRows\"]` → `.pinned-bottom`\n- `.td-pinned`, `.th-pinned` → `.col-pinned`\n- `.pin-left`, `.pin-right` → no longer needed (CSS `sticky` handles positioning)\n\n## Localization\n\n`<tosi-table>` supports the `localized` attribute which simply causes its default `headerCell`\nto render a `<tosi-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- Pin\n- Unpin\n- Left\n- Right\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 tosiValue,\n getListItem,\n getListBinding,\n tosi,\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 { tosiLocalized, 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 } = elements\n\nexport interface ColumnOptions {\n name?: string\n prop: string\n width: number\n visible?: boolean\n align?: string\n pinned?: 'left' | 'right'\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\ninterface StickyInfo {\n left?: string\n right?: string\n edgeClass?: string\n}\n\nexport class TosiTable extends WebComponent {\n static preferredTagName = 'tosi-table'\n\n // Layout: a single .scroll-area inside :host is the only scroll container\n // (both axes). It also hosts the virtualised visible-rows listBinding, so\n // virtualisation reads from the same scroll context that sticky cells stick\n // against. The header, optional pinned-top tbody, and optional pinned-bottom\n // tbody are siblings inside .scroll-area; the pinned tbodies use\n // `display: contents` so their stamped .tr rows participate in\n // .scroll-area's layout directly. Each .tr is its own CSS grid keyed off\n // --tosi-table-grid-columns, so column resize updates one variable and every\n // row reflows.\n static lightStyleSpec = {\n ':host': {\n '--tosi-table-row-height': '32px',\n '--tosi-table-touch-size': 'var(--tosi-touch-size, 44px)',\n '--tosi-table-dragged-header-bg': '#0004',\n '--tosi-table-dragged-header-color': '#fff',\n '--tosi-table-drop-header-bg': '#fff4',\n display: 'block',\n overflow: 'hidden',\n background: varDefault.tosiTableBg('var(--tosi-bg, #fff)'),\n },\n ':host .scroll-area': {\n width: '100%',\n height: '100%',\n overflow: 'auto',\n overscrollBehavior: 'none',\n },\n // The thead and pinned tbodies are layout pass-throughs so their .tr rows\n // are direct children of .scroll-area for sticky positioning. Without\n // display:contents, the .tr can only stick within its narrow parent and\n // scrolls out of view as soon as the parent does.\n ':host .thead, :host .tbody': {\n display: 'contents',\n },\n ':host .tr': {\n display: 'grid',\n gridTemplateColumns: vars.tosiTableGridColumns,\n width: vars.tosiTableGridRowWidth,\n height: vars.tosiTableRowHeight,\n background: varDefault.tosiTableBg('var(--tosi-bg, #fff)'),\n },\n ':host .thead .tr': {\n position: 'sticky',\n top: '0',\n zIndex: '2',\n background: varDefault.tosiTableHeaderBg(\n varDefault.tosiTableBg('var(--tosi-bg, #fff)')\n ),\n },\n // Per-row sticky offsets are set inline in tagPinnedRows so multiple\n // pinned rows stack instead of overlapping at the same sticky position.\n ':host .tbody-pinned-top .tr, :host .tbody-pinned-bottom .tr': {\n position: 'sticky',\n zIndex: '1',\n },\n ':host .th, :host .td': {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n display: 'flex',\n alignItems: 'center',\n height: vars.tosiTableRowHeight,\n lineHeight: vars.tosiTableRowHeight,\n },\n ':host .col-pinned': {\n position: 'sticky',\n zIndex: '1',\n background: varDefault.tosiTableBg('var(--tosi-bg, #fff)'),\n },\n ':host .th.col-pinned': {\n zIndex: '3',\n background: varDefault.tosiTableHeaderBg(\n varDefault.tosiTableBg('var(--tosi-bg, #fff)')\n ),\n },\n ':host .tr[aria-selected] .td': {\n background: varDefault.tosiTableSelectedBg(\n 'var(--tosi-accent, #007AFF22)'\n ),\n },\n ':host .td:focus, :host .th:focus': {\n outline: '2px solid var(--tosi-accent, #007AFF)',\n outlineOffset: '-2px',\n zIndex: '1',\n },\n ':host .col-pinned:focus': {\n zIndex: '4',\n },\n ':host .col-edge-right': {\n boxShadow: '1px 0 0 var(--tosi-table-edge-color, #0002)',\n },\n ':host .col-edge-left': {\n boxShadow: '-1px 0 0 var(--tosi-table-edge-color, #0002)',\n },\n ':host .row-edge-bottom': {\n boxShadow: '0 1px 0 var(--tosi-table-edge-color, #0002)',\n },\n ':host .row-edge-top': {\n boxShadow: '0 -1px 0 var(--tosi-table-edge-color, #0002)',\n },\n ':host .th .menu-trigger': {\n color: 'currentColor',\n background: 'none',\n padding: 0,\n lineHeight: vars.tosiTableTouchSize,\n height: vars.tosiTableTouchSize,\n width: vars.tosiTableTouchSize,\n },\n ':host [draggable=\"true\"]': {\n cursor: 'ew-resize',\n },\n ':host [draggable=\"true\"]:active': {\n background: vars.tosiTableDraggedHeaderBg,\n color: vars.tosiTableDraggedHeaderColor,\n },\n ':host .drag-over': {\n background: vars.tosiTableDropHeaderBg,\n },\n }\n\n static initAttributes = {\n rowHeight: 30,\n charWidth: 15,\n minColumnWidth: 30,\n select: false,\n multiple: false,\n pinnedTop: 0,\n pinnedBottom: 0,\n nosort: false,\n nohide: false,\n noreorder: false,\n localized: false,\n }\n\n selectionChanged: SelectCallback = () => {\n /* do not care */\n }\n\n rowRendered: ((item: any, cells: HTMLElement[]) => void) | null = null\n\n private selectedKey = Symbol('selected')\n private selectBinding = (elt: Element, obj: any) => {\n if (obj == null) return\n elt.toggleAttribute('aria-selected', obj[this.selectedKey] === true)\n }\n\n maxVisibleRows = 10000\n\n // Region elements rendered in render(). The visible-rows listBinding lives\n // on _scrollArea (the single scroll container); pinned tbodies are\n // display:contents wrappers each holding their own listBinding.\n private _head: HTMLElement | null = null\n private _scrollArea: HTMLElement | null = null\n private _tbodyTop: HTMLElement | null = null\n private _tbodyBottom: HTMLElement | null = null\n private _pinnedRowEdgeObserver: MutationObserver | null = null\n // Cache the cells array per row to preserve array identity across getCells\n // calls — consumers compare by reference.\n private _rowCellsCache = new WeakMap<Element, HTMLElement[]>()\n\n // Resolve the row item from a cell or any element inside a row. Cells live\n // inside list-bound `.tr` rows, so getListItem walks up to find the item.\n private itemFor(cell: Element): any {\n return getListItem(cell)\n }\n\n // Resolve the cells of a row by checking each region's listBinding.\n private cellsFor(item: any): HTMLElement[] | undefined {\n const key = tosiValue(item)\n for (const region of [\n this._tbodyTop,\n this._scrollArea,\n this._tbodyBottom,\n ]) {\n if (!region) continue\n const binding = getListBinding(region)\n if (!binding) continue\n const rowEls = binding.itemToElement.get(key) as Element[] | undefined\n if (rowEls && rowEls.length > 0) {\n const row = rowEls[0]\n let cached = this._rowCellsCache.get(row)\n if (!cached) {\n cached = Array.from(row.children) as HTMLElement[]\n this._rowCellsCache.set(row, cached)\n }\n return cached\n }\n }\n return undefined\n }\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 } = tosiValue(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 pinnedTopData: [] as any[],\n pinnedBottomData: [] as any[],\n }\n\n private _array: any[] = []\n private _columns: ColumnOptions[] | null = null\n private _filter: ArrayFilter = passThru\n private _sort?: SortCallback\n // Optional explicit arrays of pinned items. When set, they are managed\n // separately from `array` and override the `pinnedTop` / `pinnedBottom`\n // count-based slicing.\n private _pinnedTopRows?: any[]\n private _pinnedBottomRows?: any[]\n\n get pinnedTopRows(): any[] | undefined {\n return this._pinnedTopRows\n }\n\n set pinnedTopRows(rows: any[] | undefined) {\n this._pinnedTopRows = rows ? tosiValue(rows) : undefined\n this.queueRender()\n }\n\n get pinnedBottomRows(): any[] | undefined {\n return this._pinnedBottomRows\n }\n\n set pinnedBottomRows(rows: any[] | undefined) {\n this._pinnedBottomRows = rows ? tosiValue(rows) : undefined\n this.queueRender()\n }\n\n // Resolve pinned-top items. If pinnedTopRows is set, it wins; otherwise\n // slice the first `pinnedTop` items from `_array`.\n get effectivePinnedTopData(): any[] {\n if (this._pinnedTopRows) return this._pinnedTopRows\n return this.pinnedTop > 0 ? this._array.slice(0, this.pinnedTop) : []\n }\n\n get effectivePinnedBottomData(): any[] {\n if (this._pinnedBottomRows) return this._pinnedBottomRows\n return this.pinnedBottom > 0 ? this._array.slice(-this.pinnedBottom) : []\n }\n\n // Visible (non-pinned) data. With explicit pinnedTopRows/pinnedBottomRows,\n // _array is rendered untouched; otherwise we slice off the count-pinned ends.\n private get effectiveBaseData(): any[] {\n if (this._pinnedTopRows || this._pinnedBottomRows) return this._array\n return this._array.slice(\n this.pinnedTop,\n this._array.length - this.pinnedBottom\n )\n }\n\n constructor() {\n super()\n\n this.rowData = tosi({\n [this.instanceId]: this.rowData,\n })[this.instanceId]\n }\n\n get array(): any[] {\n return this._array\n }\n\n set array(newArray: any[]) {\n this._array = tosiValue(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: SortCallback | undefined) {\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 const visible = this.columns.filter((c) => c.visible !== false)\n const left = visible.filter((c) => c.pinned === 'left')\n const middle = visible.filter((c) => !c.pinned)\n const right = visible.filter((c) => c.pinned === 'right')\n return [...left, ...middle, ...right]\n }\n\n /** @deprecated Set pinned: 'left' on individual columns instead */\n get pinnedLeft(): number {\n return this.visibleColumns.filter((c) => c.pinned === 'left').length\n }\n\n /** @deprecated Set pinned: 'left' on individual columns instead */\n set pinnedLeft(n: number) {\n const visible = this.columns.filter((c) => c.visible !== false)\n for (const col of visible) {\n if (col.pinned === 'left') delete col.pinned\n }\n for (let i = 0; i < n && i < visible.length; i++) {\n visible[i].pinned = 'left'\n }\n this.queueRender()\n }\n\n /** @deprecated Set pinned: 'right' on individual columns instead */\n get pinnedRight(): number {\n return this.visibleColumns.filter((c) => c.pinned === 'right').length\n }\n\n /** @deprecated Set pinned: 'right' on individual columns instead */\n set pinnedRight(n: number) {\n const visible = this.columns.filter((c) => c.visible !== false)\n for (const col of visible) {\n if (col.pinned === 'right') delete col.pinned\n }\n for (let i = visible.length - n; i < visible.length; i++) {\n if (i >= 0) visible[i].pinned = 'right'\n }\n this.queueRender()\n }\n\n content = null\n\n private computeStickyInfo(cols: ColumnOptions[]): StickyInfo[] {\n const info: StickyInfo[] = cols.map(() => ({}))\n\n // Left-pinned columns\n let leftOffset = 0\n let lastLeft = -1\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].pinned !== 'left') break\n info[i].left = leftOffset + 'px'\n leftOffset += cols[i].width\n lastLeft = i\n }\n if (lastLeft >= 0) {\n info[lastLeft].edgeClass = 'col-edge-right'\n }\n\n // Right-pinned columns\n let rightOffset = 0\n let firstRight = cols.length\n for (let i = cols.length - 1; i >= 0; i--) {\n if (cols[i].pinned !== 'right') break\n info[i].right = rightOffset + 'px'\n rightOffset += cols[i].width\n firstRight = i\n }\n if (firstRight < cols.length) {\n info[firstRight].edgeClass = 'col-edge-left'\n }\n\n return info\n }\n\n private cellClasses(base: string, si: StickyInfo): string {\n let cls = base\n if (si.left != null || si.right != null) cls += ' col-pinned'\n if (si.edgeClass) cls += ' ' + si.edgeClass\n return cls\n }\n\n private rowClasses(\n region: 'visible' | 'pinned-top' | 'pinned-bottom'\n ): string {\n return region === 'visible' ? 'tr' : 'tr row-pinned'\n }\n\n // Tag the boundary rows of each pinned tbody so consumers can style them,\n // and assign per-row sticky offsets so stacked pinned rows don't overlap\n // at the same `top`/`bottom` value. listBinding inserts listTop/listBottom\n // padding divs around its stamped rows, so we walk `.tr` children rather\n // than relying on :first-child / :last-child.\n private tagPinnedRows = () => {\n this.tagPinnedTbody(this._tbodyTop, 'top')\n this.tagPinnedTbody(this._tbodyBottom, 'bottom')\n }\n\n private tagPinnedTbody(\n tbody: HTMLElement | null,\n axis: 'top' | 'bottom'\n ): void {\n if (!tbody) return\n const rows = Array.from(tbody.querySelectorAll('.tr')) as HTMLElement[]\n if (rows.length === 0) return\n // For top-pinned, header occupies row 0 so first pinned row sits at\n // 1*rowHeight; for bottom-pinned, last row sticks at 0 with earlier rows\n // stacked above it.\n const last = rows.length - 1\n const edgeClass = axis === 'top' ? 'row-edge-bottom' : 'row-edge-top'\n rows.forEach((r, i) => {\n r.classList.remove(edgeClass)\n const steps = axis === 'top' ? i + 1 : last - i\n r.style[axis] = `calc(var(--tosi-table-row-height) * ${steps})`\n })\n const edgeRow = axis === 'top' ? rows[last] : rows[0]\n edgeRow.classList.add(edgeClass)\n }\n\n private cellStyle(\n col: ColumnOptions,\n si: StickyInfo,\n extra?: Record<string, string>\n ): Record<string, string> {\n // position: sticky lives in `.col-pinned` (added by cellClasses), so only\n // the per-cell offsets need to be set inline here.\n const style: Record<string, string> = {\n justifyContent: col.align || 'left',\n ...extra,\n }\n if (si.left != null) style.left = si.left\n if (si.right != null) style.right = si.right\n return style\n }\n\n private applyGridCellAttrs(\n cell: HTMLElement,\n colIndex: number,\n si: StickyInfo,\n style: Record<string, string>\n ): void {\n cell.setAttribute('aria-colindex', String(colIndex + 1))\n cell.tabIndex = -1\n cell.classList.add(...this.cellClasses('td', si).split(' '))\n Object.assign(cell.style, style)\n }\n\n // Build a single data cell for a column. Cells live inside list-bound `.tr`\n // rows, so path-based bindings inside col.dataCell() (e.g. bindText:'^.prop')\n // resolve against the row's list-instance automatically.\n private buildCell(\n col: ColumnOptions,\n colIndex: number,\n si: StickyInfo,\n item: any\n ): HTMLElement {\n const style = this.cellStyle(col, si)\n if (col.dataCell !== undefined) {\n const cell = col.dataCell(col) as HTMLElement\n this.applyGridCellAttrs(cell, colIndex, si, style)\n return cell\n }\n return span({\n class: this.cellClasses('td', si),\n role: 'gridcell',\n tabindex: -1,\n ariaColindex: String(colIndex + 1),\n style,\n bindText: item[col.prop],\n } as any)\n }\n\n // Build a `.tr` row element with all cells for a single item. The row is\n // bound to the item so selection state and rowRendered fire correctly.\n // Note: listBinding sets role=\"listitem\" on stamped elements; that's good\n // enough — selectors throughout this file use `.tr` for row matching.\n private buildRow(\n item: any,\n cols: ColumnOptions[],\n stickyInfo: StickyInfo[],\n rowClass = 'tr'\n ): HTMLElement {\n const cells = cols.map((col, i) =>\n this.buildCell(col, i, stickyInfo[i], item)\n )\n const selectBindingFn = this.selectBinding\n const tableInst = this\n const props: any = { class: rowClass }\n // `item` here is the placeholder proxy from template-build time. The\n // actual stamped row's item is delivered to toDOM as the second arg\n // (resolved via the rewritten path) — use that, not the closure-captured\n // placeholder.\n props.bind = {\n value: item,\n binding: {\n toDOM: (rowEl: Element, value: any) => {\n selectBindingFn(rowEl, value)\n const fn = tableInst.rowRendered\n if (fn) {\n fn(value, Array.from(rowEl.children) as HTMLElement[])\n }\n },\n },\n }\n return div(props, ...cells)\n }\n\n // Build the header row (one `.tr` of header cells inside a `.thead`).\n private buildHeaderCell(\n col: ColumnOptions,\n colIndex: number,\n si: StickyInfo\n ): HTMLElement {\n const { popColumnMenu } = this\n let ariaSort = 'none'\n let sortIcon: SVGElement | undefined\n switch (col.sort) {\n case 'ascending':\n sortIcon = icons.sortAscending()\n ariaSort = 'descending'\n break\n case 'descending':\n ariaSort = 'ascending'\n sortIcon = icons.sortDescending()\n break\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, col)\n event.stopPropagation()\n },\n },\n sortIcon || icons.moreVertical()\n )\n : {}\n\n const cell =\n col.headerCell !== undefined\n ? col.headerCell(col)\n : span(\n {\n class: this.cellClasses('th', si),\n role: 'columnheader',\n tabindex: -1,\n ariaSort,\n ariaColindex: String(colIndex + 1),\n style: this.cellStyle(col, si),\n },\n this.captionSpan(\n { style: { flex: '1' } },\n typeof col.name === 'string' ? col.name : col.prop\n ),\n menuButton\n )\n\n if (col.headerCell !== undefined) {\n this.applyGridCellAttrs(\n cell as HTMLElement,\n colIndex,\n si,\n this.cellStyle(col, si)\n )\n cell.classList.remove('td')\n cell.classList.add('th')\n cell.setAttribute('role', 'columnheader')\n }\n\n if (!this.noreorder && cell.children[0]) {\n dragAndDrop.init()\n const dragId = this.instanceId + '-column-header'\n const caption = cell.children[0] as HTMLElement\n caption.setAttribute('draggable', 'true')\n caption.style.pointerEvents = 'all'\n caption.dataset.drag = dragId\n ;(cell as HTMLElement).dataset.drop = dragId\n caption.addEventListener('dragstart', () => {\n this.draggedColumn = col\n })\n cell.addEventListener('drop', this.dropColumn)\n }\n\n return cell as HTMLElement\n }\n\n private buildHeader(\n cols: ColumnOptions[],\n stickyInfo: StickyInfo[]\n ): HTMLElement {\n const headerCells = cols.map((col, i) =>\n this.buildHeaderCell(col, i, stickyInfo[i])\n )\n return div(\n { class: 'thead', role: 'rowgroup' },\n div({ class: 'tr', role: 'row' }, ...headerCells)\n )\n }\n\n // Build a pinned tbody (top or bottom) — a `display: contents` wrapper with\n // its own non-virtualised listBinding so each pinned row goes through the\n // same dataCell / rowRendered / `^.prop` pipeline as the virtual rows. The\n // wrapper has no box of its own, so its stamped rows are layout children of\n // .scroll-area and share its single sticky context. Returns null when the\n // region is empty so render() can drop it from the DOM.\n private buildPinnedBody(\n rowsProxy: any,\n cols: ColumnOptions[],\n stickyInfo: StickyInfo[],\n region: 'pinned-top' | 'pinned-bottom'\n ): HTMLElement | null {\n const data = tosiValue(rowsProxy) as any[] | undefined\n if (!data || data.length === 0) return null\n const part = region === 'pinned-top' ? 'pinnedTopRows' : 'pinnedBottomRows'\n const rowClass = this.rowClasses(region)\n const binding = (rowsProxy as any).listBinding(\n (_elements: any, item: any) =>\n this.buildRow(item, cols, stickyInfo, rowClass),\n {}\n )\n return div(\n {\n class: `tbody tbody-${region}`,\n role: 'rowgroup',\n part,\n },\n ...binding\n )\n }\n\n getColumn(event: any): ColumnOptions | undefined {\n if (!this._scrollArea) return undefined\n const pointerX =\n (event.touches !== undefined ? event.touches[0].clientX : event.clientX) -\n this._scrollArea.getBoundingClientRect().x\n const epsilon = event.touches !== undefined ? 20 : 5\n const { scrollLeft, clientWidth, scrollWidth } = this._scrollArea\n const cols = this.visibleColumns\n const rightScroll = scrollWidth - clientWidth - scrollLeft\n\n let boundaryX = 0\n return cols.find((options: ColumnOptions, i: number) => {\n if (options.visible === false) return false\n boundaryX += options.width\n let visualBoundary: number\n if (options.pinned === 'left') {\n visualBoundary = boundaryX\n } else if (options.pinned === 'right') {\n visualBoundary = boundaryX - scrollLeft - rightScroll\n } else {\n visualBoundary = boundaryX - scrollLeft\n }\n return Math.abs(pointerX - visualBoundary) < epsilon\n })\n }\n\n private setCursor = (event: Event) => {\n const column = this.getColumn(event)\n this.style.cursor = column !== undefined ? 'col-resize' : ''\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 this.updateSelectionVisuals()\n }\n\n selectRows(rows?: any[], select = true) {\n for (const row of rows || this.array) {\n if (select) {\n row[this.selectedKey] = true\n } else {\n delete row[this.selectedKey]\n }\n }\n this.updateSelectionVisuals()\n }\n\n deSelect(rows?: any[]) {\n this.selectRows(rows, false)\n }\n\n private updateSelectionVisuals() {\n // Apply selection state to every body row currently in the DOM. Header\n // rows live inside .thead and don't have a list-instance, so itemFor\n // returns null and they're skipped.\n const rows = this._scrollArea?.querySelectorAll('.tr') ?? []\n for (const row of rows) {\n const item = this.itemFor(row)\n if (item != null) {\n this.selectBinding(row, item)\n }\n }\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 pickedItem = this.itemFor(target)\n if (pickedItem == null) {\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 this.updateSelectionVisuals()\n }\n\n // Resolve a (rowIndex, colIndex) coordinate to a DOM cell.\n // rowIndex semantics: -1 = header, 0..pinnedTop.length-1 = pinned-top rows,\n // then visible rows, then pinned-bottom rows.\n private findCell(rowIndex: number, colIndex: number): HTMLElement | null {\n if (rowIndex === -1) {\n return this.querySelector(\n `.thead .th[aria-colindex=\"${colIndex + 1}\"]`\n ) as HTMLElement | null\n }\n\n const top = this.effectivePinnedTopData\n const visible = this.visibleRows\n const bottom = this.effectivePinnedBottomData\n\n let item: any\n if (rowIndex < top.length) {\n item = top[rowIndex]\n } else if (rowIndex < top.length + visible.length) {\n item = visible[rowIndex - top.length]\n } else if (rowIndex < top.length + visible.length + bottom.length) {\n item = bottom[rowIndex - top.length - visible.length]\n } else {\n return null\n }\n\n const cells = this.cellsFor(item)\n return (cells?.[colIndex] as HTMLElement | undefined) ?? null\n }\n\n private _pendingFocus: { row: number; col: number } | null = null\n\n private onScrollEnd = () => {\n if (!this._pendingFocus) return\n const { row, col } = this._pendingFocus\n this._pendingFocus = null\n const cell = this.findCell(row, col)\n if (cell) cell.focus()\n }\n\n private focusCell(rowIndex: number, colIndex: number): void {\n this._pendingFocus = { row: rowIndex, col: colIndex }\n\n const cell = this.findCell(rowIndex, colIndex)\n if (cell) {\n cell.focus()\n cell.scrollIntoView({ block: 'nearest', inline: 'nearest' })\n } else if (this._scrollArea) {\n // Not in DOM — rough scroll to bring it into virtualisation range\n const top = this.effectivePinnedTopData\n const dataRowIndex = rowIndex - top.length\n if (dataRowIndex >= 0 && dataRowIndex < this.visibleRows.length) {\n this._scrollArea.scrollTop = dataRowIndex * this.rowHeight\n }\n }\n }\n\n private handleKeyNav = (event: KeyboardEvent) => {\n const el = event.target as HTMLElement\n const target = el.closest('.td') || el.closest('.th')\n if (!target) return\n\n const ariaCol = parseInt(target.getAttribute('aria-colindex') || '', 10)\n if (isNaN(ariaCol)) return\n const colIndex = ariaCol - 1\n\n const cols = this.visibleColumns.length\n const top = this.effectivePinnedTopData\n const visible = this.visibleRows\n const bottom = this.effectivePinnedBottomData\n const totalRows = top.length + visible.length + bottom.length\n const meta = event.metaKey || event.ctrlKey\n const isHeader = target.classList.contains('th')\n\n // Resolve the row's logical index in the unified row-space:\n // -1 = header, 0..top-1 = pinned-top, then visible, then pinned-bottom.\n let rowIndex: number\n if (isHeader) {\n rowIndex = -1\n } else {\n const row = target.closest('.tr') as HTMLElement | null\n if (!row) return\n const item = getListItem(row)\n if (item == null) return\n const idxTop = top.indexOf(item)\n const idxVisible = idxTop === -1 ? visible.indexOf(item) : -1\n const idxBottom =\n idxTop === -1 && idxVisible === -1 ? bottom.indexOf(item) : -1\n if (idxTop !== -1) {\n rowIndex = idxTop\n } else if (idxVisible !== -1) {\n rowIndex = top.length + idxVisible\n } else if (idxBottom !== -1) {\n rowIndex = top.length + visible.length + idxBottom\n } else {\n return\n }\n }\n\n let nextRow = rowIndex\n let nextCol = colIndex\n\n switch (event.key) {\n case 'ArrowUp':\n nextRow = meta ? 0 : Math.max(-1, rowIndex - 1)\n break\n case 'ArrowDown':\n nextRow = meta ? totalRows - 1 : Math.min(totalRows - 1, rowIndex + 1)\n break\n case 'ArrowLeft':\n nextCol = meta ? 0 : Math.max(0, colIndex - 1)\n break\n case 'ArrowRight':\n nextCol = meta ? cols - 1 : Math.min(cols - 1, colIndex + 1)\n break\n case 'Tab':\n if (event.shiftKey) {\n if (colIndex > 0) {\n nextCol = colIndex - 1\n } else if (rowIndex > 0) {\n nextRow = rowIndex - 1\n nextCol = cols - 1\n } else {\n return // let tab leave the table\n }\n } else {\n if (colIndex < cols - 1) {\n nextCol = colIndex + 1\n } else if (rowIndex < totalRows - 1) {\n nextRow = rowIndex + 1\n nextCol = 0\n } else {\n return // let tab leave the table\n }\n }\n break\n case 'Home':\n if (meta) {\n nextRow = 0\n nextCol = 0\n } else {\n nextCol = 0\n }\n break\n case 'End':\n if (meta) {\n nextRow = totalRows - 1\n nextCol = cols - 1\n } else {\n nextCol = cols - 1\n }\n break\n default:\n return\n }\n\n if (nextRow !== rowIndex || nextCol !== colIndex) {\n event.preventDefault()\n this.focusCell(nextRow, nextCol)\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 this.addEventListener('keydown', this.handleKeyNav)\n }\n\n setColumnWidths() {\n const cols = this.visibleColumns\n const columns = cols.map((c) => c.width + 'px').join(' ')\n const rowWidth = cols.reduce((w, c) => w + c.width, 0) + 'px'\n\n // The CSS variable is consumed by every `.tr` (display:grid) and by .thead\n // / .tbody for explicit width — one var, all rows reflow.\n this.style.setProperty('--tosi-table-grid-columns', columns)\n this.style.setProperty('--tosi-table-grid-row-width', rowWidth)\n // Legacy aliases\n this.style.setProperty('--grid-columns', columns)\n this.style.setProperty('--grid-row-width', rowWidth)\n\n // Update sticky positions for column-pinned cells across all regions\n const stickyInfo = this.computeStickyInfo(cols)\n for (const cell of this.querySelectorAll('.col-pinned')) {\n const ci = parseInt(cell.getAttribute('aria-colindex') || '', 10) - 1\n if (!isNaN(ci) && stickyInfo[ci]) {\n const si = stickyInfo[ci]\n if (si.left != null) (cell as HTMLElement).style.left = si.left\n if (si.right != null) (cell as HTMLElement).style.right = si.right\n }\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) => tosiValue(c.sort) !== false\n )) {\n if (tosiValue(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 if (menu.length) {\n menu.push(null)\n }\n const pinIcon =\n options.pinned === 'left'\n ? 'pin'\n : options.pinned === 'right'\n ? 'pin0f'\n : 'pin50o'\n menu.push({\n caption: this.localized ? localize('Pin') : 'Pin',\n icon: pinIcon,\n menuItems: [\n {\n caption: this.localized ? localize('Left') : 'Left',\n icon: 'pin',\n enabled: () => options.pinned !== 'left',\n action() {\n options.pinned = 'left'\n queueRender()\n },\n },\n {\n caption: this.localized ? localize('Right') : 'Right',\n icon: 'pin0f',\n enabled: () => options.pinned !== 'right',\n action() {\n options.pinned = 'right'\n queueRender()\n },\n },\n {\n caption: this.localized ? localize('Unpin') : 'Unpin',\n icon: 'unPin',\n enabled: () => !!options.pinned,\n action() {\n delete options.pinned\n queueRender()\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 ? tosiLocalized : span\n }\n\n get visibleRows(): any[] {\n return tosiValue(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 // With the array form, pinned items live outside _array — include them\n // in the search. With the count form, they're already inside _array.\n if (this._pinnedTopRows || this._pinnedBottomRows) {\n const all = [\n ...(this._pinnedTopRows ?? []),\n ...this._array,\n ...(this._pinnedBottomRows ?? []),\n ]\n return all.filter((obj) => obj[this.selectedKey])\n }\n return this._array.filter((obj) => obj[this.selectedKey])\n }\n\n getCells(itemOrCell: any): HTMLElement[] | undefined {\n const item =\n itemOrCell instanceof Element ? this.itemFor(itemOrCell) : itemOrCell\n return item == null ? undefined : this.cellsFor(item)\n }\n\n getItem(cell: Element): any {\n return this.itemFor(cell)\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 colIndex =\n parseInt(target.getAttribute('aria-colindex') || '', 10) - 1\n const dropped = this.visibleColumns[colIndex]\n const draggedIndex = this.columns.indexOf(this.draggedColumn!)\n const droppedIndex = this.columns.indexOf(dropped)\n // Inherit pinning from the drop target's zone\n this.draggedColumn!.pinned = dropped.pinned\n this.columns.splice(draggedIndex, 1)\n this.columns.splice(droppedIndex, 0, this.draggedColumn!)\n this.queueRender()\n\n event.preventDefault()\n event.stopPropagation()\n }\n\n render() {\n super.render()\n this.textContent = ''\n\n // Resolve data sources\n const pinnedTopData = this.effectivePinnedTopData\n const pinnedBottomData = this.effectivePinnedBottomData\n const baseData = this.effectiveBaseData\n const cap = Math.min(baseData.length, this.maxVisibleRows)\n const visibleData = this.filter(baseData.slice(0, cap))\n const { sort } = this\n if (sort) visibleData.sort(sort)\n\n this.rowData.pinnedTopData = pinnedTopData\n this.rowData.pinnedBottomData = pinnedBottomData\n this.rowData.visible = visibleData\n\n // Column layout\n const cols = this.visibleColumns\n if (cols.length === 0) return\n const stickyInfo = this.computeStickyInfo(cols)\n\n this.style.setProperty(\n '--tosi-table-row-height',\n this.rowHeight > 0 ? `${this.rowHeight}px` : 'auto'\n )\n this.setColumnWidths()\n\n // Build the regions. Header + optional pinned tbodies are siblings\n // alongside the visible-rows listBinding, all inside a single .scroll-area\n // which is the only scroll container. Pinned tbodies use display: contents\n // so their stamped rows participate in .scroll-area's layout directly,\n // sharing one sticky context with the visible rows and the header.\n this._head = this.buildHeader(cols, stickyInfo)\n this._tbodyTop = this.buildPinnedBody(\n this.rowData.pinnedTopData,\n cols,\n stickyInfo,\n 'pinned-top'\n )\n this._tbodyBottom = this.buildPinnedBody(\n this.rowData.pinnedBottomData,\n cols,\n stickyInfo,\n 'pinned-bottom'\n )\n\n // The visible-rows listBinding is bound directly to .scroll-area so\n // virtualisation observes the same scroll container that sticky cells\n // stick against.\n const visibleBinding = (this.rowData.visible as any).listBinding(\n (_elements: any, item: any) => this.buildRow(item, cols, stickyInfo),\n this.rowHeight > 0 ? { virtual: { height: this.rowHeight } } : {}\n )\n\n this._scrollArea = div(\n { class: 'scroll-area', part: 'visibleRows' },\n ...[\n this._head,\n this._tbodyTop,\n ...visibleBinding,\n this._tbodyBottom,\n ].filter(Boolean)\n )\n this._scrollArea.addEventListener('scrollend', this.onScrollEnd)\n\n this.append(this._scrollArea)\n\n this.observePinnedRowMutations()\n this.tagPinnedRows()\n }\n\n // Edge classes need to track listBinding mutations (pinned data may change\n // without a full re-render), so observe each pinned tbody and re-tag on\n // childList changes.\n private observePinnedRowMutations(): void {\n this._pinnedRowEdgeObserver?.disconnect()\n this._pinnedRowEdgeObserver = new MutationObserver(this.tagPinnedRows)\n for (const tbody of [this._tbodyTop, this._tbodyBottom]) {\n if (tbody) {\n this._pinnedRowEdgeObserver.observe(tbody, { childList: true })\n }\n }\n }\n}\n\n/** @deprecated Use TosiTable instead */\nexport type DataTable = TosiTable\n/** @deprecated Use TosiTable instead */\nexport const DataTable: typeof TosiTable = TosiTable\n\nexport const tosiTable = TosiTable.elementCreator() as ElementCreator<TosiTable>\n\n/** @deprecated Use tosiTable instead */\nexport const dataTable = tosiTable\n\n/** @deprecated Use tosiTable instead */\nexport const xinTable = tosiTable\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```test\nconst dialog = preview.querySelector('tosi-dialog')\ntest('dialog renders', () => {\n expect(dialog).toBeTruthy()\n expect(dialog.tagName.toLowerCase()).toBe('tosi-dialog')\n})\ntest('dialog has header slot content', () => {\n const header = dialog.querySelector('[slot=\"header\"]')\n expect(header).toBeTruthy()\n expect(header.textContent).toBe('A Dialog')\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, tosiSlot, 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 preferredTagName = 'tosi-dialog'\n\n static lightStyleSpec = {\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 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 message.includes('\\n')\n ? elements.pre(\n { style: { whiteSpace: 'pre-wrap', margin: 0 } },\n message\n )\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 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 /* noop */\n }\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(tosiSlot({ name: 'header' })),\n tosiSlot(),\n footer(\n tosiSlot({ name: 'footer' }),\n button({ part: 'ok', onClick: this.ok }, 'OK')\n )\n )\n}\n\nexport const tosiDialog = TosiDialog.elementCreator()\n",
|
|
26
26
|
"/**\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",
|
|
27
27
|
"import { Component, ElementCreator, xin } from 'tosijs'\nimport { marked, MarkedOptions } from 'marked'\n\n/*#\n# markdown\n\n`<tosi-md>` renders markdown using [marked](https://www.npmjs.com/package/marked).\n\n`<tosi-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<tosi-md>\n## hello\nworld\n\n\n\n| this | is | a | table |\n|-------|------|-------|-------|\n| one | two | three | four |\n| five | six | seven | eight |\n</tosi-md>\n```\n```css\ntosi-md {\n display: block;\n padding: var(--spacing);\n}\n```\n\nNote that, by default, `<tosi-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 `<tosi-md>`'s `src` attribute to a URL pointing\nto markdown source and it will load it asynchronously and render it.\n\n```\n<tosi-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 tosi-md').value = 'testing\\n\\n## this is a test'\n```\n\n## elements\n\n`<tosi-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<tosi-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</tosi-md>\n```\n\nIn this case `<tosi-md>` uses its `innerHTML` and not its `textContent`.\n\n## context and template variables\n\n`<tosi-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<tosi-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</tosi-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 TosiMd extends Component {\n static preferredTagName = 'tosi-md'\n\n static initAttributes = {\n src: '',\n elements: false,\n }\n\n context: { [key: string]: any } = {}\n value = ''\n content = null\n options = {} as MarkedOptions\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\n/** @deprecated Use TosiMd instead */\nexport type MarkdownViewer = TosiMd\n/** @deprecated Use TosiMd instead */\nexport const MarkdownViewer: typeof TosiMd = TosiMd\n\nexport const tosiMd = TosiMd.elementCreator() as ElementCreator<TosiMd>\n\n/** @deprecated Use tosiMd instead */\nexport const markdownViewer = tosiMd\n\n/** @deprecated Use tosiMd instead */\nexport const xinMd = tosiMd\n",
|
|
28
|
-
"/*#\n# tabs\n\n`<tosi-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('tosi-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<tosi-tabs>\n <div name=\"first\">first body</div>\n <div name=\"second\" data-close>\n <template role=\"tab\">\n <tosi-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 ></tosi-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 <tosi-icon icon=\"plus\"></tosi-icon>\n </button>\n</tosi-tabs>\n```\n```css\n .preview tosi-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 `<tosi-tabs>`s `value` is the index of its active body.\n\nA `<tosi-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 `<tosi-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<tosi-tabs localized>\n <div name=\"localize\"><h2>localize!</h2></div>\n <div name=\"tabs\"><h2>tabs</h2></div>\n</tosi-tabs>\n```\n\n`<tosi-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## Tab Tooltips\n\nAdd `data-tooltip` to a tab body and it will be shown on its tab button\n(requires `initTooltips()`).\n\n```js\nimport { initTooltips } from 'tosijs-ui'\n\ninitTooltips()\n```\n```html\n<tosi-tabs>\n <div name=\"Overview\" data-tooltip=\"Project summary and status\">Overview content</div>\n <div name=\"Details\" data-tooltip=\"Configuration and **advanced** settings\">Details content</div>\n <div name=\"Log\" data-tooltip=\"Recent activity and events\">Log content</div>\n</tosi-tabs>\n```\n```css\n.preview tosi-tabs {\n height: 100%;\n}\n.preview div[name] {\n padding: 20px;\n text-align: center;\n}\n```\n*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n vars,\n PartsMap,\n} from 'tosijs'\n\nimport { tosiLocalized, TosiLocalized } from './localize'\n\nimport { icons } from './icons'\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 TosiTabs extends WebComponent {\n static preferredTagName = 'tosi-tabs'\n\n static initAttributes = {\n localized: false,\n }\n\n value = 0\n\n makeTab(tabs: TosiTabs, tabBody: HTMLElement, bodyId: string): 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 ? tosiLocalized(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 const tooltip = tabBody.dataset.tooltip\n if (tooltip) {\n tab.dataset.tooltip = tooltip\n }\n return tab\n }\n\n static shadowStyleSpec = {\n ':host': {\n // New --tosi-tabs-* variables with legacy fallbacks\n '--tosi-tabs-selected-color':\n 'var(--xin-tabs-selected-color, var(--tosi-accent, currentColor))',\n '--tosi-tabs-bar-color': 'var(--xin-tabs-bar-color, #ccc)',\n '--tosi-tabs-bar-height': 'var(--xin-tabs-bar-height, 2px)',\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.tosiTabsSelectedColor,\n color: vars.textColor,\n },\n ':host .elastic': {\n flex: '1',\n },\n ':host .border': {\n background: vars.tosiTabsBarColor,\n },\n ':host .border > .selected': {\n content: ' ',\n width: 0,\n height: vars.tosiTabsBarHeight,\n background: vars.tosiTabsSelectedColor,\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 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 TosiLocalized.allInstances.add(this)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n TosiLocalized.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\n/** @deprecated Use TosiTabs instead */\nexport type TabSelector = TosiTabs\n/** @deprecated Use TosiTabs instead */\nexport const TabSelector: typeof TosiTabs = TosiTabs\n\nexport const tosiTabs = TosiTabs.elementCreator() as ElementCreator<TosiTabs>\n\n/** @deprecated Use tosiTabs instead */\nexport const tabSelector = tosiTabs\n\n/** @deprecated Use tosiTabs instead */\nexport const xinTabs = tosiTabs\n",
|
|
28
|
+
"/*#\n# tabs\n\n`<tosi-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('tosi-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<tosi-tabs>\n <div name=\"first\">first body</div>\n <div name=\"second\" data-close>\n <template role=\"tab\">\n <tosi-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 ></tosi-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 <tosi-icon icon=\"plus\"></tosi-icon>\n </button>\n</tosi-tabs>\n```\n```css\n .preview tosi-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 `<tosi-tabs>`s `value` is the index of its active body.\n\nA `<tosi-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 `<tosi-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<tosi-tabs localized>\n <div name=\"localize\"><h2>localize!</h2></div>\n <div name=\"tabs\"><h2>tabs</h2></div>\n</tosi-tabs>\n```\n\n`<tosi-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## Tab Tooltips\n\nAdd `data-tooltip` to a tab body and it will be shown on its tab button\n(requires `initTooltips()`).\n\n```js\nimport { initTooltips } from 'tosijs-ui'\n\ninitTooltips()\n```\n```html\n<tosi-tabs>\n <div name=\"Overview\" data-tooltip=\"Project summary and status\">Overview content</div>\n <div name=\"Details\" data-tooltip=\"Configuration and **advanced** settings\">Details content</div>\n <div name=\"Log\" data-tooltip=\"Recent activity and events\">Log content</div>\n</tosi-tabs>\n```\n```css\n.preview tosi-tabs {\n height: 100%;\n}\n.preview div[name] {\n padding: 20px;\n text-align: center;\n}\n```\n*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n vars,\n PartsMap,\n} from 'tosijs'\n\nimport { tosiLocalized, TosiLocalized } from './localize'\n\nimport { icons } from './icons'\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 TosiTabs extends WebComponent {\n static preferredTagName = 'tosi-tabs'\n\n static initAttributes = {\n localized: false,\n }\n\n value = 0\n\n makeTab(tabs: TosiTabs, tabBody: HTMLElement, bodyId: string): 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 ? tosiLocalized(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 const tooltip = tabBody.dataset.tooltip\n if (tooltip) {\n tab.dataset.tooltip = tooltip\n }\n return tab\n }\n\n static shadowStyleSpec = {\n ':host': {\n // New --tosi-tabs-* variables with legacy fallbacks\n '--tosi-tabs-selected-color':\n 'var(--xin-tabs-selected-color, var(--tosi-accent, currentColor))',\n '--tosi-tabs-bar-color': 'var(--xin-tabs-bar-color, #ccc)',\n '--tosi-tabs-bar-height': 'var(--xin-tabs-bar-height, 2px)',\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]': {\n '--text-color': vars.tosiTabsSelectedColor,\n color: vars.textColor,\n },\n ':host .elastic': {\n flex: '1',\n },\n ':host .border': {\n background: vars.tosiTabsBarColor,\n },\n ':host .border > .selected': {\n content: ' ',\n width: 0,\n height: vars.tosiTabsBarHeight,\n background: vars.tosiTabsSelectedColor,\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 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 TosiLocalized.allInstances.add(this)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n TosiLocalized.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 const isSelected = this.value === Number(i)\n tab.toggleAttribute('aria-selected', isSelected)\n tabBody.toggleAttribute('hidden', !isSelected)\n if (isSelected) {\n selected.style!.marginLeft = `${tab.offsetLeft - tabs.offsetLeft}px`\n selected.style!.width = `${tab.offsetWidth}px`\n }\n }\n }\n}\n\n/** @deprecated Use TosiTabs instead */\nexport type TabSelector = TosiTabs\n/** @deprecated Use TosiTabs instead */\nexport const TabSelector: typeof TosiTabs = TosiTabs\n\nexport const tosiTabs = TosiTabs.elementCreator() as ElementCreator<TosiTabs>\n\n/** @deprecated Use tosiTabs instead */\nexport const tabSelector = tosiTabs\n\n/** @deprecated Use tosiTabs instead */\nexport const xinTabs = tosiTabs\n",
|
|
29
29
|
"import { ExampleContext, TransformFn } from './types'\n\nexport const AsyncFunction = (async () => {\n /* placeholder */\n}).constructor\n\n/**\n * Rewrite import statements to use context variables\n * e.g., `import { x } from 'tosijs'` -> `const { x } = tosijs`\n */\nexport function rewriteImports(code: string, contextKeys: string[]): string {\n let result = code\n for (const moduleName of contextKeys) {\n result = result.replace(\n new RegExp(`import \\\\{([^}]*)\\\\} from '${moduleName}'`, 'g'),\n (_, names: string) => {\n const collapsed = names.replace(/\\s+/g, ' ').trim()\n return `const { ${collapsed} } = ${moduleName.replace(/-/g, '')}`\n }\n )\n }\n return result\n}\n\n/**\n * Execute code as an async function with injected context\n */\nexport async function executeCode(\n code: string,\n context: ExampleContext,\n transform: TransformFn\n): Promise<void> {\n const rewrittenCode = rewriteImports(code, Object.keys(context))\n const transformedCode = transform(rewrittenCode, {\n transforms: ['typescript'],\n }).code\n\n const contextKeys = Object.keys(context).map((key) => key.replace(/-/g, ''))\n const contextValues = Object.values(context)\n\n // @ts-expect-error AsyncFunction constructor typing\n const func = new AsyncFunction(...contextKeys, transformedCode)\n await func(...contextValues)\n}\n\n/**\n * Passthrough transform — returns code unchanged.\n * Used as fallback when sucrase isn't installed.\n */\nconst passthroughTransform: TransformFn = (code, options) => {\n if (options.transforms.includes('typescript')) {\n throw new Error(\n 'TypeScript examples require the \"sucrase\" package. ' +\n 'Install it with: npm install sucrase'\n )\n }\n return { code }\n}\n\nconst SUCRASE_CDN = 'https://cdn.jsdelivr.net/npm/sucrase@3.35.0/+esm'\n\n/**\n * Load sucrase transform function.\n *\n * Tries three strategies in order:\n * 1. `import('sucrase')` — works for ESM consumers who installed the peer dep\n * 2. CDN import — works for IIFE consumers and when sucrase isn't installed\n * 3. Passthrough fallback — plain JS still works, TypeScript errors clearly\n */\nexport async function loadTransform(): Promise<TransformFn> {\n // Try installed package first\n try {\n const { transform } = await import('sucrase')\n return transform\n } catch {\n // Not installed — try CDN\n }\n\n try {\n const { transform } = await import(\n /* webpackIgnore: true */ SUCRASE_CDN\n )\n return transform\n } catch {\n console.warn(\n 'sucrase not available — TypeScript examples will not work. ' +\n 'Install with: npm install sucrase'\n )\n return passthroughTransform\n }\n}\n",
|
|
30
30
|
"import { RemotePayload } from './types'\n\nexport const STORAGE_KEY = 'live-example-payload'\n\nexport function createRemoteKey(\n prefix: string,\n uuid: string,\n remoteId: string\n): string {\n return remoteId !== '' ? `${prefix}-${remoteId}` : `${prefix}-${uuid}`\n}\n\nexport function sendPayload(storageKey: string, payload: RemotePayload): void {\n try {\n localStorage.setItem(storageKey, JSON.stringify(payload))\n } catch (e) {\n console.warn('live-example: failed to write to localStorage', e)\n }\n}\n\nexport function parsePayload(data: string | null): RemotePayload | null {\n if (data === null) return null\n try {\n return JSON.parse(data)\n } catch {\n return null\n }\n}\n\nexport function openEditorWindow(\n prefix: string,\n uuid: string,\n storageKey: string,\n remoteKey: string,\n code: { css: string; html: string; js: string; test?: string }\n): void {\n const href = location.href.split('?')[0] + `?${prefix}=${uuid}`\n sendPayload(storageKey, {\n remoteKey,\n sentAt: Date.now(),\n ...code,\n })\n window.open(href)\n}\n\nexport function sendCloseSignal(storageKey: string, remoteKey: string): void {\n sendPayload(storageKey, {\n remoteKey,\n sentAt: Date.now(),\n css: '',\n html: '',\n js: '',\n close: true,\n })\n}\n\nconst hasBroadcastChannel = typeof BroadcastChannel !== 'undefined'\n\n/**\n * Manager for remote window synchronization.\n *\n * Primary transport: BroadcastChannel (reliable, instant, works when\n * tabs close). Falls back to localStorage polling for environments\n * that lack BroadcastChannel (e.g. older Quest 3 browser builds).\n *\n * localStorage is still used for the initial payload (persisted so the\n * new window can read it on first render).\n */\nexport class RemoteSyncManager {\n private storageKey: string\n private remoteKey: string\n private lastUpdate = 0\n private interval?: ReturnType<typeof setInterval>\n private channel?: BroadcastChannel\n private listening = false\n private onReceive: (payload: RemotePayload) => void\n\n constructor(\n storageKey: string,\n remoteKey: string,\n onReceive: (payload: RemotePayload) => void\n ) {\n this.storageKey = storageKey\n this.remoteKey = remoteKey\n this.onReceive = onReceive\n }\n\n private handlePayload = (payload: RemotePayload) => {\n if (payload.sentAt <= this.lastUpdate) return\n if (payload.remoteKey !== this.remoteKey) return\n\n this.lastUpdate = payload.sentAt\n this.onReceive(payload)\n }\n\n /** Handle incoming BroadcastChannel messages */\n private handleMessage = (event: MessageEvent) => {\n const payload = event.data as RemotePayload\n if (payload) this.handlePayload(payload)\n }\n\n /** Polling fallback — reads from localStorage */\n private handlePoll = () => {\n let data: string | null = null\n try {\n data = localStorage.getItem(this.storageKey)\n } catch {\n return\n }\n\n const payload = parsePayload(data)\n if (payload) this.handlePayload(payload)\n }\n\n startListening(): void {\n if (this.listening) return\n this.listening = true\n\n if (hasBroadcastChannel) {\n this.channel = new BroadcastChannel(this.storageKey)\n this.channel.onmessage = this.handleMessage\n }\n\n // Polling fallback — covers environments without BroadcastChannel\n // and catches the initial localStorage payload written before the\n // remote window's BroadcastChannel is ready.\n this.interval = setInterval(this.handlePoll, 500)\n }\n\n stopListening(): void {\n if (!this.listening) return\n this.listening = false\n\n if (this.channel) {\n this.channel.close()\n this.channel = undefined\n }\n\n if (this.interval) {\n clearInterval(this.interval)\n this.interval = undefined\n }\n }\n\n send(code: { css: string; html: string; js: string; test?: string }): void {\n const payload: RemotePayload = {\n remoteKey: this.remoteKey,\n sentAt: Date.now(),\n ...code,\n }\n\n // Write to localStorage (persistence for initial load + fallback)\n sendPayload(this.storageKey, payload)\n\n // Broadcast for instant delivery\n if (this.channel) {\n this.channel.postMessage(payload)\n }\n }\n\n sendClose(): void {\n const payload: RemotePayload = {\n remoteKey: this.remoteKey,\n sentAt: Date.now(),\n css: '',\n html: '',\n js: '',\n close: true,\n }\n\n sendPayload(this.storageKey, payload)\n\n if (this.channel) {\n this.channel.postMessage(payload)\n }\n }\n}\n",
|
|
31
31
|
"import { elements } from 'tosijs'\nimport { ExampleContext, TransformFn } from './types'\nimport { rewriteImports, AsyncFunction } from './code-transform'\n\nconst { div } = elements\n\n/**\n * Register web components in an iframe's customElements registry.\n *\n * Uses two strategies:\n * 1. Scans context exports for creator functions with a `tagName` property\n * 2. Scans the iframe HTML for any custom-element tags (contain a hyphen)\n * and registers them from the main window's customElements registry\n */\nexport function registerComponentsInIframe(\n iframeWindow: Window,\n context: ExampleContext\n): void {\n const iframeCustomElements = iframeWindow.customElements\n if (!iframeCustomElements) return\n\n const register = (tagName: string) => {\n if (!tagName || iframeCustomElements.get(tagName)) return\n const ComponentClass = customElements.get(tagName)\n if (ComponentClass) {\n try {\n iframeCustomElements.define(tagName, ComponentClass)\n } catch {\n // May fail if already defined — ignore\n }\n }\n }\n\n // Strategy 1: context exports with tagName (e.g. element creators)\n for (const lib of Object.values(context)) {\n if (lib && typeof lib === 'object') {\n for (const creator of Object.values(lib as Record<string, unknown>)) {\n if (typeof creator === 'function' && 'tagName' in creator) {\n register((creator as { tagName: string }).tagName)\n }\n }\n }\n }\n\n // Strategy 2: scan iframe DOM for unregistered custom-element tags\n const iframeDoc = iframeWindow.document\n if (iframeDoc) {\n const allElements = iframeDoc.querySelectorAll('*')\n for (const el of allElements) {\n const tag = el.tagName.toLowerCase()\n if (tag.includes('-')) {\n register(tag)\n }\n }\n }\n}\n\nexport interface ExecutionOptions {\n html: string\n css: string\n js: string\n context: ExampleContext\n transform: TransformFn\n onError?: (error: Error) => void\n}\n\n/**\n * Execute code inline (directly in the page)\n */\nexport async function executeInline(\n options: ExecutionOptions & {\n exampleElement: HTMLElement\n styleElement: HTMLStyleElement\n widgetsElement: HTMLElement\n }\n): Promise<HTMLElement> {\n const {\n html,\n css,\n js,\n context,\n transform,\n exampleElement,\n styleElement,\n widgetsElement,\n onError,\n } = options\n\n const preview = div({ class: 'preview' })\n preview.innerHTML = html\n styleElement.innerText = css\n\n const oldPreview = exampleElement.querySelector('.preview')\n if (oldPreview) {\n oldPreview.replaceWith(preview)\n } else {\n exampleElement.insertBefore(preview, widgetsElement)\n }\n\n const fullContext = { preview, ...context }\n\n try {\n const code = rewriteImports(js, Object.keys(context))\n const transformedCode = transform(code, { transforms: ['typescript'] }).code\n\n const contextKeys = Object.keys(fullContext).map((key) =>\n key.replace(/-/g, '')\n )\n const contextValues = Object.values(fullContext)\n\n // @ts-expect-error AsyncFunction constructor typing\n const func = new AsyncFunction(...contextKeys, transformedCode)\n await func(...contextValues)\n } catch (e) {\n console.error(e)\n preview.append(\n div({ class: 'preview-error' }, String((e as Error).message || e))\n )\n if (onError) onError(e as Error)\n else window.alert(`Error: ${e}, the console may have more information…`)\n }\n\n return preview\n}\n\n/**\n * Execute code in an isolated iframe\n */\nexport async function executeInIframe(\n options: ExecutionOptions & {\n exampleElement: HTMLElement\n widgetsElement: HTMLElement\n }\n): Promise<HTMLElement | null> {\n const {\n html,\n css,\n js,\n context,\n transform,\n exampleElement,\n widgetsElement,\n onError,\n } = options\n\n // Create or reuse iframe\n let iframe = exampleElement.querySelector(\n 'iframe.preview-iframe'\n ) as HTMLIFrameElement | null\n\n if (!iframe) {\n iframe = document.createElement('iframe')\n iframe.className = 'preview-iframe'\n iframe.style.cssText = 'width: 100%; height: 100%; border: none;'\n const oldPreview = exampleElement.querySelector('.preview')\n if (oldPreview) {\n oldPreview.replaceWith(iframe)\n } else {\n exampleElement.insertBefore(iframe, widgetsElement)\n }\n }\n\n const iframeDoc = iframe.contentDocument\n if (!iframeDoc) {\n console.error('Could not access iframe document')\n return null\n }\n\n const iframeWindow = iframe.contentWindow as Window & {\n tosijs?: unknown\n tosijsui?: unknown\n }\n\n // Copy libraries to iframe window\n if (context['tosijs']) {\n iframeWindow.tosijs = context['tosijs']\n }\n if (context['tosijs-ui']) {\n iframeWindow.tosijsui = context['tosijs-ui']\n }\n\n // Write HTML and CSS to iframe\n iframeDoc.open()\n iframeDoc.write(`<!DOCTYPE html>\n<html>\n<head>\n <style>\n body { margin: 0; }\n .preview { height: 100%; position: relative; }\n ${css}\n </style>\n</head>\n<body>\n <div class=\"preview\">${html}</div>\n</body>\n</html>`)\n iframeDoc.close()\n\n // Register web components in iframe\n registerComponentsInIframe(iframeWindow, context)\n\n const preview = iframeDoc.querySelector('.preview') as HTMLElement\n if (!preview) {\n console.error('Could not find preview element in iframe')\n return null\n }\n\n // Execute JS in iframe context\n const fullContext = { preview, ...context }\n\n try {\n const code = rewriteImports(js, Object.keys(context))\n const transformedCode = transform(code, { transforms: ['typescript'] }).code\n\n // Create AsyncFunction in iframe's context\n const IframeAsyncFunction = (\n iframeWindow as Window & { eval: typeof eval }\n ).eval('(async () => {}).constructor')\n\n const contextKeys = Object.keys(fullContext).map((key) =>\n key.replace(/-/g, '')\n )\n const contextValues = Object.values(fullContext)\n\n const func = new IframeAsyncFunction(...contextKeys, transformedCode)\n await func(...contextValues)\n } catch (e) {\n console.error(e)\n const errorDiv = iframeDoc.createElement('div')\n errorDiv.className = 'preview-error'\n errorDiv.textContent = String((e as Error).message || e)\n preview.append(errorDiv)\n if (onError) onError(e as Error)\n else window.alert(`Error: ${e}, the console may have more information…`)\n }\n\n return preview\n}\n",
|
|
@@ -50,15 +50,15 @@
|
|
|
50
50
|
"/*#\n# rating\n\n`TosiRating` / `<tosi-rating>` provides a drop-in replacement for an `<input>`\nthat renders a rating using icons.\n\n```js\nconst { tosiRating } = tosijsui\npreview.append(\n tosiRating({ value: 3.4 }),\n tosiRating({ min: 0, value: 3.4, step: 0.5, hollow: true }),\n tosiRating({ value: 3.4, ratingFill: 'deepskyblue', ratingStroke: 'deepskyblue' }),\n tosiRating({ value: 3.1, max: 10, ratingFill: 'hotpink', ratingStroke: 'hotpink', icon: 'heart', iconSize: 32 }),\n tosiRating({ class: 'color', value: 3.1, max: 5, icon: 'tosiPlatform', iconSize: 32 }),\n)\n```\n```test\nconst rating = preview.querySelector('tosi-rating')\ntest('rating renders', () => {\n expect(rating).toBeTruthy()\n expect(rating.tagName.toLowerCase()).toBe('tosi-rating')\n})\ntest('rating has correct value', () => {\n expect(rating.value).toBe(3.4)\n})\ntest('rating has correct max', () => {\n expect(rating.max).toBe(5)\n})\n```\n```css\n.preview {\n display: flex;\n flex-direction: column;\n}\n\n.preview .color::part(empty) {\n filter: grayscale(1);\n opacity: 0.25;\n}\n```\n\n## Attributes\n\n- `icon-size` (24 by default) determines the height of the control and along with `max` its width\n- `max` maximum rating\n- `min` (1 by default) can be 0 or 1 (allowing ratings of 0 to max or 1 to max)\n- `step` (0.5 by default) granularity of rating\n- `icon` ('star' by default) determines the icon used\n- `rating-stroke` (#f91 by default) is the stroke of rating icons\n- `rating-fill` (#e81 by default) is the color of rating icons\n- `empty-stroke` (none by default) is the color of background icons\n- `empty-fill` (#ccc by default) is the color of background icons\n- `readonly` (false by default) prevents the user from changing the rating\n- `hollow` (false by default) makes the empty rating icons hollow.\n- `required` (false by default) marks the field as required for form validation\n- `name` the form field name (for formAssociated support)\n\n## Form Integration\n\n`<tosi-rating>` is form-associated, meaning it works directly in native `<form>` elements:\n\n```html\n<form>\n <tosi-rating name=\"rating\" required></tosi-rating>\n <button type=\"submit\">Submit</button>\n</form>\n```\n\n## Keyboard\n\n`<tosi-rating>` should be fully keyboard navigable (and, I hope, accessible).\n\nThe up key increases the rating, down descreases it. This is the same\nas the behavior of `<input type=\"number\">`, [Shoelace's rating widget](https://shoelace.style/components/rating/),\nand (in my opinion) common sense, but not like [MUI's rating widget](https://mui.com/material-ui/react-rating/).\n*/\n\nimport {\n Component,\n elements,\n ElementCreator,\n PartsMap,\n deprecated,\n} from 'tosijs'\nimport { icons } from './icons'\n\nconst { span } = elements\n\ninterface RatingParts extends PartsMap {\n empty: HTMLElement\n filled: HTMLElement\n container: HTMLElement\n}\n\nexport class TosiRating extends Component {\n static preferredTagName = 'tosi-rating'\n static formAssociated = true\n\n static initAttributes = {\n max: 5,\n min: 1 as 0 | 1,\n icon: 'star',\n step: 1,\n ratingStroke: '#e81',\n ratingFill: '#f91',\n emptyStroke: 'none',\n emptyFill: '#ccc',\n readonly: false,\n iconSize: 24,\n hollow: false,\n required: false,\n name: '',\n }\n\n value: number | string = ''\n\n // Form-associated lifecycle callbacks\n formDisabledCallback(disabled: boolean) {\n this.readonly = disabled\n }\n\n formResetCallback() {\n this.value = ''\n }\n\n static shadowStyleSpec = {\n ':host': {\n display: 'inline-block',\n position: 'relative',\n width: 'fit-content',\n },\n ':host::part(container)': {\n position: 'relative',\n display: 'inline-block',\n },\n ':host::part(empty), :host::part(filled)': {\n height: '100%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n ':host::part(empty)': {\n pointerEvents: 'none',\n },\n ':host::part(filled)': {\n position: 'absolute',\n left: 0,\n transition: 'width 0.15s ease-out',\n },\n ':host svg': {\n transform: 'scale(0.9)',\n pointerEvents: 'all !important',\n transition: '0.25s ease-in-out',\n },\n ':host svg:hover': {\n transform: 'scale(1)',\n },\n ':host svg:active': {\n transform: 'scale(1.1)',\n },\n }\n\n content = () =>\n span(\n { part: 'container' },\n span({ part: 'empty' }),\n span({ part: 'filled' })\n )\n\n displayValue(value: number | string) {\n const { empty, filled } = this.parts as RatingParts\n const numValue = typeof value === 'string' ? 0 : value || 0\n const roundedValue = Math.round(numValue / this.step) * this.step\n filled.style.width = (roundedValue / this.max) * empty.offsetWidth + 'px'\n }\n\n update = (event: Event) => {\n if (this.readonly) {\n return\n }\n\n const { empty } = this.parts as RatingParts\n\n const x =\n event instanceof MouseEvent\n ? event.pageX - empty.getBoundingClientRect().x\n : 0\n const value = Math.min(\n Math.max(\n this.min,\n Math.round(\n ((x / empty.offsetWidth) * this.max) / this.step + this.step * 0.5\n ) * this.step\n ),\n this.max\n )\n if (event.type === 'click') {\n this.value = value\n } else if (event.type === 'mousemove') {\n this.displayValue(value)\n } else {\n this.displayValue(this.value || 0)\n }\n }\n\n handleKey = (event: KeyboardEvent) => {\n let value = this.value === '' ? NaN : Number(this.value)\n if (isNaN(value)) {\n value = Math.round((this.min + this.max) * 0.5 * this.step) * this.step\n }\n let blockEvent = false\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n value += this.step\n blockEvent = true\n break\n case 'ArrowDown':\n case 'ArrowLeft':\n value -= this.step\n blockEvent = true\n break\n }\n this.value = Math.max(Math.min(value, this.max), this.min)\n if (blockEvent) {\n event.stopPropagation()\n event.preventDefault()\n }\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n const { container } = this.parts as RatingParts\n\n container.tabIndex = 0\n container.addEventListener('mousemove', this.update, true)\n container.addEventListener('mouseleave', this.update)\n container.addEventListener('blur', this.update)\n container.addEventListener('click', this.update)\n\n container.addEventListener('keydown', this.handleKey)\n }\n\n private _renderedIcon = ''\n\n render() {\n super.render()\n\n const height = this.iconSize + 'px'\n this.style.setProperty('--tosi-icon-size', height)\n\n if (this.readonly) {\n this.role = 'image'\n } else {\n this.role = 'slider'\n }\n this.ariaLabel = `rating ${this.value} out of ${this.max}`\n this.ariaValueMax = String(this.max)\n this.ariaValueMin = String(this.min)\n this.ariaValueNow = this.value === '' ? String(-1) : String(this.value)\n\n const { empty, filled } = this.parts as RatingParts\n empty.classList.toggle('hollow', this.hollow)\n\n // Set icon colors on the containers so CSS variables cascade to SVGs\n empty.style.setProperty('--tosi-icon-fill', this.emptyFill)\n empty.style.setProperty('--tosi-icon-stroke', this.emptyStroke)\n filled.style.setProperty('--tosi-icon-fill', this.ratingFill)\n filled.style.setProperty('--tosi-icon-stroke', this.ratingStroke)\n\n if (this._renderedIcon !== this.icon) {\n this._renderedIcon = this.icon\n for (let i = 0; i < this.max; i++) {\n empty.append(icons[this.icon]())\n filled.append(icons[this.icon]())\n }\n }\n\n this.displayValue(this.value)\n }\n}\n\n/** @deprecated Use TosiRating instead */\nexport type XinRating = TosiRating\n/** @deprecated Use TosiRating instead */\nexport const XinRating: typeof TosiRating = TosiRating\n\nexport const tosiRating = TosiRating.elementCreator() as ElementCreator<TosiRating>\n\n/** @deprecated Use tosiRating instead (tag is now tosi-rating) */\nexport const xinRating = deprecated(\n (...args: Parameters<typeof tosiRating>) => tosiRating(...args),\n 'xinRating is deprecated, use tosiRating instead (tag is now <tosi-rating>)'\n) as ElementCreator<TosiRating>\n",
|
|
51
51
|
"/*#\n# rich text\n\n`<tosi-rich-text>` is a simple and easily extensible `document.execCommand` WYSIWYG editor with some conveniences.\nThe class name is `RichText` and the ElementCreator is `tosiRichText`.\n\n### `default` widgets\n\n```html\n<tosi-rich-text>\n<h3>Heading</h3>\n<p>And some <b>text</b></p>\n</tosi-rich-text>\n```\n```css\ntosi-rich-text {\n background: white;\n}\n\ntosi-rich-text [part=\"toolbar\"] {\n background: #f8f8f8;\n}\n\ntosi-rich-text [part=\"doc\"] {\n padding: 20px;\n}\n```\n\n### `minimal` widgets\n\n```html\n<tosi-rich-text widgets=\"minimal\">\n<h3>Heading</h3>\n<p>And some <b>text</b></p>\n</tosi-rich-text>\n```\n```css\ntosi-rich-text {\n background: white;\n}\n\ntosi-rich-text [part=\"toolbar\"] {\n background: #f8f8f8;\n}\n\ntosi-rich-text [part=\"doc\"] {\n padding: 20px;\n}\n```\n\nBy default, `<tosi-rich-text>` treats its initial contents as its document, but you can also set (and get)\nits `value`.\n\n## toolbar\n\n`<tosi-rich-text>` elements have a `toolbar` slot (actually a tosi-slot because it doesn't use\nthe shadowDOM).\n\nIf you set the `widgets` attribute to `default` or `minimal` you will get a toolbar\nfor free. Or you can add your own custom widgets.\n\n## helper functions\n\nA number of helper functions are available, including:\n\n- `commandButton(title: string, command: string, iconClass: string)`\n- `blockStyle(options: Array<{caption: string, tagType: string}>)`\n- `spacer(width = '10px')`\n- `elastic(width = '10px')`\n\nThese each create a toolbar widget. A `blockStyle`-generated `<select>` element will\nautomatically have its value changed based on the current selection.\n\n## properties\n\nA `<tosi-rich-text>` element also has `selectedText` and `selectedBlocks` properties, allowing\nyou to easily perform operations on text selections, and a `selectionChange` callback (which\nsimply passes through document `selectionchange` events, but also passes a reference to\nthe `<tosi-rich-text>` component).\n\n## Form Integration\n\n`<tosi-rich-text>` is form-associated, making it work directly in native forms:\n\n```html\n<form class=\"richtext-form\">\n <label>\n <b>Compose message (required):</b>\n <tosi-rich-text name=\"content\" widgets=\"minimal\" required style=\"height: 150px\">\n </tosi-rich-text>\n </label>\n <button type=\"submit\">Submit</button>\n <button type=\"reset\">Reset</button>\n <pre class=\"output\" style=\"max-height: 100px; overflow: auto\"></pre>\n</form>\n```\n```css\n.preview .richtext-form {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n.preview .richtext-form label {\n display: flex;\n flex-direction: column;\n gap: 5px;\n}\n.preview tosi-rich-text {\n background: white;\n}\n.preview tosi-rich-text [part=\"toolbar\"] {\n background: #f8f8f8;\n}\n```\n```js\nconst form = preview.querySelector('.richtext-form')\nform.addEventListener('submit', (e) => {\n e.preventDefault()\n const data = new FormData(form)\n form.querySelector('.output').textContent = 'Content: ' + data.get('content')\n})\n```\n*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n PartsMap,\n elements,\n deprecated,\n XinStyleSheet,\n} from 'tosijs'\nimport { icons } from './icons'\n\nimport { tosiSelect, TosiSelect } from './select'\nimport {\n elastic as layoutElastic,\n spacer as layoutSpacer,\n} from './layout'\n\nconst { tosiSlot, div, button, span } = elements\n\nconst blockStyles = [\n {\n caption: 'Title',\n tagType: 'H1',\n },\n {\n caption: 'Heading',\n tagType: 'H2',\n },\n {\n caption: 'Subheading',\n tagType: 'H3',\n },\n {\n caption: 'Minor heading',\n tagType: 'H4',\n },\n {\n caption: 'Body',\n tagType: 'P',\n },\n {\n caption: 'Code Block',\n tagType: 'PRE',\n },\n]\n\nexport function blockStyle(options = blockStyles) {\n return tosiSelect({\n title: 'paragraph style',\n slot: 'toolbar',\n class: 'block-style',\n options: options.map(({ caption, tagType }) => ({\n caption,\n value: `formatBlock,${tagType}`,\n })),\n })\n}\n\nconst spacer = () => layoutSpacer({ slot: 'toolbar' })\nconst elastic = () => layoutElastic({ slot: 'toolbar' })\n\nexport function commandButton(\n title: string,\n dataCommand: string,\n icon: SVGElement\n) {\n return button({ slot: 'toolbar', dataCommand, title }, icon)\n}\n\nconst paragraphStyleWidgets = () => [\n commandButton('left-justify', 'justifyLeft', icons.alignLeft()),\n commandButton('center', 'justifyCenter', icons.alignCenter()),\n commandButton('right-justify', 'justifyRight', icons.alignRight()),\n spacer(),\n commandButton('bullet list', 'insertUnorderedList', icons.listBullet()),\n commandButton('numbered list', 'insertOrderedList', icons.listNumber()),\n spacer(),\n commandButton('indent', 'indent', icons.indent()),\n commandButton('indent', 'outdent', icons.outdent()),\n]\n\nconst characterStyleWidgets = () => [\n commandButton('bold', 'bold', icons.fontBold()),\n commandButton('italic', 'italic', icons.fontItalic()),\n commandButton('underline', 'underline', icons.fontUnderline()),\n]\n\nconst minimalWidgets = () => [\n blockStyle(),\n spacer(),\n ...characterStyleWidgets(),\n]\n\nexport const richTextWidgets = () => [\n blockStyle(),\n spacer(),\n ...paragraphStyleWidgets(),\n spacer(),\n ...characterStyleWidgets(),\n]\n\ninterface EditorParts extends PartsMap {\n toolbar: HTMLElement\n doc: HTMLElement\n content: HTMLElement\n}\n\nexport class RichText extends WebComponent<EditorParts> {\n static preferredTagName = 'tosi-rich-text'\n\n static lightStyleSpec: XinStyleSheet = {\n ':host': {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n ':host [part=\"toolbar\"]': {\n padding: 4,\n display: 'flex',\n gap: '0px',\n flex: '0 0 auto',\n flexWrap: 'wrap',\n },\n ':host [part=\"toolbar\"] > button': {\n _xinIconSize: 18,\n },\n }\n\n static formAssociated = true\n\n static initAttributes = {\n widgets: 'default' as 'none' | 'minimal' | 'default',\n name: '',\n required: false,\n }\n\n private isInitialized = false\n private savedValue = ''\n\n // Form lifecycle callbacks\n formDisabledCallback(disabled: boolean) {\n if (this.isInitialized) {\n this.parts.doc.contentEditable = disabled ? 'false' : 'true'\n }\n }\n\n formResetCallback() {\n this.value = ''\n }\n\n private _value = ''\n\n get value(): string {\n return this.isInitialized ? this.parts.doc.innerHTML : this._value\n }\n\n set value(docHtml: string) {\n const oldValue = this._value\n this._value = docHtml\n if (this.isInitialized) {\n if (this.parts.doc.innerHTML !== docHtml) {\n this.parts.doc.innerHTML = docHtml\n }\n }\n // Notify tosijs of the change for form value updates\n if (oldValue !== docHtml && this.internals) {\n this.internals.setFormValue(docHtml)\n }\n }\n\n blockElement(elt: Node): Element | undefined {\n const { doc } = this.parts\n while (elt.parentElement !== null && elt.parentElement !== doc) {\n elt = elt.parentElement\n }\n return elt.parentElement === doc ? (elt as Element) : undefined\n }\n\n get selectedBlocks(): any[] {\n const { doc } = this.parts\n const selObject = window.getSelection()\n if (selObject === null) {\n return []\n }\n const blocks = [] as any[]\n for (let i = 0; i < selObject.rangeCount; i++) {\n const range = selObject.getRangeAt(i)\n if (!doc.contains(range.commonAncestorContainer)) {\n continue\n }\n let block: Element | null = this.blockElement(\n range.startContainer\n ) as Element\n const lastBlock = this.blockElement(range.endContainer) as Element\n blocks.push(block)\n while (block !== lastBlock && block !== null) {\n block = block.nextElementSibling\n blocks.push(block)\n }\n }\n return blocks\n }\n\n get selectedText(): string {\n const selObject = window.getSelection()\n if (selObject === null) {\n return ''\n }\n return this.selectedBlocks.length ? selObject.toString() : ''\n }\n\n selectionChange: (event: Event, editor: RichText) => void = () => {\n /* no not care */\n }\n\n private _updatingBlockStyle = false\n\n handleSelectChange = (event: Event) => {\n // Ignore changes triggered by updateBlockStyle\n if (this._updatingBlockStyle) {\n return\n }\n\n const target = event.target as Element | null\n const select = target?.closest(\n TosiSelect.tagName as string\n ) as HTMLSelectElement | null\n if (select == null) {\n return\n }\n\n this.doCommand(select.value)\n }\n\n handleButtonClick = (event: Event) => {\n const target = event.target as Element | null\n const button = target?.closest('button')\n if (button == null) {\n return\n }\n\n this.doCommand(button.dataset.command)\n }\n\n content = [\n tosiSlot({\n name: 'toolbar',\n part: 'toolbar',\n onClick: this.handleButtonClick,\n onChange: this.handleSelectChange,\n }),\n div({\n part: 'doc',\n contenteditable: true,\n style: {\n flex: '1 1 auto',\n outline: 'none',\n },\n }),\n tosiSlot({\n part: 'content',\n }),\n ]\n\n doCommand(command?: string) {\n if (command === undefined) {\n return\n }\n const args = command.split(',') as string[]\n\n console.log('execCommand', args[0], false, ...args.slice(1))\n document.execCommand(args[0], false, ...args.slice(1))\n }\n\n updateBlockStyle() {\n const select = this.parts.toolbar.querySelector(\n '.block-style'\n ) as HTMLSelectElement | null\n if (select === null) {\n return\n }\n let blockTags = (this.selectedBlocks as HTMLElement[]).map(\n (block) => block.tagName\n )\n blockTags = [...new Set(blockTags)]\n this._updatingBlockStyle = true\n select.value = blockTags.length === 1 ? `formatBlock,${blockTags[0]}` : ''\n this._updatingBlockStyle = false\n }\n\n // Check if the editor has meaningful content\n private hasContent(): boolean {\n const text = this.parts.doc.textContent || ''\n return text.trim().length > 0\n }\n\n // Update form value and validity when content changes\n handleInput = () => {\n if (this.internals) {\n this.internals.setFormValue(this.parts.doc.innerHTML)\n this.updateValidity()\n }\n }\n\n private updateValidity(): void {\n if (this.internals) {\n if (this.required && !this.hasContent()) {\n this.internals.setValidity(\n { valueMissing: true },\n 'Please enter some content',\n this.parts.doc\n )\n } else {\n this.internals.setValidity({})\n }\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n const { doc, content } = this.parts\n if (content.innerHTML !== '' && doc.innerHTML === '') {\n doc.innerHTML = content.innerHTML\n content.innerHTML = ''\n }\n\n this.isInitialized = true\n\n content.style.display = 'none'\n\n // Listen for content changes\n doc.addEventListener('input', this.handleInput)\n\n // Initialize validity state\n this.updateValidity()\n\n document.addEventListener('selectionchange', (event: Event) => {\n this.updateBlockStyle()\n this.selectionChange(event, this)\n })\n }\n\n render(): void {\n const { toolbar } = this.parts\n\n super.render()\n\n if (toolbar.children.length === 0) {\n switch (this.widgets) {\n case 'minimal':\n toolbar.append(...minimalWidgets())\n break\n case 'default':\n toolbar.append(...richTextWidgets())\n break\n }\n }\n }\n}\n\n/** @deprecated Use RichText instead */\nexport type XinWord = RichText\n/** @deprecated Use RichText instead */\nexport const XinWord: typeof RichText = RichText\n\nexport const tosiRichText = RichText.elementCreator() as ElementCreator<RichText>\n\n/** @deprecated Use tosiRichText instead (tag is now <tosi-rich-text>) */\nexport const richText = deprecated(\n (...args: Parameters<typeof tosiRichText>) => tosiRichText(...args),\n 'richText is deprecated, use tosiRichText instead (tag is now <tosi-rich-text>)'\n) as ElementCreator<RichText>\n",
|
|
52
52
|
"/*#\n# router\n\nA lightweight client-side router for single-page applications. Supports\npattern matching with named parameters, hash-based routing, and multiple\nnamed route views (slots).\n\n## Basic Usage\n\n```js\nimport { defineRoutes, navigate, router, tosiRouteView } from 'tosijs-ui'\n\nconst home = () => {\n const el = document.createElement('div')\n el.textContent = 'Home page'\n return el\n}\n\nconst about = () => {\n const el = document.createElement('div')\n el.textContent = 'About page'\n return el\n}\n\nconst greeting = (params) => {\n const el = document.createElement('div')\n el.textContent = `Hello, ${params.name}!`\n return el\n}\n\ndefineRoutes(\n [\n { pattern: '', targets: [{ component: home }] },\n { pattern: 'about', targets: [{ component: about }] },\n { pattern: 'greet/:name', targets: [{ component: greeting }] },\n ],\n { hashRouting: true }\n)\n\npreview.append(\n tosiRouteView(),\n)\n\n// Navigate programmatically\nnavigate('greet/World')\n```\n\n## Named Views\n\nRoutes can target multiple named views simultaneously. This is useful\nfor layouts where a route change should update several areas of the page.\n\n```js\nimport { defineRoutes, navigate, tosiRouteView } from 'tosijs-ui'\n\nconst mainContent = (params) => {\n const el = document.createElement('div')\n el.textContent = `Editing photo ${params.id}`\n el.style.padding = '12px'\n el.style.background = '#f0f0f0'\n return el\n}\n\nconst sidebar = () => {\n const el = document.createElement('div')\n el.textContent = 'Color palette tools'\n el.style.padding = '12px'\n el.style.background = '#e0e0ff'\n return el\n}\n\ndefineRoutes(\n [\n {\n pattern: 'photos/:id/edit',\n targets: [\n { view: 'main', component: mainContent },\n { view: 'tools', component: sidebar },\n ],\n },\n ],\n { hashRouting: true }\n)\n\nconst container = document.createElement('div')\ncontainer.style.display = 'flex'\ncontainer.style.gap = '8px'\ncontainer.append(\n tosiRouteView({ name: 'main', style: { flex: '1' } }),\n tosiRouteView({ name: 'tools', style: { width: '200px' } }),\n)\npreview.append(container)\n\nnavigate('photos/42/edit')\n```\n\n## Hash Routing\n\nSet `hashRouting: true` when defining routes to use hash-based URLs\n(`#/path`) instead of History API paths. This is useful when your app\nis served from a static file server that doesn't support URL rewriting.\n\n```js\nimport { defineRoutes, navigate, tosiRouteView } from 'tosijs-ui'\n\ndefineRoutes(\n [\n {\n pattern: 'page/:id',\n targets: [{\n component: (p) => {\n const el = document.createElement('div')\n el.textContent = `Page ${p.id}`\n return el\n },\n }],\n },\n ],\n { hashRouting: true }\n)\n\npreview.append(tosiRouteView())\nnavigate('page/1')\n```\n*/\n\nimport { Component, ElementCreator, tosi } from 'tosijs'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface RouteParams {\n [key: string]: string\n}\n\nexport interface RouteTarget {\n view?: string\n component: (params: RouteParams) => HTMLElement\n}\n\nexport interface RouteDefinition {\n pattern: string\n targets: RouteTarget[]\n fallback?: boolean\n}\n\nexport interface RouterOptions {\n hashRouting?: boolean\n}\n\ninterface CompiledRoute {\n regex: RegExp\n paramNames: string[]\n targets: RouteTarget[]\n fallback: boolean\n}\n\n// ============================================================================\n// Router State\n// ============================================================================\n\nexport const { router } = tosi({\n router: {\n path: '',\n hash: '',\n pattern: '',\n },\n})\n\nlet routerParams: RouteParams = {}\n\nexport function getRouterParams(): RouteParams {\n return { ...routerParams }\n}\n\n// ============================================================================\n// Route Registry\n// ============================================================================\n\nlet compiledRoutes: CompiledRoute[] = []\nlet useHashRouting = false\nconst viewRegistry = new Set<TosiRouteView>()\n\n// ============================================================================\n// Pattern Compilation\n// ============================================================================\n\nfunction compilePattern(pattern: string): {\n regex: RegExp\n paramNames: string[]\n} {\n const paramNames: string[] = []\n\n if (pattern === '') {\n return { regex: /^\\/?$/, paramNames }\n }\n\n const regexParts = pattern.split('/').map((segment) => {\n if (segment.startsWith(':')) {\n paramNames.push(segment.slice(1))\n return '([^/]+)'\n }\n return segment.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n })\n\n const regex = new RegExp('^/?' + regexParts.join('/') + '/?$')\n return { regex, paramNames }\n}\n\n// ============================================================================\n// Route Matching\n// ============================================================================\n\nfunction matchRoute(path: string): {\n route: CompiledRoute\n params: RouteParams\n} | null {\n const cleanPath = path.split('?')[0].split('#')[0]\n\n for (const route of compiledRoutes) {\n if (route.fallback) continue\n const match = cleanPath.match(route.regex)\n if (match) {\n const params: RouteParams = {}\n route.paramNames.forEach((name, i) => {\n params[name] = decodeURIComponent(match[i + 1])\n })\n return { route, params }\n }\n }\n\n // Try fallback route\n const fallback = compiledRoutes.find((r) => r.fallback)\n if (fallback) {\n return { route: fallback, params: {} }\n }\n\n return null\n}\n\n// ============================================================================\n// Rendering\n// ============================================================================\n\nfunction renderRoute(): void {\n const path = useHashRouting\n ? window.location.hash.replace(/^#\\/?/, '')\n : window.location.pathname\n\n router.path.value = path\n router.hash.value = window.location.hash\n\n const match = matchRoute(path)\n\n if (match) {\n routerParams = match.params\n router.pattern.value = match.route.regex.source\n\n const targetsByView = new Map<string, RouteTarget>()\n for (const target of match.route.targets) {\n targetsByView.set(target.view ?? 'default', target)\n }\n\n for (const view of viewRegistry) {\n const viewName = view.name || 'default'\n const target = targetsByView.get(viewName)\n if (target) {\n view.replaceChildren(target.component(match.params))\n } else {\n view.replaceChildren()\n }\n }\n } else {\n routerParams = {}\n router.pattern.value = ''\n for (const view of viewRegistry) {\n view.replaceChildren()\n }\n }\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\nlet initialized = false\n\nfunction ensureListeners(): void {\n if (initialized) return\n initialized = true\n\n window.addEventListener('popstate', renderRoute)\n window.addEventListener('hashchange', renderRoute)\n}\n\nexport function defineRoutes(\n routes: RouteDefinition[],\n options: RouterOptions = {}\n): void {\n useHashRouting = options.hashRouting ?? false\n\n compiledRoutes = routes.map((def) => {\n const { regex, paramNames } = compilePattern(def.pattern)\n return {\n regex,\n paramNames,\n targets: def.targets,\n fallback: def.fallback ?? false,\n }\n })\n\n ensureListeners()\n renderRoute()\n}\n\nexport function navigate(path: string): void {\n ensureListeners()\n\n if (useHashRouting) {\n window.location.hash = '#/' + path.replace(/^\\//, '')\n } else {\n window.history.pushState({}, '', '/' + path.replace(/^\\//, ''))\n }\n\n renderRoute()\n}\n\n// ============================================================================\n// Route View Component\n// ============================================================================\n\nexport class TosiRouteView extends Component {\n static preferredTagName = 'tosi-route-view'\n\n static initAttributes = {\n name: 'default',\n }\n\n content = null\n\n connectedCallback(): void {\n super.connectedCallback()\n viewRegistry.add(this)\n // Re-render if routes are already defined\n if (compiledRoutes.length > 0) {\n renderRoute()\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n viewRegistry.delete(this)\n }\n}\n\nexport const tosiRouteView =\n TosiRouteView.elementCreator() as ElementCreator<TosiRouteView>\n",
|
|
53
|
-
"/*#\n# segmented select\n\nThis is a fairly general-purpose segmented select control.\n\n```html\n<div class=\"grid\">\n <tosi-segmented value=\"yes\" choices=\"yes, no, don't care\">\n Should we?\n </tosi-segmented>\n\n <div>\n <b>Localized!</b><br>\n <tosi-segmented\n localized\n title=\"do you like?\"\n choices=\"yes=Yes:thumbsUp, no=No:thumbsDown\"\n ></tosi-segmented>\n </div>\n\n <tosi-segmented\n style=\"--segmented-direction: column; --segmented-align-items: stretch\"\n choices=\"in a relationship, single\"\n other=\"it's complicated...\"\n placeholder=\"please elaborate\"\n value=\"separated\"\n >\n Relationship Status\n </tosi-segmented>\n\n <tosi-segmented\n multiple\n style=\"--segmented-direction: column; --segmented-align-items: start; --segmented-option-grid-columns: 24px 24px 100px; --segmented-input-visibility: visible;\"\n choices=\"star=Star:star, game=Game:game, bug=Bug:bug, camera=Camera:camera\"\n value=\"star,bug\"\n >\n Pick all that apply\n </tosi-segmented>\n</div>\n```\n```css\n.preview .grid {\n --segmented-option-current-background: var(--brand-color);\n --segmented-option-current-color: var(--brand-text-color);\n padding: 16px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n```\n```js\nfunction logEvent(event) {\n const { target } = event\n if (target.matches('tosi-segmented')) {\n console.log((target.textContent || target.title).trim(), target.value)\n }\n}\npreview.addEventListener('change', logEvent, true)\n```\n```test\nconst segmented = preview.querySelectorAll('tosi-segmented')\ntest('segmented controls render', () => {\n expect(segmented.length).toBe(4)\n})\ntest('first segmented has value \"yes\"', () => {\n expect(segmented[0].value).toBe('yes')\n})\ntest('multiple segmented has array value', () => {\n expect(segmented[3].value).toBe('star,bug')\n})\n```\n\n> Check the console to see the values being set.\n\n## Form Integration\n\n`<tosi-segmented>` is form-associated, meaning it works directly in native `<form>` elements:\n\n```html\n<form class=\"segmented-form\">\n <tosi-segmented name=\"choice\" choices=\"a,b,c\" required></tosi-segmented>\n <button type=\"submit\">Submit</button>\n <span class=\"output\"></span>\n</form>\n```\n```js\nconst form = preview.querySelector('.segmented-form')\nform.addEventListener('submit', (e) => {\n e.preventDefault()\n const data = new FormData(form)\n form.querySelector('.output').textContent = 'Submitted: ' + data.get('choice')\n})\n```\n\n## Properties\n\n- `values` is an array of values (only really useful if `multiple` is set to true)\n\nYou can set `choices` programmatically to an array of `Choice` objects:\n\n interface Choice {\n icon?: string | SVGElement\n value: string\n caption: string\n }\n\n## Attributes\n\n- `choices` is a string of comma-delimited options of the form `value=caption:icon`,\n where caption and icon are optional\n- `multiple` allows multiple selection\n- `name` the form field name (for formAssociated support)\n- `other` (default '', meaning other is not allowed) is the caption for other options, allowing\n the user to input their choice. It will be reset to '' if `multiple` is set.\n- `placeholder` is the placeholder displayed in the `<input>` field for **other** responses\n- `localized` automatically localizes captions\n- `required` marks the field as required for form validation\n\n## Styling\n\nThe following CSS variables can be used to control customize the `<tosi-segmented>` component.\n\n --segmented-align-items\n --segmented-direction\n --segmented-option-color\n --segmented-option-current-background\n --segmented-option-current-color\n --segmented-option-font\n --segmented-option-gap\n --segmented-option-grid-columns\n --segmented-option-icon-color\n --segmented-option-padding\n --segmented-options-background\n --segmented-options-border-radius\n --segmented-placeholder-opacity\n*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n varDefault,\n deprecated,\n} from 'tosijs'\nimport { icons } from './icons'\nimport { tosiLocalized } from './localize'\n\nconst { div, slot, label, span, input } = elements\n\ninterface Choice {\n icon?: string | SVGElement\n value: string\n caption: string\n}\n\ninterface SegmentParts {\n [key: string]: HTMLElement\n custom: HTMLInputElement\n options: HTMLElement\n}\n\nexport class TosiSegmented extends WebComponent {\n static preferredTagName = 'tosi-segmented'\n static formAssociated = true\n\n static initAttributes = {\n direction: 'row',\n other: '',\n multiple: false,\n name: '',\n placeholder: 'Please specify…',\n localized: false,\n required: false,\n }\n\n private _choices: Choice[] = []\n\n get choices(): Choice[] {\n return this._choices\n }\n\n set choices(v: Choice[] | string) {\n if (typeof v === 'string') {\n this._choices = TosiSegmented.parseChoicesString(v)\n } else {\n this._choices = v\n }\n this.queueRender()\n }\n\n // Parse choices string format: value=caption:icon (caption and icon are optional)\n private static parseChoicesString(choicesStr: string): Choice[] {\n return choicesStr\n .split(',')\n .filter((c) => c.trim() !== '')\n .map((c) => {\n const [value, remains] = c.split('=').map((v) => v.trim())\n const [caption, iconName] = (remains || value)\n .split(':')\n .map((v) => v.trim())\n\n const icon = iconName ? icons[iconName]() : ''\n return { value, icon, caption }\n })\n }\n\n value = ''\n\n // Form-associated lifecycle callbacks\n formDisabledCallback(disabled: boolean) {\n // Could add disabled support here\n void disabled\n }\n\n formResetCallback() {\n this.value = ''\n }\n\n get values(): string[] {\n return (this.value || '')\n .split(',')\n .map((v) => v.trim())\n .filter((v) => v !== '')\n }\n\n content = () => [\n slot(),\n div({ part: 'options' }, input({ part: 'custom', hidden: true })),\n ]\n\n static shadowStyleSpec = {\n ':host': {\n display: 'inline-flex',\n gap: varDefault.segmentedOptionGap('8px'),\n alignItems: varDefault.segmentedAlignItems('center'),\n },\n ':host, :host::part(options)': {\n flexDirection: varDefault.segmentedDirection('row'),\n },\n ':host label': {\n display: 'inline-grid',\n alignItems: 'center',\n gap: varDefault.segmentedOptionGap('8px'),\n gridTemplateColumns:\n varDefault.segmentedOptionGridColumns('0px 24px 1fr'),\n padding: varDefault.segmentedOptionPadding('4px 12px'),\n font: varDefault.segmentedOptionFont('16px'),\n },\n ':host label:focus': {\n outline: 'none',\n boxShadow: varDefault.segmentedFocusShadow(\n `inset 0 0 0 2px ${varDefault.segmentedOptionCurrentBackground('#44a')}`\n ),\n borderRadius: varDefault.segmentedOptionsBorderRadius('8px'),\n },\n ':host label:has(:checked)': {\n color: varDefault.segmentedOptionCurrentColor('#eee'),\n background: varDefault.segmentedOptionCurrentBackground('#44a'),\n },\n ':host label:has(:checked):focus': {\n boxShadow: varDefault.segmentedCurrentFocusShadow(\n `inset 0 0 0 2px ${varDefault.segmentedOptionCurrentColor('#eee')}`\n ),\n },\n ':host svg': {\n height: varDefault.segmentOptionIconSize('16px'),\n stroke: varDefault.segmentedOptionIconColor('currentColor'),\n },\n ':host label.no-icon': {\n gap: 0,\n gridTemplateColumns: varDefault.segmentedOptionGridColumns('0px 1fr'),\n },\n ':host input[type=\"radio\"], :host input[type=\"checkbox\"]': {\n visibility: varDefault.segmentedInputVisibility('hidden'),\n },\n ':host::part(options)': {\n display: 'flex',\n borderRadius: varDefault.segmentedOptionsBorderRadius('8px'),\n background: varDefault.segmentedOptionsBackground('#fff'),\n color: varDefault.segmentedOptionColor('#222'),\n overflow: 'hidden',\n alignItems: varDefault.segmentedOptionAlignItems('stretch'),\n },\n ':host::part(custom)': {\n padding: varDefault.segmentedOptionPadding('4px 12px'),\n color: varDefault.segmentedOptionCurrentColor('#eee'),\n background: varDefault.segmentedOptionCurrentBackground('#44a'),\n font: varDefault.segmentedOptionFont('16px'),\n border: '0',\n outline: 'none',\n },\n ':host::part(custom)::placeholder': {\n color: varDefault.segmentedOptionCurrentColor('#eee'),\n opacity: varDefault.segmentedPlaceholderOpacity(0.75),\n },\n }\n\n private valueChanged = false\n handleChange = () => {\n const { options, custom } = this.parts as SegmentParts\n if (this.multiple) {\n const inputs = [\n ...options.querySelectorAll('input:checked'),\n ] as HTMLInputElement[]\n this.value = inputs.map((input) => input.value).join(',')\n } else {\n const input = options.querySelector(\n 'input:checked'\n ) as HTMLInputElement | null\n if (!input) {\n this.value = ''\n } else if (input.value) {\n custom.setAttribute('hidden', '')\n this.value = input.value\n } else {\n custom.removeAttribute('hidden')\n custom.focus()\n custom.select()\n this.value = custom.value\n }\n }\n this.valueChanged = true\n }\n\n handleKey = (event: KeyboardEvent) => {\n let blockEvent = false\n switch (event.code) {\n case 'Space':\n if (event.target instanceof HTMLLabelElement) {\n event.target.click()\n blockEvent = true\n }\n break\n case 'Tab':\n if (!(event.target instanceof HTMLLabelElement)) {\n const label = (event.target as HTMLElement).closest(\n 'label'\n ) as HTMLLabelElement\n label.focus()\n }\n break\n case 'ArrowLeft':\n case 'ArrowUp':\n {\n const label = (event.target as HTMLElement).closest(\n 'label'\n ) as HTMLLabelElement\n if (label.previousElementSibling instanceof HTMLLabelElement) {\n label.previousElementSibling.focus!()\n }\n }\n blockEvent = true\n break\n case 'ArrowRight':\n case 'ArrowDown':\n {\n const label = (event.target as HTMLElement).closest(\n 'label'\n ) as HTMLLabelElement\n if (label.nextElementSibling instanceof HTMLLabelElement) {\n label.nextElementSibling.focus!()\n }\n }\n blockEvent = true\n break\n }\n if (blockEvent) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n // Parse choices from HTML attribute if present and not already set programmatically\n const choicesAttr = this.getAttribute('choices')\n if (choicesAttr && this._choices.length === 0) {\n this._choices = TosiSegmented.parseChoicesString(choicesAttr)\n }\n\n const { options } = this.parts\n\n if (this.name === '') {\n this.name = this.instanceId\n }\n\n options.addEventListener('change', this.handleChange)\n options.addEventListener('keydown', this.handleKey as EventListener)\n\n if (this.other && this.multiple) {\n console.warn(\n this,\n 'is set to [other] and [multiple]; [other] will be ignored'\n )\n this.other = ''\n }\n }\n\n private get _choicesWithOther(): Choice[] {\n const options: Choice[] = [...this.choices]\n\n if (this.other && !this.multiple) {\n const [caption, icon] = this.other.split(':')\n options.push({\n value: '',\n caption,\n icon,\n })\n }\n\n return options\n }\n\n get isOtherValue(): boolean {\n return Boolean(\n this.value === '' ||\n (this.value &&\n !this._choicesWithOther.find((choice) => choice.value === this.value))\n )\n }\n\n render() {\n super.render()\n\n if (this.valueChanged) {\n this.valueChanged = false\n return\n }\n\n const { options, custom } = this.parts as SegmentParts\n options.textContent = ''\n const type = this.multiple ? 'checkbox' : 'radio'\n const { values, isOtherValue } = this\n options.append(\n ...this._choicesWithOther.map((choice) => {\n return label(\n { tabindex: 0 },\n input({\n type,\n name: this.name,\n value: choice.value,\n checked:\n values.includes(choice.value) ||\n (choice.value === '' && isOtherValue),\n tabIndex: -1,\n }),\n choice.icon || { class: 'no-icon' },\n this.localized ? tosiLocalized(choice.caption) : span(choice.caption)\n )\n })\n )\n if (this.other && !this.multiple) {\n custom.hidden = !isOtherValue\n custom.value = isOtherValue ? (this.value as string) : ''\n custom.placeholder = this.placeholder\n options.append(custom)\n }\n }\n}\n\n/** @deprecated Use TosiSegmented instead */\nexport type XinSegmented = TosiSegmented\n/** @deprecated Use TosiSegmented instead */\nexport const XinSegmented: typeof TosiSegmented = TosiSegmented\n\nexport const tosiSegmented = TosiSegmented.elementCreator() as ElementCreator<TosiSegmented>\n\n/** @deprecated Use tosiSegmented instead (tag is now tosi-segmented) */\nexport const xinSegmented = deprecated(\n (...args: Parameters<typeof tosiSegmented>) => tosiSegmented(...args),\n 'xinSegmented is deprecated, use tosiSegmented instead (tag is now <tosi-segmented>)'\n) as ElementCreator<TosiSegmented>\n",
|
|
53
|
+
"/*#\n# segmented select\n\nThis is a fairly general-purpose segmented select control.\n\n```html\n<div class=\"grid\">\n <tosi-segmented value=\"yes\" choices=\"yes, no, don't care\">\n Should we?\n </tosi-segmented>\n\n <div>\n <b>Localized!</b><br>\n <tosi-segmented\n localized\n title=\"do you like?\"\n choices=\"yes=Yes:thumbsUp, no=No:thumbsDown\"\n ></tosi-segmented>\n </div>\n\n <tosi-segmented\n style=\"--segmented-direction: column; --segmented-align-items: stretch\"\n choices=\"in a relationship, single\"\n other=\"it's complicated...\"\n placeholder=\"please elaborate\"\n value=\"separated\"\n >\n Relationship Status\n </tosi-segmented>\n\n <tosi-segmented\n multiple\n style=\"--segmented-direction: column; --segmented-align-items: start; --segmented-option-grid-columns: 24px 24px 100px; --segmented-input-visibility: visible;\"\n choices=\"star=Star:star, game=Game:game, bug=Bug:bug, camera=Camera:camera\"\n value=\"star,bug\"\n >\n Pick all that apply\n </tosi-segmented>\n</div>\n```\n```css\n.preview .grid {\n --segmented-option-current-background: var(--brand-color);\n --segmented-option-current-color: var(--brand-text-color);\n padding: 16px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n```\n```js\nfunction logEvent(event) {\n const { target } = event\n if (target.matches('tosi-segmented')) {\n console.log((target.textContent || target.title).trim(), target.value)\n }\n}\npreview.addEventListener('change', logEvent, true)\n```\n```test\nconst segmented = preview.querySelectorAll('tosi-segmented')\ntest('segmented controls render', () => {\n expect(segmented.length).toBe(4)\n})\ntest('first segmented has value \"yes\"', () => {\n expect(segmented[0].value).toBe('yes')\n})\ntest('multiple segmented has array value', () => {\n expect(segmented[3].value).toBe('star,bug')\n})\n```\n\n> Check the console to see the values being set.\n\n## Form Integration\n\n`<tosi-segmented>` is form-associated, meaning it works directly in native `<form>` elements:\n\n```html\n<form class=\"segmented-form\">\n <tosi-segmented name=\"choice\" choices=\"a,b,c\" required></tosi-segmented>\n <button type=\"submit\">Submit</button>\n <span class=\"output\"></span>\n</form>\n```\n```js\nconst form = preview.querySelector('.segmented-form')\nform.addEventListener('submit', (e) => {\n e.preventDefault()\n const data = new FormData(form)\n form.querySelector('.output').textContent = 'Submitted: ' + data.get('choice')\n})\n```\n\n## Properties\n\n- `values` is an array of values (only really useful if `multiple` is set to true)\n\nYou can set `choices` programmatically to an array of `Choice` objects:\n\n interface Choice {\n icon?: string | SVGElement\n value: string\n caption: string\n }\n\n## Attributes\n\n- `choices` is a string of comma-delimited options of the form `value=caption:icon`,\n where caption and icon are optional\n- `multiple` allows multiple selection\n- `name` the form field name (for formAssociated support)\n- `other` (default '', meaning other is not allowed) is the caption for other options, allowing\n the user to input their choice. It will be reset to '' if `multiple` is set.\n- `placeholder` is the placeholder displayed in the `<input>` field for **other** responses\n- `localized` automatically localizes captions\n- `required` marks the field as required for form validation\n\n## Styling\n\nThe following CSS variables can be used to control customize the `<tosi-segmented>` component.\n\n --segmented-align-items\n --segmented-direction\n --segmented-option-color\n --segmented-option-current-background\n --segmented-option-current-color\n --segmented-option-font\n --segmented-option-gap\n --segmented-option-grid-columns\n --segmented-option-icon-color\n --segmented-option-padding\n --segmented-options-background\n --segmented-options-border-radius\n --segmented-placeholder-opacity\n*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n varDefault,\n deprecated,\n} from 'tosijs'\nimport { icons } from './icons'\nimport { tosiLocalized } from './localize'\n\nconst { div, slot, label, span, input } = elements\n\ninterface Choice {\n icon?: string | SVGElement\n value: string\n caption: string\n}\n\ninterface SegmentParts {\n [key: string]: HTMLElement\n custom: HTMLInputElement\n options: HTMLElement\n}\n\nexport class TosiSegmented extends WebComponent {\n static preferredTagName = 'tosi-segmented'\n static formAssociated = true\n\n static initAttributes = {\n direction: 'row',\n other: '',\n multiple: false,\n name: '',\n placeholder: 'Please specify…',\n localized: false,\n required: false,\n }\n\n private _choices: Choice[] = []\n\n get choices(): Choice[] {\n return this._choices\n }\n\n set choices(v: Choice[] | string) {\n if (typeof v === 'string') {\n this._choices = TosiSegmented.parseChoicesString(v)\n } else {\n this._choices = v\n }\n this.queueRender()\n }\n\n // Parse choices string format: value=caption:icon (caption and icon are optional)\n private static parseChoicesString(choicesStr: string): Choice[] {\n return choicesStr\n .split(',')\n .filter((c) => c.trim() !== '')\n .map((c) => {\n const [value, remains] = c.split('=').map((v) => v.trim())\n const [caption, iconName] = (remains || value)\n .split(':')\n .map((v) => v.trim())\n\n const icon = iconName ? icons[iconName]() : ''\n return { value, icon, caption }\n })\n }\n\n value = ''\n\n // Form-associated lifecycle callbacks\n formDisabledCallback(disabled: boolean) {\n // Could add disabled support here\n void disabled\n }\n\n formResetCallback() {\n this.value = ''\n }\n\n get values(): string[] {\n return (this.value || '')\n .split(',')\n .map((v) => v.trim())\n .filter((v) => v !== '')\n }\n\n content = () => [\n slot(),\n div({ part: 'options' }, input({ part: 'custom', hidden: true })),\n ]\n\n static shadowStyleSpec = {\n ':host': {\n display: 'inline-flex',\n gap: varDefault.segmentedOptionGap('8px'),\n alignItems: varDefault.segmentedAlignItems('center'),\n },\n ':host, :host::part(options)': {\n flexDirection: varDefault.segmentedDirection('row'),\n },\n ':host label': {\n display: 'inline-grid',\n alignItems: 'center',\n gap: varDefault.segmentedOptionGap('8px'),\n gridTemplateColumns:\n varDefault.segmentedOptionGridColumns('0px 24px 1fr'),\n padding: varDefault.segmentedOptionPadding('4px 12px'),\n font: varDefault.segmentedOptionFont('16px'),\n },\n ':host label:focus': {\n outline: 'none',\n boxShadow: varDefault.segmentedFocusShadow(\n `inset 0 0 0 2px ${varDefault.segmentedOptionCurrentBackground('#44a')}`\n ),\n borderRadius: varDefault.segmentedOptionsBorderRadius('8px'),\n },\n // Selection highlight is driven by an explicit `.current` class rather than\n // `label:has(:checked)`. Firefox does not reliably re-evaluate `:has(:checked)`\n // when a descendant radio's checked state changes via interaction, leaving the\n // previously-selected segment highlighted (works in Chrome/Safari).\n ':host label.current': {\n color: varDefault.segmentedOptionCurrentColor('#eee'),\n background: varDefault.segmentedOptionCurrentBackground('#44a'),\n },\n ':host label.current:focus': {\n boxShadow: varDefault.segmentedCurrentFocusShadow(\n `inset 0 0 0 2px ${varDefault.segmentedOptionCurrentColor('#eee')}`\n ),\n },\n ':host svg': {\n height: varDefault.segmentOptionIconSize('16px'),\n stroke: varDefault.segmentedOptionIconColor('currentColor'),\n },\n ':host label.no-icon': {\n gap: 0,\n gridTemplateColumns: varDefault.segmentedOptionGridColumns('0px 1fr'),\n },\n ':host input[type=\"radio\"], :host input[type=\"checkbox\"]': {\n visibility: varDefault.segmentedInputVisibility('hidden'),\n },\n ':host::part(options)': {\n display: 'flex',\n borderRadius: varDefault.segmentedOptionsBorderRadius('8px'),\n background: varDefault.segmentedOptionsBackground('#fff'),\n color: varDefault.segmentedOptionColor('#222'),\n overflow: 'hidden',\n alignItems: varDefault.segmentedOptionAlignItems('stretch'),\n },\n ':host::part(custom)': {\n padding: varDefault.segmentedOptionPadding('4px 12px'),\n color: varDefault.segmentedOptionCurrentColor('#eee'),\n background: varDefault.segmentedOptionCurrentBackground('#44a'),\n font: varDefault.segmentedOptionFont('16px'),\n border: '0',\n outline: 'none',\n },\n ':host::part(custom)::placeholder': {\n color: varDefault.segmentedOptionCurrentColor('#eee'),\n opacity: varDefault.segmentedPlaceholderOpacity(0.75),\n },\n }\n\n // Reflects each radio/checkbox's checked state onto its containing label as a\n // `.current` class so the selection highlight updates reliably (see note on the\n // `.current` style rule).\n private syncCurrent() {\n const { options } = this.parts as SegmentParts\n options.querySelectorAll('label').forEach((label) => {\n const input = label.querySelector('input')\n label.classList.toggle('current', Boolean(input && input.checked))\n })\n }\n\n private valueChanged = false\n handleChange = () => {\n const { options, custom } = this.parts as SegmentParts\n if (this.multiple) {\n const inputs = [\n ...options.querySelectorAll('input:checked'),\n ] as HTMLInputElement[]\n this.value = inputs.map((input) => input.value).join(',')\n } else {\n const input = options.querySelector(\n 'input:checked'\n ) as HTMLInputElement | null\n if (!input) {\n this.value = ''\n } else if (input.value) {\n custom.setAttribute('hidden', '')\n this.value = input.value\n } else {\n custom.removeAttribute('hidden')\n custom.focus()\n custom.select()\n this.value = custom.value\n }\n }\n this.syncCurrent()\n this.valueChanged = true\n }\n\n handleKey = (event: KeyboardEvent) => {\n let blockEvent = false\n switch (event.code) {\n case 'Space':\n if (event.target instanceof HTMLLabelElement) {\n event.target.click()\n blockEvent = true\n }\n break\n case 'Tab':\n if (!(event.target instanceof HTMLLabelElement)) {\n const label = (event.target as HTMLElement).closest(\n 'label'\n ) as HTMLLabelElement\n label.focus()\n }\n break\n case 'ArrowLeft':\n case 'ArrowUp':\n {\n const label = (event.target as HTMLElement).closest(\n 'label'\n ) as HTMLLabelElement\n if (label.previousElementSibling instanceof HTMLLabelElement) {\n label.previousElementSibling.focus!()\n }\n }\n blockEvent = true\n break\n case 'ArrowRight':\n case 'ArrowDown':\n {\n const label = (event.target as HTMLElement).closest(\n 'label'\n ) as HTMLLabelElement\n if (label.nextElementSibling instanceof HTMLLabelElement) {\n label.nextElementSibling.focus!()\n }\n }\n blockEvent = true\n break\n }\n if (blockEvent) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n // Parse choices from HTML attribute if present and not already set programmatically\n const choicesAttr = this.getAttribute('choices')\n if (choicesAttr && this._choices.length === 0) {\n this._choices = TosiSegmented.parseChoicesString(choicesAttr)\n }\n\n const { options } = this.parts\n\n if (this.name === '') {\n this.name = this.instanceId\n }\n\n options.addEventListener('change', this.handleChange)\n options.addEventListener('keydown', this.handleKey as EventListener)\n\n if (this.other && this.multiple) {\n console.warn(\n this,\n 'is set to [other] and [multiple]; [other] will be ignored'\n )\n this.other = ''\n }\n }\n\n private get _choicesWithOther(): Choice[] {\n const options: Choice[] = [...this.choices]\n\n if (this.other && !this.multiple) {\n const [caption, icon] = this.other.split(':')\n options.push({\n value: '',\n caption,\n icon,\n })\n }\n\n return options\n }\n\n get isOtherValue(): boolean {\n return Boolean(\n this.value === '' ||\n (this.value &&\n !this._choicesWithOther.find((choice) => choice.value === this.value))\n )\n }\n\n render() {\n super.render()\n\n if (this.valueChanged) {\n this.valueChanged = false\n return\n }\n\n const { options, custom } = this.parts as SegmentParts\n options.textContent = ''\n const type = this.multiple ? 'checkbox' : 'radio'\n const { values, isOtherValue } = this\n options.append(\n ...this._choicesWithOther.map((choice) => {\n return label(\n { tabindex: 0 },\n input({\n type,\n name: this.name,\n value: choice.value,\n checked:\n values.includes(choice.value) ||\n (choice.value === '' && isOtherValue),\n tabIndex: -1,\n }),\n choice.icon || { class: 'no-icon' },\n this.localized ? tosiLocalized(choice.caption) : span(choice.caption)\n )\n })\n )\n if (this.other && !this.multiple) {\n custom.hidden = !isOtherValue\n custom.value = isOtherValue ? (this.value as string) : ''\n custom.placeholder = this.placeholder\n options.append(custom)\n }\n this.syncCurrent()\n }\n}\n\n/** @deprecated Use TosiSegmented instead */\nexport type XinSegmented = TosiSegmented\n/** @deprecated Use TosiSegmented instead */\nexport const XinSegmented: typeof TosiSegmented = TosiSegmented\n\nexport const tosiSegmented = TosiSegmented.elementCreator() as ElementCreator<TosiSegmented>\n\n/** @deprecated Use tosiSegmented instead (tag is now tosi-segmented) */\nexport const xinSegmented = deprecated(\n (...args: Parameters<typeof tosiSegmented>) => tosiSegmented(...args),\n 'xinSegmented is deprecated, use tosiSegmented instead (tag is now <tosi-segmented>)'\n) as ElementCreator<TosiSegmented>\n",
|
|
54
54
|
"import { Component as WebComponent, ElementCreator, elements } from 'tosijs'\n\nconst { slot } = elements\n\n/*#\n# size-break\n\nWhile we wait for enough browsers to implement [container-queries](https://www.w3.org/TR/css-contain-3/),\nand in any event when you simply want to do different things at different sizes (e.g. in the project I'm\nworking on right now, a row of buttons turns into a menu at narrow widths) there's `<tosi-sizebreak>`.\n\nNote that the sizes referred to are of the `<tosi-sizebreak>`'s `.offsetParent`, and it watches for\nthe window's `resize` events and its own (via `ResizeObserver`).\n\n```html\n<div class=\"container\">\n <tosi-sizebreak min-width=\"300\" min-height=\"150\">\n <h1>BIG!</h1>\n <i slot=\"small\">little</i>\n </tosi-sizebreak>\n <tosi-sizer></tosi-sizer>\n</div>\n```\n```css\n.preview {\n touch-action: none;\n}\n\n.preview tosi-sizebreak {\n width: 100%;\n height: 100%;\n background: #fff8;\n border: 1px solid #aaa;\n}\n\n.preview tosi-sizebreak * {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n\n.preview .container {\n position: relative;\n min-width: 100px;\n min-height: 40px;\n max-height: 100%;\n width: 400px;\n height: 100px;\n}\n\n.preview .sizer {\n position: absolute;\n width: 24px;\n height: 24px;\n line-height: 24px;\n text-align: center;\n background: #0002;\n bottom: 0;\n right: 0;\n cursor: nwse-resize;\n opacity: 0.5;\n}\n\n.preview .sizer:hover {\n opacity: 1.0;\n}\n```\n\n`<tosi-sizebreak>` supports both `min-width` and/or `min-height`, and you can of course target only one\nof the slots if you like. The demo site uses them to hide the [bundlejs](https://bundlejs.com/) badge when\nspace is tight.\n*/\n\nexport class SizeBreak extends WebComponent {\n static preferredTagName = 'tosi-sizebreak'\n\n static initAttributes = {\n minWidth: 0,\n minHeight: 0,\n }\n\n value: 'normal' | 'small' = 'normal'\n\n content = [slot({ part: 'normal' }), slot({ part: 'small', name: 'small' })]\n\n static shadowStyleSpec = {\n ':host': {\n display: 'inline-block',\n position: 'relative',\n },\n }\n\n onResize = () => {\n const { normal, small } = this.parts as { [key: string]: HTMLElement }\n const parent = this.offsetParent as HTMLElement | null\n if (!(parent instanceof HTMLElement)) {\n return\n } else if (\n parent.offsetWidth < this.minWidth ||\n parent.offsetHeight < this.minHeight\n ) {\n normal.hidden = true\n small.hidden = false\n this.value = 'small'\n } else {\n normal.hidden = false\n small.hidden = true\n this.value = 'normal'\n }\n }\n\n // TODO trigger a resize event when an ancestor element\n // is inserted or moved into the DOM.\n connectedCallback(): void {\n super.connectedCallback()\n globalThis.addEventListener('resize', this.onResize)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n globalThis.removeEventListener('resize', this.onResize)\n }\n}\n\nexport const sizeBreak = SizeBreak.elementCreator() as ElementCreator<SizeBreak>\n",
|
|
55
55
|
"/*#\n# sizer\n\nThis is a super-simple component that you can put in a fixed size element allowing it to be resized\nfrom the bottom-right.\n\n```html\n<div>\n <tosi-sizer></tosi-sizer>\n</div>\n```\n```css\n.preview div {\n position: absolute;\n top: 10px;\n left: 10px;\n width: 200px;\n height: 100px;\n background: #ff02;\n border: 1px solid #555;\n}\n```\n\n<tosi-css-var-editor element-selector=\"tosi-sizer\"></tosi-css-var-editor>\n*/\n\nimport { Component as XinComponent, ElementCreator, vars } from 'tosijs'\nimport { icons } from './icons'\nimport { trackDrag } from './track-drag'\n\nexport class TosiSizer extends XinComponent {\n static preferredTagName = 'tosi-sizer'\n target?: HTMLElement | null = null\n\n static shadowStyleSpec = {\n ':host': {\n _resizeIconFill: '#222',\n display: 'block',\n position: 'absolute',\n bottom: -7,\n right: -7,\n padding: 14,\n width: 44,\n height: 44,\n opacity: 0.25,\n transition: 'opacity 0.25s ease-out',\n },\n ':host(:hover)': {\n opacity: 0.5,\n },\n ':host svg': {\n width: 16,\n height: 16,\n stroke: vars.resizeIconFill,\n },\n }\n\n content = icons.resize()\n\n get minSize(): { width: number; height: number } {\n const { minWidth, minHeight } = getComputedStyle(this.target!)\n return {\n width: parseFloat(minWidth) || 32,\n height: parseFloat(minHeight) || 32,\n }\n }\n\n resizeTarget = (event: Event): void => {\n const { target } = this\n if (!target) return\n const w = target.offsetWidth\n const h = target.offsetHeight\n target.style.left = target.offsetLeft + 'px'\n target.style.top = target.offsetTop + 'px'\n target.style.bottom = ''\n target.style.right = ''\n const { minSize } = this\n\n trackDrag(\n event as PointerEvent,\n (dx: number, dy: number, event: any): true | undefined => {\n target.style.width = Math.max(minSize.width, w + dx) + 'px'\n target.style.height = Math.max(minSize.height, h + dy) + 'px'\n if (event.type === 'mouseup') {\n return true\n }\n },\n 'nwse-resize'\n )\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n if (!this.target) {\n this.target = this.parentElement\n }\n\n const PASSIVE = { passive: true }\n this.addEventListener('mousedown', this.resizeTarget, PASSIVE)\n this.addEventListener('touchstart', this.resizeTarget, PASSIVE)\n }\n}\n\n/** @deprecated Use TosiSizer instead */\nexport type XinSizer = TosiSizer\n/** @deprecated Use TosiSizer instead */\nexport const XinSizer: typeof TosiSizer = TosiSizer\n\nexport const tosiSizer = TosiSizer.elementCreator() as ElementCreator<TosiSizer>\n\n/** @deprecated Use tosiSizer instead */\nexport const xinSizer = tosiSizer\n",
|
|
56
56
|
"/*#\n# tag-list\n\nBuilding a tag-list from standard HTML elements is a bit of a nightmare.\n\n`<tosi-tag-list>` allows you to display an editable or read-only tag list (represented either\nas a comma-delimited string or an array of strings).\n\n```html\n<label style=\"position: absolute; right: 10px; top: 10px; display: block\">\n <input type=\"checkbox\" class=\"disable-toggle\">\n <b>Disable All</b>\n</label>\n<label>\n <b>Display Only</b>\n <tosi-tag-list\n value=\"this,that,,the-other\"\n ></tosi-tag-list>\n</label>\n<tosi-tag-list\n class=\"compact\"\n value=\"this,that,,the-other\"\n></tosi-tag-list>\n<br>\n<label>\n <b>Editable</b>\n <tosi-tag-list\n class=\"editable-tag-list\"\n value=\"belongs,also belongs,has\\, comma,custom\"\n editable\n available-tags=\"belongs,also belongs,has\\, comma,not initially chosen\"\n ></tosi-tag-list>\n</label>\n<br>\n<b>Text-Entry</b>\n<tosi-tag-list\n value=\"this,that,the-other,not,enough,space\"\n editable\n text-entry\n available-tags=\"tomasina,dick,,harriet\"\n></tosi-tag-list>\n```\n```css\n.preview .compact {\n --spacing: 8px;\n --font-size: 12px;\n --line-height: 18px;\n}\n.preview label {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n```\n```js\npreview.addEventListener('change', (event) => {\n if (event.target.matches('tosi-tag-list')) {\n console.log(event.target, event.target.value)\n }\n}, true)\npreview.querySelector('.disable-toggle').addEventListener('change', (event) => {\n const tagLists = Array.from(preview.querySelectorAll('tosi-tag-list'))\n for(const tagList of tagLists) {\n tagList.disabled = event.target.checked\n }\n})\n```\n```test\nconst tagLists = preview.querySelectorAll('tosi-tag-list')\ntest('tag-lists render', () => {\n expect(tagLists.length).toBe(4)\n})\ntest('first tag-list has correct tags', () => {\n expect(tagLists[0].tags.length).toBe(3)\n expect(tagLists[0].tags).toContain('this')\n})\ntest('editable tag-list has editable attribute', () => {\n expect(tagLists[2].editable).toBe(true)\n})\ntest('a comma inside a tag survives the value round-trip', () => {\n const tl = document.createElement('tosi-tag-list')\n tl.tags = ['New York, NY', 'Boston']\n // the literal comma is escaped in `value` so it is not a delimiter\n expect(tl.value).toBe('New York\\\\, NY,Boston')\n expect(tl.tags.length).toBe(2)\n expect(tl.tags).toContain('New York, NY')\n})\ntest('an escaped comma in a value string parses as one tag', () => {\n const tl = document.createElement('tosi-tag-list')\n tl.value = 'New York\\\\, NY,Boston'\n expect(tl.tags.length).toBe(2)\n expect(tl.tags).toContain('New York, NY')\n})\n```\n\n## Properties\n\n### `value`: string | string[]\n\nA comma-delimited list of tags. A tag that itself contains a comma must\nescape it as `\\,` — e.g. `value=\"New York\\, NY,Boston\"` is two tags. The\n`tags` accessor handles this escaping for you in both directions.\n\n### `tags`: string[]\n\n## `popSelectMenu`: () => void\n\nThis is the method called when the user clicks the menu button. By default is displays a\npick list of tags, but if you wish to customize the behavior, just replace this method.\n\nA read-only property giving the value as an array.\n\n### `available-tags`: string | string[]\n\nA list of tags that will be displayed in the popup menu by default. The popup menu\nwill always display custom tags (allowing their removal). As with `value`, a\ncomma inside a tag must be escaped as `\\,` when set via the attribute string.\n\n### `editable`: boolean\n\nAllows the tag list to be modified via menu and removing tags.\n\n### `text-entry`: boolean\n\nIf `editable`, an input field is provided for entering tags directly.\n\n### `placeholder`: string = 'enter tags'\n\nPlaceholder shown on input field.\n*/\n\nimport {\n Component as WebComponent,\n elements,\n vars,\n varDefault,\n ElementCreator,\n deprecated,\n XinStyleSheet,\n} from 'tosijs'\nimport { popMenu, MenuItem } from './menu'\nimport { icons } from './icons'\n\nconst { div, input, span, button } = elements\n\n// Tags are serialised as a comma-delimited string (the form `value`). A\n// literal comma inside a tag is escaped as `\\,` so it survives the\n// split/join round-trip — both in programmatic values and in the\n// `value` / `available-tags` HTML attributes.\nconst splitTags = (str: string): string[] =>\n str.split(/(?<!\\\\),/).map((tag) => tag.trim().replace(/\\\\,/g, ','))\n\nconst joinTags = (tags: string[]): string =>\n tags.map((tag) => tag.replace(/,/g, '\\\\,')).join(',')\n\nexport class TosiTag extends WebComponent {\n static preferredTagName = 'tosi-tag'\n\n static lightStyleSpec = {\n ':host': {\n '--tag-close-button-color': '#000c',\n '--tag-close-button-bg': '#fffc',\n '--tag-button-opacity': '0.5',\n '--tag-button-hover-opacity': '0.75',\n '--tag-bg': varDefault.brandColor('blue'),\n '--tag-text-color': varDefault.brandTextColor('white'),\n display: 'inline-flex',\n borderRadius: varDefault.tagRoundedRadius(vars.spacing50),\n color: vars.tagTextColor,\n background: vars.tagBg,\n padding: `0 ${vars.spacing75} 0 ${vars.spacing75}`,\n height: `calc(${vars.lineHeight} + ${vars.spacing50})`,\n lineHeight: `calc(${vars.lineHeight} + ${vars.spacing50})`,\n },\n ':host > [part=\"caption\"]': {\n position: 'relative',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n flex: '1 1 auto',\n fontSize: varDefault.fontSize('16px'),\n color: vars.tagTextColor,\n textOverflow: 'ellipsis',\n },\n ':host [part=\"remove\"]': {\n boxShadow: 'none',\n margin: `0 ${vars.spacing_50} 0 ${vars.spacing25}`,\n padding: 0,\n display: 'inline-flex',\n alignItems: 'center',\n alignSelf: 'center',\n justifyContent: 'center',\n height: vars.spacing150,\n width: vars.spacing150,\n color: vars.tagCloseButtonColor,\n background: vars.tagCloseButtonBg,\n borderRadius: varDefault.tagCloseButtonRadius('99px'),\n opacity: vars.tagButtonOpacity,\n },\n ':host [part=\"remove\"]:hover': {\n background: vars.tagCloseButtonBg,\n opacity: vars.tagButtonHoverOpacity,\n },\n }\n\n static initAttributes = {\n caption: '',\n removeable: false,\n }\n\n removeCallback: (event: Event) => void = () => {\n this.remove()\n }\n\n content = () => [\n span({ part: 'caption' }, this.caption),\n button(icons.x(), {\n type: 'button',\n part: 'remove',\n hidden: !this.removeable,\n ariaLabel: `Remove ${this.caption}`,\n onClick: this.removeCallback,\n }),\n ]\n}\n\n/** @deprecated Use TosiTag instead */\nexport type XinTag = TosiTag\n/** @deprecated Use TosiTag instead */\nexport const XinTag: typeof TosiTag = TosiTag\n\nexport const tosiTag = TosiTag.elementCreator() as ElementCreator<TosiTag>\n\n/** @deprecated Use tosiTag instead */\nexport const xinTag = deprecated(\n (...args: Parameters<typeof tosiTag>) => tosiTag(...args),\n 'xinTag is deprecated, use tosiTag instead (tag is now <tosi-tag>)'\n) as ElementCreator<TosiTag>\n\ninterface Tag {\n value: string\n caption?: string\n color?: string\n background?: string\n icon?: string | HTMLElement\n}\n\ntype TagList = (string | Tag | null)[]\n\nexport class TosiTagList extends WebComponent {\n static preferredTagName = 'tosi-tag-list'\n\n static lightStyleSpec: XinStyleSheet = {\n ':host': {\n '--tag-list-bg': '#f8f8f8',\n '--touch-size': '44px',\n '--spacing': '16px',\n display: 'grid',\n gridTemplateColumns: 'auto',\n alignItems: 'center',\n background: vars.tagListBg,\n gap: vars.spacing25,\n borderRadius: varDefault.taglistRoundedRadius(vars.spacing50),\n overflow: 'hidden',\n },\n ':host[editable]': {\n gridTemplateColumns: `0px auto ${vars.touchSize}`,\n },\n ':host[editable][text-entry]': {\n gridTemplateColumns: `0px 2fr 1fr ${vars.touchSize}`,\n },\n ':host [part=\"tagContainer\"]': {\n display: 'flex',\n content: '\" \"',\n alignItems: 'center',\n background: vars.inputBg,\n borderRadius: varDefault.tagContainerRadius(vars.spacing50),\n boxShadow: vars.borderShadow,\n flexWrap: 'nowrap',\n overflow: 'auto hidden',\n gap: vars.spacing25,\n minHeight: `calc(${vars.lineHeight} + ${vars.spacing})`,\n padding: vars.spacing25,\n },\n ':host [part=\"tagMenu\"]': {\n width: vars.touchSize,\n height: vars.touchSize,\n lineHeight: vars.touchSize,\n textAlign: 'center',\n padding: 0,\n margin: 0,\n },\n ':host [hidden]': {\n display: 'none !important',\n },\n ':host button[part=\"tagMenu\"]': {\n background: vars.brandColor,\n color: vars.brandTextColor,\n },\n }\n\n static formAssociated = true\n\n static initAttributes = {\n name: '',\n textEntry: false,\n editable: false,\n placeholder: 'enter tags',\n disabled: false,\n required: false,\n }\n\n // value is the source of truth (Component watches this for form handling)\n value = ''\n\n // tags parses value into array\n get tags(): string[] {\n return splitTags(this.value).filter((tag) => tag !== '')\n }\n\n set tags(v: string[]) {\n this.value = joinTags(v)\n }\n\n private _availableTags: TagList = []\n\n get availableTags(): TagList {\n return this._availableTags\n }\n\n set availableTags(v: TagList | string) {\n if (typeof v === 'string') {\n this._availableTags = TosiTagList.parseAvailableTagsString(v)\n } else {\n this._availableTags = v\n }\n this.queueRender()\n }\n\n // Parse available-tags string (comma-delimited; `\\,` is a literal comma).\n private static parseAvailableTagsString(tagsStr: string): TagList {\n return splitTags(tagsStr).map((tag) => (tag === '' ? null : tag))\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n // Parse available-tags from HTML attribute if present and not already set programmatically\n const tagsAttr = this.getAttribute('available-tags')\n if (tagsAttr && this._availableTags.length === 0) {\n this._availableTags = TosiTagList.parseAvailableTagsString(tagsAttr)\n }\n }\n\n // Form lifecycle callbacks\n formDisabledCallback(disabled: boolean): void {\n this.disabled = disabled\n }\n\n formResetCallback(): void {\n this.value = ''\n }\n\n addTag = (tag: string) => {\n const trimmed = tag.trim()\n if (trimmed === '' || this.tags.includes(trimmed)) {\n return\n }\n this.tags = [...this.tags, trimmed]\n this.queueRender(true)\n }\n\n toggleTag = (toggled: string) => {\n if (this.tags.includes(toggled)) {\n this.tags = this.tags.filter((t) => t !== toggled)\n this.queueRender(true)\n } else {\n this.addTag(toggled)\n }\n }\n\n enterTag = (event: KeyboardEvent) => {\n const { tagInput } = this.parts as { tagInput: HTMLInputElement }\n switch (event.key) {\n case ',':\n {\n const tag = tagInput.value.split(',')[0]\n this.addTag(tag)\n }\n break\n case 'Enter':\n {\n const tag = tagInput.value.split(',')[0]\n this.addTag(tag)\n }\n event.stopPropagation()\n event.preventDefault()\n break\n default:\n // do nothing\n }\n }\n\n popSelectMenu = () => {\n const { toggleTag } = this\n const { tagMenu } = this.parts\n const tags: TagList = [...this.availableTags]\n const extraTags = this.tags.filter((tag) => !tags.includes(tag))\n if (extraTags.length) {\n tags.push(null, ...extraTags)\n }\n const menuItems: MenuItem[] = tags.map((tag) => {\n if (tag === '' || tag === null) {\n return null\n } else if (typeof tag === 'object') {\n return {\n checked: () => this.tags.includes(tag.value),\n caption: tag.caption!,\n action() {\n toggleTag(tag.value)\n },\n }\n } else {\n return {\n checked: () => this.tags.includes(tag),\n caption: tag,\n action() {\n toggleTag(tag)\n },\n }\n }\n })\n\n popMenu({\n target: tagMenu as HTMLElement,\n width: 'auto',\n menuItems,\n })\n }\n\n content = () => [\n // this button is simply here to eat click events sent via a label\n button({ type: 'button', style: { visibility: 'hidden' }, tabindex: -1 }),\n div({\n part: 'tagContainer',\n class: 'row',\n role: 'list',\n ariaLabel: 'Selected tags',\n }),\n input({\n part: 'tagInput',\n class: 'elastic',\n ariaLabel: 'Enter new tag',\n onKeydown: this.enterTag,\n }),\n button(\n {\n type: 'button',\n title: 'add tag',\n ariaLabel: 'Select tags from list',\n ariaHaspopup: 'listbox',\n part: 'tagMenu',\n onClick: this.popSelectMenu,\n },\n icons.chevronDown()\n ),\n ]\n\n removeTag = (event: Event) => {\n if (this.editable && !this.disabled) {\n const tag = (event.target as HTMLElement).closest(\n TosiTag.tagName!\n ) as TosiTag\n this.tags = this.tags.filter((t) => t !== tag.caption)\n tag.remove()\n this.queueRender(true)\n }\n event.stopPropagation()\n event.preventDefault()\n }\n\n render(): void {\n super.render()\n\n const { tagContainer, tagMenu, tagInput } = this.parts as {\n tagContainer: HTMLDivElement\n tagMenu: HTMLButtonElement\n tagInput: HTMLInputElement\n }\n\n tagMenu.disabled = this.disabled\n tagInput.value = ''\n tagInput.setAttribute('placeholder', this.placeholder)\n if (this.editable && !this.disabled) {\n tagMenu.toggleAttribute('hidden', false)\n tagInput.toggleAttribute('hidden', !this.textEntry)\n } else {\n tagMenu.toggleAttribute('hidden', true)\n tagInput.toggleAttribute('hidden', true)\n }\n\n tagContainer.textContent = ''\n for (const tag of this.tags) {\n tagContainer.append(\n tosiTag({\n caption: tag,\n removeable: this.editable && !this.disabled,\n removeCallback: this.removeTag,\n })\n )\n }\n }\n}\n\n/** @deprecated Use TosiTagList instead */\nexport type XinTagList = TosiTagList\n/** @deprecated Use TosiTagList instead */\nexport const XinTagList: typeof TosiTagList = TosiTagList\n\nexport const tosiTagList =\n TosiTagList.elementCreator() as ElementCreator<TosiTagList>\n\n/** @deprecated Use tosiTagList instead */\nexport const xinTagList = deprecated(\n (...args: Parameters<typeof tosiTagList>) => tosiTagList(...args),\n 'xinTagList is deprecated, use tosiTagList instead (tag is now <tosi-tag-list>)'\n) as ElementCreator<TosiTagList>\n",
|
|
57
|
-
"export const version = '1.5.
|
|
57
|
+
"export const version = '1.5.23'",
|
|
58
58
|
"/*#\n# tooltip\n\nAutomatic tooltips for any element with `data-tooltip` or `title` attributes.\nCall `initTooltips()` once to activate. By default, `title` attributes are\nconverted to `data-tooltip` on hover so the browser's native tooltip is\nreplaced.\n\nTooltip text is parsed as **markdown** (if `marked` is available), so you\ncan use `*bold*`, `` `code` ``, links, etc.\n\n```js\nimport { elements } from 'tosijs'\nimport { initTooltips } from 'tosijs-ui'\n\nconst { button, div } = elements\n\ninitTooltips()\n\npreview.append(\n div(\n { style: { display: 'flex', gap: '12px', flexWrap: 'wrap', alignItems: 'center' } },\n button({ dataTooltip: 'Save your work' }, 'Save'),\n button({ dataTooltip: '**Bold** and `code` work' }, 'Markdown'),\n button({ title: 'This was a title attribute' }, 'Title → Tooltip'),\n )\n)\n```\n\n## Options\n\n```\ninitTooltips({\n convertTitles: true, // convert title attrs to data-tooltip (default true)\n delay: 250, // ms before showing (default 250)\n localize: false, // pass tooltip text through localize() (default false)\n})\n```\n*/\n\nimport { elements, StyleSheet, varDefault } from 'tosijs'\nimport { marked } from 'marked'\nimport { popFloat, FloatPosition } from './pop-float'\nimport { TosiFloat } from './float'\nimport { localize } from './localize'\n\nconst { span } = elements\n\nexport interface TooltipOptions {\n convertTitles?: boolean\n delay?: number\n localize?: boolean\n}\n\nlet tooltipFloat: TosiFloat | null = null\nlet showTimeout: ReturnType<typeof setTimeout> | null = null\nlet currentTarget: HTMLElement | null = null\n\nconst TOOLTIP_CLASS = 'tosi-tooltip'\n\nStyleSheet('tosi-tooltip', {\n [`.${TOOLTIP_CLASS}`]: {\n pointerEvents: 'none',\n padding: varDefault.tosiTooltipPadding('4px 10px'),\n borderRadius: varDefault.tosiTooltipRadius('6px'),\n background: varDefault.tosiTooltipBg('#333'),\n color: varDefault.tosiTooltipColor('#fff'),\n fontSize: varDefault.tosiTooltipFontSize('13px'),\n lineHeight: '1.4',\n maxWidth: varDefault.tosiTooltipMaxWidth('280px'),\n whiteSpace: 'pre-line',\n boxShadow: '0 2px 8px #0003',\n position: 'relative',\n },\n [`.${TOOLTIP_CLASS} p`]: {\n margin: '0',\n },\n [`.${TOOLTIP_CLASS} code`]: {\n background: '#fff2',\n padding: '0 4px',\n borderRadius: '3px',\n fontSize: '0.9em',\n },\n [`.${TOOLTIP_CLASS} a`]: {\n color: 'inherit',\n },\n [`.${TOOLTIP_CLASS}::before`]: {\n content: '\"\"',\n position: 'absolute',\n width: '8px',\n height: '8px',\n background: 'inherit',\n transform: 'rotate(45deg)',\n },\n [`.${TOOLTIP_CLASS}.tt-s::before`]: {\n top: '-4px',\n left: 'var(--tosi-tooltip-arrow)',\n },\n [`.${TOOLTIP_CLASS}.tt-n::before`]: {\n bottom: '-4px',\n left: 'var(--tosi-tooltip-arrow)',\n },\n [`.${TOOLTIP_CLASS}.tt-e::before`]: {\n left: '-4px',\n top: 'var(--tosi-tooltip-arrow)',\n },\n [`.${TOOLTIP_CLASS}.tt-w::before`]: {\n right: '-4px',\n top: 'var(--tosi-tooltip-arrow)',\n },\n})\n\nfunction hideTooltip(): void {\n if (showTimeout !== null) {\n clearTimeout(showTimeout)\n showTimeout = null\n }\n if (tooltipFloat !== null) {\n tooltipFloat.remove()\n tooltipFloat = null\n }\n currentTarget = null\n}\n\nfunction arrowClass(position: FloatPosition): string {\n if (position.startsWith('s')) return 'tt-s'\n if (position.startsWith('n')) return 'tt-n'\n if (position.startsWith('e')) return 'tt-e'\n if (position.startsWith('w')) return 'tt-w'\n return 'tt-s'\n}\n\nfunction positionArrow(\n tooltipEl: HTMLElement,\n target: HTMLElement,\n position: FloatPosition\n): void {\n const targetRect = target.getBoundingClientRect()\n const tipRect = tooltipEl.getBoundingClientRect()\n const targetCx = targetRect.left + targetRect.width * 0.5\n const targetCy = targetRect.top + targetRect.height * 0.5\n\n let offset: number\n if (position.startsWith('s') || position.startsWith('n')) {\n offset =\n Math.max(8, Math.min(tipRect.width - 8, targetCx - tipRect.left)) - 4\n } else {\n offset =\n Math.max(8, Math.min(tipRect.height - 8, targetCy - tipRect.top)) - 4\n }\n tooltipEl.style.setProperty('--tosi-tooltip-arrow', offset + 'px')\n}\n\nfunction renderText(text: string, useLocalize: boolean): HTMLElement {\n if (useLocalize) {\n text = localize(text)\n }\n const el = span({ class: TOOLTIP_CLASS })\n el.innerHTML = marked.parseInline(text) as string\n return el\n}\n\nfunction showTooltip(\n target: HTMLElement,\n text: string,\n useLocalize: boolean\n): void {\n hideTooltip()\n currentTarget = target\n\n const { top, left, width } = target.getBoundingClientRect()\n const cx = left + width * 0.5\n const h = window.innerHeight\n const w = window.innerWidth\n const position: FloatPosition = ((top > h * 0.5 ? 'n' : 's') +\n (cx > w * 0.5 ? 'w' : 'e')) as FloatPosition\n\n const content = renderText(text, useLocalize)\n content.classList.add(arrowClass(position))\n\n tooltipFloat = popFloat({\n content,\n target,\n position,\n remainOnScroll: 'remove',\n remainOnResize: 'remove',\n })\n\n requestAnimationFrame(() => {\n if (tooltipFloat && currentTarget) {\n positionArrow(content, target, position)\n }\n })\n}\n\nfunction findTooltipTarget(event: Event): HTMLElement | null {\n for (const node of event.composedPath()) {\n if (node instanceof HTMLElement && node.dataset.tooltip) {\n return node\n }\n }\n return null\n}\n\nexport function initTooltips(options: TooltipOptions = {}): void {\n const {\n convertTitles = true,\n delay = 250,\n localize: useLocalize = false,\n } = options\n\n document.addEventListener('pointermove', (event: PointerEvent) => {\n if (convertTitles) {\n for (const node of event.composedPath()) {\n if (node instanceof HTMLElement && node.title && !node.dataset.tooltip) {\n node.dataset.tooltip = node.title\n node.removeAttribute('title')\n break\n }\n }\n }\n\n const target = findTooltipTarget(event)\n\n if (target === currentTarget) return\n\n hideTooltip()\n\n if (!target) return\n const text = target.dataset.tooltip || null\n if (!text) return\n\n showTimeout = setTimeout(\n () => showTooltip(target, text, useLocalize),\n delay,\n )\n })\n\n document.addEventListener('pointerleave', hideTooltip)\n\n document.addEventListener('pointerdown', hideTooltip)\n document.addEventListener('keydown', hideTooltip)\n window.addEventListener('scroll', hideTooltip, true)\n}\n",
|
|
59
59
|
"import * as xinjsui from './index'\nimport * as xinjs from 'tosijs'\n\nObject.assign(globalThis, { xinjs, xinjsui })\n"
|
|
60
60
|
],
|
|
61
|
-
"mappings": "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",
|
|
62
|
-
"debugId": "
|
|
61
|
+
"mappings": "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",
|
|
62
|
+
"debugId": "FE300C0705F48AF164756E2164756E21",
|
|
63
63
|
"names": []
|
|
64
64
|
}
|