UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

3 lines (2 loc) • 1.19 kB
/*! License details at fancyapps.com/license */ const t=".f-panzoom__pin",n=()=>{let n,e=[];function r(){return!1!==n?.getOptions().Pins}function o(){!function(){const o=n?.getContainer(),i=n?.getWrapper();if(!o||!r())return;e=[];const f=Array.from(o.querySelectorAll(t));for(const t of f)e.push({x:t.dataset.x??"0",y:t.dataset.y??"0",el:t}),i&&t.parentElement!==i&&i.appendChild(t)}(),s()}function i(){s()}function f(t,n,e){const r=String(t),o=parseFloat(r);return Number.isFinite(o)?r.includes("%")?e*(o/100):n?o/n*e:0:0}function s(){if(!n||!e.length||!r())return;const{width:t,height:o}=n.getFullDim(),i=n.getTransform(),s=n.getWrapper()?.getBoundingClientRect();if(!s)return;const a=i.angle||0,c=i.flipX||1,l=i.flipY||1,u=i.x||0,p=i.y||0,d=i.scale||1,g=s.width,y=s.height,m=new DOMMatrix([d,0,0,d,u,p]).scale(c,1).scale(1,l).rotate(a);for(const n of e){const e=f(n.x,t,g)-.5*g,r=f(n.y,o,y)-.5*y,i=new DOMPoint(e,r).matrixTransform(m);n.el.style.transform=`translate3d(${i.x}px, ${i.y}px, 0)`}}return{init:function(t){n=t,n.on("ready",o),n.on("render",i)},destroy:function(){n?.off("ready",o),n?.off("render",i);for(const t of e)t.el.style.transform="";n=void 0,e=[]}}};export{n as Pins};