UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

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