UNPKG

text-vide

Version:

An Open-Source JavaScript Implementation of Bionic Reading.

2 lines (1 loc) 1.67 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=t=>t==null||t==="",y=(t,n)=>Object.keys(t).reduce((e,s)=>(n(e[s])&&delete e[s],e),t),R=(t,n)=>({...n,...y(t,I)}),_=["<b>","</b>"],H=1,A=!0,x=!0,M=t=>R(t,{sep:_,fixationPoint:H,ignoreHtmlTag:A,ignoreHtmlEntity:x}),L=[[0,4,12,17,24,29,35,42,48],[1,2,7,10,13,14,19,22,25,28,31,34,37,40,43,46,49],[1,2,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49],[0,2,4,5,6,8,9,11,14,15,17,18,20,0,21,23,24,26,27,29,30,32,33,35,36,38,39,41,42,44,45,47,48],[0,2,3,5,6,7,8,10,11,12,14,15,17,19,20,21,23,24,25,26,28,29,30,32,33,34,35,37,38,39,41,42,43,44,46,47,48]],N=(t,n)=>{const{length:i}=t,e=L[n-1]??L[0],s=e.findIndex(c=>i<=c);let o=i-s;return s===-1&&(o=i-e.length),Math.max(o,0)},O=(t,n)=>typeof n=="string"?`${n}${t}${n}`:`${n[0]}${t}${n[1]}`,T=t=>Array.from(t).map(n=>{const i=n.index,[e]=n,{length:s}=e;return[i,i+s-1]}),p=/<!--[^]*?-->|<[^>]+>/g,F=t=>{const n=t.matchAll(p),e=T(n).reverse();return s=>{const o=s.index,c=e.find(([r])=>o>r);if(!c)return!1;const[,a]=c;return o<a}},G=/&[\w#]+;/g,$=t=>{const n=t.matchAll(G),e=T(n).reverse();return s=>{const o=s.index,c=e.find(([r])=>o>r);if(!c)return!1;const[,a]=c;return o<a}},v=/(\p{L}|\p{Nd})*\p{L}(\p{L}|\p{Nd})*/gu,D=(t,n={})=>{if(!(t!=null&&t.length))return"";const{fixationPoint:i,sep:e,ignoreHtmlTag:s,ignoreHtmlEntity:o}=M(n),c=Array.from(t.matchAll(v));let a="",l=0,r;s&&(r=F(t));let g;o&&(g=$(t));for(const d of c){if((r==null?void 0:r(d))||(g==null?void 0:g(d)))continue;const[f]=d,m=d.index,u=m+N(f,i),E=t.slice(l,m);a+=E,m!==u&&(a+=O(t.slice(m,u),e)),l=u}const h=t.slice(l);return a+h};exports.textVide=D;