/* 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:"(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))",coord:"(?:(?:\ud836[\udc0c-\uddff]){2})?",var:"V[0-9]+"};re.symbol=`${re.base}f?r?`,re.range=`R${re.base}${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:"(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))",coord:"(?:\ud836[\udc0c-\uddff]){2}",sort:"𝠀",box:"\ud836[\udc01-\udc04]"};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 swu2num=e=>parseInt(e.codePointAt(0))-120844+250,num2swu=e=>String.fromCodePoint(120844+parseInt(e)-250),swu2coord=e=>[swu2num(e.slice(0,2)),swu2num(e.slice(2,4))],coord2swu=e=>e.map(e=>num2swu(e)).join(""),swu2code=e=>parseInt(e.codePointAt(0)),code2swu=e=>String.fromCodePoint(e),swu2key=e=>{const r=swu2code(e)-262145,s=parseInt(r/96),o=parseInt((r-96*s)/16),n=parseInt(r-96*s-16*o);return"S"+(s+256).toString(16)+o.toString(16)+n.toString(16)},key2swu=e=>code2swu(262145+96*(parseInt(e.slice(1,4),16)-256)+16*parseInt(e.slice(4,5),16)+parseInt(e.slice(5,6),16)),parsePrefix=e=>({required:!0,parts:"T"==e?void 0:e.match(new RegExp(`(${re.symbol}|${re.range})`,"g")).map(e=>"R"!=e[0]?e:[e.slice(1,3),e.slice(3,5)])}),parseSignbox=e=>e.match(new RegExp(`(${re.symbol}${re.coord}|${re.range}${re.coord})`,"g")).map(e=>{let r,s;return e.length>5?(r=swu2coord(e.slice(-4)),s=e.slice(0,-4)):s=e,s.includes("R")?{range:[s.slice(1,3),s.slice(3,5)],coord:r}:{symbol:s,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]}${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?coord2swu(e.coord):"")}).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})?`,s="string"==typeof e?e.match(new RegExp(r)):void 0;return{symbol:s?s[1]:void 0,coord:s&&s[2]?swu2coord(s[2]):void 0,style:s?s[3]:void 0}},sign:e=>{const r=`^(${re$1.prefix})?(${re$1.signbox})(${re$2.full})?`,s="string"==typeof e?e.match(new RegExp(r)):void 0;return s?{sequence:s[1]?s[1].slice(2).match(/.{2}/g):void 0,box:s[2].slice(0,2),max:swu2coord(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:swu2coord(e.slice(2))})),style:s[3]}:{}}},decode=e=>e.replace(/\\u([0-9A-F]{4})/g,(function(e,r){return String.fromCharCode(parseInt(r,16))})),pair=e=>[e.charCodeAt(0).toString(16).toUpperCase(),e.charCodeAt(1).toString(16).toUpperCase()],swu2query=(e,r)=>{let s="";const o=parse$1.sign(e);if(o.box){const e=r.indexOf("A")>-1,n=r.indexOf("a")>-1,t=r.indexOf("S")>-1,i=r.indexOf("s")>-1,u=r.indexOf("L")>-1;return(e||n||t||i)&&((e||n)&&o.sequence&&(s+="A",s+=o.sequence.map(e=>e+(n?"fr":"")).join(""),s+="T"),(t||i)&&o.spatials&&(s+=o.spatials.map(e=>e.symbol+(i?"fr":"")+(u?coord2swu(e.coord):"")).join(""))),s?"Q"+s:void 0}},range=(e,r)=>{if(e>r)return"";let s,o="",n=[];if(e=pair(e),r=pair(r),2!=e.length&&2!=r.length)return"";if(e[0]==r[0])e[1]==r[1]?(o="\\u"+e[0]+"\\u"+e[1],n.push(o)):(o="\\u"+e[0]+"[\\u"+e[1]+"-\\u"+r[1]+"]",n.push(o));else{o="DFFF"==e[1]?"\\u"+e[0]+"\\uDFFF":"\\u"+e[0]+"[\\u"+e[1]+"-\\uDFFF]",n.push(o);let s=parseInt(r[0],16)-parseInt(e[0],16);2==s&&(o="\\u"+(parseInt(e[0],16)+1).toString(16).toUpperCase(),o+="[\\uDC00-\\uDFFF]",n.push(o)),s>2&&(o="[",o+="\\u"+(parseInt(e[0],16)+1).toString(16).toUpperCase(),o+="-\\u"+(parseInt(r[0],16)-1).toString(16).toUpperCase(),o+="][\\uDC00-\\uDFFF]",n.push(o)),o="DC00"==r[1]?"\\u"+r[0]+"\\uDC00":"\\u"+r[0]+"[\\uDC00-\\u"+r[1]+"]",n.push(o)}return o=1==(s=n.length)?n[0]:"(("+(o=n.join(")|("))+"))",decode(o)},symbolRanges=e=>{let r=e.match(new RegExp(re.symbol));if(r){let e,s,o=r[0].slice(0,2),n=swu2key(o),t=n.slice(0,4);if("fr"==r[0].slice(-2))return e=key2swu(t+"00"),s=key2swu(t+"5f"),range(e,s);if("r"==r[0].slice(-1))return e=key2swu(n.slice(0,5)+"0"),s=key2swu(n.slice(0,5)+"f"),range(e,s);if("f"==r[0].slice(-1)){return"("+[0,1,2,3,4,5].map((function(e){return key2swu(t+e+n.slice(-1))})).join("|")+")"}return o}return""},regex=e=>{if(!(e=e.match(new RegExp(`^${re.full}`))[0]))return"";let r,s,o,n,t,i,u,l,c,a,$=20,d=re$1.symbol,p=re$1.coord,g=re$1.box+p+"("+d+p+")*",f="("+re$1.sort+"("+d+")+)",x="R"+d+d,m=d+"f?r?",y="("+p+")?",w="("+re$2.full+")?";if("Q"==e)return[re$1.sign];if("Q-"==e)return[re$1.sign+"("+re$2.full+")?"];if("QT"==e)return[re$1.sortable];if("QT-"==e)return[re$1.sortable+"("+re$2.full+")?"];let b,h=[],R=e.indexOf("T")+1;if(R){a="("+re$1.sort;let o=e.slice(0,R);if(e=e.replace(o,""),"QT"==o)a+="("+d+")+)";else if(r=o.match(new RegExp("("+m+"|"+x+")","g"))){let e;for(s=0;so.length?(l=(i=swu2coord(o.slice(-4)))[0],c=i[1],u+=range(coord2swu([l-$,l+$])),u+=range(coord2swu([c-$,c+$]))):u+=p,u=g+u+"("+d+p+")*",u=R?a+u:f+"?"+u,e.indexOf("-")>0&&(u+=w),h.push(u)):(o=r[s].toString(),n=swu2key(o.slice(1,3)),t=swu2key(o.slice(3,5)),n=key2swu(n.slice(0,4)+"00"),t=key2swu(t.slice(0,4)+"5f"),u=range(n,t),o.length>5?(l=(i=swu2coord(o.slice(5,9)))[0],c=i[1],u+=range(coord2swu([l-$,l+$])),u+=range(coord2swu([c-$,c+$]))):u+=p,u=g+u+"("+d+p+")*",u=R?a+u:f+"?"+u,e.indexOf("-")>0&&(u+=w),h.push(u));return h.length||(e.indexOf("-")>0&&(u+=w),h.push(a+g)),h},results=(e,r)=>{if(!r)return[];let s,o,n,t,i,u=regex(e);if(!u)return[];for(i=0;i{if(!r)return[];let s,o,n,t,i,u=regex(e);if(!u)return[];for(i=0;i