UNPKG

3.6 kBJavaScriptView Raw
1/* Sutton SignWriting Core Module v1.2.0 (https://github.com/sutton-signwriting/core), author: Steve Slevinski (https://SteveSlevinski.me), license: MIT */
2let 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 s={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}"};s.colorbase=`(?:${s.colorhex}|${s.colorname})`,s.color=`_${s.colorbase}_`,s.colors=`_${s.colorbase}(?:,${s.colorbase})?_`,s.background=`G${s.color}`,s.detail=`D${s.colors}`,s.detailsym=`D[0-9]{2}${s.colors}`,s.classes=`${s.classbase}(?: ${s.classbase})*`,s.full=`-(${s.colorize})?(${s.padding})?(${s.background})?(${s.detail})?(${s.zoom})?(?:-((?:${s.detailsym})*)((?:${s.zoomsym})*))?(?:-(${s.classes})?!(?:(${s.id})!)?)?`;const t=o=>o.split("x").map(o=>parseInt(o)),e={symbol:e=>{const r=`^(${o.symbol})(${o.coord})?(${s.full})?`,l="string"==typeof e?e.match(new RegExp(r)):void 0;return{symbol:l?l[1]:void 0,coord:l&&l[2]?t(l[2]):void 0,style:l?l[3]:void 0}},sign:e=>{const r=`^(${o.prefix})?(${o.signbox})(${s.full})?`,l="string"==typeof e?e.match(new RegExp(r)):void 0;return l?{sequence:l[1]?l[1].slice(1).match(/.{6}/g):void 0,box:l[2][0],max:t(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]}:{}}},r={symbol:t=>{if("string"==typeof t.symbol){const e=(t.symbol.match(o.symbol)||[""])[0];if(e){return e+((((t.coord&&t.coord[0]||"").toString()+"x"+(t.coord&&t.coord[1]||"").toString()).match(o.coord)||[""])[0]||"")+("string"==typeof t.style&&(t.style.match(s.full)||[""])[0]||"")}}},sign:t=>{let e="string"!=typeof t.box?"M":(t.box+"M").match(o.box);const r=(((t.max&&t.max[0]||"").toString()+"x"+(t.max&&t.max[1]||"").toString()).match(o.coord)||[""])[0]||"";if(!r)return;let l="";t.sequence&&Array.isArray(t.sequence)&&(l=(l=t.sequence.map(s=>(s.match(o.symbol)||[""])[0]).join(""))?"A"+l:"");let a="";return t.spatials&&Array.isArray(t.spatials)&&(a=t.spatials.map(s=>{if("string"==typeof s.symbol){const t=(s.symbol.match(o.symbol)||[""])[0];if(t){const e=(((s.coord&&s.coord[0]||"").toString()+"x"+(s.coord&&s.coord[1]||"").toString()).match(o.coord)||[""])[0]||"";if(e)return t+e}}return""}).join("")),l+e+r+a+("string"==typeof t.style&&(t.style.match(s.full)||[""])[0]||"")}},l=[256,895,903],a=[256,517,759,767,877,895,903],c=[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],i={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]},n=(o,s)=>{const t=e.symbol(o);if(t.symbol){const o=parseInt(t.symbol.slice(1,4),16),e=i[s];if(e)return e[0]<=o&&e[1]>=o}return!1},m=["#0000CC","#CC0000","#FF0099","#006600","#000000","#884411","#FF9900"],y=o=>{const s=e.symbol(o);let t="#000000";if(s.symbol){const o=parseInt(s.symbol.slice(1,4),16),e=a.findIndex(s=>s>o);t=m[e<0?6:e-1]}return t};export{a as category,y as colorize,m as colors,r as compose,c as group,n as isType,l as kind,e as parse,i as ranges,o as re};