@highcharts/dashboards
Version:
Highcharts Dashboards framework
37 lines • 71.6 kB
JavaScript
!/**
* Highcharts Dashboards Layout 4.2.1 (2026-08-06)
* @module dashboards/modules/layout
* @requires dashboards
*
* (c) 2009-2026 Highsoft AS
*
* A commercial license may be required depending on use,
* see www.highcharts.com/license
*/function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(e._Dashboards,e._Dashboards.AST,e._Dashboards.ComponentRegistry):"function"==typeof define&&define.amd?define("dashboards/modules/layout",["dashboards/dashboards"],function(e){return t(e,e.AST,e.ComponentRegistry)}):"object"==typeof exports?exports["dashboards/modules/layout"]=t(e._Dashboards,e._Dashboards.AST,e._Dashboards.ComponentRegistry):e.Dashboards=t(e.Dashboards,e.Dashboards.AST,e.Dashboards.ComponentRegistry)}("u"<typeof window?this:window,(e,t,i)=>(()=>{"use strict";var s={160(e){e.exports=t},376(e){e.exports=i},668(t){t.exports=e}};let o={};function n(e){let t=o[e];if(void 0!==t)return t.exports;let i=o[e]={exports:{}};return s[e](i,i.exports,n),i.exports}n.n=e=>{let t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{if(Array.isArray(t))for(var i=0;i<t.length;){var s=t[i++],o=t[i++];n.o(e,s)?0===o&&i++:0===o?Object.defineProperty(e,s,{enumerable:!0,value:t[i++]}):Object.defineProperty(e,s,{enumerable:!0,get:o})}else for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let l={};n.d(l,{default:()=>es});var a=n(668),r=n.n(a);let c=r().classNamePrefix+"edit-",d={classNames:{resizeSnap:c+"resize-snap",resizeSnapX:c+"resize-snap-x",resizeSnapY:c+"resize-snap-y",separator:c+"separator",contextMenuBtn:c+"context-menu-btn",contextMenuBtnText:c+"context-menu-btn-text",contextMenu:c+"context-menu",contextMenuItem:c+"context-menu-item",editModeEnabled:c+"enabled",editToolbar:c+"toolbar",editToolbarCellOutline:c+"toolbar-cell-outline",editToolbarRowOutline:c+"toolbar-row-outline",editToolbarItem:c+"toolbar-item",editToolbarRow:c+"toolbar-row",editToolbarCell:c+"toolbar-cell",editSidebar:c+"sidebar",editSidebarShow:c+"sidebar-show",editSidebarHide:c+"sidebar-hide",editSidebarHeader:c+"sidebar-header",editSidebarTitle:c+"sidebar-title",editSidebarMenuItem:c+"sidebar-item",rowContextHighlight:c+"row-context-highlight",cellEditHighlight:c+"cell-highlight",dashboardCellEditHighlightActive:c+"cell-highlight-active",dragMock:c+"drag-mock",dropPointer:c+"drop-pointer",contextDetectionPointer:c+"ctx-detection-pointer",resizePointer:c+"resize-pointer",currentEditedElement:c+"unmask",maskElement:c+"mask",menuItem:c+"menu-item",menu:c+"menu",menuVerticalSeparator:c+"menu-vertical-separator",menuHorizontalSeparator:c+"menu-horizontal-separator",menuDestroy:c+"menu-destroy",editSidebarWrapper:c+"sidebar-wrapper",customSelect:c+"custom-select",customSelectButton:c+"custom-option-button",toggleContainer:c+"toggle-container",toggleWrapper:c+"toggle-wrapper",toggleSlider:c+"toggle-slider",toggleWrapperColored:c+"toggle-wrapper-colored",toggleLabels:c+"toggle-labels",labeledToggleWrapper:c+"labeled-toggle-wrapper",button:c+"button",sidebarNavButton:c+"sidebar-button-nav",labelText:c+"label-text",editSidebarTabBtn:c+"sidebar-tab-btn",editToolsBtn:c+"tools-btn",editTools:c+"tools",editGridItems:c+"grid-items",editStandaloneToggle:c+"standalone-toggle",confirmationPopup:c+"confirmation-popup",popupButtonContainer:c+"confirmation-popup-button-container",popupContentContainer:c+"confirmation-popup-content",popupCancelBtn:c+"confirmation-popup-cancel-btn",popupConfirmBtn:c+"confirmation-popup-confirm-btn",popupCloseButton:c+"popup-close",editOverlay:c+"overlay",editOverlayActive:c+"overlay-active",resizerMenuBtnActive:c+"resizer-menu-btn-active",sidebarCloseButton:c+"close-btn",editSidebarTabBtnWrapper:c+"tabs-buttons-wrapper",editSidebarRight:c+"sidebar-right",editSidebarRightShow:c+"sidebar-right-show",viewFullscreen:c+"view-fullscreen",accordionMenu:c+"accordion-menu",accordionContainer:c+"accordion",accordionHeader:c+"accordion-header",accordionHeaderBtn:c+"accordion-header-btn",accordionHeaderWrapper:c+"accordion-header-wrapper",accordionHeaderIcon:c+"accordion-header-icon",accordionContent:c+"accordion-content",accordionNestedWrapper:c+"accordion-nested",accordionMenuButtonsContainer:c+"accordion-menu-buttons-container",accordionMenuButton:c+"accordion-menu-button",accordionStandaloneWrapper:c+"accordion-standalone-wrapper",hiddenElement:c+"hidden-element",collapsableContentHeader:c+"collapsable-content-header",standaloneElement:c+"standalone-element",collapsedElement:c+"collapsed-element",dropdown:c+"dropdown",dropdownContent:c+"dropdown-content",dropdownButton:c+"dropdown-button",dropdownButtonContent:c+"dropdown-button-content",dropdownIcon:c+"pointer",icon:c+"icon"},lang:{accessibility:{contextMenu:{button:"Context menu"},editMode:{editMode:"Edit mode toggle button"}},addComponent:"Add component",cancelButton:"Cancel",caption:"Caption",chartClassName:"Chart class name",chartConfig:"Chart configuration",chartID:"Chart ID",chartOptions:"Chart options",chartType:"Chart type",connectorName:"Connector name",confirmButton:"Confirm",confirmDestroyCell:"Do you really want to destroy the cell?",confirmDestroyRow:"Do you really want to destroy the row?",confirmDiscardChanges:"Do you really want to discard the changes?",dataLabels:"Data labels",editMode:"Edit mode",errorMessage:"Something went wrong",exitFullscreen:"Exit full screen",htmlInput:"HTML",id:"Id",off:"off",on:"on",pointFormat:"Point format",settings:"Settings",style:"Styles",title:"Title",viewFullscreen:"View in full screen",sidebar:{HTML:"HTML",row:"Row",Highcharts:"Highcharts",Grid:"Grid",KPI:"KPI"}}},h=class{static getOffsets(e,t){let i={left:0,top:0,right:0,bottom:0};if(!e.container)return i;let s=e.container.getBoundingClientRect(),o=t?t.getBoundingClientRect():{left:0,top:0};return i.left=s.left-o.left,i.top=s.top-o.top,i.right=s.right-o.left,i.bottom=s.bottom-o.top,i}static getDimFromOffsets(e){return{width:e.right-e.left,height:e.bottom-e.top}}static getElementId(e){return r().classNamePrefix+e+"-"+(0,a.uniqueKey)().slice(11)}static getPercentageWidth(e){let t,i=/^(\d{1})[\-\/\.](\d{1,2})$/;if(i.test(e)){let s=e.match(i)||[];t=((t=100*s[1]/s[2])<=100?t:100)+"%"}else if(-1!==e.indexOf("%")){let i=parseFloat(e);t=(i<=100?i>=0?i:0:100)+"%"}return t}getElementContainer(e){let t,i=this;if(e.render)e.attribs&&!e.attribs.id&&delete e.attribs.id;else if("string"==typeof e.elementId){let t=document.getElementById(e.elementId);t?i.container=t:(0,a.error)("Element "+e.elementId+" does not exist")}return t=e.element instanceof HTMLElement?e.element:(0,a.createElement)("div",e.attribs||{},e.style||{},e.parentContainer),i.removeBindedEventFn=(0,a.addEvent)(t,"bindedGUIElement",function(e){e.guiElement=i,e.stopImmediatePropagation()}),t}destroy(){let e=this;e.removeBindedEventFn&&e.removeBindedEventFn(),e.container&&e.container.parentNode&&e.container.parentNode.removeChild(e.container),(0,a.objectEach)(e,function(t,i){delete e[i]})}getType(){return this.type}changeVisibility(e=!0,t){let i=this.isVisible&&!e||!this.isVisible&&e;this.container&&i&&(this.container.style.display=e?t||"block":"none",this.isVisible=e)}hide(){this.changeVisibility(!1)}show(){this.changeVisibility()}};function p(e){return!!e&&"row"in e&&"cell"===e.type}let m=class extends h{constructor(e,t,i){super(),this.type=r().guiElementType.cell,this.id=t.id,this.options=t,this.row=e,this.isVisible=!0;const s=document.getElementById(t.parentContainerId||"")||e.container,o=e.layout.options||{},n=e.options||{},l=o.cellClassName||"",c=t.style||{},d=(0,a.merge)(o.style,n.style,c);this.applySizeOptions(t,c,d),this.container=this.getElementContainer({render:e.layout.board.guiEnabled,parentContainer:s,attribs:{id:t.id,className:r().classNames.cell+" "+l},element:i,elementId:t.id,style:d}),this.options.layout&&this.setNestedLayout()}setNestedLayout(){let e=this.row.layout.board,t=this.row.layout.constructor,i=e.options.gui;this.nestedLayout=new t(e,(0,a.merge)({},i&&i.layoutOptions,this.options.layout,{parentContainerId:this.options.id}),this)}destroy(){(0,a.fireEvent)(this,"outdate");let{row:e}=this;this.mountedComponent?.destroy(),this.nestedLayout?.destroy(),e.unmountCell(this);let t=e.cells?.length===0;super.destroy(),t&&e.destroy()}getOptions(){return this.options.layout&&this.nestedLayout?{...this.options,layout:this.nestedLayout.getOptions()}:this.options}changeVisibility(e=!0){super.changeVisibility(e);let t=this,i=t.row;t.row.getVisibleCells().length?t.isVisible&&!i.isVisible&&t.row.show():t.row.hide(),setTimeout(()=>{(0,a.fireEvent)(i,"cellChange",{row:i,cell:t})},0)}getParentCell(e){let t;if(e<=this.row.layout.level){if(this.row.layout.level===e)return this;if(this.row.layout.level-1>=0&&(t=this.row.layout.parentCell))return t.getParentCell(e)}}getOverlappingLevels(e,t,i){let s=this.row.layout.parentCell,o=[this.row.layout.level];if(s){let n=i||h.getOffsets(this)[e],l=h.getOffsets(s)[e];Math.abs(n-l)<t&&(o=[...o,...s.getOverlappingLevels(e,t,l)])}return o}setSize(e,t){let i=this.row.layout.board.editMode;if(this.container){if((0,a.defined)(e))if("auto"===e&&"1 1 0%"!==this.container.style.flex)this.container.style.flex="1 1 0%",this.options.width=this.container.style.flex;else{let t=this.convertWidthToValue(e);t&&(this.container.style.flex="0 0 "+t,this.options.width=this.container.style.flex)}if((0,a.defined)(t)){let e="number"==typeof t?t+"px":t;this.height=this.container.style.height=e,this.options.height=e}i&&(i.hideContextPointer(),i.cellToolbar&&i.cellToolbar.isVisible&&(i.cellToolbar.cell===this?i.cellToolbar.showToolbar(this):i.cellToolbar.hide())),(0,a.fireEvent)(this.row.layout.board,"cellResize",{cell:this}),(0,a.fireEvent)(this.row,"cellChange",{cell:this,row:this.row})}}setHighlight(e){let t=this.row?.layout.board.editMode;if(this.container&&t){let t=this.container,i=t.classList.contains(d.classNames.cellEditHighlight);e||i?e&&i&&(t.classList.remove(d.classNames.cellEditHighlight),this.row.layout.board.container.classList.remove(d.classNames.dashboardCellEditHighlightActive),this.isHighlighted=!1):(t.classList.add(d.classNames.cellEditHighlight),this.row.layout.board.container.classList.add(d.classNames.dashboardCellEditHighlightActive),this.isHighlighted=!0)}}setActiveState(){this.row.layout.board.mountedComponents.forEach(e=>{e.cell.container&&e.cell.container.classList.remove(r().classNames.cellActive),e.component.isActive=!1}),this.container&&this.container.classList.add(r().classNames.cellActive)}setLoadingState(e=!0){this.container?.classList?.toggle(r().classNames.cellLoading,e)}convertWidthToValue(e){return"number"==typeof e?e+"px":/px/.test(e)?e:h.getPercentageWidth(e)||""}applySizeOptions(e,t,i){let s=(0,a.defined)(e.height)?e.height:t.height;(0,a.defined)(s)?(this.height="number"==typeof s?s+"px":String(s),i.height=this.height,e.height=this.height):(0,a.defined)(i.height)&&delete i.height;let o=(0,a.defined)(e.width)?e.width:t.flex;if((0,a.defined)(o)&&("string"==typeof o||"number"==typeof o)){let t;if("string"==typeof o&&-1!==o.indexOf(" "))t=o;else if("auto"===o)t="1 1 0%";else{let e=this.convertWidthToValue(o);e&&(t="0 0 "+e)}t&&(i.flex=t,e.width=t)}}};class u extends h{constructor(e){super(),this.type="cell-html",this.options=e,this.id=e.id,this.container=e.container,this.mountedComponent=e.mountedComponent}destroy(){this.mountedComponent?.destroy(),super.destroy()}setHighlight(){this.container.classList.toggle(d.classNames.cellEditHighlight),this.mountedComponent?.board.container.classList.toggle(d.classNames.dashboardCellEditHighlightActive)}setActiveState(){this.container&&this.container.classList.add(r().classNames.cellActive)}}function g(e){return e instanceof u}function b(e,t){let i,s=t.options.contextMenu;return s&&(i=(0,a.createElement)("button",{className:d.classNames.contextMenuBtn,onclick:function(e){e.stopPropagation(),t.onContextBtnClick()}},{},e),s.icon&&(0,a.createElement)("img",{src:s.icon,className:d.classNames.icon},{},i),s.text&&(0,a.createElement)("span",{className:d.classNames.contextMenuBtnText,textContent:s.text},{},i),i.setAttribute("aria-label",t.lang.accessibility.contextMenu.button),i.setAttribute("aria-expanded","false")),i}function f(e,t){let i,{name:s,showToggle:o,onchange:n,isEnabled:l,isNested:r,isStandalone:c,lang:h}=t,p=(0,a.createElement)("div",{className:d.classNames[r?"accordionNestedWrapper":"accordionContainer"]+" "+(c?d.classNames.accordionStandaloneWrapper:"")+" "+d.classNames.collapsableContentHeader},{},e),m=(0,a.createElement)("div",{className:d.classNames.accordionHeader},{},p);if((!c||o)&&(i=(0,a.createElement)(c&&o?"span":"button",{className:d.classNames[c?"accordionHeaderWrapper":"accordionHeaderBtn"]},{},m)),(0,a.createElement)("span",{textContent:h[s]||s},{},i),o&&m&&C(m,{enabledOnOffLabels:!0,id:s,name:"",onchange:n,value:l||!1,lang:h}),!c){let e=(0,a.createElement)("span",{className:d.classNames.accordionHeaderIcon+" "+d.classNames.collapsedElement},{},i);i?.addEventListener("click",function(){u.classList.toggle(d.classNames.hiddenElement),e?.classList.toggle(d.classNames.collapsedElement)})}let u=(0,a.createElement)("div",{className:d.classNames.accordionContent+" "+(c?d.classNames.standaloneElement:d.classNames.hiddenElement)},{},p);return{outerElement:p,content:u}}function v(e,t){let i;if(!e)return;t.name&&y(e,{title:t.name,isLabel:!0});let s=t.iconsURLPrefix||"",o=(0,a.createElement)("div",{className:d.classNames.dropdown+" "+d.classNames.collapsableContentHeader},{},e),n=(0,a.createElement)("button",{className:d.classNames.dropdownButton},{},o),l=(0,a.createElement)("div",{className:d.classNames.dropdownButtonContent},{},n),r=((0,a.find)(t.selectOptions,e=>e.name===t.value)||{}).iconURL;r&&(i=(0,a.createElement)("img",{src:s+r,className:d.classNames.icon},{},l));let c=(0,a.createElement)("span",{textContent:t.value,id:t.id||""},{},l),h=(0,a.createElement)("img",{className:d.classNames.dropdownIcon+" "+d.classNames.collapsedElement,src:s+"dropdown-pointer.svg"},{},n),p=(0,a.createElement)("ul",{className:d.classNames.dropdownContent+" "+d.classNames.hiddenElement},{},o);n.addEventListener("click",function(){p.classList.toggle(d.classNames.hiddenElement),h.classList.toggle(d.classNames.collapsedElement)});for(let e=0,o=t.selectOptions.length;e<o;++e)!function(e,t,i,s,o,n,l){let r=e.iconsURLPrefix+e.iconURL,c=(0,a.createElement)("li",{},{},t),h=(0,a.createElement)("button",{className:d.classNames.customSelectButton},{},c);e.iconURL&&(0,a.createElement)("img",{src:r},{},h),(0,a.createElement)("span",{textContent:e.name||""},{},h),h.addEventListener("click",function(){if(t.classList.add(d.classNames.hiddenElement),o.classList.toggle(d.classNames.collapsedElement),i.textContent=e.name||"",n&&e.iconURL&&(n.src=r),l)return l(e.name)})}((0,a.merge)(t.selectOptions[e]||{},{iconsURLPrefix:s}),p,c,t.id,h,i,t.onchange);return o}function C(e,t){if(!e)return;let i=t.lang,s=t.value,o=t.title||t.name,n=t.langKey;t.isNested&&(e=(0,a.createElement)("div",{className:d.classNames.labeledToggleWrapper},{},e));let l=(0,a.createElement)("button",{className:d.classNames.toggleContainer,type:"button",role:"switch",ariaChecked:!1,ariaLabel:n?i.accessibility[n][t.name]:""},{},e);o&&y(t.isNested?e:l,{title:o}),t.enabledOnOffLabels&&y(l,{title:i.off,className:d.classNames.toggleLabels});let r=(0,a.createElement)("label",{className:d.classNames.toggleWrapper+" "+(t.className||"")},{},l),c=N(r,s),h=t.onchange;h&&l.addEventListener("click",e=>{h(!c.checked),c.checked=!c.checked,l.setAttribute("aria-checked",c.checked),e.stopPropagation()});let p=(0,a.createElement)("span",{className:d.classNames.toggleSlider},{},r);return h&&p.addEventListener("click",e=>{e.preventDefault()}),t.enabledOnOffLabels&&y(l,{title:i.on,className:d.classNames.toggleLabels}),l}function y(e,t){let i,{title:s,className:o,isLabel:n}=t;if(e){let t=n?{htmlFor:s}:{};i=(0,a.createElement)(n?"label":"div",{className:d.classNames.labelText+" "+(o||""),textContent:s,...t},{},e)}return i}function w(e,t){let{icon:i,callback:s}=t;if(!e)return;let o=(0,a.createElement)("div",{onclick:s,className:t.className||""},{},e);o.style["background-image"]="url("+i+")";let n=t.mousedown,l=t.click;return n&&(o.onmousedown=function(){n.apply(this,arguments)}),l&&o.addEventListener("click",function(){l.apply(this,arguments)}),o}function x(e,t){if(!e)return;t.name&&y(e,{title:t.name,isLabel:!0});let i=(0,a.createElement)("input",{type:"text",onclick:t.callback,id:t.id||"",name:t.name||"",value:(0,a.defined)(t.value)&&t.value.toString().replace(/\"/g,"")||""},{},e),s=t.onchange;return s&&i.addEventListener("change",function(e){s(e.target.value)}),i}function E(e,t){if(!e)return;t.name&&y(e,{title:t.name,isLabel:!0});let i=(0,a.createElement)("textarea",{id:t.id,name:t.name,value:t.value||""},{},e),s=t.onchange;return s&&i.addEventListener("change",function(e){s(e.target.value)}),i}function N(e,t){let i;return e&&(i=(0,a.createElement)("input",{type:"checkbox",checked:!!t},{},e)),i}function M(e,t){if(!e)return;let i=(0,a.createElement)("button",{className:d.classNames.button+" "+(t.className||""),onclick:t.callback,textContent:t.text},t.style||{},e);return t.icon&&(i.style["background-image"]="url("+t.icon+")"),i}let O=C,L=y;class T{constructor(e,t){this.menu=e,this.isActive=!1,this.options=(0,a.merge)(T.defaultOptions,t),this.container=this.setContainer(),this.innerElement=this.setInnerElement()}setContainer(){let e=this.options,t=d.classNames.menuItem;return this.menu.options.itemsClassName&&(t+=" "+this.menu.options.itemsClassName),e.className&&(t+=" "+e.className),(0,a.createElement)("div",{className:t||""},(0,a.merge)(this.options.style||{},this.isActive?{display:"block"}:{}),this.menu.container)}setInnerElement(){let e=this.options,t=this.container,i=e.langKey;return"toggle"===e.type?O(t,{id:e.id,name:e.id,title:i?this.menu.editMode.lang[i]:e.text,value:!!(e.getValue&&e.getValue(this)),lang:this.menu.editMode.lang,langKey:i,onchange:e.events?.click?.bind(this)}):"text"===e.type?L(t,{title:i?this.menu.editMode.lang[i]:e.text||"",className:e.className||""}):"icon"===e.type?w(t,{icon:e.icon||"",mousedown:e.events?.onmousedown?.bind(this),click:e.events?.click?.bind(this)}):"button"===e.type?M(t,{callback:e.events?.click?.bind(this),className:e.className||"",style:e.style||{},text:i?this.menu.editMode.lang[i]:e.text||""}):void 0}update(){let e=this.options;e.events&&e.events.update&&e.events.update.apply(this,arguments)}activate(){this.update(),this.container&&(this.isActive=!0,this.container.style.display="block")}deactivate(){this.container&&(this.isActive=!1,this.container.style.display="none")}}T.defaultOptions={type:"text"};class P{constructor(e,t,i,s){this.parentElement=e,this.isVisible=!1,this.activeItems=[],this.options=t,this.items={},this.editMode=i,s&&(this.parent=s),this.container=this.setContainer()}setContainer(){return(0,a.createElement)("div",{className:d.classNames.menu+" "+(this.options.className||"")},{},this.parentElement)}initItems(e,t){let i,s,o,n,l=this.options.items||[];for(let r=0,c=l.length;r<c;++r)i="string"==typeof(s=l[r])?e[s]:s.id?e[s.id]:{},(n="string"==typeof s?(0,a.merge)(i,{id:s}):(0,a.merge)(i,s)).id&&(o=new T(this,n),this.items[o.options.id]=o,t&&(o.activate(),this.activeItems.push(o)))}setActiveItems(e){let t;for(let t=0,i=this.activeItems.length;t<i;++t)-1===e.indexOf(this.activeItems[t].options.id)&&this.activeItems[t].deactivate();this.activeItems.length=0;for(let i=0,s=e.length;i<s;++i)(t=this.items[e[i]])&&(t.isActive?t.update():t.activate(),this.activeItems.push(t))}deactivateActiveItems(){for(let e=0,t=this.activeItems.length;e<t;++e)this.activeItems[e].deactivate()}updateActiveItems(){let e=this.activeItems;for(let t=0,i=e.length;t<i;++t)e[t].update()}destroy(){this.activeItems.length=0,this.container.remove(),this.items={},this.options={}}}P.items={viewFullscreen:{id:"viewFullscreen",type:"button",langKey:"viewFullscreen",events:{click:function(){let e=this.menu.editMode.board.fullscreen;e&&e.toggle()}}}};let D=P,R=class{constructor(e,t){this.container=(0,a.createElement)("div",{className:t.className},void 0,e.board.container),this.editMode=e,this.iconURLPrefix=e.iconsURLPrefix,this.menu=new D(this.container,t.menu,e,this),this.options=t,this.isVisible=!1,this.options.outline&&(this.outline=(0,a.createElement)("div",{className:t.outlineClassName},void 0,this.container))}hide(){this.setPosition(void 0,void 0)}refreshOutline(e,t,i,s=0){let o=(i||{}).container;this.outline&&o&&(0,a.css)(this.outline,{display:"block",left:e-s+"px",top:t-s+"px",width:o.offsetWidth+2*s+"px",height:o.offsetHeight+2*s+"px"})}hideOutline(){this.outline&&(this.outline.style.display="none")}setPosition(e,t){this.container&&(0,a.css)(this.container,{left:(e||"-9999")+"px",top:(t||"-9999")+"px"}),this.isVisible=(0,a.defined)(e)&&(0,a.defined)(t)}},{isFirefox:B}=r();class S extends R{static getItemsConfig(e,t){let i=[];return e.dragDrop?.enabled&&i.push({id:"drag",type:"icon",icon:t+"drag.svg",events:{onmousedown:function(e){B&&e.preventDefault();let t=this.menu.parent,i=t.editMode.dragDrop;i&&t.cell&&p(t.cell)&&i.onDragStart(e,t.cell)}}}),e.settings?.enabled&&i.push({id:"settings",type:"icon",icon:t+"settings.svg",events:{click:function(){this.menu.parent.editMode.setEditOverlay(),this.menu.parent.onCellOptions()}}}),i.push({id:"destroy",type:"icon",className:d.classNames.menuDestroy,icon:t+"destroy.svg",events:{click:function(){let e=this.menu.parent,t=this.menu.parent.editMode,i=t.confirmationPopup;i.show({confirmButton:{value:t.lang.confirmButton,callback:e.onCellDestroy,context:e},cancelButton:{value:t.lang.cancelButton,callback:()=>{i.closePopup()}},text:t.lang.confirmDestroyCell})}}}),e.viewFullscreen?.enabled&&i.push({id:"viewFullscreen",type:"icon",className:d.classNames.viewFullscreen,icon:t+"fullscreen.svg",events:{click:function(){let e=this.menu.parent.editMode.board.fullscreen,t=this.menu.parent.cell.container.firstElementChild;e&&e.toggle(t)}}}),i}constructor(e){super(e,(0,a.merge)(S.defaultOptions,(e.options.toolbars||{}).cell,{menu:{items:S.getItemsConfig(e.options,e.iconsURLPrefix)}})),e.customHTMLMode&&this.filterOptionsAvailableInCustomHTMLMode(),this.menu.initItems({})}showToolbar(e){let t=e.container,i=this.editMode.cellToolbar;if(i)if(t&&this.editMode.isActive()&&!(this.editMode.dragDrop||{}).isActive){let t=h.getOffsets(e,this.editMode.board.container),s=t.right-30-10,o=t.top+10;(0,a.objectEach)(this.menu.items,t=>{if(!e.options?.editMode?.toolbarItems)return void t.activate();let i=e.options.editMode.toolbarItems;i[t.options.id]?.enabled===!1?t.deactivate():t.activate()}),this.setPosition(s,o),this.cell=e,this.refreshOutline(),i.isVisible=!0}else this.isVisible&&(this.hide(),i.isVisible=!1)}refreshOutline(){this.cell&&this.cell.container&&this.outline&&super.refreshOutline(-this.cell.container.offsetWidth,0,this.cell,-1)}onCellOptions(){let e=this.editMode;e.sidebar&&(e.sidebar.show(this.cell),this.highlightCell())}onCellDestroy(){if(this.cell&&p(this.cell)){let e=this.cell.row,t=this.editMode.board,i=this.editMode,s=this.cell.id;this.cell.row.setHighlight(),this.resetEditedCell(),this.cell.destroy(),this.cell=void 0,i.hideToolbars(["cell","row"]),i.resizer?.disableResizer(),e&&e.cells&&e.cells.length&&((0,a.fireEvent)(t,"cellResize",{cell:e.cells[0]}),(0,a.fireEvent)(e,"cellChange",{cell:e.cells[0],row:e})),(0,a.fireEvent)(i,"layoutChanged",{type:"cellDestroyed",target:s,board:t})}}resetEditedCell(){this.editedCell=void 0}filterOptionsAvailableInCustomHTMLMode(){this.options.menu.items=this.options.menu.items?.filter(e=>"string"!=typeof e&&"settings"===e.id)}highlightCell(){this.cell&&(this.cell.setHighlight?this.cell.setHighlight():(this.cell.container.classList.add(d.classNames.cellEditHighlight),this.editMode.board.container.classList.add(d.classNames.dashboardCellEditHighlightActive)))}}S.defaultOptions={enabled:!0,className:d.classNames.editToolbar,outline:!1,outlineClassName:d.classNames.editToolbarCellOutline,menu:{className:d.classNames.editToolbarCell,itemsClassName:d.classNames.editToolbarItem,items:[]}};class I extends R{static getMenuItemsConfig(e,t){let i=[];return e.dragDrop?.enabled&&i.push({id:"drag",type:"icon",icon:t+"drag.svg",events:{onmousedown:function(e){let t=this.menu.parent,i=t.editMode.dragDrop;e.preventDefault(),i&&t.row&&i.onDragStart(e,t.row)}}}),i.push({id:"destroy",type:"icon",className:d.classNames.menuDestroy,icon:t+"destroy.svg",events:{click:function(){let e=this.menu.parent,t=this.menu.parent.editMode,i=t.confirmationPopup;i.show({confirmButton:{value:t.lang.confirmButton,callback:e.onRowDestroy,context:e},cancelButton:{value:t.lang.cancelButton,callback:()=>{i.closePopup()}},text:t.lang.confirmDestroyRow})}}}),i}constructor(e){super(e,(0,a.merge)(I.defaultOptions,(e.options.toolbars||{}).row,{menu:{items:I.getMenuItemsConfig(e.options,e.iconsURLPrefix)}})),this.menu.initItems({})}refreshOutline(e,t){this.row&&this.row.container&&super.refreshOutline(e,t,this.row,2)}showToolbar(e){let t,i,s,o=e.container,n=this.editMode.rowToolbar;if(n)if(o&&this.editMode.isActive()&&!(this.editMode.dragDrop||{}).isActive){let o=h.getOffsets(e,this.editMode.board.container),l=o.right-o.left;(0,a.objectEach)(this.menu.items,t=>{if(!e.options?.editMode?.toolbarItems)return void t.activate();let i=e.options.editMode.toolbarItems;i[t.options.id]?.enabled===!1?t.deactivate():t.activate()}),s=l/2-this.container.clientWidth/2,t=o.left+s,i=o.top-this.container.clientHeight,this.setPosition(t,i),this.row=e,this.refreshOutline(-s,this.container.clientHeight),n.isVisible=!0}else this.isVisible&&(this.hide(),n.isVisible=!1)}onRowOptions(){this.editMode.sidebar&&this.editMode.sidebar.show(this.row)}onRowDestroy(){if(this.row){let e=this.row.options.id||-1;this.resetEditedRow(),this.row.destroy(),this.row=void 0,this.editMode.hideToolbars(["cell","row"]),this.editMode.resizer?.disableResizer(),(0,a.fireEvent)(this.editMode,"layoutChanged",{type:"rowDestroyed",target:e,board:this.editMode.board})}}resetEditedRow(){this.editedRow=void 0}}I.defaultOptions={enabled:!0,className:d.classNames.editToolbar,outline:!0,outlineClassName:d.classNames.editToolbarRowOutline,menu:{className:d.classNames.editToolbarRow,itemsClassName:d.classNames.editToolbarItem,items:[]}};var k=n(160),A=n.n(k);let H=e=>`<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 ${e} ${e}">`,V="#4B4B4D",z={"close.svg":`${H(32)}
<polygon fill="${V}" points="24.308,8.756 23.248,7.695 16.002,14.941 8.757,7.695 7.695,8.754 14.941,16.001 7.696,23.246
8.755,24.308 16.002,17.061 23.247,24.307 24.308,23.248 17.062,16.001"/>
</svg>
`,"destroy.svg":`${H(32)}
<g>
<rect x="12.75" y="14" fill="${V}" width="1.5" height="10"/>
<rect x="17.75" y="14" fill="${V}" width="1.5" height="10"/>
<path fill="${V}" d="M25.25,10.5c0-1.517-1.233-2.75-2.75-2.75h-3.25V7c0-1.24-1.01-2.25-2.25-2.25h-2
c-1.24,0-2.25,1.01-2.25,2.25v0.75H9.5c-1.517,0-2.75,1.233-2.75,2.75v1.751h2V27.25h14.5V12.251h2V10.5z M14.25,7
c0-0.413,0.337-0.75,0.75-0.75h2c0.413,0,0.75,0.337,0.75,0.75v0.75h-3.5V7z M21.75,25.75h-11.5V12.251h11.5V25.75z M23.75,10.751
H8.25V10.5c0-0.689,0.561-1.25,1.25-1.25h13c0.689,0,1.25,0.561,1.25,1.25V10.751z"/>
</g>
</svg>
`,"edit.svg":`${H(32)}
<path fill="${V}" d="M22.125,3.814L5.817,20.122l-1.818,7.879l7.879-1.818L28.186,9.875L22.125,3.814z M26.064,9.875
l-1.439,1.439l-3.939-3.939l1.439-1.439L26.064,9.875z M10.186,22.875l9.939-9.939l1.439,1.439l-9.939,9.939L10.186,22.875z
M7.686,20.375l9.939-9.939l1.439,1.439l-9.939,9.939L7.686,20.375z M18.686,9.375l0.939-0.939l3.939,3.939l-0.939,0.939
L18.686,9.375z M6.974,21.784l3.242,3.242l-4.215,0.973L6.974,21.784z"/>
</svg>
`},W=class{constructor(e,t){this.iconsURL=t,this.container=this.createPopupContainer(e),this.closeButton=this.addCloseButton()}createPopupContainer(e,t="highcharts-popup highcharts-no-tooltip"){return(0,a.createElement)("div",{className:t},void 0,e)}addCloseButton(e="highcharts-popup-close"){var t,i;let s,o,n=(0,a.createElement)("button",{className:e},void 0,this.container);return(0,a.createElement)("span",{className:"highcharts-icon"},{backgroundImage:(t="close.svg",i=this.iconsURL,o=z[t],"renderer"===i&&o?(o=encodeURIComponent(o),s=`url("data:image/svg+xml;charset=utf-8,${o}")`):s=i.startsWith("http")&&i.match(/\.(png|svg|jpe?g|gif)$/ig)?'url("'+i+'")':`url("${i}${t}")`,s)},n),["click","touchstart"].forEach(e=>{(0,a.addEvent)(n,e,this.closeButtonEvents.bind(this))}),(0,a.addEvent)(document,"keydown",e=>{"Escape"===e.code&&this.closeButtonEvents()}),n}closeButtonEvents(){this.closePopup()}showPopup(e="highcharts-annotation-toolbar"){let t=this.container,i=this.closeButton;this.type=void 0,t.innerHTML=A().emptyHTML,t.className.indexOf(e)>=0&&(t.classList.remove(e),t.removeAttribute("style")),t.appendChild(i),t.style.display="block",t.style.height=""}closePopup(){this.container.style.display="none"}},F=class extends W{constructor(e,t,i,s){super(e,t=s&&s.close&&s.close.icon?s.close.icon:t),this.editMode=i,this.options=s}createPopupContainer(e,t=d.classNames.confirmationPopup){return super.createPopupContainer(e,t)}addCloseButton(e=d.classNames.popupCloseButton){return super.addCloseButton(e)}closeButtonEvents(){let e=this.contentOptions?.cancelButton.callback;e&&e()}renderContent(){let e=this.contentOptions;if(!e)return;this.contentContainer=(0,a.createElement)("div",{className:d.classNames.popupContentContainer},{},this.container);let t=this.contentContainer.parentNode;t.style.marginTop="0px";let i=t.getBoundingClientRect().top;t.style.marginTop=(i<0?Math.abs(i-200):200)+"px",L(this.contentContainer,{title:e.text||""}),this.buttonContainer=(0,a.createElement)("div",{className:d.classNames.popupButtonContainer},{},this.container),M(this.buttonContainer,{text:e.cancelButton.value,className:d.classNames.popupCancelBtn,callback:e.cancelButton.callback}),M(this.buttonContainer,{text:e.confirmButton.value,className:d.classNames.popupConfirmBtn,callback:()=>{e.confirmButton.callback.call(e.confirmButton.context),this.closePopup()}})}show(e){this.contentOptions=e,this.showPopup(),this.renderContent(),this.editMode.setEditOverlay()}closePopup(){super.closePopup(),this.editMode.setEditOverlay(!0)}},U=class{constructor(e,t){this.changedOptions={},this.chartOptionsJSON={},this.oldOptionsBuffer={},this.waitingForConfirmation=!1,this.iconsURLPrefix=e,this.closeSidebar=t}renderContent(e,t,i){let s,o,{editMode:n}=t.board,l=t.editableOptions.getOptions();this.component=t,this.oldOptionsBuffer=t.getEditableOptions(),n&&(this.confirmationPopup=new F(t.board.container,n.iconsURLPrefix,n,{close:{icon:""}}));let r=(0,a.createElement)("div",{className:d.classNames.accordionMenu},{},e);for(let e=0,i=l.length;e<i;e++)s=l[e],o=f(r,(0,a.merge)({iconsURLPrefix:this.iconsURLPrefix,lang:(t.board?.editMode||d).lang},s)).content,this.renderAccordion(s,o,t);let c=(0,a.createElement)("div",{className:d.classNames.accordionMenuButtonsContainer},{},i);M(c,{text:(t.board?.editMode||d).lang.confirmButton,className:d.classNames.popupConfirmBtn,callback:async()=>{await this.confirmChanges(),(0,a.fireEvent)(n,"confirmEditing")}}),M(c,{text:(t.board?.editMode||d).lang.cancelButton,className:d.classNames.popupCancelBtn,callback:()=>{this.cancelChanges(),(0,a.fireEvent)(n,"cancelEditing")}}),i.appendChild(c)}updateOptions(e,t){let i,s,o,n,l=e.length-1,r=this.changedOptions;if(0===l&&"chartOptions"===e[0])try{let e=JSON.parse(t);this.chartOptionsJSON=e}catch(e){(0,a.error)("Dashboards Error: Wrong JSON config structure passed as chart options. \n____________\n"+String(e))}for(let t=0;t<l;t++){let l=e[t];if(r[l]||(r[l]={}),r=r[l],"gridOptions"===l){let e=this.component.grid?.options;if(e){let t=this.oldOptionsBuffer;t.gridOptions||(t.gridOptions={}),n=t.gridOptions,o=e}}else o&&n&&(o=o[l],void 0===n[l]&&(n[l]={}),n=n[l]);if("chartOptions"===l){let e=this.component.chart?.options;if(e){let t=this.oldOptionsBuffer;t.chartOptions||(t.chartOptions={}),s=t.chartOptions,i=e}}else i&&s&&(i=i[l],void 0===s[l]&&(s[l]={}),s=s[l])}let c=e[l];r[c]=t,s&&i&&(s[c]=s[c]??i[c]),this.component?.update(this.changedOptions)}renderAccordion(e,t,i){if("nested"===e.type)return this.renderNested(t,e,i);let s={select:v,toggle:C,text:y,collapse:f,icon:w,contextButton:b,input:x,textarea:E,checkbox:N,button:M}[e.type],o=(i.board?.editMode||d).lang;s&&s(t,{...e,iconsURLPrefix:this.iconsURLPrefix,value:i.getEditableOptionValue(e.propertyPath),enabledOnOffLabels:"toggle"===e.type,lang:o,onchange:t=>this.updateOptions(e.propertyPath||[],t)})}renderNested(e,t,i){if(!e||!t.nestedOptions)return;let s=t.nestedOptions;for(let t=0,o=s.length;t<o;++t){let o=s[t].name,n=s[t].options,l=!!s[t].showToggle,r=s[t].propertyPath||[],c=(i.board?.editMode||d).lang,h=f(e,{name:o,isEnabled:!!i.getEditableOptionValue(r),iconsURLPrefix:this.iconsURLPrefix,showToggle:l,onchange:e=>this.updateOptions(r,e),isNested:!!n,isStandalone:!n,lang:c});for(let e=0,t=n?.length;e<t;++e)this.renderAccordion((0,a.merge)(n[e],{lang:c,isNested:!0}),h.content,i)}}cancelChanges(){Object.keys(this.changedOptions).length<1?this.closeSidebar():this.showCancelConfirmationPopup()}async confirmChanges(){let e=this.component;if(e){if("Highcharts"===e.type&&Object.keys(this.chartOptionsJSON).length)await e.update({chartOptions:this.chartOptionsJSON});else if("HTML"===e.type){let t=this.changedOptions;await e.update(t,!0)}(0,a.fireEvent)(e.board.editMode,"componentChanged",{target:e,changedOptions:(0,a.merge)({},this.changedOptions),oldOptions:(0,a.merge)({},this.oldOptionsBuffer)}),this.changedOptions={},this.chartOptionsJSON={},this.closeSidebar()}}async discardChanges(){let e=this.component;e&&(await e.update(this.oldOptionsBuffer),(0,a.fireEvent)(e.board.editMode,"componentChangesDiscarded",{target:e,changedOptions:(0,a.merge)({},this.changedOptions),oldOptions:(0,a.merge)({},this.oldOptionsBuffer)}),this.changedOptions={},this.chartOptionsJSON={})}showCancelConfirmationPopup(){let e=this.confirmationPopup,t=this.component?.board?.editMode;e&&t&&!this.waitingForConfirmation&&(this.waitingForConfirmation=!0,e.show({text:t.lang.confirmDiscardChanges,confirmButton:{value:t.lang.confirmButton,callback:async()=>{await this.discardChanges(),this.waitingForConfirmation=!1,this.closeSidebar()},context:this},cancelButton:{value:t.lang.cancelButton,callback:()=>{e.closePopup(),t.setEditOverlay(),setTimeout(()=>{this.waitingForConfirmation=!1},100)}}}))}};var X=n(376),_=n.n(X);function $(e,t){let i;"string"==typeof e&&document.querySelectorAll("#"+e).length>1&&console.warn(`Multiple cells have identical ID %c${e}%c, potentially leading to unexpected behavior.
Ensure that each cell has a unique ID on the page.`,"font-weight: bold","");let s=t?t.querySelector("#"+e):document.getElementById(e);return null!==s&&(0,a.fireEvent)(s,"bindedGUIElement",{},function(e){i=e.guiElement}),i}let j={addComponent:async function e(e,t,i){let s=e.states,o=e.events,n=e.renderTo;if(!n)return void console.error("The%c renderTo%c option is required to render the component.","font-weight: bold","");if(t.mountedComponents.filter(e=>e.options.renderTo===n).length>0)return void console.error(`A component has already been declared in the cell %c${n}%c use a different cell.`,"font-weight: bold","");i=i||j.getCell(n,t.container);let l=i?.container||document.querySelector("#"+n);if(!l||!e.type)return void console.error(`The component is unable to find the HTML cell element %c${n}%c to render the content.`,"font-weight: bold","");let c=_().types[e.type];!c&&(console.error(`The component's type %c${e.type}%c does not exist.`,"font-weight: bold",""),i&&(c=_().types.HTML,e.title={text:t.editMode?.lang.errorMessage||"Something went wrong",className:r().classNamePrefix+"component-title-error "+r().classNamePrefix+"component-title"}));let d=new c(i,e,t),h=d.load().catch(e=>(console.error(e),d.update({connector:{id:""},title:{text:t.editMode?.lang.errorMessage||"Something went wrong",className:r().classNamePrefix+"component-title-error "+r().classNamePrefix+"component-title"}})));return i&&(d.setCell(i),i.mountedComponent=d),t.mountedComponents.push({options:e,component:d,cell:i||new u({id:n,container:l,mountedComponent:d})}),i&&s?.active?.enabled&&s?.active?.isActive&&(i.setActiveState(),d.isActive=!0),(0,a.fireEvent)(d,"mount"),(0,a.addEvent)(l,"click",()=>{o&&o.click&&o.click.call(d),i&&d&&l&&s?.active?.enabled&&(i.setActiveState(),d.isActive=!0)}),s?.hover?.enabled&&l.classList.add(r().classNames.cellHover),(0,a.fireEvent)(d,"afterLoad"),h},getCell:function(e,t){let i=$(e,t);if(i&&"cell"===i.getType())return i}};class Y extends h{static setContainerHeight(e,t){t&&(e.style.height=t+"px")}constructor(e,t,i){super(),this.type=r().guiElementType.row,this.layout=e,this.cells=[],this.options=t,this.isVisible=!0;const s=document.getElementById(t.parentContainerId||"")||e.container,o=e.options||{},n=o.rowClassName||"";this.container=this.getElementContainer({render:e.board.guiEnabled,parentContainer:s,attribs:{id:t.id,className:r().classNames.row+" "+n},element:i,elementId:t.id,style:(0,a.merge)(o.style,t.style)}),this.options.cells&&this.setCells()}setCells(){let e,t,i,s=(this.layout.options||{}).cellClassName||"",o=(0,a.pick)(this.options.cells,this.container&&this.container.getElementsByClassName(s))||[];for(t=0,i=o.length;t<i;++t)e=o[t],this.addCell(this.layout.board.guiEnabled?e:{id:""},e instanceof HTMLElement?e:void 0)}addCell(e,t,i){let s=new m(this,e,t);return(0,a.defined)(i)?this.mountCell(s,i):this.cells.push(s),this.layout.board.editMode&&this.layout.board.editMode.setCellEvents(s),s}destroy(){let{layout:e}=this,t=this.layout.board,i=t.editMode;if(this.cells){let e=[...this.cells];for(let t=0,i=e.length;t<i;++t)e[t]&&e[t].destroy()}this.layout&&(this.layout.unmountRow(this),super.destroy(),e.rows?.length===0&&e.destroy()),(0,a.fireEvent)(i,"rowDestroyed",{target:this,board:t})}getOptions(){let e=[];for(let t=0,i=this.cells.length;t<i;++t)e.push(this.cells[t].getOptions());return{id:this.options.id,style:this.options.style,cells:e}}setSize(e){Y.setContainerHeight(this.container,e)}getCellIndex(e){for(let t=0,i=this.cells?.length;t<i;++t)if(this.cells[t].id===e.id)return t}mountCell(e,t=0){let i=this,s=i.cells[t],o=i.cells[t-1];e.container&&(s&&s.container?s.container.parentNode.insertBefore(e.container,s.container):o&&o.container?o.container.parentNode.insertBefore(e.container,o.container.nextSibling):o||s||!i.container||i.container.appendChild(e.container),i.cells.splice(t,0,e),e.row=i,setTimeout(()=>{(0,a.fireEvent)(i,"cellChange",{row:i,cell:e})},0))}unmountCell(e){let t=this.getCellIndex(e);(0,a.defined)(t)&&this.cells.splice(t,1),setTimeout(()=>{(0,a.fireEvent)(this,"cellChange",{row:this,cell:e})},0)}getVisibleCells(){let e=[];for(let t=0,i=this.cells.length;t<i;++t)this.cells[t].isVisible&&e.push(this.cells[t]);return e}changeVisibility(e=!0,t){super.changeVisibility(e,t),this.layout.getVisibleRows().length?this.isVisible&&!this.layout.isVisible&&this.layout.show():this.layout.hide()}show(){this.changeVisibility(!0,"flex")}setHighlight(e){let t=this.container.classList,i=d.classNames.rowContextHighlight;!0===e?t.remove(i):t.toggle(i,!e)}getRowLevels(){let e,t,i={},s=[];for(let s=0,o=this.cells.length;s<o;++s)(e=this.cells[s]).isVisible&&(i[(t=h.getOffsets(e)).top]||(i[t.top]={top:t.top,bottom:t.bottom,cells:[]}),i[t.top].bottom<t.bottom&&(i[t.top].bottom=t.bottom),i[t.top].cells.push(e));return(0,a.objectEach)(i,e=>{s.push(e)}),s}getRowLevelInfo(e){let t,i=this.getRowLevels();for(let s=0,o=i.length;s<o;++s)i[s].top<=e&&i[s].bottom>e&&(t={index:s,rowLevels:i,rowLevel:i[s]});return t}}let K=class extends h{constructor(e,t,i){super(),this.type=r().guiElementType.layout,this.board=e,this.rows=[],this.options=t,this.isVisible=!0;const s=i?i.container:document.getElementById(t.parentContainerId||"")||e.layoutsWrapper;i?(this.parentCell=i,this.level=i.row.layout.level+1):this.level=0,t.copyId&&(this.copyId=t.copyId);const o=(this.options||{}).rowClassName||"";this.container=this.getElementContainer({render:e.guiEnabled,parentContainer:s,attribs:{id:(t.id||"")+(this.copyId?"_"+this.copyId:""),className:r().classNames.layout+" "+o},elementId:t.id,style:this.options.style}),this.options.rows&&this.setRows()}setRows(){let e,t,i,s=(0,a.pick)(this.options.rows,this.container&&this.container.getElementsByClassName(this.options.rowClassName||""))||[];for(t=0,i=s.length;t<i;++t)e=s[t],this.addRow(this.board.guiEnabled?e:{},e instanceof HTMLElement?e:void 0)}addRow(e,t,i){let s=new Y(this,e,t);return(0,a.defined)(i)?this.mountRow(s,i):this.rows.push(s),this.board.editMode&&this.board.editMode.setRowEvents(s),s}destroy(){for(let e=this.board.layouts.length-1;e>=0;e--)this.board.layouts[e]===this&&this.board.layouts.splice(e,1);this.parentCell&&delete this.parentCell.nestedLayout;for(let e=this.rows.length-1;e>=0;e--)this.rows[e].destroy();this.parentCell&&this.parentCell.destroy(),super.destroy()}getRowIndex(e){for(let t=0,i=this.rows.length;t<i;++t)if(this.rows[t]===e)return t}mountRow(e,t){let i=this.rows[t],s=this.rows[t-1];e.container&&(i&&i.container?i.container.parentNode.insertBefore(e.container,i.container):s&&s.container&&s.container.parentNode.insertBefore(e.container,s.container.nextSibling),this.rows.splice(t,0,e),e.layout=this)}unmountRow(e){let t=this.getRowIndex(e);(0,a.defined)(t)&&this.rows.splice(t,1)}getVisibleRows(){let e=[];for(let t=0,i=this.rows.length;t<i;++t)this.rows[t].isVisible&&e.push(this.rows[t]);return e}changeVisibility(e=!0){super.changeVisibility(e),this.parentCell&&(this.isVisible&&!this.parentCell.isVisible?this.parentCell.show():!this.isVisible&&this.parentCell.isVisible&&this.parentCell.hide())}getOptions(){let e=[];for(let t=0,i=this.rows.length;t<i;++t)e.push(this.rows[t].getOptions());return{id:this.options.id,layoutClassName:this.options.layoutClassName,rowClassName:this.options.rowClassName,cellClassName:this.options.cellClassName,style:this.options.style,rows:e}}};class J extends W{constructor(e,t,i){super(e,t),this.options={components:["HTML","row","Highcharts","Grid","KPI"]},this.isVisible=!1,this.componentsList=[],this.editMode=i,this.options=(0,a.merge)(this.options,i.options.toolbars?.sidebar||{}),this.componentsList=this.getComponentsList(this.options.components||[]),this.accordionMenu=new U(this.iconsURL,this.hide.bind(this))}detectRightSidebar(e){let t=this.editMode,i=t.customHTMLMode?t.board.container:t.board.layoutsWrapper;return!!i&&h.getOffsets(e,i).left<i.offsetWidth/2-10}removeClassNames(){let e=d.classNames,t=this.container.classList;t.remove(e.editSidebarShow),t.remove(e.editSidebarRightShow)}addClassNames(e){let t=this.container.classList;e?t.add(d.classNames.editSidebarRight):t.remove(d.classNames.editSidebarRight),setTimeout(()=>{t.add(d.classNames[e?"editSidebarRightShow":"editSidebarShow"])})}show(e){let t=this.editMode,i=!!(e&&this.detectRightSidebar(e));this.showPopup(d.classNames.editSidebarShow),this.addClassNames(i),t.resizer&&t.resizer.disableResizer(),p(t.editCellContext)&&t.editCellContext.row&&t.editCellContext.row.setHighlight(),t.hideToolbars(["cell","row"]),t.stopContextDetection(),this.isVisible=!0,this.generateContent(e)}generateContent(e){if(this.container.innerHTML=A().emptyHTML,this.renderHeader(e?this.editMode.lang.settings:this.editMode.lang.addComponent,""),this.sidebarWrapper=(0,a.createElement)("div",{className:d.classNames.editSidebarWrapper},void 0,this.container),!e)return void this.renderAddComponentsList();if(this.type=e.getType(),"cell-html"===this.type||"cell"===this.type){let t=e.mountedComponent;if(!t)return;this.accordionMenu.renderContent(this.sidebarWrapper,t,this.container)}}renderAddComponentsList(){let e,t=this,i=this.componentsList,s=(0,a.createElement)("div",{className:d.classNames.editGridItems},{},t.sidebarWrapper);for(let o=0,n=i.length;o<n;++o)(e=(0,a.createElement)("div",{},{},s)).addEventListener("mousedown",e=>{e.preventDefault();let s=t.editMode.dragDrop;if(s){let n=e=>{let i=t.container.getBoundingClientRect();(e.clientX<i.left||e.clientX>i.right||e.clientY<i.top||e.clientY>i.bottom)&&(t.hide(),document.removeEventListener("mousemove",n))},l=()=>{document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",l)};document.addEventListener("mousemove",n),document.addEventListener("mouseup",l),s.onDragStart(e,void 0,e=>{if(0===this.editMode.board.layouts.length){let t=this.editMode.board,i=new K(t,{id:h.getElementId("layout"),copyId:"",parentContainerId:t.container.id,rows:[{}],style:{}});i&&t.layouts.push(i),e=i.rows[0]}if(!e?.type){let i=t.editMode.board.layouts;s.dropContext=e=i[i.length-1].addRow({},void 0)}let l=i[o].onDrop(t,e),r=(0,a.addEvent)(this.editMode,"layoutChanged",e=>{if(l&&"newComponent"===e.type){let e=l.mountedComponent?.chart,i=this.editMode.options.settings?.enabled;if(e?.isDirtyBox){let s=(0,a.addEvent)(e,"render",()=>{t.editMode.setEditCellContext(l),i&&(t.show(l),l.setHighlight()),s(),r()})}else t.editMode.setEditCellContext(l),i&&(t.show(l),l.setHighlight()),r()}});document.removeEventListener("mousemove",n)})}}),e.innerHTML=i[o].text}onDropNewComponent(e,t){let i=this.editMode.dragDrop;if(!i)return;let s=("cell"===e.getType()?e.row:e).addCell({id:h.getElementId("col")});i.onCellDragEnd(s);let o=(0,a.merge)(t,{renderTo:s.id}),n=j.addComponent(o,this.editMode.board,s);return this.editMode.setEditOverlay(!this.editMode.options.settings?.enabled),(async()=>{let e=await n;e&&(0,a.fireEvent)(this.editMode,"layoutChanged",{type:"newComponent",target:e})})(),s}hide(){let e=this.editMode,t=e.editCellContext;this.removeClassNames(),this.container.style.display="none",e.isEditOverlayActive&&e.setEditOverlay(!0),p(t)&&t.row?(e.showToolbars(["cell","row"],t),t.row.setHighlight(!0),t.setHighlight(!0),e.resizer&&e.resizer.setSnapPositions(e.editCellContext)):g(t)&&e.cellToolbar&&(e.cellToolbar.showToolbar(t),t.setHighlight()),e.isContextDetectionActive=!0,this.isVisible=!1}closeButtonEvents(){"cell"===this.type||"cell-html"===this.type?this.accordionMenu.cancelChanges():this.hide()}renderHeader(e,t){if(!this.container)return;let i=(0,a.createElement)("div",{className:d.classNames.editSidebarHeader},{},this.container);this.container.appendChild(i),this.headerWrapper=i;let s=w(this.headerWrapper,{icon:t,className:d.classNames.editSidebarTitle});s&&(s.textContent=e),this.headerWrapper?.appendChild(this.closeButton)}getComponentsList(e){let t=this.editMode,i=t.board.componentTypes,s=[];return e.forEach(e=>{let o=i[e];o?s.push({text:t.lang?.sidebar[e]||o.name,onDrop:function(e,t){let i=o.prototype.getOptionsOnDrop(e);if(i)return e.onDropNewComponent(t,i)}}):"row"===e&&s.push({...J.addRow,text:t.lang?.sidebar[e]||J.addRow.text})}),s}addCloseButton(e=d.classNames.popupCloseButton){return(0,a.addEvent)(document,"click",e=>{e.stopPropagation(),"block"===this.container.style.display&&!this.container.contains(e.target)&&this.container.classList.value.includes("show")&&("cell"===this.type||"cell-html"===this.type?this.accordionMenu.cancelChanges():this.hide())}),super.addCloseButton.call(this,e)}createPopupContainer(e,t=d.classNames.editSidebar){return super.createPopupContainer.call(this,e,t)}}J.addRow={text:d.lang.sidebar.row,onDrop:function(e,t){if(!t)return;let i="cell"===t.getType(),s=(i?t.row:t).layout.board,o=h.getElementId("cell");if(i){let e=new K(s,{id:h.getElementId("layout"),copyId:"",parentContainerId:s.container.id,rows:[{cells:[{id:o}]}],style:{}});s.layouts.push(e),(0,a.fireEvent)(s.editMode,"layoutChanged",{type:"newLayout",target:e,board:s})}else t.layout.rows[0].addCell({id:o});j.addComponent({type:"HTML",renderTo:o,className:"highcharts-dashboards-component-placeholder",html:`
<h2> Placeholder </h2>
<span> This placeholder can be deleted when you add extra
components to this row.
</span>
`},s)}};class G extends D{constructor(e,t,i){if(super(i.board.container,(0,a.merge)(G.defaultOptions,t||{}),i),this.editMode=i,this.options=(0,a.merge)(G.defaultOptions,t||{}),this.editMode.board.layoutsWrapper?.parentNode.insertBefore(this.container,this.editMode.board.layoutsWrapper),this.container.style.width=this.options.width+"px",super.initItems(G.items),this.options.items){const e=[];for(let t=0,i=this.options.items.length;t<i;++t)"string"==typeof this.options.items[t]?e.push(this.options.items[t]):this.options.items[t].id&&e.push(this.options.items[t].id);this.setActiveItems(e)}this.initEvents()}initEvents(){let e=this;(0,a.addEvent)(document,"click",t=>{t.target!==this.container&&t.target!==e.editMode.tools.contextButtonElement&&!t.target.classList.contains(d.classNames.toggleSlider)&&"INPUT"!==t.target.tagName&&this.isVisible&&this.setVisible(!1)})}setVisible(e){let t=this.editMode.tools.contextButtonElement;this.container&&t&&(e?(this.container.style.display="block",this.isVisible=!0,t.setAttribute("aria-expanded","true")):(this.container.style.display="none",this.isVisible=!1,t.setAttribute("aria-expanded","false")));let i=this.activeItems.find(e=>"editMode"===e.options.langKey);i&&i.options.setValue(i,this.editMode.isActive())}updatePosition(e,t,i){let s=this.options.width||0,o=e?e.offsetLeft-s+e.offsetWidth:t,n=e?e.offsetTop+e.offsetHeight:i;o&&n&&(this.container.style.left=o+"px",this.container.style.top=n+"px")}}G.defaultOptions={enabled:!0,width:150,className:d.classNames.contextMenu,itemsClassName:d.classNames.contextMenuItem,items:["editMode"]},G.items=(0,a.merge)(D.items,{editMode:{id:"editMode",type:"toggle",getValue:function(e){return e.menu.editMode.isActive()},setValue:function(e,t){let i=e.innerElement?.querySelector("input");i&&(i.checked=t)},langKey:"editMode",events:{click:function(){this.menu.editMode.toggleEditMode()}}}});class q{static isGUIElementOnParentEdge(e,t){let i="top"===t||"bottom"===t?e.row.layout.getVisibleRows():"left"===t||"right"===t?e.row.getVisibleCells():[],s=i.length-1;return i[s]===e&&"right"===t||i[s]===e.row&&"bottom"===t||i[0]===e&&"left"===t||i[0]===e.row&&"top"===t}static getContextLevel(e,t,i,s){let o=e.getOverlappingLevels(s,t/2),n=t/o.length,l=o[o.length-1],a=e.row.layout.level-Math.floor(i/n);return a<l?l:a>e.row.layout.level?e.row.layout.level:a}static getContext(e,t,i){let s,o=h.getOffsets(e),{width:n,height:l}=h.getDimFromOffsets(o);n<2*i&&(i=n/2);let r=t.clientX-o.left,c=t.clientY-o.top,d="bottom";switch(r>=-i&&r<=i?d="left":r-n>=-i&&r-n<=i?d="right":c>=-i&&c<=i?d="top":c-l>=-i&&c-l<=i&&(d="bottom"),d){case"right":s=r-n+i;break;case"left":s=i-r;break;case"top":s=i-c;break;case"bottom":s=c-l+i}let p={cell:e,side:d};if(e.row?.layout.level&&d&&q.isGUIElementOnParentEdge(e,d)&&(0,a.defined)(s)){let t=q.getContextLevel(e,i,s,d),o=e.getParentCell(t);o&&(p.cell=o)}return p}}class Q{constructor(e,t){this.editMode=e,this.options=(0,a.merge)(Q.defaultOptions,t),this.mockElement=(0,a.createElement)("div",{className:d.classNames.dragMock},{},e.board.container),this.dropPointer={isVisible:!1,align:"",element:(0,a.createElement)("div",{className:d.classNames.dropPointer},{},e.board.container)},this.isActive=!1,this.initEvents()}showDropPointer(e,t,i,s){this.dropPointer.isVisible=!0,(0,a.css)(this.dropPointer.element,{display:"block",left:e+"px",top:t+"px",height:s+"px",width:i+"px"})}hideDropPointer(){this.dropPointer.isVisible&&(this.dropPointer.isVisible=!1,this.dropPointer.align="",this.dropPointer.element.style.display="none")}setMockElementPosition(e){let t=this.editMode.board.container.getBoundingClientRect(),i=this.mockElement.clientWidth/2,s=e.clientX-t.left-i,o=e.clientY-t.top-i;(0,a.css)(this.mockElement,{left:s+"px",top:o+"px"})}initEvents(){(0,a.addEvent)(document,"mousemove",this.onDrag.bind(this)),(0,a.addEvent)(document,"mouseup",this.onDragEnd.bind(this))}onDragStart(e,t,i){this.isActive=!0,this.editMode.hideToolbars(["cell","row"]),this.editMode.resizer&&this.editMode.resizer.disableResizer(),this.setMockElementPosition(e),t?(this.context=t,t.hide(),t.getType()===r().guiElementType.cell&&((0,a.fireEvent)(this.editMode.board,"cellResize",{cell:t}),(0,a.fireEvent)(t.row,"cellChange",{cell:t,row:t.row}))):i&&(this.dragEndCallback=i),(0,a.css)(this.mockElement,{cursor:"grabbing",display:"block"})}onDrag(e){this.isActive&&(e.preventDefault(),this.setMockElementPosition(e),this.context?this.context.getType()===r().guiElementType.cell?this.onCellDrag(e):this.context.getType()===r().guiElementType.row&&this.onRowDrag(e):this.dragEndCallback&&this.onCellDrag(e))}onDragEnd(){this.isActive&&(this.isActive=!1,(0,a.css)(this.mockElement,{cursor:"grab",display:"none"}),this.context?(this.context.getType()===r().guiElementType.cell?this.onCellDragEnd():this.context.getType()===r().guiElementType.row&&this.onRowDragEnd(),this.context=void 0,this.editMode.editCellContext&&(this.editMode.showToolbars(["row","cell"],this.editMode.editCellContext),this.editMode.resizer&&this.editMode.resizer.setSnapPositions(this.editMode.editCellContext))):this.dragEndCallback&&(this.dragEndCallback(this.dropContext),this.dragEndCallback=void 0,this.hideDropPointer()))}onRowDrag(e,t){let i=this.mouseCellContext,s=this.options.dropPointerSize||0,o=this.options.rowDropOffset||0,n=!1;if(i){let l=t||q.getContext(i,e,o),a=l.side;if((this.dropPointer.align!==a||this.dropContext!==l.cell.row)&&(n=!0,this.dropPointer.align=a,this.dropContext=l.cell.row),a){let e=h.getOffsets(this.dropContext,this.editMode.board.container),{width:t,height:i}=h.getDimFromOffsets(e);(!this.dropPointer.isVisible||n)&&this.showDropPointer(e.left,e.top+("bottom"===this.dropPointer.align?i:0)-s/2,t,s)}else this.dropContext=void 0,this.hideDropPointer()}}onRowDragEnd(){let e=this.context,t=this.dropContext;this.dropPointer.align&&(e.layout.unmountRow(e),0===e.layout.rows.length&&e.layout.destroy(),t.layout.mountRow(e,(t.layout.getRowIndex(t)||0)+ +("bottom"===this.dropPointer.align)),e.cells[0]&&((0,a.fireEvent)(this.editMode.board,"cellResize",{cell:e.cells[0]}),(0,a.fireEvent)(e,"cellChange",{cell:e.cells[0],row:e}))),this.hideDropPointer(),e.show(),(0,a.fireEvent)(this.editMode,"layoutChanged",{type:"rowDragEnd",target:e,board:this.editMode.board})}onCellDrag(e,t){let i=this.mouseCellContext,s=this.options.cellDropOffset||0;i||t?this.onCellDragCellCtx(e,t||q.getContext(i,e,s)):this.mouseRowContext&&this.onCellDragRowCtx(e,this.mouseRowContext)}onCellDragCellCtx(e,t){let i=this.options.dropPointerSize||0,s=t.side,o=!1;if((this.dropPointer.align!==s||this.dropContext!==t.cell)&&(o=!0,this.dropPointer.align=s,this.dropContext=t.cell),"right"===s||"left"===s){let t=h.getOffsets(this.dropContext,this.editMode.board.container),{width:n,height:l}=h.getDimFromOffsets(t);if(!this.dropPointer.isVisible||o){let o=this.dropContext.row.getRowLevelInfo(e.clientY),a=o?o.rowLevel.bottom-o.rowLevel.top:l;this.showDropPointer(t.left+("right"===s?n:0)-i/2,t.top,i,a)}}else if("top"===s||"bottom"===s){let i=h.getOffsets(this.dropContext),o=this.dropContext.row.getRowLevelInfo(i.top);o&&(0===o.index&&"top"===s||o.index===o.rowLevels.length-1&&"bottom"===s)&&this.onRowDrag(e,t)}else this.dropContext=void 0,this.hideDropPointer()}onCellDragRowCtx(e,t){let i,s,o=this.options.dropPointerSize||0,n=h.getOffsets(t),l=t.getRowLevelInfo(e.clientY);if(l)for(let t=0,a=l.rowLevel.cells.length;t<a;++t){i=l.rowLevel.cells[t],s=h.getOffsets(i);let{width:r,height:c}=h.getDimFromOffsets(s),d=this.editMode.board.container.getBoundingClientRect(),p=l.rowLevel.bottom-l.rowLevel.top;if(i.isVisible){if(c<.8*p&&s.left<=e.clientX&&s.right>=e.clientX)s.top>e.clientY||s.bottom<e.clientY&&(this.showDropPointer(s.left-d.left,s.top-d.top+c,r,p-c),this.dropPointer.align="nestedBottom",this.dropContext=i),t=a;else if(0===t&&s.left>e.clientX||t===a-1&&s.right<e.clientX){if(s.left>e.clientX);else if(s.right<e.clientX){let l=n.right-s.right;this.showDropPointer(s.left+(0===t&&s.left>e.clientX?0:r)-o/2-d.left,s.top-d.top,l>o?l:o,p||c),this.dropPointer.align="right",this.dropContext=i}t=a}}else i.isVisible||i!==this.context||(this.dropContext=void 0,this.hideDropPointer())}}onCellDragEnd(e){let t=e||this.context,i=this.dropContext;if(this.dropPointer.align&&i&&t)if(t.row.unmountCell(t),0===t.row.cells.length&&t.row.destroy(),("top"===this.dropPointer.align||"bottom"===this.dropPointer.align)&&i.getType()===r().guiElementType.row)i.layout.addRow({},void 0,(i.layout.getRowIndex(i)||0)+ +("bottom"===this.dropPointer.align)).mountCell(t,0);else if("nestedBottom"===this.dropPointer.align&&i.getType()===r().guiElementType.cell){let e=i.row,s=e.getCellIndex(i);e.unmountCell(i);let o=e.addCell({id:h.getElementId("col-nested"),layout:{rows:[{},{}]}},void 0,s);o.nestedLayout&&(o.nestedLayout.rows[0].mountCell(i),o.nestedLayout.rows[1].mountCell(t))}else i.getType()===r().guiElementType.cell&&i.row.mountCell(t,(i.row.getCellIndex(i)||0)+ +("right"===this.dropPointer.align));(0,a.fireEvent)(this.editMode.board,"cellResize",{cell:t}),(0,a.fireEvent)(t.row,"cellChange",{cell:t,row:t.row}),this.hideDropPointer(),t.show(),(0,a.fireEvent)(this.editMode,"layoutChanged",{type:"cellDragEnd",target:t,board:this.editMode.board})}}Q.defaultOptions={enabled:!0,rowDropOffset:30,cellDropOffset:30,dropPointerSize:16};class Z{static fromJSON(e,t){return new Z(e,t.options)}constructor(e,t){this.editMode=e,this.options=(0,a.merge)({},Z.defaultOptions,e.options.resize,t),this.currentCell=void 0,this.isX=this.options.type.indexOf("x")>-1,this.isY=this.options.type.indexOf("y")>-1,this.isActive=!1,this.startX=0,this.tempSiblingsWidth=[],this.addSnaps()}addSnaps(){let e=this.editMode.iconsURLPrefix,t=this.options.snap.width||0,i=this.options.snap.height||0,s=this.editMode.board.container;this.snapRight=(0,a.createElement)("img",{className:d.classNames.resizeSnap+" "+d.classNames.resizeSnapX,src:e+"resize-handle.svg"},{width:t+"px",height:i+"px",left:"-9999px"},s),this.snapBottom=(0,a.createElement)("img",{className:d.classNames.resizeSnap+" "+d.classNames.resizeSnapY,src:e+"resize-handle.svg"},{width:t+"px",height:i+"px",top:"-9999px",left:"0px"},s),this.addResizeEvents()}disableResizer(){this.isActive=!1,this.currentDimension=void 0,this.currentCell=void 0,this.snapRight&&(this.snapRight.style.left="-9999px"),this.snapBottom&&(this.snapBottom.style.left="-9999px")}setSnapPositions(e){this.currentCell=e;let t=h.getOffsets(e,this.editMode.board.container),i=t.left||0,s=t.top||0,{width:o,height:n}=h.getDimFromOffsets(t),l=this.options.snap.width||0,a=this.options.snap.height||0;this.snapRight&&(this.snapRight.style.left=i+o-l+"px",this.snapRight.style.top=s+n/2-a/2+"px"),this.snapBottom&&(this.snapBottom.style.top=s+n-a+"px",this.snapBottom.style.left=i+o/2-l/2+"px")}setTempWidthSiblings(){let e=this.currentCell;if(e){let t,i,s=h.getOffsets(e),o=e.row.getRowLevelInfo(s.top),n=o&&o.rowLevel.cells||[];for(let s=0,o=n.length;s<o&&(t=(i=n[s]).container,i!==e);++s)t&&(t.style.flex="0 0 "+t.offsetWidth+"px",this.tempSiblingsWidth.push(i))}}revertSiblingsAutoWidth(){let e,t,i=this.tempSiblingsWidth;for(let s=0,o=i.length;s<o;++s)(e=i[s].container)&&(e.style.flex="1 1 0%",t=i[s]);this.tempSiblingsWidth=[],t&&((0,a.fireEvent)(this.editMode.board,"cellResize",{cell:t}),(0,a.fireEvent)(t.row,"cellChange",{cell:t,row:t.row}))}addResizeEvents(){let e,t,i,s,o=this;o.mouseDownSnapX=e=function(e){o.isActive=!0,o.currentDimension="x",o.editMode.hideToolbars(["row","cell"]),o.setTempWidthSiblings(),o.startX=e.clientX},o.mouseDownSnapY=t=function(){o.isActive=!0,o.currentDimension="y",o.editMode.hideToolbars(["row","cell"])},o.mouseMoveSnap=i=function(e){o.isActive&&o.onMouseMove(e)},o.mouseUpSnap=s=function(){o.isActive&&(o.isActive=!1,o.currentDimension=void 0,o.revertSiblingsAutoWidth(),o.editMode.showToolbars(["row","cell"],o.currentCell),o.currentCell&&o.setSnapPositions(o.currentCell))},(0,a.addEvent)(this.snapRight,"mousedown",e),(0,a.addEvent)(this.snapBottom,"mousedown",t),(0,a.addEvent)(document,"mousemove",i),(0,a.addEvent)(document,"mouseup",s);let n=()=>{o.currentCell&&o.setSnapPositions(o.currentCell)};if("function"==typeof ResizeObserver)this.resizeObserver=new ResizeObserver(n),this.resizeObserver.observe(o.editMode.board.container);else{let e=(0,a.addEvent)(window,"resize",n);(0,a.addEvent)(this,"destroy",e)}}onMouseMove(e){let t=this.currentCell,i=t&&t.container,s=this.currentDimension;if(t&&i&&!((t.row.layout.board.editMode||{}).dragDrop||{}).isActive){let i=h.getOffsets(t),{width:o}=h.getDimFromOffsets(h.getOffsets(t.row));if("x"===s){let s=Math.min(e.clientX-i.left,o)/o*100+"%";t.setSize(s),this.startX=e.clientX}"y"===s&&t.setSize(void 0,e.clientY-i.top),(0,a.fireEvent)(this.editMode.board,"cellResize",{cell:t}),(0,a.fireEvent)(t.row,"cellChange",{cell:t,row:t.row}),this.setSnapPositions(t)}}destroy(){let e,t=["snapRight","snapBottom"];(0,a.removeEvent)(document,"mousemove"),(0,a.removeEvent)(document,"mouseup"),this.resizeObserver?.unobserve(this.editMode.board.container);for(let i=0,s=t.length;i<s;++i)e=this[t[i]],(0,a.removeEvent)(e,"mousedown"),e.remove()}toJSON(){let e=this.options;return{$class:"Dashboards.Action.Resizer",options:{enabled:e.enabled,styles:{minWidth:e.styles.minWidth,minHeight:e.styles.minHeight},type:e.type,snap:{width:e.snap.width,height:e.snap.height}}}}}Z.defaultOptions={enabled:!0,styles:{minWidth:20,minHeight:50},type:"xy",snap:{width:9,height:17}};let ee=class{constructor(e,t){this.active=!1,this.customHTMLMode=!1,this.iconsURLPrefix="https://code.highcharts.com/dashboards/4.2.1/gfx/dashboards-icons/",this.iconsURLPrefix=t&&t.iconsURLPrefix||this.iconsURLPrefix,this.options=(0,a.merge)({confirmationPopup:{close:{icon:this.iconsURLPrefix+"close.svg"}},contextMenu:{icon:this.iconsURLPrefix+"menu.svg"},dragDrop:{enabled:!0},viewFullscreen:{enabled:!0},enabled:!0,resize:{enabled:!0},settings:{enabled:!0},toolbars:{cell:{enabled:!0},row:{enabled:!0}},tools:{addComponentBtn:{enabled:!0,icon:this.iconsURLPrefix+"add.svg"}}},t||{}),this.board=e,this.lang=(0,a.merge)({},d.lang,this.options.lang),e.boardWrapper=e.container,e.guiEnabled&&this.initLayout(),this.isInitialized=!1,this.isContextDetectionActive=!1,this.tools={},e.editModeEnabled&&(this.customHTMLMode=!this.board.layoutsWrapper,this.contextPointer={isVisible:!1,element:(0,a.createElement)("div",{className:d.classNames.contextDetectionPointer},{},e.container)},this.createTools(),this.confirmationPopup=new F(e.container,this.iconsURLPrefix,this,this.options.confirmationPopup),this.editOverlay=(0,a.createElement)("div",{className:d.classNames.editOverlay},{},e.container),this.isEditOverlayActive=!1,e.fullscreen=new(r()).win.Dashboards.Fullscreen(e),this.customHTMLMode&&e.container.classList.add(r().classNames.boardContainer))}onContextBtnClick(){this.tools.contextMenu&&(this.tools.contextMenu.isVisible||this.tools.contextMenu.updatePosition(this.tools.contextButtonElement),this.tools.contextMenu.setVisible(!this.tools.contextMenu.isVisible))}toggleEditMode(){this.active?this.deactivate():this.activate()}init(){this.options.resize?.enabled&&!this.customHTMLMode&&(this.resizer=new Z(this,this.options.resize)),this.dragDrop=new Q(this,this.options.dragDrop),!this.options.toolbars?.row?.enabled||this.rowToolbar||this.customHTMLMode||(this.rowToolbar=new I(this)),this.options.toolbars?.cell?.enabled&&!this.cellToolbar&&(this.cellToolbar=new S(this)),this.sidebar||(this.sidebar=new J(this.board.container,this.iconsURLPrefix,this)),this.isInitialized=!0}initEvents(){let e=this,t=e.board;if(this.customHTMLMode){let i=t.mountedComponents.length;for(let s=0;s<i;++s)e.setCellEvents(t.mountedComponents[s].cell)}else for(let i=0,s=t.layouts.length;i<s;++i)e.setLayoutEvents(t.layouts[i]);(0,a.addEvent)(document,"keydown",t=>{"Escape"===t.key&&e.isActive()&&(e.hideToolbars(["cell","row"]),e.editCellContext=void 0,e.resizer?.disableResizer())}),e.cellToolbar&&((0,a.addEvent)(e.cellToolbar.container,"mouseenter",function(){e.stopContextDetection()}),(0,a.addEvent)(e.cellToolbar.container,"mouseleave",function(){e.isContextDetectionActive=!0})),e.rowToolbar&&((0,a.addEvent)(e.rowToolbar.container,"mouseenter",function(){e.stopContextDetection()}),(0,a.addEvent)(e.rowToolbar.container,"mouseleave",function(){e.isContextDetectionActive=!0}));let i=this.customHTMLMode?t.container:t.layoutsWrapper;(0,a.addEvent)(i,"mousemove",e.onDetectContext.bind(e)),(0,a.addEvent)(i,"click",e.onContextConfirm.bind(e)),(0,a.addEvent)(i,"mouseleave",()=>{e.hideContextPointer()})}initLayout(){let e=this.board;e.container.innerHTML="",e.container=(0,a.createElement)("div",{className:r().classNames.boardContainer},{},e.boardWrapper),e.layoutsWrapper=(0,a.createElement)("div",{className:r().classNames.layoutsWrapper},{},e.container),e.options.gui&&this.setLayouts(e.options.gui)}setLayouts(e){let t=this.board,i=e.layouts;for(let s=0,o=i.length;s<o;++s)t.layouts.push(new K(t,(0,a.merge)({},e.layoutOptions,i[s])))}setLayoutEvents(e){for(let t=0,i=e.rows.length;t<i;++t){let i=e.rows[t];this.setRowEvents(i);for(let e=0,t=i.cells.length;e<t;++e)this.setCellEvents(i.cells[e])}}setRowEvents(e){let t=this;if(t.dragDrop){let i=t.dragDrop;(0,a.addEvent)(e.container,"mouseenter",function(){t.isContextDetectionActive&&(t.mouseRowContext=e)}),(0,a.addEvent)(e.container,"mousemove",function(t){i.isActive&&t.target===e.container&&(i.mouseRowContext=e)}),(0,a.addEvent)(e.container,"mouseleave",function(){i.isActive&&i.mouseRowContext===e&&(i.mouseRowContext=void 0),t.isContextDetectionActive&&(t.mouseRowContext=void 0)})}}setCellEvents(e){let t=this;if(g(e))(0,a.addEvent)(e.container,"mouseenter",function(){t.isContextDetectionActive&&(t.mouseCellContext=e)});else if(e.nestedLayout)t.setLayoutEvents(e.nestedLayout);else if(t.cellToolbar&&e.container&&((0,a.addEvent)(e.container,"mouseenter",function(){t.isContextDetectionActive&&(t.mouseCellContext=e)}),t.dragDrop||t.resizer)){let i=t.dragDrop;(0,a.addEvent)(e.container,"mousemove",function(t){i&&i.isActive&&t.target===e.container&&(i.mouseCellContext=e,i.mouseRowContext=void 0)}),(0,a.addEvent)(e.container,"mouseleave",function(){i&&i.isActive&&i.mouseCellContext===e&&(i.mouseCellContext=void 0),t.isContextDetectionActive&&(t.mouseCellContext=void 0)})}}activate(){this.isInitialized||(this.init(),this.initEvents()),this.board.container.classList.add(d.classNames.editModeEnabled),this.addComponentBtn&&(this.addComponentBtn.style.display="block"),this.active=!0,this.isContextDetectionActive=!0}deactivate(){this.board.container.classList.remove(d.classNames.editModeEnabled),this.hideToolbars(),this.editCellContext&&p(this.editCellContext)&&this.editCellContext.row?.setHighlight(),this.addComponentBtn&&(this.addComponentBtn.style.display="none"),this.resizer&&this.resizer.disableResizer(),this.board.layoutsWrapper&&(this.board.layoutsWrapper.style.width="100%"),this.board.reflow(),this.active=!1,this.stopContextDetection(),this.editCellContext=void 0,this.potentialCellContext=void 0}isActive(){return this.active}hideToolbars(e){let t=e||["cell","row","sidebar"];for(let e=0,i=t.length;e<i;++e)switch(t[e]){case"cell":this.cellToolbar&&this.cellToolbar.isVisible&&this.cellToolbar.hide();break;case"row":this.rowToolbar&&this.rowToolbar.isVisible&&this.rowToolbar.hide();break;case"sidebar":this.sidebar&&this.sidebar.isVisible&&this.sidebar.hide()}}showToolbars(e,t){let i=e||["cell","row","sidebar"];for(let e=0,s=i.length;e<s;++e)switch(i[e]){case"cell":t&&this.cellToolbar&&this.cellToolbar.showToolbar(t);break;case"row":t&&t.row&&this.rowToolbar&&this.rowToolbar.showToolbar(t.row);break;case"sidebar":this.sidebar&&!this.sidebar.isVisible&&this.sidebar.show()}}createTools(){let e=this,{board:t,options:i,tools:s}=e;if(s.container=document.createElement("div"),s.container.classList.add(d.classNames.editTools),t.layoutsWrapper?t.layoutsWrapper.parentNode.insertBefore(s.container,t.layoutsWrapper):t.container.insertBefore(s.container,t.container.firstChild),i.contextMenu&&i.contextMenu.enabled&&(i.contextMenu.items?.length?(s.contextButtonElement=b(s.container,e),e.tools.contextMenu||(e.tools.contextMenu=new G(e.board.container,e.options.contextMenu||{},e))):s.standaloneEditToggle=O(s.container,{id:G.items.editMode.id,name:G.items.editMode.id,className:d.classNames.editStandaloneToggle,title:e.lang.editMode,value:e.isActive(),lang:e.lang,langKey:"editMode",onchange(){e.toggleEditMode()}})),i.tools?.addComponentBtn?.enabled&&i.toolbars?.cell?.enabled&&!this.customHTMLMode){let t=i.tools.addComponentBtn.icon;this.addComponentBtn=M(s.container,{className:d.classNames.editToolsBtn,icon:t,text:this.lang.addComponent,callback:()=>{e.sidebar&&(e.sidebar.show(),e.setEditOverlay())},style:{display:"none"}})}}onDetectContext(){let e;if(this.isActive()&&this.isContextDetectionActive&&(this.mouseCellContext||this.mouseRowContext)&&!(this.dragDrop||{}).isActive&&(this.mouseCellContext?e=this.mouseCellContext:this.mouseRowContext&&(e=this.mouseRowContext.layout.parentCell),this.potentialCellContext=e,e)){let t=h.getOffsets(e,this.board.container),{width:i,height:s}=h.getDimFromOffsets(t);this.showContextPointer(t.left,t.top,i,s)}}stopContextDetection(){this.isContextDetectionActive=!1,this.dragDrop&&(this.dragDrop.mouseCellContext=void 0),this.mouseCellContext=void 0,this.hideContextPointer()}onContextConfirm(){this.isContextDetectionActive&&this.potentialCellContext&&this.editCellContext!==this.potentialCellContext&&this.setEditCellContext(this.potentialCellContext,this.editCellContext)}setEditCellContext(e,t){if(g(e)||g(t))this.editCellContext=e,this.cellToolbar?.showToolbar(e);else{let i=t?.row;this.editCellContext=e,this.showToolbars(["row","cell"],e),(!i||i!==e.row)&&(i&&i.setHighlight(!0),e.row&&e.row.setHighlight()),this.resizer&&this.resizer.setSnapPositions(e)}}showContextPointer(e,t,i,s){this.contextPointer&&(this.contextPointer.isVisible=!0,(0,a.css)(this.contextPointer.element,{display:"block",left:e+"px",top:t+"px",height:s+"px",width:i+"px"}))}hideContextPointer(){this.contextPointer?.isVisible&&(this.contextPointer.isVisible=!1,this.contextPointer.element.style.display="none")}setEditOverlay(e){let t=this.editOverlay,i=t?.classList.contains(d.classNames.editOverlayActive);e||i?e&&i&&(t?.classList.remove(d.classNames.editOverlayActive),this.isEditOverlayActive=!1):(t?.classList.add(d.classNames.editOverlayActive),this.isEditOverlayActive=!0)}},et=class{constructor(e){this.isOpen=!1,this.board=e,this.board.boardWrapper.classList.add(r().classNamePrefix+"-fullscreen")}toggle(e){this[this.isOpen?"close":"open"](e)}open(e){if(this.isOpen)return;let t=this,i=t.board,s=e||i.boardWrapper,o=(0,a.addEvent)(i.boardWrapper.ownerDocument,"fullscreenchange",function(){t.isOpen?(t.isOpen=!1,t.close()):(t.isOpen=!0,t.setButtonText())});t.unbindFullscreenEvent=()=>{o()},s.requestFullscreen().catch(()=>{throw Error("Full screen is not supported.")})}close(){let e=this.board;this.isOpen&&e.boardWrapper.ownerDocument instanceof Document&&e.boardWrapper.ownerDocument.exitFullscreen(),this.unbindFullscreenEvent&&(this.unbindFullscreenEvent=this.unbindFullscreenEvent()),this.isOpen=!1,this.setButtonText()}setButtonText(){let e=this.board.editMode,t=e&&e.tools.contextMenu,i=t&&t.items.viewFullscreen;if(i&&i.innerElement){let t=e.lang;i.innerElement.innerHTML=(this.isOpen?t.exitFullscreen:t.viewFullscreen)||""}}},ei=r();ei.EditMode=ee,ei.Fullscreen=et;let es=ei;return l.default})());