@fancyapps/ui
Version:
Robust JavaScript UI Component Library
3 lines (2 loc) • 1.61 kB
JavaScript
/*! License details at fancyapps.com/license */
import{isPlainObject as t}from"../utils/isPlainObject.js";import{stringToHtml as n}from"../utils/strToHtml.js";import{PanzoomButtons as o}from"../shared/buttons.js";const i=Object.assign({},o),e={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 o,s;function r(){const n=null==o?void 0:o.getOptions().Controls;return t(n)?Object.assign(Object.assign({},e),n):e}function l(){var t,e;if(!(null==o?void 0:o.getOptions().Controls))return;if(!o||s)return;s=document.createElement("div"),s.classList.add("f-controls");const l=Object.assign(Object.assign({},i),r().items),c=Object.entries(r().svgAttr);for(const t of r().display){const i=l[t];if(i&&i.tpl){const t=n(o.localize(i.tpl));if(t){const n=t.querySelector("svg");if(n)for(const[t,o]of c)n.getAttribute(t)||n.setAttribute(t,String(o));"function"==typeof i.click&&o&&t.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),"function"==typeof i.click&&o&&i.click(o,t)})),s.append(t)}}}s.childElementCount&&(null===(t=o.getContainer())||void 0===t||t.classList.add("has-controls"),null===(e=o.getContainer())||void 0===e||e.insertAdjacentElement("afterbegin",s))}return{init:function(t){o=t,o.on("initLayout",l)},destroy:function(){var t;null==o||o.off("initLayout",l),null===(t=null==o?void 0:o.getContainer())||void 0===t||t.classList.remove("has-controls"),null==s||s.remove(),s=void 0},add:function(t,n){i[t]=n}}};export{s as Controls};