@fancyapps/ui
Version:
Robust JavaScript UI Component Library
3 lines (2 loc) • 1.59 kB
JavaScript
/*! License details at fancyapps.com/license */
import{isPlainObject as t}from"../utils/isPlainObject.js";import{stringToHtml as o}from"../utils/strToHtml.js";import{PanzoomButtons as n}from"../shared/buttons.js";const e=Object.assign({},n),i={display:["zoomIn","zoomOut","toggle1to1","rotateCCW","rotateCW","flipX","flipY","reset"],items:{},svgAttr:{tabindex:"-1",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"}},s=()=>{let n,s;function r(){const o=null==n?void 0:n.getOptions().Controls;return t(o)?Object.assign(Object.assign({},i),o):i}function l(){var t,i;if(!n||!1===n.getOptions().Controls||s)return;s=document.createElement("div"),s.classList.add("f-controls");const l=Object.assign(Object.assign({},e),r().items),c=Object.entries(r().svgAttr);for(const t of r().display){const e=l[t];if(e&&e.tpl){const t=o(n.localize(e.tpl));if(t){const o=t.querySelector("svg");if(o)for(const[t,n]of c)o.getAttribute(t)||o.setAttribute(t,String(n));"function"==typeof e.click&&n&&t.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),"function"==typeof e.click&&n&&e.click(n,t)}),s.append(t)}}}s.childElementCount&&(null===(t=n.getContainer())||void 0===t||t.classList.add("has-controls"),null===(i=n.getContainer())||void 0===i||i.insertAdjacentElement("afterbegin",s))}return{init:function(t){n=t,n.on("initLayout",l)},destroy:function(){var t;null==n||n.off("initLayout",l),null===(t=null==n?void 0:n.getContainer())||void 0===t||t.classList.remove("has-controls"),null==s||s.remove(),s=void 0},add:function(t,o){e[t]=o}}};export{s as Controls};