@fiddle-digital/string-tune 1.1.25 → 1.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
-ms-overflow-style: none; /* IE and Edge */
|
|
17
17
|
scrollbar-width: none; /* Firefox */
|
|
18
18
|
}
|
|
19
|
-
`,document.head.appendChild(t)}createScrollbar(){this.scrollbar=document.createElement("div"),this.scrollbar.classList.add("scrollbar"),this.thumb=document.createElement("div"),this.thumb.classList.add("thumb"),this.scrollbar.appendChild(this.thumb),document.body.appendChild(this.scrollbar),this.scrollbarStateHorizontal=new wt(this.data,this.scrollbar,this.thumb),this.scrollbarStateVertical=new Lt(this.data,this.scrollbar,this.thumb),this.scrollbarState=this.scrollbarStateVertical}updateThumb(){this.scrollbarState.updateThumb()}mouseDownEvent(t){this.isDragging=!0,this.scrollbarState.mouseDownEvent(t),document.body.style.userSelect="none",this.scrollbar.classList.add("-touch")}mouseMoveEvent(t){this.isDragging&&this.scrollbarState.mouseMoveEvent(t)}mouseUpEvent(){this.isDragging=!1,document.body.style.userSelect="",this.hideScrollbar(),this.scrollbar.classList.remove("-touch")}showScrollbar(){this.scrollbar.classList.add("-scroll")}hideScrollbar(){this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.scrollTimeout=setTimeout(()=>{this.scrollbar.classList.remove("-scroll")},1e3)}};var k={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function Yt(c,e){let t=document.createDocumentFragment(),r=0,i=w(e,"line")||w(e,"charLine")||w(e,"wordLine");return c.forEach((o,s)=>{let n=s===c.length-1,a=t;i&&(a=document.createElement("span"),a.classList.add("-s-line"),o.isBeforeElement&&a.classList.add(k.BEFORE_ELEMENT),o.isAfterElement&&a.classList.add(k.AFTER_ELEMENT),a.style.setProperty("--line-index",String(o.lineIndex)),a.style.setProperty("--word-total",String(o.words.length)),$t(a,o.calculatedValues,e)),o.words.forEach((l,u)=>{let d=u===o.words.length-1;if(l.chars.length===1&&l.chars[0].token.type==="element"){let m=l.chars[0].token.node.cloneNode(!0);a.appendChild(m),d||a.appendChild(document.createTextNode("\xA0"));return}let p=w(e,"word")||w(e,"charWord")||w(e,"wordLine"),h=p?document.createElement("span"):a;if(p&&(h.classList.add("-s-word"),l.isBeforeElement&&h.classList.add(k.BEFORE_ELEMENT),l.isAfterElement&&h.classList.add(k.AFTER_ELEMENT),h.style.setProperty("--word-index",String(l.wordIndexGlobal)),h.style.setProperty("--char-total",String(l.chars.length)),$t(h,l.calculatedValues,e)),w(e,"char")||w(e,"charLine")||w(e,"charWord"))l.chars.forEach(m=>{if(m.char===" "||m.char===" ")return;let b=document.createElement("span"),y=b;y.classList.add("-s-char"),m.isBeforeElement&&y.classList.add(k.BEFORE_ELEMENT),m.isAfterElement&&y.classList.add(k.AFTER_ELEMENT),y.textContent=m.char,y.style.setProperty("--char-index",String(r++)),$t(y,m.calculatedValues,e),h.appendChild(b)});else{let m=document.createTextNode(l.chars.map(b=>b.char).join(""));h.appendChild(m)}p&&a.appendChild(h),i?d?n||a.appendChild(document.createElement("br")):h.appendChild(document.createTextNode("\xA0")):n||h.appendChild(document.createTextNode("\xA0"))}),i&&t.appendChild(a)}),t}function $t(c,e,t){if(e)for(let r of e){if(!le(r.type,r.align,t))continue;let i=ce(r.type,r.align);c.style.setProperty(i,String(r.value))}}function le(c,e,t){let r=t[c]??[];return Array.isArray(r)&&r.some(i=>e.startsWith("random")?i.align.startsWith("random"):i.align===e)}function ce(c,e){let t=e.startsWith("random")?"random":e;return`--${c}-${t}`}function w(c,e){return Array.isArray(c[e])&&c[e].length>0}var J=0;function Xt(c){J=0;let e=[];return c.forEach(t=>{if(t.nodeType===Node.ELEMENT_NODE){let r=t;if(r.tagName.toLowerCase()==="br"){e.push({type:"br",id:`br_${J++}`,node:r,tagName:"br"});return}e.push({type:"element",id:`el_${J++}`,node:r,tagName:r.tagName.toLowerCase()})}else if(t.nodeType===Node.TEXT_NODE){let r=t.nodeValue??"",i=`text_${J++}`;r.trim()?e.push({type:"text",id:i,node:t,content:r}):e.push({type:"space",id:i,node:t,content:r})}else e.push({type:"other",id:`node_${J++}`,node:t})}),e}function pe(c){let e=[],t=[];for(let r of c)r.type==="br"?(t.length&&e.push(t),e.push([r]),t=[]):t.push(r);return t.length&&e.push(t),e}function Ut(c,e){let t=document.createElement("div"),r=window.getComputedStyle(e);t.style.position="absolute",t.style.visibility="hidden",t.style.pointerEvents="none",t.style.width=e.clientWidth+"px",t.style.padding=r.padding,t.style.font=r.font,t.style.letterSpacing=r.letterSpacing,t.style.lineHeight=r.lineHeight,t.style.fontVariant=r.fontVariant,t.style.fontStretch=r.fontStretch;let i=document.createElement("span");i.textContent="\xA0",t.appendChild(i);let o=i.getBoundingClientRect().width;t.removeChild(i),t.style.width=e.clientWidth+o+"px",e.appendChild(t);let s=[],n=pe(c),a=!1;for(let l of n){if(l.length===1&&l[0].type==="br"){s.push({token:l[0],rect:new DOMRect(0,0,0,0)});continue}l.length!==0&&(t.innerHTML="",l.forEach((u,d)=>{let p,h,f;switch(u.type){case"text":u.content.trim().split(/\s+/).filter(y=>y.length>0).forEach((y,M)=>{h=document.createElement("span"),h.style.display="inline-block",h.textContent=y+"\xA0",t.appendChild(h),f=h.getBoundingClientRect();let v={token:{type:"text",id:"",node:p,content:y},rect:f};a&&(a=!1,v.token.meta={...v.token.meta||{},isAfterElement:!0}),s.push(v)});break;case"element":p=u.node.cloneNode(!0),h=document.createElement("span"),h.style.display="inline-block",h.appendChild(p),t.appendChild(h),f=h.getBoundingClientRect(),s.push({token:u,rect:f});let b=s[s.length-2];b?.token.type==="text"&&(b.token.meta={...b.token.meta||{},isBeforeElement:!0}),a=!0;break;case"space":case"other":break}}))}return e.removeChild(t),s}var Kt=1;function Qt(c){let e=[],t=null,r=0,i=0,o=0;return c.forEach(s=>{let n=s.token,a=n.meta?.isBeforeElement??!1,l=n.meta?.isAfterElement??!1;if(n.type==="br"){t=null;return}if(n.type==="text"){let u=n.content.match(/(\s+|\S+)/g);if(!u)return;let d=s.rect.left,p=n.content.length,h=p>0?s.rect.width/p:0;u.forEach(f=>{if(/^\s+$/.test(f)){d+=h*f.length;return}let m=[];if(f.split("").forEach((x,S)=>{let E=new DOMRect(d,s.rect.top,h,s.rect.height);m.push({char:x,rect:E,token:n,charIndexInWord:S,charIndexInLine:0,charIndexGlobal:i++}),d+=h}),m.length>0){let x=m[m.length-1];a&&(x.isBeforeElement=!0),l&&(x.isAfterElement=!0)}if((!t||Math.abs(s.rect.top-r)>Kt)&&(r=s.rect.top,t={words:[],rect:s.rect,lineIndex:e.length},e.push(t)),!t)return;let y=t.words.length,M=t.words.reduce((x,S)=>x+S.chars.length,0);m.forEach((x,S)=>x.charIndexInLine=M+S);let v={chars:m,rect:s.rect,wordIndexGlobal:o++,wordIndexInLine:y,isBeforeElement:a,isAfterElement:l};t.words.push(v),t.rect=jt(t.words.map(x=>x.rect)),a&&(t.isBeforeElement=!0),l&&(t.isAfterElement=!0)})}else if(n.type==="element"){let u=s.rect;if((!t||Math.abs(u.top-r)>Kt)&&(r=u.top,t={words:[],rect:u,lineIndex:e.length},e.push(t)),!t)return;let p=t.words.length,h=t.words.reduce((b,y)=>b+y.chars.length,0),m={chars:[{char:"[E]",rect:u,token:n,charIndexInWord:0,charIndexInLine:h,charIndexGlobal:i++}],rect:u,wordIndexGlobal:o++,wordIndexInLine:p,isBeforeElement:!1,isAfterElement:!1};t.words.push(m),t.rect=jt(t.words.map(b=>b.rect))}}),e}function jt(c){let e=Math.min(...c.map(o=>o.left)),t=Math.min(...c.map(o=>o.top)),r=Math.max(...c.map(o=>o.right)),i=Math.max(...c.map(o=>o.bottom));return new DOMRect(e,t,r-e,i-t)}var It=class extends g{constructor(e){super(e),this.htmlKey="split",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1}onResizeWidth(){this.objectsOnPage.forEach(e=>{this.onObjectConnected(e)})}onObjectConnected(e){let t=e.htmlElement;if(!t)return;let r=t.classList.contains("-splitted"),i=t.getAttribute("string-split-original");(!r||i===null)&&(i=this.escapeAttribute(t.innerHTML),t.setAttribute("string-split-original",i),t.classList.add("-splitted")),e.htmlElement.innerHTML=i;let o=t.getAttribute("string-split")??t.getAttribute("data-string-split")??"",s=this.tools.optionsParser.process({attributeValue:o}),{fragment:n,result:a}=this.split(t,s);e.setProperty("nodes",n.childNodes),t.innerHTML="",t.appendChild(a);let l=t.getAttribute("string-split-restore-after");l&&!isNaN(Number(l))&&setTimeout(()=>{t.innerHTML=i,t.classList.add("-restored")},Number(l))}split(e,t){let r=document.createDocumentFragment();e.childNodes.forEach(a=>r.appendChild(a.cloneNode(!0)));let i=Xt(r.childNodes),o=Ut(i,e),s=Qt(o);this.applyCalculatedValues(s,t);let n=Yt(s,t);return{fragment:r,result:n}}computeValue(e,t,r){if(e.align.startsWith("random")){let i=e.random?.min??0,o=e.random?.max??r-1;return Math.floor(Math.random()*(o-i+1))+i}switch(e.align){case"start":return t;case"end":return r-t-1;case"center":{let i=Math.floor((r-1)/2);return Math.abs(t-i)}default:return t}}applyCalculatedValues(e,t){let r=s=>s.words.reduce((n,a)=>n+a.chars.length,0),i=e.reduce((s,n)=>s+n.words.length,0),o=e.reduce((s,n)=>s+n.words.reduce((a,l)=>a+l.chars.length,0),0);e.forEach((s,n)=>{t.line&&(s.calculatedValues=t.line.map(a=>({type:"line",align:a.align,value:this.computeValue(a,n,e.length)}))),s.words.forEach((a,l)=>{t.word&&(a.calculatedValues=t.word.map(d=>({type:"word",align:d.align,value:this.computeValue(d,a.wordIndexGlobal,i)}))),t.wordLine&&(a.calculatedValues??(a.calculatedValues=[]),a.calculatedValues.push(...t.wordLine.map(d=>({type:"wordLine",align:d.align,value:this.computeValue(d,a.wordIndexInLine,s.words.length)}))));let u=r(s);a.chars.forEach(d=>{let p=[];t.char&&p.push(...t.char.map(h=>({type:"char",align:h.align,value:this.computeValue(h,d.charIndexGlobal,o)}))),t.charWord&&p.push(...t.charWord.map(h=>({type:"charWord",align:h.align,value:this.computeValue(h,d.charIndexInWord,a.chars.length)}))),t.charLine&&p.push(...t.charLine.map(h=>({type:"charLine",align:h.align,value:this.computeValue(h,d.charIndexInLine,u)}))),d.calculatedValues=p})})})}escapeAttribute(e){return e.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var Ot=class extends g{constructor(t){super(t);this.history=[];this.maxPoints=0;this.height=0;this.value=0;this.target=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.value=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="red",t.lineWidth=2,t.beginPath(),this.history.forEach((o,s)=>{let n=s,a=i-o*this.height;s===0?t.moveTo(n,a):t.lineTo(n,a)}),t.stroke()}initCanvas(){let t=document.createElement("canvas"),r=window.innerWidth*.5;this.height=window.innerHeight/15-20,t.width=r,t.height=this.height,Object.assign(t.style,{position:"fixed",bottom:`${window.innerHeight/20+10}px`,left:"50%",transform:"translateX(-50%)",backgroundColor:"#000000",border:"1px solid rgba(255, 255, 255, 0.2)",zIndex:"1000",pointerEvents:"none"}),this.canvas=t,this.context=t.getContext("2d"),document.body.appendChild(t)}setTarget(t){this.target=t}clear(){this.canvas.remove(),this.history=[]}};var kt=class extends g{constructor(t){super(t);this.frameCount=0;this._type=2}onInit(){this.createDisplayElement(),this.intervalId=window.setInterval(()=>{this.displayElement.textContent=`FPS: ${this.frameCount}`,this.frameCount=0},1e3)}onFrame(t){this.frameCount++}destroy(){clearInterval(this.intervalId),this.displayElement.remove()}createDisplayElement(){let t=document.createElement("div");Object.assign(t.style,{position:"fixed",bottom:"10px",right:"10px",backgroundColor:"#000",color:"#fff",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),t.textContent="FPS: 0",document.body.appendChild(t),this.displayElement=t}};var Dt=class extends g{constructor(t){super(t);this.history=[];this.maxPoints=0;this.canvasHeight=0;this.currentValue=0;this.targetValue=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.currentValue=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="#007bff",t.lineWidth=2,t.beginPath(),this.history.forEach((o,s)=>{let n=s,a=i-o/2;s===0?t.moveTo(n,a):t.lineTo(n,a)}),t.stroke()}initCanvas(){this.canvas=document.createElement("canvas"),this.canvasHeight=window.innerHeight/15-20,this.canvas.width=window.innerWidth*.5,this.canvas.height=this.canvasHeight,Object.assign(this.canvas.style,{position:"fixed",bottom:"10px",left:"50%",transform:"translateX(-50%)",backgroundColor:"#000",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),this.context=this.canvas.getContext("2d"),document.body.appendChild(this.canvas)}setTarget(t){this.targetValue=t}clear(){this.canvas.remove(),this.history=[]}};var Rt=class extends g{constructor(e){super(e),this._type=2}onInit(){this.createDisplayElement()}onScroll(e){let t=e.scroll.current,r=e.scroll.target,i=t<r?"\u2193":t>r?"\u2191":"-";this.displayElement.setAttribute("data-dir",i),this.displayElement.setAttribute("data-val",`${Math.round(t)}`)}destroy(){this.displayElement.remove()}createDisplayElement(){let e=document.createElement("div");Object.assign(e.style,{position:"fixed",bottom:"10px",left:"10px",backgroundColor:"#000",color:"#fff",border:"1px solid rgba(255,255,255,0.2)",padding:"5px 8px",fontSize:"12px",fontFamily:"monospace",zIndex:"1000",pointerEvents:"none"}),e.setAttribute("data-dir","-"),e.setAttribute("data-val","0"),document.body.appendChild(e);let t=document.createElement("style");t.innerHTML=`
|
|
19
|
+
`,document.head.appendChild(t)}createScrollbar(){this.scrollbar=document.createElement("div"),this.scrollbar.classList.add("scrollbar"),this.thumb=document.createElement("div"),this.thumb.classList.add("thumb"),this.scrollbar.appendChild(this.thumb),document.body.appendChild(this.scrollbar),this.scrollbarStateHorizontal=new wt(this.data,this.scrollbar,this.thumb),this.scrollbarStateVertical=new Lt(this.data,this.scrollbar,this.thumb),this.scrollbarState=this.scrollbarStateVertical}updateThumb(){this.scrollbarState.updateThumb()}mouseDownEvent(t){this.isDragging=!0,this.scrollbarState.mouseDownEvent(t),document.body.style.userSelect="none",this.scrollbar.classList.add("-touch")}mouseMoveEvent(t){this.isDragging&&this.scrollbarState.mouseMoveEvent(t)}mouseUpEvent(){this.isDragging=!1,document.body.style.userSelect="",this.hideScrollbar(),this.scrollbar.classList.remove("-touch")}showScrollbar(){this.scrollbar.classList.add("-scroll")}hideScrollbar(){this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.scrollTimeout=setTimeout(()=>{this.scrollbar.classList.remove("-scroll")},1e3)}};var k={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function Yt(c,e){let t=document.createDocumentFragment(),r=0,i=w(e,"line")||w(e,"charLine")||w(e,"wordLine");return c.forEach((o,s)=>{let n=s===c.length-1,a=t;i&&(a=document.createElement("span"),a.setAttribute("aria-hidden","true"),a.classList.add("-s-line"),o.isBeforeElement&&a.classList.add(k.BEFORE_ELEMENT),o.isAfterElement&&a.classList.add(k.AFTER_ELEMENT),a.style.setProperty("--line-index",String(o.lineIndex)),a.style.setProperty("--word-total",String(o.words.length)),$t(a,o.calculatedValues,e)),o.words.forEach((l,u)=>{let d=u===o.words.length-1;if(l.chars.length===1&&l.chars[0].token.type==="element"){let m=l.chars[0].token.node.cloneNode(!0);a.appendChild(m),d||a.appendChild(document.createTextNode("\xA0"));return}let p=w(e,"word")||w(e,"charWord")||w(e,"wordLine"),h=p?document.createElement("span"):a;if(h.setAttribute("aria-hidden","true"),p&&(h.classList.add("-s-word"),l.isBeforeElement&&h.classList.add(k.BEFORE_ELEMENT),l.isAfterElement&&h.classList.add(k.AFTER_ELEMENT),h.style.setProperty("--word-index",String(l.wordIndexGlobal)),h.style.setProperty("--char-total",String(l.chars.length)),$t(h,l.calculatedValues,e)),w(e,"char")||w(e,"charLine")||w(e,"charWord"))l.chars.forEach(m=>{if(m.char===" "||m.char===" ")return;let b=document.createElement("span");b.setAttribute("aria-hidden","true");let y=b;y.classList.add("-s-char"),m.isBeforeElement&&y.classList.add(k.BEFORE_ELEMENT),m.isAfterElement&&y.classList.add(k.AFTER_ELEMENT),y.textContent=m.char,y.style.setProperty("--char-index",String(r++)),$t(y,m.calculatedValues,e),h.appendChild(b)});else{let m=document.createTextNode(l.chars.map(b=>b.char).join(""));h.appendChild(m)}p&&a.appendChild(h),i?d?n||a.appendChild(document.createElement("br")):h.appendChild(document.createTextNode("\xA0")):n||h.appendChild(document.createTextNode("\xA0"))}),i&&t.appendChild(a)}),t}function $t(c,e,t){if(e)for(let r of e){if(!le(r.type,r.align,t))continue;let i=ce(r.type,r.align);c.style.setProperty(i,String(r.value))}}function le(c,e,t){let r=t[c]??[];return Array.isArray(r)&&r.some(i=>e.startsWith("random")?i.align.startsWith("random"):i.align===e)}function ce(c,e){let t=e.startsWith("random")?"random":e;return`--${c}-${t}`}function w(c,e){return Array.isArray(c[e])&&c[e].length>0}var J=0;function Xt(c){J=0;let e=[];return c.forEach(t=>{if(t.nodeType===Node.ELEMENT_NODE){let r=t;if(r.tagName.toLowerCase()==="br"){e.push({type:"br",id:`br_${J++}`,node:r,tagName:"br"});return}e.push({type:"element",id:`el_${J++}`,node:r,tagName:r.tagName.toLowerCase()})}else if(t.nodeType===Node.TEXT_NODE){let r=t.nodeValue??"",i=`text_${J++}`;r.trim()?e.push({type:"text",id:i,node:t,content:r}):e.push({type:"space",id:i,node:t,content:r})}else e.push({type:"other",id:`node_${J++}`,node:t})}),e}function pe(c){let e=[],t=[];for(let r of c)r.type==="br"?(t.length&&e.push(t),e.push([r]),t=[]):t.push(r);return t.length&&e.push(t),e}function Ut(c,e){let t=document.createElement("div"),r=window.getComputedStyle(e);t.style.position="absolute",t.style.visibility="hidden",t.style.pointerEvents="none",t.style.width=e.clientWidth+"px",t.style.padding=r.padding,t.style.font=r.font,t.style.letterSpacing=r.letterSpacing,t.style.lineHeight=r.lineHeight,t.style.fontVariant=r.fontVariant,t.style.fontStretch=r.fontStretch;let i=document.createElement("span");i.textContent="\xA0",t.appendChild(i);let o=i.getBoundingClientRect().width;t.removeChild(i),t.style.width=e.clientWidth+o+"px",e.appendChild(t);let s=[],n=pe(c),a=!1;for(let l of n){if(l.length===1&&l[0].type==="br"){s.push({token:l[0],rect:new DOMRect(0,0,0,0)});continue}l.length!==0&&(t.innerHTML="",l.forEach((u,d)=>{let p,h,f;switch(u.type){case"text":u.content.trim().split(/\s+/).filter(y=>y.length>0).forEach((y,M)=>{h=document.createElement("span"),h.style.display="inline-block",h.textContent=y+"\xA0",t.appendChild(h),f=h.getBoundingClientRect();let v={token:{type:"text",id:"",node:p,content:y},rect:f};a&&(a=!1,v.token.meta={...v.token.meta||{},isAfterElement:!0}),s.push(v)});break;case"element":p=u.node.cloneNode(!0),h=document.createElement("span"),h.style.display="inline-block",h.appendChild(p),t.appendChild(h),f=h.getBoundingClientRect(),s.push({token:u,rect:f});let b=s[s.length-2];b?.token.type==="text"&&(b.token.meta={...b.token.meta||{},isBeforeElement:!0}),a=!0;break;case"space":case"other":break}}))}return e.removeChild(t),s}var Kt=1;function Qt(c){let e=[],t=null,r=0,i=0,o=0;return c.forEach(s=>{let n=s.token,a=n.meta?.isBeforeElement??!1,l=n.meta?.isAfterElement??!1;if(n.type==="br"){t=null;return}if(n.type==="text"){let u=n.content.match(/(\s+|\S+)/g);if(!u)return;let d=s.rect.left,p=n.content.length,h=p>0?s.rect.width/p:0;u.forEach(f=>{if(/^\s+$/.test(f)){d+=h*f.length;return}let m=[];if(f.split("").forEach((x,S)=>{let E=new DOMRect(d,s.rect.top,h,s.rect.height);m.push({char:x,rect:E,token:n,charIndexInWord:S,charIndexInLine:0,charIndexGlobal:i++}),d+=h}),m.length>0){let x=m[m.length-1];a&&(x.isBeforeElement=!0),l&&(x.isAfterElement=!0)}if((!t||Math.abs(s.rect.top-r)>Kt)&&(r=s.rect.top,t={words:[],rect:s.rect,lineIndex:e.length},e.push(t)),!t)return;let y=t.words.length,M=t.words.reduce((x,S)=>x+S.chars.length,0);m.forEach((x,S)=>x.charIndexInLine=M+S);let v={chars:m,rect:s.rect,wordIndexGlobal:o++,wordIndexInLine:y,isBeforeElement:a,isAfterElement:l};t.words.push(v),t.rect=jt(t.words.map(x=>x.rect)),a&&(t.isBeforeElement=!0),l&&(t.isAfterElement=!0)})}else if(n.type==="element"){let u=s.rect;if((!t||Math.abs(u.top-r)>Kt)&&(r=u.top,t={words:[],rect:u,lineIndex:e.length},e.push(t)),!t)return;let p=t.words.length,h=t.words.reduce((b,y)=>b+y.chars.length,0),m={chars:[{char:"[E]",rect:u,token:n,charIndexInWord:0,charIndexInLine:h,charIndexGlobal:i++}],rect:u,wordIndexGlobal:o++,wordIndexInLine:p,isBeforeElement:!1,isAfterElement:!1};t.words.push(m),t.rect=jt(t.words.map(b=>b.rect))}}),e}function jt(c){let e=Math.min(...c.map(o=>o.left)),t=Math.min(...c.map(o=>o.top)),r=Math.max(...c.map(o=>o.right)),i=Math.max(...c.map(o=>o.bottom));return new DOMRect(e,t,r-e,i-t)}var It=class extends g{constructor(e){super(e),this.htmlKey="split",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1}onResizeWidth(){this.objectsOnPage.forEach(e=>{this.onObjectConnected(e)})}onObjectConnected(e){let t=e.htmlElement;if(!t)return;let r=t.classList.contains("-splitted"),i=t.getAttribute("string-split-original");(!r||i===null)&&(i=this.escapeAttribute(t.innerHTML),t.setAttribute("string-split-original",i),t.classList.add("-splitted")),e.htmlElement.innerHTML=i;let o=t.getAttribute("string-split")??t.getAttribute("data-string-split")??"",s=this.tools.optionsParser.process({attributeValue:o}),{fragment:n,result:a}=this.split(t,s);e.setProperty("nodes",n.childNodes),t.setAttribute("aria-label",i),t.innerHTML="",t.appendChild(a);let l=t.getAttribute("string-split-restore-after");l&&!isNaN(Number(l))&&setTimeout(()=>{t.innerHTML=i,t.classList.add("-restored")},Number(l))}split(e,t){let r=document.createDocumentFragment();e.childNodes.forEach(a=>r.appendChild(a.cloneNode(!0)));let i=Xt(r.childNodes),o=Ut(i,e),s=Qt(o);this.applyCalculatedValues(s,t);let n=Yt(s,t);return{fragment:r,result:n}}computeValue(e,t,r){if(e.align.startsWith("random")){let i=e.random?.min??0,o=e.random?.max??r-1;return Math.floor(Math.random()*(o-i+1))+i}switch(e.align){case"start":return t;case"end":return r-t-1;case"center":{let i=Math.floor((r-1)/2);return Math.abs(t-i)}default:return t}}applyCalculatedValues(e,t){let r=s=>s.words.reduce((n,a)=>n+a.chars.length,0),i=e.reduce((s,n)=>s+n.words.length,0),o=e.reduce((s,n)=>s+n.words.reduce((a,l)=>a+l.chars.length,0),0);e.forEach((s,n)=>{t.line&&(s.calculatedValues=t.line.map(a=>({type:"line",align:a.align,value:this.computeValue(a,n,e.length)}))),s.words.forEach((a,l)=>{t.word&&(a.calculatedValues=t.word.map(d=>({type:"word",align:d.align,value:this.computeValue(d,a.wordIndexGlobal,i)}))),t.wordLine&&(a.calculatedValues??(a.calculatedValues=[]),a.calculatedValues.push(...t.wordLine.map(d=>({type:"wordLine",align:d.align,value:this.computeValue(d,a.wordIndexInLine,s.words.length)}))));let u=r(s);a.chars.forEach(d=>{let p=[];t.char&&p.push(...t.char.map(h=>({type:"char",align:h.align,value:this.computeValue(h,d.charIndexGlobal,o)}))),t.charWord&&p.push(...t.charWord.map(h=>({type:"charWord",align:h.align,value:this.computeValue(h,d.charIndexInWord,a.chars.length)}))),t.charLine&&p.push(...t.charLine.map(h=>({type:"charLine",align:h.align,value:this.computeValue(h,d.charIndexInLine,u)}))),d.calculatedValues=p})})})}escapeAttribute(e){return e.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var Ot=class extends g{constructor(t){super(t);this.history=[];this.maxPoints=0;this.height=0;this.value=0;this.target=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.value=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="red",t.lineWidth=2,t.beginPath(),this.history.forEach((o,s)=>{let n=s,a=i-o*this.height;s===0?t.moveTo(n,a):t.lineTo(n,a)}),t.stroke()}initCanvas(){let t=document.createElement("canvas"),r=window.innerWidth*.5;this.height=window.innerHeight/15-20,t.width=r,t.height=this.height,Object.assign(t.style,{position:"fixed",bottom:`${window.innerHeight/20+10}px`,left:"50%",transform:"translateX(-50%)",backgroundColor:"#000000",border:"1px solid rgba(255, 255, 255, 0.2)",zIndex:"1000",pointerEvents:"none"}),this.canvas=t,this.context=t.getContext("2d"),document.body.appendChild(t)}setTarget(t){this.target=t}clear(){this.canvas.remove(),this.history=[]}};var kt=class extends g{constructor(t){super(t);this.frameCount=0;this._type=2}onInit(){this.createDisplayElement(),this.intervalId=window.setInterval(()=>{this.displayElement.textContent=`FPS: ${this.frameCount}`,this.frameCount=0},1e3)}onFrame(t){this.frameCount++}destroy(){clearInterval(this.intervalId),this.displayElement.remove()}createDisplayElement(){let t=document.createElement("div");Object.assign(t.style,{position:"fixed",bottom:"10px",right:"10px",backgroundColor:"#000",color:"#fff",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),t.textContent="FPS: 0",document.body.appendChild(t),this.displayElement=t}};var Dt=class extends g{constructor(t){super(t);this.history=[];this.maxPoints=0;this.canvasHeight=0;this.currentValue=0;this.targetValue=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.currentValue=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="#007bff",t.lineWidth=2,t.beginPath(),this.history.forEach((o,s)=>{let n=s,a=i-o/2;s===0?t.moveTo(n,a):t.lineTo(n,a)}),t.stroke()}initCanvas(){this.canvas=document.createElement("canvas"),this.canvasHeight=window.innerHeight/15-20,this.canvas.width=window.innerWidth*.5,this.canvas.height=this.canvasHeight,Object.assign(this.canvas.style,{position:"fixed",bottom:"10px",left:"50%",transform:"translateX(-50%)",backgroundColor:"#000",border:"1px solid rgba(255,255,255,0.2)",zIndex:"1000",pointerEvents:"none"}),this.context=this.canvas.getContext("2d"),document.body.appendChild(this.canvas)}setTarget(t){this.targetValue=t}clear(){this.canvas.remove(),this.history=[]}};var Rt=class extends g{constructor(e){super(e),this._type=2}onInit(){this.createDisplayElement()}onScroll(e){let t=e.scroll.current,r=e.scroll.target,i=t<r?"\u2193":t>r?"\u2191":"-";this.displayElement.setAttribute("data-dir",i),this.displayElement.setAttribute("data-val",`${Math.round(t)}`)}destroy(){this.displayElement.remove()}createDisplayElement(){let e=document.createElement("div");Object.assign(e.style,{position:"fixed",bottom:"10px",left:"10px",backgroundColor:"#000",color:"#fff",border:"1px solid rgba(255,255,255,0.2)",padding:"5px 8px",fontSize:"12px",fontFamily:"monospace",zIndex:"1000",pointerEvents:"none"}),e.setAttribute("data-dir","-"),e.setAttribute("data-val","0"),document.body.appendChild(e);let t=document.createElement("style");t.innerHTML=`
|
|
20
20
|
div[data-dir][data-val]::before {
|
|
21
21
|
content: attr(data-dir) ' Top: ' attr(data-val) 'px';
|
|
22
22
|
}
|