UNPKG

4.27 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:"(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))",coord:"(?:\ud836[\udc0c-\uddff]){2}",sort:"𝠀",box:"\ud836[\udc01-\udc04]"};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 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 s=o=>parseInt(o.codePointAt(0))-120844+250,t=o=>[s(o.slice(0,2)),s(o.slice(2,4))],r=o=>o.map(o=>(o=>String.fromCodePoint(120844+parseInt(o)-250))(o)).join(""),c=o=>parseInt(o.codePointAt(0)),l={symbol:s=>{const r=`^(${o.symbol})(${o.coord})?(${e.full})?`,c="string"==typeof s?s.match(new RegExp(r)):void 0;return{symbol:c?c[1]:void 0,coord:c&&c[2]?t(c[2]):void 0,style:c?c[3]:void 0}},sign:s=>{const r=`^(${o.prefix})?(${o.signbox})(${e.full})?`,c="string"==typeof s?s.match(new RegExp(r)):void 0;return c?{sequence:c[1]?c[1].slice(2).match(/.{2}/g):void 0,box:c[2].slice(0,2),max:t(c[2].slice(2,6)),spatials:c[2].length<7?void 0:c[2].slice(6).match(/(.{6})/g).map(o=>({symbol:o.slice(0,2),coord:t(o.slice(2))})),style:c[3]}:{}}},n=o=>o.replace(/[\u007F-\uFFFF]/g,(function(o){return"\\u"+("0000"+o.charCodeAt(0).toString(16)).substr(-4).toUpperCase()})),a=o=>o.replace(/\\u([0-9A-F]{4})/g,(function(o,e){return String.fromCharCode(parseInt(e,16))})),i=o=>[o.charCodeAt(0).toString(16).toUpperCase(),o.charCodeAt(1).toString(16).toUpperCase()],d={symbol:s=>{if("object"==typeof s&&null!==s&&"string"==typeof s.symbol){const t=(s.symbol.match(o.symbol)||[""])[0];if(t){const o=s.coord&&s.coord[0]||"",c=s.coord&&s.coord[1]||"";return t+(o&&c?r([o,c]):"")+("string"==typeof s.style&&(s.style.match(e.full)||[""])[0]||"")}}},sign:s=>{if("object"!=typeof s||null===s)return;let t="string"!=typeof s.box?"𝠃":(s.box+"𝠃").match(o.box);const c=s.max&&s.max[0]||"",l=s.max&&s.max[1]||"",n=c&&l?r([c,l]):void 0;if(!n)return;let a="";s.sequence&&Array.isArray(s.sequence)&&(a=(a=s.sequence.map(e=>(e.match(o.symbol)||[""])[0]).join(""))?"𝠀"+a:"");let i="";return s.spatials&&Array.isArray(s.spatials)&&(i=s.spatials.map(e=>{if("string"==typeof e.symbol){const s=(e.symbol.match(o.symbol)||[""])[0];if(s){const o=e.coord&&e.coord[0]||"",t=e.coord&&e.coord[1]||"",c=o&&t?r([o,t]):"";if(c)return s+c}}return""}).join("")),a+t+n+i+("string"==typeof s.style&&(s.style.match(e.full)||[""])[0]||"")}},m=[262145,323489,324257],u=[262145,287201,310433,311201,321761,323489,324257],b=[262145,263489,265025,268673,269441,275009,277889,280001,281825,285665,287201,288833,290753,294881,296417,299777,302657,304289,307169,308513,310433,311201,312257,315329,316961,319841,321761,322625,323489,324257],y={all:[262145,324736],writing:[262145,323488],hand:[262145,287200],movement:[287201,310432],dynamic:[310433,311200],head:[311201,321760],hcenter:[311201,321760],vcenter:[311201,322624],trunk:[321761,322624],limb:[322625,323488],location:[323489,324256],punctuation:[324257,324736]},f=(o,e)=>{const s=l.symbol(o);if(s.symbol){const o=c(s.symbol),t=y[e];if(t)return t[0]<=o&&t[1]>=o}return!1},p=["#0000CC","#CC0000","#FF0099","#006600","#000000","#884411","#FF9900"],$=o=>{const e=l.symbol(o);let s="#000000";if(e.symbol){const o=c(e.symbol),t=u.findIndex(e=>e>o);s=p[t<0?6:t-1]}return s};export{u as category,$ as colorize,p as colors,d as compose,a as decode,n as encode,b as group,f as isType,m as kind,i as pair,l as parse,y as ranges,o as re};