UNPKG

23.5 kBJavaScriptView Raw
1/* Sutton SignWriting Core Module v1.2.0 (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=>{return(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,n=e.detail&&e.detail[1]&&"string"==typeof e.detail[1]?e.detail[1].match(r.colorbase)[0]:void 0;a&&(t+="D_"+a,n&&(t+=","+n),t+="_");const i="x"===e.zoom?"x":parseFloat(e.zoom);t+=!i||i<=0?"":"Z"+i;let c="";c+=(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}):[]).join(""),c+=(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}):[]).join("");let l="";const f=e.classes&&"string"==typeof e.classes?e.classes.match(r.classes)[0]:void 0;l+=f||"";const u=e.id&&"string"==typeof e.id?e.id.match(r.id)[0]:void 0;return l+=f||u?"!":"",l+=u?u+"!":"",t+(c||l?"-"+c:"")+(l?"-"+l:"")}});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],n=e=>parseInt(e.codePointAt(0))-120844+250,i=e=>String.fromCodePoint(120844+parseInt(e)-250),c=e=>[n(e.slice(0,2)),n(e.slice(2,4))],l=e=>e.map(e=>i(e)).join(""),f=e=>e.split("x").map(e=>parseInt(e)),u=e=>parseInt(e.codePointAt(0)),p=e=>String.fromCodePoint(e),d=e=>{const r=u(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=>p(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:n,num2swu:i,swu2coord:c,coord2swu:l,fsw2coord:f,coord2fsw:e=>e.join("x"),swu2code:u,code2swu:p,swu2id:e=>u(e)-262144,id2swu:e=>p(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(f(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(f(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]?f(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:f(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=(a=t.sequence.map(r=>(r.match(e.symbol)||[""])[0]).join(""))?"A"+a:"");let n="";return t.spatials&&Array.isArray(t.spatials)&&(n=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("")),a+s+o+n+("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.prefix=`(?:A(?:${v.symbol}|${v.range})+)?T`,v.signbox=`(?:${v.symbol}${v.coord}|${v.range}${v.coord})*`,v.full=`Q(${v.prefix})?(${v.signbox})?(${v.var})?(-?)`;const I=e=>({required:!0,parts:"T"==e?void 0:e.match(new RegExp(`(${v.symbol}|${v.range})`,"g")).map(e=>"S"==e[0]?e:e.slice(1).split("t"))}),A=e=>e.match(new RegExp(`(${v.symbol}${v.coord}|${v.range}${v.coord})`,"g")).map(e=>{let r,t;return e.includes("x")?(r=f(e.slice(-7)),t=e.slice(0,-7)):t=e,t.includes("S")?{symbol:t,coord:r}:{range:t.slice(1).split("t"),coord:r}}),k=(e,r,t)=>{let s,o,a,n,i,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]"}e=""+(1*e+(a=9-e[2]+1)),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]",e=""+(1*e+10*(a=9-e[1]+1)),o.push(s)}if(s="",e[0]!=r[0])if(t){switch(a=parseInt(r[0],16)-parseInt(e[0],16),n=(parseInt(e[0],16)+a-1).toString(16),a){case 1:s=e[0];break;case 2:s="["+e[0]+n+"]";break;default:switch((c=parseInt(e[0],16)>9?"h":"d")+(l=parseInt(n,16)>9?"h":"d")){case"dd":s+="["+e[0]+"-"+n+"]";break;case"dh":switch(a=9-e[0]){case 0:s+="[9";break;case 1:s+="[89";break;default:s+="["+e[0]+"-9"}switch(n[0]){case"a":s+="a]";break;case"b":s+="ab]";break;default:s+="a-"+n+"]"}break;case"hh":s+="["+e[0]+"-"+n+"]"}}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],n=1*e[0]+a-1,a){case 1:s=e[0];break;case 2:s="["+e[0]+n+"]";break;default:s="["+e[0]+"-"+n+"]"}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),n=(parseInt(e[1],16)+a-1).toString(16),s=e[0],a){case 1:s+=e[1];break;case 2:s+="["+e[1]+n+"]";break;default:switch((c=parseInt(e[1],16)>9?"h":"d")+(l=parseInt(n,16)>9?"h":"d")){case"dd":s+="["+e[1],a>1&&(s+="-"),s+=n+"]";break;case"dh":switch(a=9-e[1]){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],n=1*e[1]+a-1,s=e[0],a){case 1:s+=e[1];break;case 2:s+="["+e[1]+n+"]";break;default:s+="["+e[1]+"-"+n+"]"}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")){case"dd":s+="["+e[2],a>1&&(s+="-"),s+=r[2]+"]";break;case"dh":switch(a=9-e[2]){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]+"]"}break;case"hh":s+="["+e[2],a>1&&(s+="-"),s+=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="",s=1==(i=o.length)?o[0]:"(("+(s=o.join(")|("))+"))"},R=e=>{if(!(e=e.match(new RegExp(`^${v.full}`))[0]))return"";var t,s,o,a,n,i,c,l,f,u,p,d,g=20,m="S[123][0-9a-f]{2}[0-5][0-9a-f]",b="[0-9]{3}x[0-9]{3}",y="[BLMR]("+b+")("+m+b+")*",h="(A("+m+")+)",x="R[123][0-9a-f]{2}t[123][0-9a-f]{2}",$="S[123][0-9a-f]{2}[0-5u][0-9a-fu]",w="("+r.full+")?";if("Q"==e)return[h+"?"+y];if("Q-"==e)return[h+"?"+y+w];if("QT"==e)return[h+y];if("QT-"==e)return[h+y+w];var I=[],A=e.indexOf("T")+1;if(A){d="(A";var R=e.slice(0,A);if(e=e.replace(R,""),"QT"==R)d+="("+m+")+)";else if(t=R.match(new RegExp("("+$+"|"+x+")","g"))){var S;for(s=0;s<t.length;s+=1)(S=t[s].match(new RegExp($)))?(c=S[0].slice(0,4),c+="u"==(u=S[0].slice(4,5))?"[0-5]":u,d+=c+="u"==(p=S[0].slice(5,6))?"[0-9a-f]":p):(n=t[s].slice(1,4),i=t[s].slice(5,8),d+=c="S"+k(n,i,"hex")+"[0-5][0-9a-f]");d+="("+m+")*)"}}if((t=e.match(new RegExp("(V[0-9]+)","g")))&&(g=1*t.toString().slice(1)),o=$+"([0-9]{3}x[0-9]{3})?",t=e.match(new RegExp(o,"g")))for(s=0;s<t.length;s+=1)c="S"+(a=t[s].toString()).slice(1,4),c+="u"==(u=a.slice(4,5))?"[0-5]":u,c+="u"==(p=a.slice(5,6))?"[0-9a-f]":p,a.length>6?(l=1*a.slice(6,9),f=1*a.slice(10,13),c+=k(l-g,l+g),c+="x",c+=k(f-g,f+g)):c+=b,c=y+c+"("+m+b+")*",c=A?d+c:h+"?"+c,e.indexOf("-")>0&&(c+=w),I.push(c);if(o=x+"([0-9]{3}x[0-9]{3})?",t=e.match(new RegExp(o,"g")))for(s=0;s<t.length;s+=1)n=(a=t[s].toString()).slice(1,4),i=a.slice(5,8),c="S"+k(n,i,"hex")+"[0-5][0-9a-f]",a.length>8?(l=1*a.slice(8,11),f=1*a.slice(12,15),c+=k(l-g,l+g),c+="x",c+=k(f-g,f+g)):c+=b,c=y+c+"("+m+b+")*",c=A?d+c:h+"?"+c,e.indexOf("-")>0&&(c+=w),I.push(c);return I.length||(e.indexOf("-")>0&&(c+=w),I.push(d+y)),I};var S=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]?I(r[1]):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}},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]}`:void 0).join("")),r+="T"),Array.isArray(e.signbox)&&(r+=e.signbox.map(e=>{let r;return 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=(r+=e.style?"-":"").match(new RegExp(`^${v.full}`))[0]},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,n=r.indexOf("s")>-1,i=r.indexOf("L")>-1;return(e||o||a||n)&&((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||n)&&s.spatials&&(t+=s.spatials.map(e=>e.symbol.slice(0,4)+(n?"uu":e.symbol.slice(4,6))+(i?e.coord.join("x"):"")).join(""))),t?"Q"+t:void 0}},range:k,regex:R,results:(e,r)=>{if(!r)return[];let t,s,o,a,n,i=R(e);if(!i)return[];for(n=0;n<i.length;n+=1)t=i[n],s=r.match(new RegExp(t,"g")),r=s?s.join(" "):"";return a=r?(o=r.split(" ")).filter((function(e){return!(e in o)&&(o[e]=!0)}),{}):[]},lines:(e,r)=>{if(!r)return[];let t,s,o,a,n,i=R(e);if(!i)return[];for(n=0;n<i.length;n+=1)t="^"+(t=i[n])+".*",s=r.match(new RegExp(t,"mg")),r=s?s.join("\n"):"";return a=r?(o=r.split("\n")).filter((function(e){return!(e in o)&&(o[e]=!0)}),{}):[]}});const E={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))})),j=e=>[e.charCodeAt(0).toString(16).toUpperCase(),e.charCodeAt(1).toString(16).toUpperCase()],F={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]||"",n=s&&a?l([s,a]):void 0;if(!n)return;let i="";e.sequence&&Array.isArray(e.sequence)&&(i=(i=e.sequence.map(e=>(e.match(o.symbol)||[""])[0]).join(""))?"𝠀"+i:"");let c="";return 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("")),i+t+n+c+("string"==typeof e.style&&(e.style.match(r.full)||[""])[0]||"")}},z=[262145,287201,310433,311201,321761,323489,324257],C={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]},q=["#0000CC","#CC0000","#FF0099","#006600","#000000","#884411","#FF9900"];var O=Object.freeze({__proto__:null,re:o,parse:E,encode:e=>e.replace(/[\u007F-\uFFFF]/g,(function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).substr(-4).toUpperCase()})),decode:_,pair:j,compose:F,kind:[262145,323489,324257],category:z,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:C,isType:(e,r)=>{const t=E.symbol(e);if(t.symbol){const e=u(t.symbol),s=C[r];if(s)return s[0]<=e&&s[1]>=e}return!1},colors:q,colorize:e=>{const r=E.symbol(e);let t="#000000";if(r.symbol){const e=u(r.symbol),s=z.findIndex(r=>r>e);t=q[s<0?6:s-1]}return t}});let T={base:"(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))",coord:"(?:(?:\ud836[\udc0c-\uddff]){2})?",var:"V[0-9]+"};T.symbol=`${T.base}f?r?`,T.range=`R${T.base}${T.base}`,T.prefix=`(?:A(?:${T.symbol}|${T.range})+)?T`,T.signbox=`(?:${T.symbol}${T.coord}|${T.range}${T.coord})*`,T.full=`Q(${T.prefix})?(${T.signbox})?(${T.var})?(-?)`;const Q=e=>({required:!0,parts:"T"==e?void 0:e.match(new RegExp(`(${T.symbol}|${T.range})`,"g")).map(e=>"R"!=e[0]?e:[e.slice(1,3),e.slice(3,5)])}),D=e=>e.match(new RegExp(`(${T.symbol}${T.coord}|${T.range}${T.coord})`,"g")).map(e=>{let r,t;return e.length>5?(r=c(e.slice(-4)),t=e.slice(0,-4)):t=e,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=j(e),r=j(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 s=1==(t=o.length)?o[0]:"(("+(s=o.join(")|("))+"))",_(s)},L=e=>{let r=e.match(new RegExp(T.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=>{if(!(e=e.match(new RegExp(`^${T.full}`))[0]))return"";let t,s,a,n,i,f,u,p,m,b,y=20,h=o.symbol,x=o.coord,$=o.box+x+"("+h+x+")*",w="("+o.sort+"("+h+")+)",v="R"+h+h,I=h+"f?r?",A="("+x+")?",k="("+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 R,S=[],E=e.indexOf("T")+1;if(E){b="("+o.sort;let r=e.slice(0,E);if(e=e.replace(r,""),"QT"==r)b+="("+h+")+)";else if(t=r.match(new RegExp("("+I+"|"+v+")","g"))){let e;for(s=0;s<t.length;s+=1)(e=t[s].match(new RegExp("^"+I)))?b+=L(e[0]):(n=d(t[s].slice(1,3)),i=d(t[s].slice(-2)),n=g(n.slice(0,4)+"00"),i=g(i.slice(0,4)+"5f"),b+=Z(n,i));b+="("+h+")*)"}}if((t=e.match(new RegExp("(V[0-9]+)","g")))&&(y=1*t.toString().slice(1)),t=e.match(new RegExp("("+v+A+"|"+I+A+")","g")))for(s=0;s<t.length;s+=1)"R"!=(a=t[s].toString())[0]?(R=a.match(new RegExp(I))[0],u=L(R),R.length>a.length?(p=(f=c(a.slice(-4)))[0],m=f[1],u+=Z(l([p-y,p+y])),u+=Z(l([m-y,m+y]))):u+=x,u=$+u+"("+h+x+")*",u=E?b+u:w+"?"+u,e.indexOf("-")>0&&(u+=k),S.push(u)):(a=t[s].toString(),n=d(a.slice(1,3)),i=d(a.slice(3,5)),n=g(n.slice(0,4)+"00"),i=g(i.slice(0,4)+"5f"),u=Z(n,i),a.length>5?(p=(f=c(a.slice(5,9)))[0],m=f[1],u+=Z(l([p-y,p+y])),u+=Z(l([m-y,m+y]))):u+=x,u=$+u+"("+h+x+")*",u=E?b+u:w+"?"+u,e.indexOf("-")>0&&(u+=k),S.push(u));return S.length||(e.indexOf("-")>0&&(u+=k),S.push(b+$)),S};var P=Object.freeze({__proto__:null,re:T,parse:e=>{const r="string"==typeof e?e.match(new RegExp(`^${T.full}`)):void 0;return{query:!!r||void 0,prefix:r&&r[1]?Q(r[1]):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}},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]}`:void 0).join("")),r+="T"),Array.isArray(e.signbox)&&(r+=e.signbox.map(e=>{let r;return 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=(r+=e.style?"-":"").match(new RegExp(`^${T.full}`))[0]},swu2query:(e,r)=>{let t="";const s=E.sign(e);if(s.box){const e=r.indexOf("A")>-1,o=r.indexOf("a")>-1,a=r.indexOf("S")>-1,n=r.indexOf("s")>-1,i=r.indexOf("L")>-1;return(e||o||a||n)&&((e||o)&&s.sequence&&(t+="A",t+=s.sequence.map(e=>e+(o?"fr":"")).join(""),t+="T"),(a||n)&&s.spatials&&(t+=s.spatials.map(e=>e.symbol+(n?"fr":"")+(i?l(e.coord):"")).join(""))),t?"Q"+t:void 0}},range:Z,symbolRanges:L,regex:M,results:(e,r)=>{if(!r)return[];let t,s,o,a,n,i=M(e);if(!i)return[];for(n=0;n<i.length;n+=1)t=i[n],s=r.match(new RegExp(t,"g")),r=s?s.join(" "):"";return a=r?(o=r.split(" ")).filter((function(e){return!(e in o)&&(o[e]=!0)}),{}):[]},lines:(e,r)=>{if(!r)return[];let t,s,o,a,n,i=M(e);if(!i)return[];for(n=0;n<i.length;n+=1)t="^"+(t=i[n])+".*",s=r.match(new RegExp(t,"mg")),r=s?s.join("\n"):"";return a=r?(o=r.split("\n")).filter((function(e){return!(e in o)&&(o[e]=!0)}),{}):[]}});export{m as convert,w as fsw,S as fswquery,s as style,O as swu,P as swuquery};