UNPKG

24.4 kBJavaScriptView Raw
1/* Sutton SignWriting Core Module v1.3.1 (https://github.com/sutton-signwriting/core), author: Steve Slevinski (https://SteveSlevinski.me), license: MIT */
2let e={symbol:"S[123][0-9a-f]{2}[0-5][0-9a-f]",coord:"[0-9]{3}x[0-9]{3}",sort:"A",box:"[BLMR]"};e.prefix=`(?:${e.sort}(?:${e.symbol})+)`,e.spatial=`${e.symbol}${e.coord}`,e.signbox=`${e.box}${e.coord}(?:${e.spatial})*`,e.sign=`${e.prefix}?${e.signbox}`,e.sortable=`${e.prefix}${e.signbox}`;let r={colorize:"C",colorhex:"(?:[0-9a-fA-F]{3}){1,2}",colorname:"[a-zA-Z]+",padding:"P[0-9]{2}",zoom:"Z(?:[0-9]+(?:\\.[0-9]+)?|x)",zoomsym:"Z[0-9]{2},[0-9]+(?:\\.[0-9]+)?(?:,[0-9]{3}x[0-9]{3})?",classbase:"-?[_a-zA-Z][_a-zA-Z0-9-]{0,100}",id:"[a-zA-Z][_a-zA-Z0-9-]{0,100}"};r.colorbase=`(?:${r.colorhex}|${r.colorname})`,r.color=`_${r.colorbase}_`,r.colors=`_${r.colorbase}(?:,${r.colorbase})?_`,r.background=`G${r.color}`,r.detail=`D${r.colors}`,r.detailsym=`D[0-9]{2}${r.colors}`,r.classes=`${r.classbase}(?: ${r.classbase})*`,r.full=`-(${r.colorize})?(${r.padding})?(${r.background})?(${r.detail})?(${r.zoom})?(?:-((?:${r.detailsym})*)((?:${r.zoomsym})*))?(?:-(${r.classes})?!(?:(${r.id})!)?)?`;const t=e=>(new RegExp(`^${r.colorhex}$`).test(e)?"#":"")+e;var s=Object.freeze({__proto__:null,re:r,parse:e=>{const s=`^${r.full}`,o=("string"==typeof e?e.match(new RegExp(s)):[])||[];return{colorize:o[1]?!!o[1]:void 0,padding:o[2]?parseInt(o[2].slice(1)):void 0,background:o[3]?t(o[3].slice(2,-1)):void 0,detail:o[4]?o[4].slice(2,-1).split(",").map(t):void 0,zoom:o[5]?"Zx"===o[5]?"x":parseFloat(o[5].slice(1)):void 0,detailsym:o[6]?o[6].match(new RegExp(r.detailsym,"g")).map((e=>{const r=e.split("_"),s=r[1].split(",").map(t);return{index:parseInt(r[0].slice(1)),detail:s}})):void 0,zoomsym:o[7]?o[7].match(new RegExp(r.zoomsym,"g")).map((e=>{const r=e.split(",");return{index:parseInt(r[0].slice(1)),zoom:parseFloat(r[1]),offset:r[2]?r[2].split("x").map((e=>parseInt(e)-500)):void 0}})):void 0,classes:o[8]?o[8]:void 0,id:o[9]?o[9]:void 0}},compose:e=>{if("object"!=typeof e||null===e)return;let t="-";t+=e.colorize?"C":"";const s=parseInt(e.padding);t+=!s||s<=0||s>99?"":"P"+(s>9?s:"0"+s);const o=e.background&&"string"==typeof e.background?e.background.match(r.colorbase)[0]:void 0;t+=o?"G_"+o+"_":"";const a=e.detail&&e.detail[0]&&"string"==typeof e.detail[0]?e.detail[0].match(r.colorbase)[0]:void 0,i=e.detail&&e.detail[1]&&"string"==typeof e.detail[1]?e.detail[1].match(r.colorbase)[0]:void 0;a&&(t+="D_"+a,i&&(t+=","+i),t+="_");const n="x"===e.zoom?"x":parseFloat(e.zoom);t+=!n||n<=0?"":"Z"+n;let c="";const l=e.detailsym&&Array.isArray(e.detailsym)?e.detailsym.map((e=>{const t=parseInt(e.index);if(!t||t<=0||t>99)return"";let s="D"+(t>9?t:"0"+t);const o=e.detail&&e.detail[0]?e.detail[0].match(r.colorbase)[0]:void 0,a=e.detail&&e.detail[1]?e.detail[1].match(r.colorbase)[0]:void 0;return o&&(s+="_"+o,a&&(s+=","+a),s+="_"),s})):[];c+=l.join("");const p=e.zoomsym&&Array.isArray(e.zoomsym)?e.zoomsym.map((e=>{const r=parseInt(e.index);if(!r||r<=0||r>99)return"";let t="Z"+(r>9?r:"0"+r);const s=parseFloat(e.zoom);if(t+=!s||s<=0?"":","+s,e.offset&&0 in e.offset&&1 in e.offset){const r=parseInt(e.offset[0])+500,s=parseInt(e.offset[1])+500;r>=250&&r<750&&s>=250&&s<750&&(t+=","+r+"x"+s)}return t})):[];c+=p.join("");let f="";const u=e.classes&&"string"==typeof e.classes?e.classes.match(r.classes)[0]:void 0;f+=u||"";const d=e.id&&"string"==typeof e.id?e.id.match(r.id)[0]:void 0;return f+=u||d?"!":"",f+=d?d+"!":"",t+(c||f?"-"+c:"")+(f?"-"+f:"")}});let o={symbol:"(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))",coord:"(?:\ud836[\udc0c-\uddff]){2}",sort:"𝠀",box:"\ud836[\udc01-\udc04]"};o.prefix=`(?:${o.sort}(?:${o.symbol})+)`,o.spatial=`${o.symbol}${o.coord}`,o.signbox=`${o.box}${o.coord}(?:${o.spatial})*`,o.sign=`${o.prefix}?${o.signbox}`,o.sortable=`${o.prefix}${o.signbox}`;const a=e=>({A:"𝠀",B:"𝠁",L:"𝠂",M:"𝠃",R:"𝠄"}[e]),i=e=>parseInt(e.codePointAt(0))-120844+250,n=e=>String.fromCodePoint(120844+parseInt(e)-250),c=e=>[i(e.slice(0,2)),i(e.slice(2,4))],l=e=>e.map((e=>n(e))).join(""),p=e=>e.split("x").map((e=>parseInt(e))),f=e=>parseInt(e.codePointAt(0)),u=e=>String.fromCodePoint(e),d=e=>{const r=f(e)-262145,t=parseInt(r/96),s=parseInt((r-96*t)/16),o=parseInt(r-96*t-16*s);return"S"+(t+256).toString(16)+s.toString(16)+o.toString(16)},g=e=>u(262145+96*(parseInt(e.slice(1,4),16)-256)+16*parseInt(e.slice(4,5),16)+parseInt(e.slice(5,6),16));var m=Object.freeze({__proto__:null,swu2mark:e=>({"𝠀":"A","𝠁":"B","𝠂":"L","𝠃":"M","𝠄":"R"}[e]),mark2swu:a,swu2num:i,num2swu:n,swu2coord:c,coord2swu:l,fsw2coord:p,coord2fsw:e=>e.join("x"),swu2code:f,code2swu:u,swu2id:e=>f(e)-262144,id2swu:e=>u(e+262144),key2id:e=>1+96*(parseInt(e.slice(1,4),16)-256)+16*parseInt(e.slice(4,5),16)+parseInt(e.slice(5,6),16),id2key:e=>{const r=e-1,t=parseInt(r/96),s=parseInt((r-96*t)/16),o=parseInt(r-96*t-16*s);return"S"+(t+256).toString(16)+s.toString(16)+o.toString(16)},swu2key:d,key2swu:g,swu2fsw:e=>{if(!e)return"";let r=e.replace(/𝠀/g,"A").replace(/𝠁/g,"B").replace(/𝠂/g,"L").replace(/𝠃/g,"M").replace(/𝠄/g,"R");const t=r.match(new RegExp(o.symbol,"g"));t&&t.forEach((function(e){r=r.replace(e,d(e))}));const s=r.match(new RegExp(o.coord,"g"));return s&&s.forEach((function(e){r=r.replace(e,c(e).join("x"))})),r},fsw2swu:r=>{if(!r)return"";const t=r.match(new RegExp(e.prefix,"g"));t&&t.forEach((function(e){r=r.replace(e,"𝠀"+e.slice(1).match(/.{6}/g).map((e=>g(e))).join(""))}));const s=r.match(new RegExp(e.box+e.coord,"g"));s&&s.forEach((function(e){r=r.replace(e,a(e.slice(0,1))+l(p(e.slice(1,8))))}));const o=r.match(new RegExp(e.spatial,"g"));return o&&o.forEach((function(e){r=r.replace(e,g(e.slice(0,6))+l(p(e.slice(6,13))))})),r}});const b={symbol:t=>{const s=`^(${e.symbol})(${e.coord})?(${r.full})?`,o="string"==typeof t?t.match(new RegExp(s)):void 0;return{symbol:o?o[1]:void 0,coord:o&&o[2]?p(o[2]):void 0,style:o?o[3]:void 0}},sign:t=>{const s=`^(${e.prefix})?(${e.signbox})(${r.full})?`,o="string"==typeof t?t.match(new RegExp(s)):void 0;return o?{sequence:o[1]?o[1].slice(1).match(/.{6}/g):void 0,box:o[2][0],max:p(o[2].slice(1,8)),spatials:o[2].length<9?void 0:o[2].slice(8).match(/(.{13})/g).map((e=>({symbol:e.slice(0,6),coord:[parseInt(e.slice(6,9)),parseInt(e.slice(10,13))]}))),style:o[3]}:{}}},y={symbol:t=>{if("string"==typeof t.symbol){const s=(t.symbol.match(e.symbol)||[""])[0];if(s){return s+((((t.coord&&t.coord[0]||"").toString()+"x"+(t.coord&&t.coord[1]||"").toString()).match(e.coord)||[""])[0]||"")+("string"==typeof t.style&&(t.style.match(r.full)||[""])[0]||"")}}},sign:t=>{let s="string"!=typeof t.box?"M":(t.box+"M").match(e.box);const o=(((t.max&&t.max[0]||"").toString()+"x"+(t.max&&t.max[1]||"").toString()).match(e.coord)||[""])[0]||"";if(!o)return;let a="";t.sequence&&Array.isArray(t.sequence)&&(a=t.sequence.map((r=>(r.match(e.symbol)||[""])[0])).join(""),a=a?"A"+a:"");let i="";t.spatials&&Array.isArray(t.spatials)&&(i=t.spatials.map((r=>{if("string"==typeof r.symbol){const t=(r.symbol.match(e.symbol)||[""])[0];if(t){const s=(((r.coord&&r.coord[0]||"").toString()+"x"+(r.coord&&r.coord[1]||"").toString()).match(e.coord)||[""])[0]||"";if(s)return t+s}}return""})).join(""));return a+s+o+i+("string"==typeof t.style&&(t.style.match(r.full)||[""])[0]||"")}},h=[256,517,759,767,877,895,903],x={all:[256,907],writing:[256,894],hand:[256,516],movement:[517,758],dynamic:[759,766],head:[767,876],hcenter:[767,876],vcenter:[767,885],trunk:[877,885],limb:[886,894],location:[895,902],punctuation:[903,907]},$=["#0000CC","#CC0000","#FF0099","#006600","#000000","#884411","#FF9900"];var w=Object.freeze({__proto__:null,re:e,parse:b,compose:y,kind:[256,895,903],category:h,group:[256,270,286,324,332,390,420,442,461,501,517,534,554,597,613,648,678,695,725,739,759,767,778,810,827,857,877,886,895,903],ranges:x,isType:(e,r)=>{const t=b.symbol(e);if(t.symbol){const e=parseInt(t.symbol.slice(1,4),16),s=x[r];if(s)return s[0]<=e&&s[1]>=e}return!1},colors:$,colorize:e=>{const r=b.symbol(e);let t="#000000";if(r.symbol){const e=parseInt(r.symbol.slice(1,4),16),s=h.findIndex((r=>r>e));t=$[s<0?6:s-1]}return t}});let v={base:"[123][0-9a-f]{2}",coord:"(?:[0-9]{3}x[0-9]{3})?",var:"V[0-9]+"};v.symbol=`S${v.base}[0-5u][0-9a-fu]`,v.range=`R${v.base}t${v.base}`,v.item=`(?:${v.symbol}|${v.range})`,v.list=`${v.item}(?:o${v.item})*`,v.prefix=`(?:A(?:${v.list})+)?T`,v.signbox=`(?:${v.list}${v.coord})*`,v.full=`Q(${v.prefix})?(${v.signbox})?(${v.var})?(-?)`;const A=e=>e.match(new RegExp(`(${v.list}${v.coord})`,"g")).map((e=>{let r,t;return e.includes("x")?(r=p(e.slice(-7)),t=e.slice(0,-7)):t=e,t.includes("o")?{or:t.split("o").map((e=>e.includes("S")?e:e.slice(1).split("t"))),coord:r,coord:r}:t.includes("S")?{symbol:t,coord:r}:{range:t.slice(1).split("t"),coord:r}})),I=(e,r,t)=>{let s,o,a,i,n,c,l;if(t||(t=""),s="",(e=("000"+e).slice(-3))===(r=""+r))return e;if(o=[],(e[0]!=r[0]||e[1]!=r[1])&&"0"!=e[2])if(s=e[0]+e[1],t){switch(e[2]){case"f":s+="f";break;case"e":s+="[ef]";break;case"d":case"c":case"b":case"a":s+="["+e[2]+"-f]";break;default:switch(e[2]){case"9":s+="[9a-f]";break;case"8":s+="[89a-f]";break;default:s+="["+e[2]+"-9a-f]"}}a=15-parseInt(e[2],16)+1,e=""+(parseInt(e,16)+a).toString(16),o.push(s)}else{switch(e[2]){case"9":s+="9";break;case"8":s+="[89]";break;default:s+="["+e[2]+"-9]"}a=9-e[2]+1,e=""+(1*e+a),o.push(s)}if(s="",e[0]!=r[0]&&"0"!=e[1])if(t){switch(s=e[0],e[1]){case"f":s+="f";break;case"e":s+="[ef]";break;case"d":case"c":case"b":case"a":s+="["+e[1]+"-f]";break;case"9":s+="[9a-f]";break;case"8":s+="[89a-f]";break;default:s+="["+e[1]+"-9a-f]"}s+="[0-9a-f]",a=15-parseInt(e[1],16)+1,e=""+(parseInt(e,16)+16*a).toString(16),o.push(s)}else{switch(s=e[0],a=9-e[1]+1,e[1]){case"9":s+="9";break;case"8":s+="[89]";break;default:s+="["+e[1]+"-9]"}s+="[0-9]",a=9-e[1]+1,e=""+(1*e+10*a),o.push(s)}if(s="",e[0]!=r[0])if(t){switch(a=parseInt(r[0],16)-parseInt(e[0],16),i=(parseInt(e[0],16)+a-1).toString(16),a){case 1:s=e[0];break;case 2:s="["+e[0]+i+"]";break;default:switch(c=parseInt(e[0],16)>9?"h":"d",l=parseInt(i,16)>9?"h":"d",c+l){case"dd":case"hh":s+="["+e[0]+"-"+i+"]";break;case"dh":switch(a=9-e[0],a){case 0:s+="[9";break;case 1:s+="[89";break;default:s+="["+e[0]+"-9"}switch(i[0]){case"a":s+="a]";break;case"b":s+="ab]";break;default:s+="a-"+i+"]"}}}s+="[0-9a-f][0-9a-f]",a=parseInt(r[0],16)-parseInt(e[0],16),e=""+(parseInt(e,16)+256*a).toString(16),o.push(s)}else{switch(a=r[0]-e[0],i=1*e[0]+a-1,a){case 1:s=e[0];break;case 2:s="["+e[0]+i+"]";break;default:s="["+e[0]+"-"+i+"]"}s+="[0-9][0-9]",e=""+(1*e+100*a),o.push(s)}if(s="",e[1]!=r[1])if(t){switch(a=parseInt(r[1],16)-parseInt(e[1],16),i=(parseInt(e[1],16)+a-1).toString(16),s=e[0],a){case 1:s+=e[1];break;case 2:s+="["+e[1]+i+"]";break;default:switch(c=parseInt(e[1],16)>9?"h":"d",l=parseInt(i,16)>9?"h":"d",c+l){case"dd":s+="["+e[1],a>1&&(s+="-"),s+=i+"]";break;case"dh":switch(a=9-e[1],a){case 0:s+="[9";break;case 1:s+="[89";break;default:s+="["+e[1]+"-9"}switch(r[1]){case"a":s+="]";break;case"b":s+="a]";break;default:s+="a-"+(parseInt(r[1],16)-1).toString(16)+"]"}break;case"hh":s+="["+e[1],a>1&&(s+="-"),s+=(parseInt(r[1],16)-1).toString(16)+"]"}}s+="[0-9a-f]",a=parseInt(r[1],16)-parseInt(e[1],16),e=""+(parseInt(e,16)+16*a).toString(16),o.push(s)}else{switch(a=r[1]-e[1],i=1*e[1]+a-1,s=e[0],a){case 1:s+=e[1];break;case 2:s+="["+e[1]+i+"]";break;default:s+="["+e[1]+"-"+i+"]"}s+="[0-9]",e=""+(1*e+10*a),o.push(s)}if(s="",e[2]!=r[2])if(t){switch(s=e[0]+e[1],a=parseInt(r[2],16)-parseInt(e[2],16),c=parseInt(e[2],16)>9?"h":"d",l=parseInt(r[2],16)>9?"h":"d",c+l){case"dd":case"hh":s+="["+e[2],a>1&&(s+="-"),s+=r[2]+"]";break;case"dh":switch(a=9-e[2],a){case 0:s+="[9";break;case 1:s+="[89";break;default:s+="["+e[2]+"-9"}switch(r[2]){case"a":s+="a]";break;case"b":s+="ab]";break;default:s+="a-"+r[2]+"]"}}a=parseInt(r[2],16)-parseInt(e[2],16),e=""+(parseInt(e,16)+a).toString(16),o.push(s)}else{switch(a=r[2]-e[2],s=e[0]+e[1],a){case 0:s+=e[2];break;case 1:s+="["+e[2]+r[2]+"]";break;default:s+="["+e[2]+"-"+r[2]+"]"}e=""+(1*e+a),o.push(s)}return s="","0"==e[2]&&"0"==r[2]&&(s=r,o.push(s)),s="",n=o.length,1==n?s=o[0]:(s=o.join(")|("),s="(("+s+"))"),s},R=e=>{let r=e.slice(0,4),t=e.slice(4,5);r+="u"==t?"[0-5]":t;let s=e.slice(5,6);return r+="u"==s?"[0-9a-f]":s,r},k=e=>{let r=e.slice(1,4),t=e.slice(5,8);return"S"+I(r,t,"hex")+"[0-5][0-9a-f]"},E=t=>{if(!(t=t.match(new RegExp(`^${v.full}`))[0]))return"";var s,o,a,i,n,c,l,f,u,d,g,m=20,b="("+r.full+")?";if("Q"==t)return[e.prefix+"?"+e.signbox];if("Q-"==t)return[e.prefix+"?"+e.signbox+b];if("QT"==t)return[e.prefix+e.signbox];if("QT-"==t)return[e.prefix+e.signbox+b];var y=[],h=t.indexOf("T")+1;if(h){g="(A";var x=t.slice(0,h);if(t=t.replace(x,""),"QT"==x)g+="("+e.symbol+")+)";else if(s=x.match(new RegExp("("+v.list+")","g"))){for(n=0;n<s.length;n+=1)if(i=[],o=s[n].match(new RegExp("("+v.symbol+"|"+v.range+")","g"))){for(c=0;c<o.length;c+=1)(a=o[c].match(new RegExp(v.symbol)))?i.push(R(a[0])):i.push(k(o[c]));1==i.length?g+=i[0]:g+="("+i.join("|")+")"}g+="("+e.symbol+")*)"}}if((s=t.match(new RegExp(v.var,"g")))&&(m=1*s.toString().slice(1)),s=t.match(new RegExp(v.list+v.coord,"g")))for(n=0;n<s.length;n+=1){if(i=[],o=s[n].match(new RegExp("("+v.symbol+"|"+v.range+")","g"))){for(c=0;c<o.length;c+=1)(a=o[c].match(new RegExp(v.symbol)))?i.push(R(a[0])):i.push(k(o[c]));l=1==i.length?i[0]:"("+i.join("|")+")"}s[n].includes("x")?(u=(f=p(s[n].slice(-7)))[0],d=f[1],l+=I(u-m,u+m),l+="x",l+=I(d-m,d+m)):l+=e.coord,l=e.signbox+l+"("+e.symbol+e.coord+")*",l=h?g+l:e.prefix+"?"+l,t.indexOf("-")>0&&(l+=b),y.push(l)}return y.length||(t.indexOf("-")>0&&(l+=b),y.push(g+e.signbox)),y};var j=Object.freeze({__proto__:null,re:v,parse:e=>{const r="string"==typeof e?e.match(new RegExp(`^${v.full}`)):void 0;return{query:!!r||void 0,prefix:r&&r[1]?(t=r[1],{required:!0,parts:"T"==t?void 0:t.match(new RegExp(`${v.list}`,"g")).map((e=>e.includes("o")?["or"].concat(e.match(new RegExp(`(${v.item})`,"g")).map((e=>"S"==e[0]?e:e.slice(1).split("t")))):"S"==e[0]?e:e.slice(1).split("t")))}):void 0,signbox:r&&r[2]?A(r[2]):void 0,variance:r&&r[3]?parseInt(r[3].slice(1)):void 0,style:!(!r||!r[4])||void 0};var t},compose:e=>{if(!e||!e.query)return;let r="Q";return e.prefix&&e.prefix.required&&(Array.isArray(e.prefix.parts)&&(r+="A",r+=e.prefix.parts.map((e=>"string"==typeof e?e:Array.isArray(e)&&2==e.length?`R${e[0]}t${e[1]}`:Array.isArray(e)&&e.length>2&&"or"==e[0]?(e.shift(),e.map((e=>"string"==typeof e?e:Array.isArray(e)&&2==e.length?`R${e[0]}t${e[1]}`:void 0)).join("o")):void 0)).join("")),r+="T"),Array.isArray(e.signbox)&&(r+=e.signbox.map((e=>{let r;return e.or?r=e.or.map((e=>"string"==typeof e?e:Array.isArray(e)&&2==e.length?`R${e[0]}t${e[1]}`:void 0)).join("o"):e.symbol?r=e.symbol:e.range&&Array.isArray(e.range)&&2==e.range.length&&(r=`R${e.range[0]}t${e.range[1]}`),r+(Array.isArray(e.coord)&&2==e.coord.length?e.coord.join("x"):"")})).join("")),r+=e.style?"-":"",r=r.match(new RegExp(`^${v.full}`))[0],r},fsw2query:(e,r)=>{let t="";const s=b.sign(e);if(s.box){const e=r.indexOf("A")>-1,o=r.indexOf("a")>-1,a=r.indexOf("S")>-1,i=r.indexOf("s")>-1,n=r.indexOf("L")>-1;return(e||o||a||i)&&((e||o)&&s.sequence&&(t+="A",t+=s.sequence.map((e=>e.slice(0,4)+(o?"uu":e.slice(4,6)))).join(""),t+="T"),(a||i)&&s.spatials&&(t+=s.spatials.map((e=>e.symbol.slice(0,4)+(i?"uu":e.symbol.slice(4,6))+(n?e.coord.join("x"):""))).join(""))),t?"Q"+t:void 0}},range:I,regex:E,results:(e,r)=>{if(!r)return[];let t,s,o,a,i,n=E(e);if(!n)return[];for(i=0;i<n.length;i+=1)t=n[i],s=r.match(new RegExp(t,"g")),r=s?s.join(" "):"";return r?(o=r.split(" "),a=o.filter((function(e){return!(e in o)&&(o[e]=!0)}),{})):a=[],a},lines:(e,r)=>{if(!r)return[];let t,s,o,a,i,n=E(e);if(!n)return[];for(i=0;i<n.length;i+=1)t=n[i],t="^"+t+".*",s=r.match(new RegExp(t,"mg")),r=s?s.join("\n"):"";return r?(o=r.split("\n"),a=o.filter((function(e){return!(e in o)&&(o[e]=!0)}),{})):a=[],a}});const S={symbol:e=>{const t=`^(${o.symbol})(${o.coord})?(${r.full})?`,s="string"==typeof e?e.match(new RegExp(t)):void 0;return{symbol:s?s[1]:void 0,coord:s&&s[2]?c(s[2]):void 0,style:s?s[3]:void 0}},sign:e=>{const t=`^(${o.prefix})?(${o.signbox})(${r.full})?`,s="string"==typeof e?e.match(new RegExp(t)):void 0;return s?{sequence:s[1]?s[1].slice(2).match(/.{2}/g):void 0,box:s[2].slice(0,2),max:c(s[2].slice(2,6)),spatials:s[2].length<7?void 0:s[2].slice(6).match(/(.{6})/g).map((e=>({symbol:e.slice(0,2),coord:c(e.slice(2))}))),style:s[3]}:{}}},_=e=>e.replace(/\\u([0-9A-F]{4})/g,(function(e,r){return String.fromCharCode(parseInt(r,16))})),F=e=>[e.charCodeAt(0).toString(16).toUpperCase(),e.charCodeAt(1).toString(16).toUpperCase()],z={symbol:e=>{if("object"==typeof e&&null!==e&&"string"==typeof e.symbol){const t=(e.symbol.match(o.symbol)||[""])[0];if(t){const s=e.coord&&e.coord[0]||"",o=e.coord&&e.coord[1]||"";return t+(s&&o?l([s,o]):"")+("string"==typeof e.style&&(e.style.match(r.full)||[""])[0]||"")}}},sign:e=>{if("object"!=typeof e||null===e)return;let t="string"!=typeof e.box?"𝠃":(e.box+"𝠃").match(o.box);const s=e.max&&e.max[0]||"",a=e.max&&e.max[1]||"",i=s&&a?l([s,a]):void 0;if(!i)return;let n="";e.sequence&&Array.isArray(e.sequence)&&(n=e.sequence.map((e=>(e.match(o.symbol)||[""])[0])).join(""),n=n?"𝠀"+n:"");let c="";e.spatials&&Array.isArray(e.spatials)&&(c=e.spatials.map((e=>{if("string"==typeof e.symbol){const r=(e.symbol.match(o.symbol)||[""])[0];if(r){const t=e.coord&&e.coord[0]||"",s=e.coord&&e.coord[1]||"",o=t&&s?l([t,s]):"";if(o)return r+o}}return""})).join(""));return n+t+i+c+("string"==typeof e.style&&(e.style.match(r.full)||[""])[0]||"")}},C=[262145,287201,310433,311201,321761,323489,324257],q={all:[262145,324736],writing:[262145,323488],hand:[262145,287200],movement:[287201,310432],dynamic:[310433,311200],head:[311201,321760],hcenter:[311201,321760],vcenter:[311201,322624],trunk:[321761,322624],limb:[322625,323488],location:[323489,324256],punctuation:[324257,324736]},O=["#0000CC","#CC0000","#FF0099","#006600","#000000","#884411","#FF9900"];var T=Object.freeze({__proto__:null,re:o,parse:S,encode:e=>e.replace(/[\u007F-\uFFFF]/g,(function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).substr(-4).toUpperCase()})),decode:_,pair:F,compose:z,kind:[262145,323489,324257],category:C,group:[262145,263489,265025,268673,269441,275009,277889,280001,281825,285665,287201,288833,290753,294881,296417,299777,302657,304289,307169,308513,310433,311201,312257,315329,316961,319841,321761,322625,323489,324257],ranges:q,isType:(e,r)=>{const t=S.symbol(e);if(t.symbol){const e=f(t.symbol),s=q[r];if(s)return s[0]<=e&&s[1]>=e}return!1},colors:O,colorize:e=>{const r=S.symbol(e);let t="#000000";if(r.symbol){const e=f(r.symbol),s=C.findIndex((r=>r>e));t=O[s<0?6:s-1]}return t}});let Q={base:"(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))",coord:"(?:(?:\ud836[\udc0c-\uddff]){2})?",var:"V[0-9]+"};Q.symbol=`${Q.base}f?r?`,Q.range=`R${Q.base}${Q.base}`,Q.item=`(?:${Q.symbol}|${Q.range})`,Q.list=`${Q.item}(?:o${Q.item})*`,Q.prefix=`(?:A(?:${Q.list})+)?T`,Q.signbox=`(?:${Q.list}${Q.coord})*`,Q.full=`Q(${Q.prefix})?(${Q.signbox})?(${Q.var})?(-?)`;const D=e=>e.match(new RegExp(`(${Q.list}${Q.coord})`,"g")).map((e=>{let r,t;return r=e.match(new RegExp(`${o.coord}`)),r?(r=c(r[0]),t=e.slice(0,-4)):(r=void 0,t=e),t.includes("o")?{or:t.split("o").map((e=>e.includes("R")?[e.slice(1,3),e.slice(3,5)]:e)),coord:r,coord:r}:t.includes("R")?{range:[t.slice(1,3),t.slice(3,5)],coord:r}:{symbol:t,coord:r}})),Z=(e,r)=>{if(e>r)return"";let t,s="",o=[];if(e=F(e),r=F(r),2!=e.length&&2!=r.length)return"";if(e[0]==r[0])e[1]==r[1]?(s="\\u"+e[0]+"\\u"+e[1],o.push(s)):(s="\\u"+e[0]+"[\\u"+e[1]+"-\\u"+r[1]+"]",o.push(s));else{s="DFFF"==e[1]?"\\u"+e[0]+"\\uDFFF":"\\u"+e[0]+"[\\u"+e[1]+"-\\uDFFF]",o.push(s);let t=parseInt(r[0],16)-parseInt(e[0],16);2==t&&(s="\\u"+(parseInt(e[0],16)+1).toString(16).toUpperCase(),s+="[\\uDC00-\\uDFFF]",o.push(s)),t>2&&(s="[",s+="\\u"+(parseInt(e[0],16)+1).toString(16).toUpperCase(),s+="-\\u"+(parseInt(r[0],16)-1).toString(16).toUpperCase(),s+="][\\uDC00-\\uDFFF]",o.push(s)),s="DC00"==r[1]?"\\u"+r[0]+"\\uDC00":"\\u"+r[0]+"[\\uDC00-\\u"+r[1]+"]",o.push(s)}return t=o.length,1==t?s=o[0]:(s=o.join(")|("),s="(("+s+"))"),_(s)},L=e=>{let r=e.match(new RegExp(Q.symbol));if(r){let e,t,s=r[0].slice(0,2),o=d(s),a=o.slice(0,4);if("fr"==r[0].slice(-2))return e=g(a+"00"),t=g(a+"5f"),Z(e,t);if("r"==r[0].slice(-1))return e=g(o.slice(0,5)+"0"),t=g(o.slice(0,5)+"f"),Z(e,t);if("f"==r[0].slice(-1)){return"("+[0,1,2,3,4,5].map((function(e){return g(a+e+o.slice(-1))})).join("|")+")"}return s}return""},M=e=>(from=d(e.slice(1,3)),to=d(e.slice(-2)),from=g(from.slice(0,4)+"00"),to=g(to.slice(0,4)+"5f"),Z(from,to)),P=e=>{if(!(e=e.match(new RegExp(`^${Q.full}`))[0]))return"";let t,s,a,i,l,p,f,u,d,g,m,b=20,y=o.symbol,h=o.coord,x=o.box+h+"("+y+h+")*",$="("+o.sort+"("+y+")+)",w="("+r.full+")?";if("Q"==e)return[o.sign];if("Q-"==e)return[o.sign+"("+r.full+")?"];if("QT"==e)return[o.sortable];if("QT-"==e)return[o.sortable+"("+r.full+")?"];let v=[],A=e.indexOf("T")+1;if(A){m="("+o.sort;let r=e.slice(0,A);if(e=e.replace(r,""),"QT"==r)m+="("+y+")+)";else if(t=r.match(new RegExp("("+Q.list+")","g")),t){for(l=0;l<t.length;l+=1)if(i=[],s=t[l].match(new RegExp("("+Q.symbol+"|"+Q.range+")","g")),s){for(p=0;p<s.length;p+=1)a=s[p].match(new RegExp(Q.symbol)),a?i.push(L(a[0])):i.push(M(s[p]));1==i.length?m+=i[0]:m+="("+i.join("|")+")"}m+="("+o.symbol+")*)"}}if(t=e.match(new RegExp("(V[0-9]+)","g")),t&&(b=1*t.toString().slice(1)),t=e.match(new RegExp(Q.list+Q.coord,"g")),t)for(l=0;l<t.length;l+=1){if(i=[],s=t[l].match(new RegExp("("+Q.symbol+"|"+Q.range+")","g")),s){for(p=0;p<s.length;p+=1)a=s[p].match(new RegExp(Q.symbol)),a?i.push(L(a[0])):i.push(M(s[p]));u=1==i.length?i[0]:"("+i.join("|")+")"}f=t[l].match(new RegExp(`${o.coord}`)),f?(f=c(f[0]),d=f[0],g=f[1],u+=Z(n(d-b),n(d+b)),u+=Z(n(g-b),n(g+b))):u+=o.coord,u=x+u+"("+y+h+")*",u=A?m+u:$+"?"+u,e.indexOf("-")>0&&(u+=w),v.push(u)}return v.length||(e.indexOf("-")>0&&(u+=w),v.push(m+x)),v};var U=Object.freeze({__proto__:null,re:Q,parse:e=>{const r="string"==typeof e?e.match(new RegExp(`^${Q.full}`)):void 0;return{query:!!r||void 0,prefix:r&&r[1]?(t=r[1],{required:!0,parts:"T"==t?void 0:t.match(new RegExp(`(${Q.list})`,"g")).map((e=>e.includes("o")?["or"].concat(e.match(new RegExp(`(${Q.item})`,"g")).map((e=>"R"!=e[0]?e:[e.slice(1,3),e.slice(3,5)]))):"R"!=e[0]?e:[e.slice(1,3),e.slice(3,5)]))}):void 0,signbox:r&&r[2]?D(r[2]):void 0,variance:r&&r[3]?parseInt(r[3].slice(1)):void 0,style:!(!r||!r[4])||void 0};var t},compose:e=>{if(!e||!e.query)return;let r="Q";return e.prefix&&e.prefix.required&&(Array.isArray(e.prefix.parts)&&(r+="A",r+=e.prefix.parts.map((e=>"string"==typeof e?e:Array.isArray(e)&&2==e.length?`R${e[0]}${e[1]}`:Array.isArray(e)&&e.length>2&&"or"==e[0]?(e.shift(),e.map((e=>"string"==typeof e?e:Array.isArray(e)&&2==e.length?`R${e[0]}${e[1]}`:void 0)).join("o")):void 0)).join("")),r+="T"),Array.isArray(e.signbox)&&(r+=e.signbox.map((e=>{let r;return e.or?r=e.or.map((e=>"string"==typeof e?e:Array.isArray(e)&&2==e.length?`R${e[0]}${e[1]}`:void 0)).join("o"):e.symbol?r=e.symbol:e.range&&Array.isArray(e.range)&&2==e.range.length&&(r=`R${e.range[0]}${e.range[1]}`),r+(Array.isArray(e.coord)&&2==e.coord.length?l(e.coord):"")})).join("")),r+=e.style?"-":"",r=r.match(new RegExp(`^${Q.full}`))[0],r},swu2query:(e,r)=>{let t="";const s=S.sign(e);if(s.box){const e=r.indexOf("A")>-1,o=r.indexOf("a")>-1,a=r.indexOf("S")>-1,i=r.indexOf("s")>-1,n=r.indexOf("L")>-1;return(e||o||a||i)&&((e||o)&&s.sequence&&(t+="A",t+=s.sequence.map((e=>e+(o?"fr":""))).join(""),t+="T"),(a||i)&&s.spatials&&(t+=s.spatials.map((e=>e.symbol+(i?"fr":"")+(n?l(e.coord):""))).join(""))),t?"Q"+t:void 0}},range:Z,symbolRanges:L,regex:P,results:(e,r)=>{if(!r)return[];let t,s,o,a,i,n=P(e);if(!n)return[];for(i=0;i<n.length;i+=1)t=n[i],s=r.match(new RegExp(t,"g")),r=s?s.join(" "):"";return r?(o=r.split(" "),a=o.filter((function(e){return!(e in o)&&(o[e]=!0)}),{})):a=[],a},lines:(e,r)=>{if(!r)return[];let t,s,o,a,i,n=P(e);if(!n)return[];for(i=0;i<n.length;i+=1)t=n[i],t="^"+t+".*",s=r.match(new RegExp(t,"mg")),r=s?s.join("\n"):"";return r?(o=r.split("\n"),a=o.filter((function(e){return!(e in o)&&(o[e]=!0)}),{})):a=[],a}});export{m as convert,w as fsw,j as fswquery,s as style,T as swu,U as swuquery};