/* 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 o={symbol:"S[123][0-9a-f]{2}[0-5][0-9a-f]",coord:"[0-9]{3}x[0-9]{3}",sort:"A",box:"[BLMR]"};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}`;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 e=o=>(new RegExp(`^${t.colorhex}$`).test(o)?"#":"")+o,s=o=>{const s=`^${t.full}`,i=("string"==typeof o?o.match(new RegExp(s)):[])||[];return l={colorize:i[1]?!!i[1]:void 0,padding:i[2]?parseInt(i[2].slice(1)):void 0,background:i[3]?e(i[3].slice(2,-1)):void 0,detail:i[4]?i[4].slice(2,-1).split(",").map(e):void 0,zoom:i[5]?"Zx"===i[5]?"x":parseFloat(i[5].slice(1)):void 0,detailsym:i[6]?i[6].match(new RegExp(t.detailsym,"g")).map((o=>{const t=o.split("_"),s=t[1].split(",").map(e);return{index:parseInt(t[0].slice(1)),detail:s}})):void 0,classes:i[7]?i[7]:void 0,id:i[8]?i[8]:void 0},Object.fromEntries(Object.entries(l).filter((([o,t])=>void 0!==t)));var l},i=o=>o.split("x").map((o=>parseInt(o))),l={symbol:e=>{const s=`^(${o.symbol})(${o.coord})?(${t.full})?`,l="string"==typeof e?e.match(new RegExp(s)):void 0;return{symbol:l?l[1]:void 0,coord:l&&l[2]?i(l[2]):void 0,style:l?l[3]:void 0}},sign:e=>{const s=`^(${o.prefix})?(${o.signbox})(${t.full})?`,l="string"==typeof e?e.match(new RegExp(s)):void 0;return l?{sequence:l[1]?l[1].slice(1).match(/.{6}/g):void 0,box:l[2][0],max:i(l[2].slice(1,8)),spatials:l[2].length<9?void 0:l[2].slice(8).match(/(.{13})/g).map((o=>({symbol:o.slice(0,6),coord:[parseInt(o.slice(6,9)),parseInt(o.slice(10,13))]}))),style:l[3]}:{}},text:e=>{if("string"!=typeof e)return[];const s=`(${o.sign}(${t.full})?|${o.spatial}(${t.full})?)`,i=e.match(new RegExp(s,"g"));return i?[...i]:[]}},n={symbol:e=>{if("string"==typeof e.symbol){const s=(e.symbol.match(o.symbol)||[""])[0];if(s){return s+((((e.coord&&e.coord[0]||"").toString()+"x"+(e.coord&&e.coord[1]||"").toString()).match(o.coord)||[""])[0]||"")+("string"==typeof e.style&&(e.style.match(t.full)||[""])[0]||"")}}},sign:e=>{let s="string"!=typeof e.box?"M":(e.box+"M").match(o.box);const i=(((e.max&&e.max[0]||"").toString()+"x"+(e.max&&e.max[1]||"").toString()).match(o.coord)||[""])[0]||"";if(!i)return;let l="";e.sequence&&Array.isArray(e.sequence)&&(l=e.sequence.map((t=>(t.match(o.symbol)||[""])[0])).join(""),l=l?"A"+l:"");let n="";e.spatials&&Array.isArray(e.spatials)&&(n=e.spatials.map((t=>{if("string"==typeof t.symbol){const e=(t.symbol.match(o.symbol)||[""])[0];if(e){const s=(((t.coord&&t.coord[0]||"").toString()+"x"+(t.coord&&t.coord[1]||"").toString()).match(o.coord)||[""])[0]||"";if(s)return e+s}}return""})).join(""));return l+s+i+n+("string"==typeof e.style&&(e.style.match(t.full)||[""])[0]||"")}},r=o=>{let t,e,i,n,r,a,c,p,m=l.sign(o);m.spatials?(n=Math.min(...m.spatials.map((o=>o.coord[0]))),r=m.max[0],t=r-n,a=Math.min(...m.spatials.map((o=>o.coord[1]))),c=m.max[1],e=c-a,i="sign",p=m.box):(m=l.symbol(o),p="M",m.coord?(n=m.coord[0],t=2*(500-n),a=m.coord[1],e=2*(500-a),i="symbol"):(n=490,t=20,a=490,e=20,i="none"));let d=s(m.style),g=d.zoom||1,u=d.padding||0;return{minX:n,minY:a,width:t,height:e,segment:i,lane:{B:0,L:-1,M:0,R:1}[p],padding:u,zoom:g}},a={height:500,width:150,offset:50,pad:20,margin:5,dynamic:!1,background:void 0,punctuation:{spacing:!0,pad:30,pull:!0},style:{detail:["black","white"],zoom:1}},c=o=>("object"!=typeof o&&(o={}),{...a,...o,punctuation:{...a.punctuation,...o.punctuation},style:{...a.style,...o.style}}),p=[256,517,759,767,877,895,903],m={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]},d=["#0000CC","#CC0000","#FF0099","#006600","#000000","#884411","#FF9900"];exports.category=p,exports.colorize=o=>{const t=l.symbol(o);let e="#000000";if(t.symbol){const o=parseInt(t.symbol.slice(1,4),16),s=p.findIndex((t=>t>o));e=d[s<0?6:s-1]}return e},exports.colors=d,exports.columnDefaults=a,exports.columnDefaultsMerge=c,exports.columns=(o,t)=>{if("string"!=typeof o)return{};const e=c(t);let s=l.text(o),i=0,n=[],a=[],p=0,m=parseInt(e.width/2),d=e.height-e.margin,g=!0,u=!1;for(let o of s){let t=r(o);i+=p,e.punctuation.spacing?i+="sign"==t.segment?e.pad:0:i+=e.pad,u=i+t.height>d,u&&"symbol"==t.segment&&e.punctuation.pull&&g&&(u=!1,g=!1),0==a.length&&(u=!1),u&&(i=e.pad,n.push(a),a=[],g=!0),a.push(Object.assign(t,{x:m+e.offset*t.lane-(500-t.minX)*t.zoom*e.style.zoom,y:i,text:o})),i+=t.height*t.zoom*e.style.zoom,p=e.punctuation.spacing?"sign"==t.segment?e.pad:e.punctuation.pad:e.pad}if(a.length&&n.push(a),e.punctuation.pull)for(let o of n){let t=o[o.length-1],s=t.y+t.height-(e.height-e.margin);if(s>0){let t=parseInt(s/o.length)+1;for(let e in o)o[e].y-=t*e+t}}let f=[];for(let o of n){let t=[m-e.offset-e.pad],s=[m+e.offset+e.pad];for(let i of o)t.push(i.x-e.pad),s.push(i.x+i.width+e.pad);t=Math.min(...t),s=Math.max(...s);let i=e.width,l=0;e.dynamic?(i=s-t,l=-t):l=m-parseInt((t+s)/2);for(let t of o)t.x+=l;f.push(i)}return{options:e,widths:f,columns:n}},exports.compose=n,exports.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],exports.info=r,exports.isType=(o,t)=>{const e=l.symbol(o);if(e.symbol){const o=parseInt(e.symbol.slice(1,4),16),s=m[t];if(s)return s[0]<=o&&s[1]>=o}return!1},exports.kind=[256,895,903],exports.parse=l,exports.ranges=m,exports.re=o;