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