/* Sutton SignWriting Core Module v1.2.0 (https://github.com/sutton-signwriting/core), author: Steve Slevinski (https://SteveSlevinski.me), license: MIT */ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});let re={base:"[123][0-9a-f]{2}",coord:"(?:[0-9]{3}x[0-9]{3})?",var:"V[0-9]+"};re.symbol=`S${re.base}[0-5u][0-9a-fu]`,re.range=`R${re.base}t${re.base}`,re.prefix=`(?:A(?:${re.symbol}|${re.range})+)?T`,re.signbox=`(?:${re.symbol}${re.coord}|${re.range}${re.coord})*`,re.full=`Q(${re.prefix})?(${re.signbox})?(${re.var})?(-?)`;let re$1={symbol:"S[123][0-9a-f]{2}[0-5][0-9a-f]",coord:"[0-9]{3}x[0-9]{3}",sort:"A",box:"[BLMR]"};re$1.prefix=`(?:${re$1.sort}(?:${re$1.symbol})+)`,re$1.spatial=`${re$1.symbol}${re$1.coord}`,re$1.signbox=`${re$1.box}${re$1.coord}(?:${re$1.spatial})*`,re$1.sign=`${re$1.prefix}?${re$1.signbox}`,re$1.sortable=`${re$1.prefix}${re$1.signbox}`;const fsw2coord=e=>e.split("x").map(e=>parseInt(e)),parsePrefix=e=>({required:!0,parts:"T"==e?void 0:e.match(new RegExp(`(${re.symbol}|${re.range})`,"g")).map(e=>"S"==e[0]?e:e.slice(1).split("t"))}),parseSignbox=e=>e.match(new RegExp(`(${re.symbol}${re.coord}|${re.range}${re.coord})`,"g")).map(e=>{let r,a;return e.includes("x")?(r=fsw2coord(e.slice(-7)),a=e.slice(0,-7)):a=e,a.includes("S")?{symbol:a,coord:r}:{range:a.slice(1).split("t"),coord:r}}),parse=e=>{const r="string"==typeof e?e.match(new RegExp(`^${re.full}`)):void 0;return{query:!!r||void 0,prefix:r&&r[1]?parsePrefix(r[1]):void 0,signbox:r&&r[2]?parseSignbox(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(`^${re.full}`))[0]};let re$2={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}"};re$2.colorbase=`(?:${re$2.colorhex}|${re$2.colorname})`,re$2.color=`_${re$2.colorbase}_`,re$2.colors=`_${re$2.colorbase}(?:,${re$2.colorbase})?_`,re$2.background=`G${re$2.color}`,re$2.detail=`D${re$2.colors}`,re$2.detailsym=`D[0-9]{2}${re$2.colors}`,re$2.classes=`${re$2.classbase}(?: ${re$2.classbase})*`,re$2.full=`-(${re$2.colorize})?(${re$2.padding})?(${re$2.background})?(${re$2.detail})?(${re$2.zoom})?(?:-((?:${re$2.detailsym})*)((?:${re$2.zoomsym})*))?(?:-(${re$2.classes})?!(?:(${re$2.id})!)?)?`;const parse$1={symbol:e=>{const r=`^(${re$1.symbol})(${re$1.coord})?(${re$2.full})?`,a="string"==typeof e?e.match(new RegExp(r)):void 0;return{symbol:a?a[1]:void 0,coord:a&&a[2]?fsw2coord(a[2]):void 0,style:a?a[3]:void 0}},sign:e=>{const r=`^(${re$1.prefix})?(${re$1.signbox})(${re$2.full})?`,a="string"==typeof e?e.match(new RegExp(r)):void 0;return a?{sequence:a[1]?a[1].slice(1).match(/.{6}/g):void 0,box:a[2][0],max:fsw2coord(a[2].slice(1,8)),spatials:a[2].length<9?void 0:a[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:a[3]}:{}}},fsw2query=(e,r)=>{let a="";const s=parse$1.sign(e);if(s.box){const e=r.indexOf("A")>-1,t=r.indexOf("a")>-1,i=r.indexOf("S")>-1,o=r.indexOf("s")>-1,c=r.indexOf("L")>-1;return(e||t||i||o)&&((e||t)&&s.sequence&&(a+="A",a+=s.sequence.map(e=>e.slice(0,4)+(t?"uu":e.slice(4,6))).join(""),a+="T"),(i||o)&&s.spatials&&(a+=s.spatials.map(e=>e.symbol.slice(0,4)+(o?"uu":e.symbol.slice(4,6))+(c?e.coord.join("x"):"")).join(""))),a?"Q"+a:void 0}},range=(e,r,a)=>{let s,t,i,o,c,n,l;if(a||(a=""),s="",(e=("000"+e).slice(-3))===(r=""+r))return e;if(t=[],(e[0]!=r[0]||e[1]!=r[1])&&"0"!=e[2])if(s=e[0]+e[1],a){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]"}}i=15-parseInt(e[2],16)+1,e=""+(parseInt(e,16)+i).toString(16),t.push(s)}else{switch(e[2]){case"9":s+="9";break;case"8":s+="[89]";break;default:s+="["+e[2]+"-9]"}e=""+(1*e+(i=9-e[2]+1)),t.push(s)}if(s="",e[0]!=r[0]&&"0"!=e[1])if(a){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]",i=15-parseInt(e[1],16)+1,e=""+(parseInt(e,16)+16*i).toString(16),t.push(s)}else{switch(s=e[0],i=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*(i=9-e[1]+1)),t.push(s)}if(s="",e[0]!=r[0])if(a){switch(i=parseInt(r[0],16)-parseInt(e[0],16),o=(parseInt(e[0],16)+i-1).toString(16),i){case 1:s=e[0];break;case 2:s="["+e[0]+o+"]";break;default:switch((n=parseInt(e[0],16)>9?"h":"d")+(l=parseInt(o,16)>9?"h":"d")){case"dd":s+="["+e[0]+"-"+o+"]";break;case"dh":switch(i=9-e[0]){case 0:s+="[9";break;case 1:s+="[89";break;default:s+="["+e[0]+"-9"}switch(o[0]){case"a":s+="a]";break;case"b":s+="ab]";break;default:s+="a-"+o+"]"}break;case"hh":s+="["+e[0]+"-"+o+"]"}}s+="[0-9a-f][0-9a-f]",i=parseInt(r[0],16)-parseInt(e[0],16),e=""+(parseInt(e,16)+256*i).toString(16),t.push(s)}else{switch(i=r[0]-e[0],o=1*e[0]+i-1,i){case 1:s=e[0];break;case 2:s="["+e[0]+o+"]";break;default:s="["+e[0]+"-"+o+"]"}s+="[0-9][0-9]",e=""+(1*e+100*i),t.push(s)}if(s="",e[1]!=r[1])if(a){switch(i=parseInt(r[1],16)-parseInt(e[1],16),o=(parseInt(e[1],16)+i-1).toString(16),s=e[0],i){case 1:s+=e[1];break;case 2:s+="["+e[1]+o+"]";break;default:switch((n=parseInt(e[1],16)>9?"h":"d")+(l=parseInt(o,16)>9?"h":"d")){case"dd":s+="["+e[1],i>1&&(s+="-"),s+=o+"]";break;case"dh":switch(i=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],i>1&&(s+="-"),s+=(parseInt(r[1],16)-1).toString(16)+"]"}}s+="[0-9a-f]",i=parseInt(r[1],16)-parseInt(e[1],16),e=""+(parseInt(e,16)+16*i).toString(16),t.push(s)}else{switch(i=r[1]-e[1],o=1*e[1]+i-1,s=e[0],i){case 1:s+=e[1];break;case 2:s+="["+e[1]+o+"]";break;default:s+="["+e[1]+"-"+o+"]"}s+="[0-9]",e=""+(1*e+10*i),t.push(s)}if(s="",e[2]!=r[2])if(a){switch(s=e[0]+e[1],i=parseInt(r[2],16)-parseInt(e[2],16),(n=parseInt(e[2],16)>9?"h":"d")+(l=parseInt(r[2],16)>9?"h":"d")){case"dd":s+="["+e[2],i>1&&(s+="-"),s+=r[2]+"]";break;case"dh":switch(i=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],i>1&&(s+="-"),s+=r[2]+"]"}i=parseInt(r[2],16)-parseInt(e[2],16),e=""+(parseInt(e,16)+i).toString(16),t.push(s)}else{switch(i=r[2]-e[2],s=e[0]+e[1],i){case 0:s+=e[2];break;case 1:s+="["+e[2]+r[2]+"]";break;default:s+="["+e[2]+"-"+r[2]+"]"}e=""+(1*e+i),t.push(s)}return s="","0"==e[2]&&"0"==r[2]&&(s=r,t.push(s)),s="",s=1==(c=t.length)?t[0]:"(("+(s=t.join(")|("))+"))"},regex=e=>{if(!(e=e.match(new RegExp(`^${re.full}`))[0]))return"";var r,a,s,t,i,o,c,n,l,f,p,$,d=20,b="S[123][0-9a-f]{2}[0-5][0-9a-f]",g="[0-9]{3}x[0-9]{3}",u="[BLMR]("+g+")("+b+g+")*",x="(A("+b+")+)",h="R[123][0-9a-f]{2}t[123][0-9a-f]{2}",m="S[123][0-9a-f]{2}[0-5u][0-9a-fu]",y="("+re$2.full+")?";if("Q"==e)return[x+"?"+u];if("Q-"==e)return[x+"?"+u+y];if("QT"==e)return[x+u];if("QT-"==e)return[x+u+y];var k=[],w=e.indexOf("T")+1;if(w){$="(A";var I=e.slice(0,w);if(e=e.replace(I,""),"QT"==I)$+="("+b+")+)";else if(r=I.match(new RegExp("("+m+"|"+h+")","g"))){var v;for(a=0;a6?(n=1*t.slice(6,9),l=1*t.slice(10,13),c+=range(n-d,n+d),c+="x",c+=range(l-d,l+d)):c+=g,c=u+c+"("+b+g+")*",c=w?$+c:x+"?"+c,e.indexOf("-")>0&&(c+=y),k.push(c);if(s=h+"([0-9]{3}x[0-9]{3})?",r=e.match(new RegExp(s,"g")))for(a=0;a8?(n=1*t.slice(8,11),l=1*t.slice(12,15),c+=range(n-d,n+d),c+="x",c+=range(l-d,l+d)):c+=g,c=u+c+"("+b+g+")*",c=w?$+c:x+"?"+c,e.indexOf("-")>0&&(c+=y),k.push(c);return k.length||(e.indexOf("-")>0&&(c+=y),k.push($+u)),k},results=(e,r)=>{if(!r)return[];let a,s,t,i,o,c=regex(e);if(!c)return[];for(o=0;o{if(!r)return[];let a,s,t,i,o,c=regex(e);if(!c)return[];for(o=0;o