/* 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={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.colorbase=`(?:${re.colorhex}|${re.colorname})`,re.color=`_${re.colorbase}_`,re.colors=`_${re.colorbase}(?:,${re.colorbase})?_`,re.background=`G${re.color}`,re.detail=`D${re.colors}`,re.detailsym=`D[0-9]{2}${re.colors}`,re.classes=`${re.classbase}(?: ${re.classbase})*`,re.full=`-(${re.colorize})?(${re.padding})?(${re.background})?(${re.detail})?(${re.zoom})?(?:-((?:${re.detailsym})*)((?:${re.zoomsym})*))?(?:-(${re.classes})?!(?:(${re.id})!)?)?`;const prefixColor=e=>{return(new RegExp(`^${re.colorhex}$`).test(e)?"#":"")+e},parse=e=>{const o=`^${re.full}`,r=("string"==typeof e?e.match(new RegExp(o)):[])||[];return{colorize:r[1]?!!r[1]:void 0,padding:r[2]?parseInt(r[2].slice(1)):void 0,background:r[3]?prefixColor(r[3].slice(2,-1)):void 0,detail:r[4]?r[4].slice(2,-1).split(",").map(prefixColor):void 0,zoom:r[5]?"Zx"===r[5]?"x":parseFloat(r[5].slice(1)):void 0,detailsym:r[6]?r[6].match(new RegExp(re.detailsym,"g")).map(e=>{const o=e.split("_"),r=o[1].split(",").map(prefixColor);return{index:parseInt(o[0].slice(1)),detail:r}}):void 0,zoomsym:r[7]?r[7].match(new RegExp(re.zoomsym,"g")).map(e=>{const o=e.split(",");return{index:parseInt(o[0].slice(1)),zoom:parseFloat(o[1]),offset:o[2]?o[2].split("x").map(e=>parseInt(e)-500):void 0}}):void 0,classes:r[8]?r[8]:void 0,id:r[9]?r[9]:void 0}},compose=e=>{if("object"!=typeof e||null===e)return;let o="-";o+=e.colorize?"C":"";const r=parseInt(e.padding);o+=!r||r<=0||r>99?"":"P"+(r>9?r:"0"+r);const s=e.background&&"string"==typeof e.background?e.background.match(re.colorbase)[0]:void 0;o+=s?"G_"+s+"_":"";const t=e.detail&&e.detail[0]&&"string"==typeof e.detail[0]?e.detail[0].match(re.colorbase)[0]:void 0,a=e.detail&&e.detail[1]&&"string"==typeof e.detail[1]?e.detail[1].match(re.colorbase)[0]:void 0;t&&(o+="D_"+t,a&&(o+=","+a),o+="_");const i="x"===e.zoom?"x":parseFloat(e.zoom);o+=!i||i<=0?"":"Z"+i;let l="";l+=(e.detailsym&&Array.isArray(e.detailsym)?e.detailsym.map(e=>{const o=parseInt(e.index);if(!o||o<=0||o>99)return"";let r="D"+(o>9?o:"0"+o);const s=e.detail&&e.detail[0]?e.detail[0].match(re.colorbase)[0]:void 0,t=e.detail&&e.detail[1]?e.detail[1].match(re.colorbase)[0]:void 0;return s&&(r+="_"+s,t&&(r+=","+t),r+="_"),r}):[]).join(""),l+=(e.zoomsym&&Array.isArray(e.zoomsym)?e.zoomsym.map(e=>{const o=parseInt(e.index);if(!o||o<=0||o>99)return"";let r="Z"+(o>9?o:"0"+o);const s=parseFloat(e.zoom);if(r+=!s||s<=0?"":","+s,e.offset&&0 in e.offset&&1 in e.offset){const o=parseInt(e.offset[0])+500,s=parseInt(e.offset[1])+500;o>=250&&o<750&&s>=250&&s<750&&(r+=","+o+"x"+s)}return r}):[]).join("");let c="";const d=e.classes&&"string"==typeof e.classes?e.classes.match(re.classes)[0]:void 0;c+=d||"";const n=e.id&&"string"==typeof e.id?e.id.match(re.id)[0]:void 0;return c+=d||n?"!":"",c+=n?n+"!":"",o+(l||c?"-"+l:"")+(c?"-"+c:"")};exports.compose=compose,exports.parse=parse,exports.re=re;