UNPKG

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