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