diff --git a/CHANGELOG.md b/CHANGELOG.md index bbe71ee..4f895de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ ## CHANGELOG +### Version 4.11.3 *2021-02-03* + ++ **bugfix** in the code for the `resizeit` interaction reducing memory leaks. [See GitHub issue](https://github.com/Flyer53/jsPanel4/issues/121) ++ **bugfix** when using the **dock** extension a _docked_ panel: + + did not reposition when the _master_ panel was repositioned programmatically + + did not reposition when the _master_ panel was resized programmatically + + did not reposition when **option** `onwindowresize` is activated and the window is resized ++ **bugfix** `layout` extension: `jsPanel.layout.restoreId` now returns the restored panel ++ **added** parameter `closeOnMouseleave` in `contextmenu` extension + ### Version 4.11.2 *2020-12-09* + **bugfix** in the code for the `dragit` interaction reducing memory leaks. [See GitHub issue](https://github.com/Flyer53/jsPanel4/issues/121) diff --git a/README.md b/README.md index c7335ef..65c90e0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ NPM license npm version npm downloads -## [jsPanel 4.11.2 released 2020-12-09](#) +## [jsPanel 4.11.3 released 2021-02-03](#) > As of v4.11.0-beta methods `jsPanel.ajax()` and `jsPanel.fetch()` are updated. That also affects options `contentAjax` and `contentFetch`. These updates might break existing code. So please check the docs for this beta release on https://jspanel.de/ diff --git a/bower.json b/bower.json index 912b6af..c652360 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "jspanel4x", - "version": "4.11.2", + "version": "4.11.3", "authors": [ "Stefan Straesser (http://jspanel.de/)" ], diff --git a/dist/extensions/contextmenu/jspanel.contextmenu.js b/dist/extensions/contextmenu/jspanel.contextmenu.js index 8688eeb..3ea3d5d 100644 --- a/dist/extensions/contextmenu/jspanel.contextmenu.js +++ b/dist/extensions/contextmenu/jspanel.contextmenu.js @@ -10,15 +10,16 @@ 'use strict'; if (!jsPanel.contextmenu) { jsPanel.contextmenu = { - version: '1.1.3', - date: '2020-04-26 08:07', + version: '1.2.0', + date: '2021-01-13 10:40', defaults: { //position: is set in jsPanel.contextmenu.create() //container: is set in jsPanel.contextmenu.create() dragit: false, resizeit: false, header: false, - headerControls: 'none' + headerControls: 'none', + closeOnMouseleave: true }, cmOverflow: function cmOverflow(elmt) { var cltX = elmt.cmEvent.clientX, @@ -96,9 +97,13 @@ if (!jsPanel.contextmenu) { cm.cmEvent = e; // update left/top values if menu overflows browser viewport jsPanel.contextmenu.cmOverflow(cm); - cm.addEventListener('mouseleave', function () { - cm.close(); - }, false); // don't close contextmenu on mousedown in contextmenu + + if (opts.closeOnMouseleave) { + cm.addEventListener('mouseleave', function () { + cm.close(); + }, false); + } // don't close contextmenu on mousedown in contextmenu + jsPanel.pointerdown.forEach(function (evt) { cm.addEventListener(evt, function (e) { diff --git a/dist/extensions/contextmenu/jspanel.contextmenu.min.js b/dist/extensions/contextmenu/jspanel.contextmenu.min.js index 0b00ba7..f57bac9 100644 --- a/dist/extensions/contextmenu/jspanel.contextmenu.min.js +++ b/dist/extensions/contextmenu/jspanel.contextmenu.min.js @@ -1 +1 @@ -"use strict";jsPanel.contextmenu||(jsPanel.contextmenu={version:"1.1.3",date:"2020-04-26 08:07",defaults:{dragit:!1,resizeit:!1,header:!1,headerControls:"none"},cmOverflow:function(e){var n=e.cmEvent.clientX,t=e.cmEvent.clientY,o=e.offsetWidth,s=e.offsetHeight,l=window.innerWidth-(n+o),a=window.innerHeight-(t+s);l<0&&(e.style.left=n+(window.scrollX||window.pageXOffset)-o+"px"),a<0&&(e.style.top=t+(window.scrollY||window.pageYOffset)-s+"px")},create:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"contextmenu";n.paneltype="contextmenu";var o=n.target;if(!o)return!1;"string"==typeof o&&(o=document.querySelector(o)),o.addEventListener(t,function(t){t.preventDefault(),document.querySelectorAll(".jsPanel-contextmenu").forEach(function(e){e.close()});var s=(t.pageX||t.touches[0].pageX)+"px",l=(t.pageY||t.touches[0].pageY)+"px",a=n;n.config&&delete(a=Object.assign({},n.config,n)).config,a=Object.assign({},e.defaults,a,{position:!1,container:"body"}),jsPanel.create(a,function(e){jsPanel.setStyle(e,{position:"absolute",left:s,top:l});var n=o.closest(".jsPanel-modal");if(n)e.style.zIndex=n.style.zIndex;else{var a=o.closest(".jsPanel");a&&a.front(),e.style.zIndex=jsPanel.zi.next()}e.cmEvent=t,jsPanel.contextmenu.cmOverflow(e),e.addEventListener("mouseleave",function(){e.close()},!1),jsPanel.pointerdown.forEach(function(n){e.addEventListener(n,function(e){e.stopPropagation()})})})},!1)}},jsPanel.ajaxAlwaysCallbacks.push(function(e,n){n&&n.classList&&n.classList.contains("jsPanel-contextmenu")&&jsPanel.contextmenu.cmOverflow(n)}),jsPanel.pointerdown.forEach(function(e){document.addEventListener(e,function(e){document.querySelectorAll(".jsPanel-contextmenu").forEach(function(n){e.target.closest(".jsPanel-contextmenu")||n.close()})},!1)})),"undefined"!=typeof module&&(module.exports=jsPanel); \ No newline at end of file +"use strict";jsPanel.contextmenu||(jsPanel.contextmenu={version:"1.2.0",date:"2021-01-13 10:40",defaults:{dragit:!1,resizeit:!1,header:!1,headerControls:"none",closeOnMouseleave:!0},cmOverflow:function(e){var n=e.cmEvent.clientX,t=e.cmEvent.clientY,o=e.offsetWidth,s=e.offsetHeight,l=window.innerWidth-(n+o),a=window.innerHeight-(t+s);l<0&&(e.style.left=n+(window.scrollX||window.pageXOffset)-o+"px"),a<0&&(e.style.top=t+(window.scrollY||window.pageYOffset)-s+"px")},create:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"contextmenu";n.paneltype="contextmenu";var o=n.target;if(!o)return!1;"string"==typeof o&&(o=document.querySelector(o)),o.addEventListener(t,function(t){t.preventDefault(),document.querySelectorAll(".jsPanel-contextmenu").forEach(function(e){e.close()});var s=(t.pageX||t.touches[0].pageX)+"px",l=(t.pageY||t.touches[0].pageY)+"px",a=n;n.config&&delete(a=Object.assign({},n.config,n)).config,a=Object.assign({},e.defaults,a,{position:!1,container:"body"}),jsPanel.create(a,function(e){jsPanel.setStyle(e,{position:"absolute",left:s,top:l});var n=o.closest(".jsPanel-modal");if(n)e.style.zIndex=n.style.zIndex;else{var c=o.closest(".jsPanel");c&&c.front(),e.style.zIndex=jsPanel.zi.next()}e.cmEvent=t,jsPanel.contextmenu.cmOverflow(e),a.closeOnMouseleave&&e.addEventListener("mouseleave",function(){e.close()},!1),jsPanel.pointerdown.forEach(function(n){e.addEventListener(n,function(e){e.stopPropagation()})})})},!1)}},jsPanel.ajaxAlwaysCallbacks.push(function(e,n){n&&n.classList&&n.classList.contains("jsPanel-contextmenu")&&jsPanel.contextmenu.cmOverflow(n)}),jsPanel.pointerdown.forEach(function(e){document.addEventListener(e,function(e){document.querySelectorAll(".jsPanel-contextmenu").forEach(function(n){e.target.closest(".jsPanel-contextmenu")||n.close()})},!1)})),"undefined"!=typeof module&&(module.exports=jsPanel); \ No newline at end of file diff --git a/dist/extensions/layout/jspanel.layout.js b/dist/extensions/layout/jspanel.layout.js index 2c604a2..211bab4 100644 --- a/dist/extensions/layout/jspanel.layout.js +++ b/dist/extensions/layout/jspanel.layout.js @@ -12,8 +12,8 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi if (!jsPanel.layout) { jsPanel.layout = { - version: '1.4.0', - date: '2020-03-09 13:54', + version: '1.4.1', + date: '2021-01-19 10:50', storage: localStorage, save: function save() { var saveConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; @@ -123,7 +123,7 @@ if (!jsPanel.layout) { zIndex: storedpanel.zIndex }; var useConfig = Object.assign({}, config, savedConfig); - jsPanel.create(useConfig, function (panel) { + return jsPanel.create(useConfig, function (panel) { panel.style.zIndex = savedConfig.zIndex; panel.saveCurrentDimensions(); panel.saveCurrentPosition(); diff --git a/dist/extensions/layout/jspanel.layout.min.js b/dist/extensions/layout/jspanel.layout.min.js index 1c39f2c..baa159d 100644 --- a/dist/extensions/layout/jspanel.layout.min.js +++ b/dist/extensions/layout/jspanel.layout.min.js @@ -1 +1 @@ -"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}jsPanel.layout||(jsPanel.layout={version:"1.4.0",date:"2020-03-09 13:54",storage:localStorage,save:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.selector?e.selector:".jsPanel-standard",n=e.storagename?e.storagename:"jspanels",o=document.querySelectorAll(t),i=[];o.forEach(function(e){var t=e.currentData;t.status=e.status,t.zIndex=e.style.zIndex,t.id=e.id,t.data=e.options.data||void 0,i.push(t)}),i.sort(function(e,t){return e.zIndex-t.zIndex}),this.storage.removeItem(n);var s=JSON.stringify(i);return this.storage.setItem(n,s),s},getAll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"jspanels";return!!this.storage[e]&&JSON.parse(this.storage[e])},getDataset:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"id",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"jspanels",o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(this.storage[n]){var i,s=this.getAll(n);return o&&(i=[]),s.forEach(function(n){var o=_typeof(n[t]);if("string"===o||"number"===o)n[t]===e&&(i?i.push(n):i=n);else if(Array.isArray(n[t]))n[t].includes(e)&&(i?i.push(n):i=n);else if("object"===_typeof(n[t]))for(var s in n[t])if(n[t][s]===e){if(!i){i=n;break}i.push(n)}}),i||!1}return!1},restoreId:function(){var e,t,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!o.id||!o.config)return console.error("Id or predefined panel configuration is missing!"),!1;e=o.id,t=o.config,n=o.storagename?o.storagename:"jspanels";var i=this.getDataset(e,"id",n);if(i){var s={id:i.id,panelSize:{width:i.width,height:i.height},position:"left-top ".concat(i.left," ").concat(i.top),zIndex:i.zIndex},r=Object.assign({},t,s);jsPanel.create(r,function(e){e.style.zIndex=s.zIndex,e.saveCurrentDimensions(),e.saveCurrentPosition(),e.calcSizeFactors(),"normalized"!==i.status&&("minimized"===i.status?e.minimize():"maximized"===i.status?e.maximize():"smallified"===i.status?e.smallify():"smallifiedmax"===i.status&&e.maximize().smallify())})}},restore:function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n.configs?(e=n.configs,t=n.storagename?n.storagename:"jspanels",!!this.storage[t]&&void this.getAll(t).forEach(function(n){var o=n.id;for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&e[i].id===o&&jsPanel.layout.restoreId({id:o,config:e[i],storagename:t})})):(console.error("Object with predefined panel configurations is missing!"),!1)}}),"undefined"!=typeof module&&(module.exports=jsPanel); \ No newline at end of file +"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}jsPanel.layout||(jsPanel.layout={version:"1.4.1",date:"2021-01-19 10:50",storage:localStorage,save:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.selector?e.selector:".jsPanel-standard",n=e.storagename?e.storagename:"jspanels",o=document.querySelectorAll(t),i=[];o.forEach(function(e){var t=e.currentData;t.status=e.status,t.zIndex=e.style.zIndex,t.id=e.id,t.data=e.options.data||void 0,i.push(t)}),i.sort(function(e,t){return e.zIndex-t.zIndex}),this.storage.removeItem(n);var s=JSON.stringify(i);return this.storage.setItem(n,s),s},getAll:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"jspanels";return!!this.storage[e]&&JSON.parse(this.storage[e])},getDataset:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"id",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"jspanels",o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(this.storage[n]){var i,s=this.getAll(n);return o&&(i=[]),s.forEach(function(n){var o=_typeof(n[t]);if("string"===o||"number"===o)n[t]===e&&(i?i.push(n):i=n);else if(Array.isArray(n[t]))n[t].includes(e)&&(i?i.push(n):i=n);else if("object"===_typeof(n[t]))for(var s in n[t])if(n[t][s]===e){if(!i){i=n;break}i.push(n)}}),i||!1}return!1},restoreId:function(){var e,t,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!o.id||!o.config)return console.error("Id or predefined panel configuration is missing!"),!1;e=o.id,t=o.config,n=o.storagename?o.storagename:"jspanels";var i=this.getDataset(e,"id",n);if(i){var s={id:i.id,panelSize:{width:i.width,height:i.height},position:"left-top ".concat(i.left," ").concat(i.top),zIndex:i.zIndex},r=Object.assign({},t,s);return jsPanel.create(r,function(e){e.style.zIndex=s.zIndex,e.saveCurrentDimensions(),e.saveCurrentPosition(),e.calcSizeFactors(),"normalized"!==i.status&&("minimized"===i.status?e.minimize():"maximized"===i.status?e.maximize():"smallified"===i.status?e.smallify():"smallifiedmax"===i.status&&e.maximize().smallify())})}},restore:function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n.configs?(e=n.configs,t=n.storagename?n.storagename:"jspanels",!!this.storage[t]&&void this.getAll(t).forEach(function(n){var o=n.id;for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&e[i].id===o&&jsPanel.layout.restoreId({id:o,config:e[i],storagename:t})})):(console.error("Object with predefined panel configurations is missing!"),!1)}}),"undefined"!=typeof module&&(module.exports=jsPanel); \ No newline at end of file diff --git a/dist/jspanel.js b/dist/jspanel.js index 77825c0..776d2e8 100644 --- a/dist/jspanel.js +++ b/dist/jspanel.js @@ -24,8 +24,8 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi // eslint-disable-next-line no-redeclare var jsPanel = { - version: '4.11.2', - date: '2020-12-09 10:10', + version: '4.11.3', + date: '2021-02-03 16:21', ajaxAlwaysCallbacks: [], autopositionSpacing: 4, closeOnEscape: function () { @@ -3247,7 +3247,7 @@ var jsPanel = { var handles = options.handles || jsPanel.defaults.dragit.handles; var cursor = options.cursor || jsPanel.defaults.dragit.cursor; - function pointerUpHandler(e, event) { + function pointerUpHandlerDragit(e) { jsPanel.pointermove.forEach(function (e) { document.removeEventListener(e, dragElmt); }); @@ -3338,7 +3338,7 @@ var jsPanel = { document.querySelectorAll('iframe').forEach(function (frame) { frame.style.pointerEvents = 'auto'; }); - document.removeEventListener(event, pointerUpHandler); + document.removeEventListener(e, pointerUpHandlerDragit); } self.querySelectorAll(handles).forEach(function (handle) { @@ -3775,7 +3775,7 @@ var jsPanel = { }); }); jsPanel.pointerup.forEach(function (event) { - document.addEventListener(event, pointerUpHandler); + document.addEventListener(event, pointerUpHandlerDragit); window.removeEventListener('mouseout', windowListener); }); // dragit is initialized - now disable if set @@ -3843,6 +3843,106 @@ var jsPanel = { } } + function pointerUpHandlerResizeit(e) { + jsPanel.pointermove.forEach(function (evt) { + document.removeEventListener(evt, resizePanel, false); + }); + + if (e.target.classList && e.target.classList.contains('jsPanel-resizeit-handle')) { + var isLeftChange, + isTopChange, + cl = e.target.className; + + if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)) { + isLeftChange = true; + } + + if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)) { + isTopChange = true; + } // snap panel to grid (doesn't work that well if inside function resizePanel) + + + if (opts.grid && Array.isArray(opts.grid)) { + if (opts.grid.length === 1) { + opts.grid[1] = opts.grid[0]; + } + + var cw = parseFloat(self.style.width), + ch = parseFloat(self.style.height), + modW = cw % opts.grid[0], + modH = ch % opts.grid[1], + cx = parseFloat(self.style.left), + cy = parseFloat(self.style.top), + modX = cx % opts.grid[0], + modY = cy % opts.grid[1]; + + if (modW < opts.grid[0] / 2) { + self.style.width = cw - modW + 'px'; + } else { + self.style.width = cw + (opts.grid[0] - modW) + 'px'; + } + + if (modH < opts.grid[1] / 2) { + self.style.height = ch - modH + 'px'; + } else { + self.style.height = ch + (opts.grid[1] - modH) + 'px'; + } + + if (isLeftChange) { + if (modX < opts.grid[0] / 2) { + self.style.left = cx - modX + 'px'; + } else { + self.style.left = cx + (opts.grid[0] - modX) + 'px'; + } + } + + if (isTopChange) { + if (modY < opts.grid[1] / 2) { + self.style.top = cy - modY + 'px'; + } else { + self.style.top = cy + (opts.grid[1] - modY) + 'px'; + } + } + } + } + + if (resizestarted) { + self.content.style.pointerEvents = 'inherit'; + resizestarted = undefined; + self.saveCurrentDimensions(); + self.saveCurrentPosition(); + self.calcSizeFactors(); + var smallifyBtn = self.controlbar.querySelector('.jsPanel-btn-smallify'); + var elmtRect = self.getBoundingClientRect(); + + if (smallifyBtn && elmtRect.height > startHeight + 5) { + smallifyBtn.style.transform = 'rotate(0deg)'; + } + + document.dispatchEvent(jspanelresizestop); + + if (opts.stop.length) { + var stopStyles = window.getComputedStyle(self), + paneldata = { + left: parseFloat(stopStyles.left), + top: parseFloat(stopStyles.top), + width: parseFloat(stopStyles.width), + height: parseFloat(stopStyles.height) + }; + jsPanel.processCallbacks(self, opts.stop, false, paneldata, e); + } + } + + self.content.style.pointerEvents = 'inherit'; // restore other panel's css pointer-events + + document.querySelectorAll('iframe').forEach(function (frame) { + frame.style.pointerEvents = 'auto'; + }); // restore option aspectRatio to original configuration + + opts.aspectRatio = cachedOptionAspectRatio; + document.removeEventListener(e, pointerUpHandlerResizeit); + } + self.querySelectorAll('.jsPanel-resizeit-handle').forEach(function (handle) { handle.style.touchAction = 'none'; jsPanel.pointerdown.forEach(function (event) { @@ -4499,104 +4599,7 @@ var jsPanel = { }); }); jsPanel.pointerup.forEach(function (event) { - document.addEventListener(event, function (e) { - jsPanel.pointermove.forEach(function (evt) { - document.removeEventListener(evt, resizePanel, false); - }); - - if (e.target.classList && e.target.classList.contains('jsPanel-resizeit-handle')) { - var isLeftChange, - isTopChange, - cl = e.target.className; - - if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)) { - isLeftChange = true; - } - - if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)) { - isTopChange = true; - } // snap panel to grid (doesn't work that well if inside function resizePanel) - - - if (opts.grid && Array.isArray(opts.grid)) { - if (opts.grid.length === 1) { - opts.grid[1] = opts.grid[0]; - } - - var cw = parseFloat(self.style.width), - ch = parseFloat(self.style.height), - modW = cw % opts.grid[0], - modH = ch % opts.grid[1], - cx = parseFloat(self.style.left), - cy = parseFloat(self.style.top), - modX = cx % opts.grid[0], - modY = cy % opts.grid[1]; - - if (modW < opts.grid[0] / 2) { - self.style.width = cw - modW + 'px'; - } else { - self.style.width = cw + (opts.grid[0] - modW) + 'px'; - } - - if (modH < opts.grid[1] / 2) { - self.style.height = ch - modH + 'px'; - } else { - self.style.height = ch + (opts.grid[1] - modH) + 'px'; - } - - if (isLeftChange) { - if (modX < opts.grid[0] / 2) { - self.style.left = cx - modX + 'px'; - } else { - self.style.left = cx + (opts.grid[0] - modX) + 'px'; - } - } - - if (isTopChange) { - if (modY < opts.grid[1] / 2) { - self.style.top = cy - modY + 'px'; - } else { - self.style.top = cy + (opts.grid[1] - modY) + 'px'; - } - } - } - } - - if (resizestarted) { - self.content.style.pointerEvents = 'inherit'; - resizestarted = undefined; - self.saveCurrentDimensions(); - self.saveCurrentPosition(); - self.calcSizeFactors(); - var smallifyBtn = self.controlbar.querySelector('.jsPanel-btn-smallify'); - var elmtRect = self.getBoundingClientRect(); - - if (smallifyBtn && elmtRect.height > startHeight + 5) { - smallifyBtn.style.transform = 'rotate(0deg)'; - } - - document.dispatchEvent(jspanelresizestop); - - if (opts.stop.length) { - var stopStyles = window.getComputedStyle(self), - paneldata = { - left: parseFloat(stopStyles.left), - top: parseFloat(stopStyles.top), - width: parseFloat(stopStyles.width), - height: parseFloat(stopStyles.height) - }; - jsPanel.processCallbacks(self, opts.stop, false, paneldata, e); - } - } - - self.content.style.pointerEvents = 'inherit'; // restore other panel's css pointer-events - - document.querySelectorAll('iframe').forEach(function (frame) { - frame.style.pointerEvents = 'auto'; - }); // restore option aspectRatio to original configuration - - opts.aspectRatio = cachedOptionAspectRatio; - }, false); + document.addEventListener(event, pointerUpHandlerResizeit); window.removeEventListener('mouseout', windowListener); }); // resizeit is initialized - now disable if set @@ -4684,7 +4687,13 @@ var jsPanel = { callback = value; } }); - jsPanel.position(self, pos); + jsPanel.position(self, pos); // check whether self has docked panels -> reposition docked panels as well + + if (self.slaves && self.slaves.size > 0) { + self.slaves.forEach(function (slave) { + slave.reposition(); + }); + } if (updateCache) { self.saveCurrentPosition(); @@ -4873,7 +4882,13 @@ var jsPanel = { }); var values = jsPanel.pOsize(self, size); self.style.width = values.width; - self.style.height = values.height; + self.style.height = values.height; // check whether self has docked panels -> reposition docked panels + + if (self.slaves && self.slaves.size > 0) { + self.slaves.forEach(function (slave) { + slave.reposition(); + }); + } if (updateCache) { self.saveCurrentDimensions(); @@ -4917,6 +4932,13 @@ var jsPanel = { } } else if (status === 'smallifiedmax' && onWindowResize) { self.maximize(false, true).smallify(); + } // check whether self has docked panels -> reposition docked panels as well + + + if (self.slaves && self.slaves.size > 0) { + self.slaves.forEach(function (slave) { + slave.reposition(); + }); } } }; diff --git a/dist/jspanel.min.js b/dist/jspanel.min.js index c172f07..e378ff4 100644 --- a/dist/jspanel.min.js +++ b/dist/jspanel.min.js @@ -1 +1 @@ -"use strict";function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n',maximize:'',normalize:'',minimize:'',smallify:''},idCounter:0,isIE:navigator.appVersion.match(/Trident/),pointerdown:"ontouchend"in window?["touchstart","mousedown"]:["mousedown"],pointermove:"ontouchend"in window?["touchmove","mousemove"]:["mousemove"],pointerup:"ontouchend"in window?["touchend","mouseup"]:["mouseup"],polyfills:(Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(null==e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),n=1;n=0&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),function(){if("function"==typeof window.CustomEvent)return!1;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}(),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){return tthis.length)&&-1!==this.indexOf(e,t)}),Number.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},void(Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var a,r,i=0|t,l=Math.max(i>=0?i:o-Math.abs(i),0);l1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e},l=n<.5?n*(1+t):n+t-n*t,s=2*n-l;o=i(s,l,e+1/3),a=i(s,l,e),r=i(s,l,e-1/3)}return[Math.round(255*o),Math.round(255*a),Math.round(255*r)]},rgbToHsl:function(e,t,n){e/=255,t/=255,n/=255;var o,a,r=Math.max(e,t,n),i=Math.min(e,t,n),l=(r+i)/2;if(r===i)o=a=0;else{var s=r-i;switch(a=l>.5?s/(2-r-i):s/(r+i),r){case e:o=(t-n)/s+(t=0&&(h=this.applyPositionAutopos(e,h,t)),(t.offsetX||t.offsetY)&&(h=this.applyPositionOffset(e,h,t)),(t.minLeft||t.minTop||t.maxLeft||t.maxTop)&&(h=this.applyPositionMinMax(e,h,t)),t.modify&&(h=this.applyPositionModify(e,h,t)),"number"==typeof e.options.opacity?e.style.opacity=e.options.opacity:e.style.opacity=1,e},applyPositionAutopos:function(e,t,n){var o="".concat(n.my,"-").concat(n.autoposition.toLowerCase());e.classList.add(o);var a=Array.prototype.slice.call(document.querySelectorAll(".".concat(o))),r=a.indexOf(e);if(a.length>1){switch(n.autoposition){case"down":a.forEach(function(e,n){n>0&&n<=r&&(t.top=parseFloat(t.top)+a[--n].getBoundingClientRect().height+jsPanel.autopositionSpacing+"px")});break;case"up":a.forEach(function(e,n){n>0&&n<=r&&(t.top=parseFloat(t.top)-a[--n].getBoundingClientRect().height-jsPanel.autopositionSpacing+"px")});break;case"right":a.forEach(function(e,n){n>0&&n<=r&&(t.left=parseFloat(t.left)+a[--n].getBoundingClientRect().width+jsPanel.autopositionSpacing+"px")});break;case"left":a.forEach(function(e,n){n>0&&n<=r&&(t.left=parseFloat(t.left)-a[--n].getBoundingClientRect().width-jsPanel.autopositionSpacing+"px")})}e.style.left=t.left,e.style.top=t.top}return{left:t.left,top:t.top}},applyPositionOffset:function(e,t,n){["offsetX","offsetY"].forEach(function(e){n[e]?("function"==typeof n[e]&&(n[e]=n[e].call(t,t,n)),!1===isNaN(n[e])&&(n[e]="".concat(n[e],"px"))):n[e]="0px"}),e.style.left="calc(".concat(e.style.left," + ").concat(n.offsetX,")"),e.style.top="calc(".concat(e.style.top," + ").concat(n.offsetY,")");var o=getComputedStyle(e);return{left:o.left,top:o.top}},applyPositionMinMax:function(e,t,n){if(["minLeft","minTop","maxLeft","maxTop"].forEach(function(e){n[e]&&("function"==typeof n[e]&&(n[e]=n[e].call(t,t,n)),(Number.isInteger(n[e])||n[e].match(/^\d+$/))&&(n[e]="".concat(n[e],"px")))}),n.minLeft){e.style.left=n.minLeft;var o=getComputedStyle(e).left;parseFloat(o)parseFloat(t.left)?e.style.left=t.left:t.left=r}if(n.maxTop){e.style.top=n.maxTop;var i=getComputedStyle(e).top;parseFloat(i)>parseFloat(t.top)?e.style.top=t.top:t.top=i}var l=getComputedStyle(e);return{left:l.left,top:l.top}},applyPositionModify:function(e,t,n){if(n.modify&&"function"==typeof n.modify){var o=n.modify.call(t,t,n);e.style.left=Number.isInteger(o.left)||o.left.match(/^\d+$/)?"".concat(o.left,"px"):o.left,e.style.top=Number.isInteger(o.top)||o.top.match(/^\d+$/)?"".concat(o.top,"px"):o.top}var a=getComputedStyle(e);return{left:a.left,top:a.top}},autopositionRemaining:function(e){var t,n=e.options.container;(["left-top-down","left-top-right","center-top-down","right-top-down","right-top-left","left-bottom-up","left-bottom-right","center-bottom-up","right-bottom-up","right-bottom-left"].forEach(function(n){e.classList.contains(n)&&(t=n)}),t)&&("window"===n?document.body:"string"==typeof n?document.querySelector(n):n).querySelectorAll(".".concat(t)).forEach(function(e){e.reposition()})},addScript:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"application/javascript",n=arguments.length>2?arguments[2]:void 0;if(!document.querySelector('script[src="'.concat(e,'"]'))){var o=document.createElement("script");n&&(o.onload=n),o.src=e,o.type=t,document.head.appendChild(o)}},ajax:function(e,t){var n,o,a=new XMLHttpRequest,r={method:"GET",async:!0,user:"",pwd:"",done:function(){if(t){var e=jsPanel.strToHtml(this.responseText);n.urlSelector&&(e=e.querySelector(n.urlSelector)),t.contentRemove(),t.content.append(e)}},autoresize:!0,autoreposition:!0};if(t&&"string"==typeof e)n=Object.assign({},r,{url:e});else{if("object"!==_typeof(e)||!e.url){if(this.errorReporting){jsPanel.errorpanel("XMLHttpRequest seems to miss the url parameter!")}return}(n=Object.assign({},r,e)).url=e.url,!1===n.async&&(n.timeout=0,n.withCredentials&&(n.withCredentials=void 0),n.responseType&&(n.responseType=void 0))}o=n.url.trim().split(/\s+/),n.url=encodeURI(o[0]),o.length>1&&(o.shift(),n.urlSelector=o.join(" ")),a.onreadystatechange=function(){4===a.readyState&&(200===a.status?t?n.done.call(a,a,t):n.done.call(a,a):n.fail&&(t?n.fail.call(a,a,t):n.fail.call(a,a)),n.always&&(t?n.always.call(a,a,t):n.always.call(a,a)),t&&(n.autoresize||n.autoreposition)&&jsPanel.ajaxAutoresizeAutoreposition(t,n),jsPanel.ajaxAlwaysCallbacks.length&&jsPanel.ajaxAlwaysCallbacks.forEach(function(e){t?e.call(a,a,t):e.call(a,a)}))},a.open(n.method,n.url,n.async,n.user,n.pwd),a.timeout=n.timeout||0,n.withCredentials&&(a.withCredentials=n.withCredentials),n.responseType&&(a.responseType=n.responseType),n.beforeSend&&(t?n.beforeSend.call(a,a,t):n.beforeSend.call(a,a)),n.data?a.send(n.data):a.send(null)},ajaxAutoresizeAutoreposition:function(e,t){var n=e.options.contentSize;if("string"==typeof n&&n.match(/auto/i)){var o=n.split(" "),a=Object.assign({},{width:o[0],height:o[1]});t.autoresize&&e.resize(a),e.classList.contains("jsPanel-contextmenu")||t.autoreposition&&e.reposition()}else if("object"===_typeof(n)&&("auto"===n.width||"auto"===n.height)){var r=Object.assign({},n);t.autoresize&&e.resize(r),e.classList.contains("jsPanel-contextmenu")||t.autoreposition&&e.reposition()}},createPanelTemplate:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=document.createElement("div");return t.className="jsPanel",t.style.left="0",t.style.top="0",e&&["close","maximize","normalize","minimize","smallify"].forEach(function(e){t.setAttribute("data-btn".concat(e),"enabled")}),t.innerHTML='
\n
\n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
'),t},createMinimizedTemplate:function(){var e=document.createElement("div");return e.className="jsPanel-replacement",e.innerHTML='
\n
\n \n
\n
\n
\n
\n \n \n \n
\n
\n
"),e},createSnapArea:function(e,t,n){var o=document.createElement("div"),a=e.parentElement;o.className="jsPanel-snap-area jsPanel-snap-area-".concat(t),"lt"===t||"rt"===t||"rb"===t||"lb"===t?(o.style.width=n+"px",o.style.height=n+"px"):"ct"===t||"cb"===t?o.style.height=n+"px":"lc"!==t&&"rc"!==t||(o.style.width=n+"px"),a!==document.body&&(o.style.position="absolute"),document.querySelector(".jsPanel-snap-area.jsPanel-snap-area-".concat(t))||e.parentElement.appendChild(o)},emptyNode:function(e){for(;e.firstChild;)e.removeChild(e.firstChild);return e},extend:function(e){if("[object Object]"===Object.prototype.toString.call(e))for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(this.extensions[t]=e[t])},fetch:function(e){function t(t,n){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var n,o={bodyMethod:"text",autoresize:!0,autoreposition:!0,done:function(e,t){if(t){var n=jsPanel.strToHtml(e);t.contentRemove(),t.content.append(n)}}};if(t&&"string"==typeof e)n=Object.assign({},o,{resource:encodeURI(e)});else{if("object"!==_typeof(e)||!e.resource){if(this.errorReporting){jsPanel.errorpanel("Fetch Request seems to miss the resource parameter!")}return}(n=Object.assign({},o,e)).resource=encodeURI(e.resource)}var a=n.fetchInit||{};n.beforeSend&&(t?n.beforeSend.call(e,e,t):n.beforeSend.call(e,e)),fetch(n.resource,a).then(function(e){if(e.ok)return e[n.bodyMethod]()}).then(function(e){t?n.done.call(e,e,t):n.done.call(e,e),t&&(n.autoresize||n.autoreposition)&&jsPanel.ajaxAutoresizeAutoreposition(t,n)})}),getPanels:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return this.classList.contains("jsPanel-standard")};return Array.prototype.slice.call(document.querySelectorAll(".jsPanel")).filter(function(t){return e.call(t,t)}).sort(function(e,t){return t.style.zIndex-e.style.zIndex})},pOcontainer:function(e){if("window"===e)return document.body;if("string"==typeof e){var t=document.querySelectorAll(e);return!!(t.length&&t.length>0)&&t}return 1===e.nodeType?e:!!e.length&&e[0]},pOcontainment:function(e){var t=e;if("function"==typeof e&&(t=e()),"number"==typeof t)return[t,t,t,t];if(Array.isArray(t)){if(1===t.length)return[t[0],t[0],t[0],t[0]];if(2===t.length)return t.concat(t);3===t.length&&(t[3]=t[1])}return t},pOsize:function(e,t){var n=t||this.defaults.contentSize,o=e.parentElement;if("string"==typeof n){var a=n.trim().split(" ");(n={}).width=a[0],2===a.length?n.height=a[1]:n.height=a[0]}else n.width&&!n.height?n.height=n.width:n.height&&!n.width&&(n.width=n.height);if(String(n.width).match(/^[0-9.]+$/gi))n.width+="px";else if("string"==typeof n.width&&n.width.endsWith("%"))if(o===document.body)n.width=window.innerWidth*(parseFloat(n.width)/100)+"px";else{var r=window.getComputedStyle(o),i=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);n.width=(parseFloat(r.width)-i)*(parseFloat(n.width)/100)+"px"}else"function"==typeof n.width&&(n.width=n.width.call(e,e),"number"==typeof n.width?n.width+="px":"string"==typeof n.width&&n.width.match(/^[0-9.]+$/gi)&&(n.width+="px"));if(String(n.height).match(/^[0-9.]+$/gi))n.height+="px";else if("string"==typeof n.height&&n.height.endsWith("%"))if(o===document.body)n.height=window.innerHeight*(parseFloat(n.height)/100)+"px";else{var l=window.getComputedStyle(o),s=parseFloat(l.borderTopWidth)+parseFloat(l.borderBottomWidth);n.height=(parseFloat(l.height)-s)*(parseFloat(n.height)/100)+"px"}else"function"==typeof n.height&&(n.height=n.height.call(e,e),"number"==typeof n.height?n.height+="px":"string"==typeof n.height&&n.height.match(/^[0-9.]+$/gi)&&(n.height+="px"));return n},pOborder:function(e){e=e.trim();var t=new Array(3),n=e.match(/\s*(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset)\s*/gi),o=e.match(/\s*(thin|medium|thick)|(\d*\.?\d+[a-zA-Z]{2,4})\s*/gi);return n?(t[1]=n[0].trim(),e=e.replace(t[1],"")):t[1]="solid",o?(t[0]=o[0].trim(),e=e.replace(t[0],"")):t[0]="medium",t[2]=e.trim(),t},pOheaderControls:function(e){if("string"==typeof e){var t={},n=e.toLowerCase(),o=n.match(/xl|lg|md|sm|xs/),a=n.match(/closeonly|none/);return o&&(t.size=o[0]),a&&(t=Object.assign({},t,{maximize:"remove",normalize:"remove",minimize:"remove",smallify:"remove"}),"none"===a[0]&&(t.close="remove")),Object.assign({},this.defaults.headerControls,t)}return Object.assign({},this.defaults.headerControls,e)},processCallbacks:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"some",o=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0;if("function"==typeof t&&(t=[t]),n)return t[n](function(t){return t.call(e,e,o,a)});t.forEach(function(t){t.call(e,e,o,a)})},removeSnapAreas:function(){document.querySelectorAll(".jsPanel-snap-area").forEach(function(e){e.parentElement.removeChild(e)})},resetZi:function(){this.zi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:jsPanel.ziBase;return{next:function(){return e++}}}(),Array.prototype.slice.call(document.querySelectorAll(".jsPanel-standard")).sort(function(e,t){return e.style.zIndex-t.style.zIndex}).forEach(function(e){e.style.zIndex=jsPanel.zi.next()})},setClass:function(e,t){return t.trim().split(/\s+/).forEach(function(t){return e.classList.add(t)}),e},remClass:function(e,t){return t.trim().split(/\s+/).forEach(function(t){return e.classList.remove(t)}),e},toggleClass:function(e,t){return t.trim().split(/\s+/).forEach(function(t){e.classList.contains(t)?e.classList.remove(t):e.classList.add(t)}),e},setStyles:function(e,t){for(var n in t)n in e.style?e.style[n]=t[n]:e.style.setProperty(n,t[n]);return e},setStyle:function(e,t){return this.setStyles.call(e,e,t)},strToHtml:function(e){return document.createRange().createContextualFragment(e)},errorpanel:function(e){this.create({paneltype:"error",dragit:!1,resizeit:!1,theme:{bgPanel:"white",bgContent:"white",colorHeader:"rebeccapurple",colorContent:"#333",border:"2px solid rebeccapurple"},borderRadius:".33rem",headerControls:"closeonly xs",headerTitle:"⚠ jsPanel Error",contentSize:{width:"50%",height:"auto"},position:"center-top 0 5 down",animateIn:"jsPanelFadeIn",content:'

'.concat(e,"

")})},create:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;jsPanel.zi||(jsPanel.zi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:jsPanel.ziBase;return{next:function(){return e++}}}()),t.config?delete(t=Object.assign({},this.defaults,t.config,t)).config:t=Object.assign({},this.defaults,t),t.id?"function"==typeof t.id&&(t.id=t.id()):t.id="jsPanel-".concat(jsPanel.idCounter+=1);var o=document.getElementById(t.id);if(null!==o){if(o.classList.contains("jsPanel")&&o.front(),this.errorReporting){var a="◀ COULD NOT CREATE NEW JSPANEL ►
An element with the ID ".concat(t.id," already exists in the document.");jsPanel.errorpanel(a)}return!1}var r=this.pOcontainer(t.container);if("object"===_typeof(r)&&r.length&&r.length>0&&(r=r[0]),!r){if(this.errorReporting){jsPanel.errorpanel("◀ COULD NOT CREATE NEW JSPANEL ►
The container to append the panel to does not exist")}return!1}["onbeforeclose","onbeforemaximize","onbeforeminimize","onbeforenormalize","onbeforesmallify","onbeforeunsmallify","onclosed","onfronted","onmaximized","onminimized","onnormalized","onsmallified","onstatuschange","onunsmallified"].forEach(function(e){t[e]?"function"==typeof t[e]&&(t[e]=[t[e]]):t[e]=[]});var i=t.template?t.template:this.createPanelTemplate();i.options=t,i.closetimer=void 0,i.status="initialized",i.currentData={},i.header=i.querySelector(".jsPanel-hdr"),i.headerbar=i.header.querySelector(".jsPanel-headerbar"),i.titlebar=i.header.querySelector(".jsPanel-titlebar"),i.headerlogo=i.headerbar.querySelector(".jsPanel-headerlogo"),i.headertitle=i.headerbar.querySelector(".jsPanel-title"),i.controlbar=i.headerbar.querySelector(".jsPanel-controlbar"),i.headertoolbar=i.header.querySelector(".jsPanel-hdr-toolbar"),i.content=i.querySelector(".jsPanel-content"),i.footer=i.querySelector(".jsPanel-ftr"),i.snappableTo=!1,i.snapped=!1,i.droppableTo=!1,i.progressbar=i.autocloseProgressbar=i.querySelector(".jsPanel-progressbar");var l=new CustomEvent("jspanelloaded",{detail:t.id,cancelable:!0}),s=new CustomEvent("jspanelstatuschange",{detail:t.id,cancelable:!0}),c=new CustomEvent("jspanelbeforenormalize",{detail:t.id,cancelable:!0}),d=new CustomEvent("jspanelnormalized",{detail:t.id,cancelable:!0}),p=new CustomEvent("jspanelbeforemaximize",{detail:t.id,cancelable:!0}),h=new CustomEvent("jspanelmaximized",{detail:t.id,cancelable:!0}),f=new CustomEvent("jspanelbeforeminimize",{detail:t.id,cancelable:!0}),u=new CustomEvent("jspanelminimized",{detail:t.id,cancelable:!0}),m=new CustomEvent("jspanelbeforesmallify",{detail:t.id,cancelable:!0}),g=new CustomEvent("jspanelsmallified",{detail:t.id,cancelable:!0}),b=new CustomEvent("jspanelsmallifiedmax",{detail:t.id,cancelable:!0}),y=new CustomEvent("jspanelbeforeunsmallify",{detail:t.id,cancelable:!0}),v=new CustomEvent("jspanelfronted",{detail:t.id,cancelable:!0}),w=new CustomEvent("jspanelbeforeclose",{detail:t.id,cancelable:!0}),j=new CustomEvent("jspanelclosed",{detail:t.id,cancelable:!0}),P=new CustomEvent("jspanelcloseduser",{detail:t.id,cancelable:!0});[l,s,c,d,p,h,f,u,m,g,b,y,v,w].forEach(function(e){e.panel=i});var E=i.querySelector(".jsPanel-btn-close"),x=i.querySelector(".jsPanel-btn-maximize"),C=i.querySelector(".jsPanel-btn-normalize"),F=i.querySelector(".jsPanel-btn-smallify"),z=i.querySelector(".jsPanel-btn-minimize");E&&jsPanel.pointerup.forEach(function(e){E.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.close(null,!0)})}),x&&jsPanel.pointerup.forEach(function(e){x.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.maximize()})}),C&&jsPanel.pointerup.forEach(function(e){C.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.normalize()})}),F&&jsPanel.pointerup.forEach(function(e){F.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;"normalized"===i.status||"maximized"===i.status?i.smallify():"smallified"!==i.status&&"smallifiedmax"!==i.status||i.unsmallify()})}),z&&jsPanel.pointerup.forEach(function(e){z.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.minimize()})});var S=jsPanel.extensions;for(var A in S)Object.prototype.hasOwnProperty.call(S,A)&&(i[A]=S[A]);if(i.clearTheme=function(e){return jsPanel.themes.forEach(function(e){["panel","jsPanel-theme-".concat(e),"panel-".concat(e),"".concat(e,"-color")].forEach(function(e){i.classList.remove(e)}),i.header.classList.remove("jsPanel-theme-".concat(e))}),i.content.classList.remove("jsPanel-content-filled","jsPanel-content-filledlight"),i.header.classList.remove("jsPanel-hdr-light"),i.header.classList.remove("jsPanel-hdr-dark"),i.style.backgroundColor="",jsPanel.setStyle(i.headertoolbar,{boxShadow:"",width:"",marginLeft:"",borderTopColor:"transparent"}),jsPanel.setStyle(i.content,{background:"",borderTopColor:"transparent"}),i.header.style.background="",Array.prototype.slice.call(i.controlbar.querySelectorAll(".jsPanel-icon")).concat([i.headerlogo,i.headertitle,i.headertoolbar,i.content]).forEach(function(e){e.style.color=""}),e&&e.call(i,i),i},i.getThemeDetails=function(e){var t=e.toLowerCase(),n={color:!1,colors:!1,filling:!1},o=t.split("fill");if(n.color=o[0].trim().replace(/\s*/g,""),2===o.length)if(o[1].startsWith("edlight"))n.filling="filledlight";else if(o[1].startsWith("eddark"))n.filling="filleddark";else if(o[1].startsWith("ed"))n.filling="filled";else if(o[1].startsWith("color")){var a=o[1].split("color"),r=a[a.length-1].trim().replace(/\s*/g,"");jsPanel.colorNames[r]&&(r=jsPanel.colorNames[r]),r.match(/^([0-9a-f]{3}|[0-9a-f]{6})$/gi)&&(r="#"+r),n.filling=r}if(jsPanel.themes.some(function(e){return e===n.color.split(/\s/i)[0]})){var i=n.color.split(/\s/i)[0],l=document.createElement("button");l.className=i+"-bg",document.body.appendChild(l),n.color=getComputedStyle(l).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(l),l=void 0}else if(n.color.startsWith("bootstrap-")){var s=n.color.indexOf("-"),c=document.createElement("button");c.className="btn btn"+n.color.slice(s),document.body.appendChild(c),n.color=getComputedStyle(c).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(c),c=void 0}else if(n.color.startsWith("mdb-")){var d,p=n.color.indexOf("-")+1,h=document.createElement("span");d=n.color.endsWith("-dark")?(d=n.color.slice(p)).replace("-dark","-color-dark"):n.color.slice(p)+"-color",h.className=d,document.body.appendChild(h),n.color=getComputedStyle(h).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(h),h=void 0}return n.colors=jsPanel.calcColors(n.color),n},i.applyColorTheme=function(e){if(i.style.backgroundColor=e.colors[0],i.header.style.backgroundColor=e.colors[0],i.header.style.color=e.colors[3],[".jsPanel-headerlogo",".jsPanel-title",".jsPanel-hdr-toolbar"].forEach(function(t){i.querySelector(t).style.color=e.colors[3]}),i.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(function(t){t.style.color=e.colors[3]}),"string"==typeof i.options.theme&&"filled"===e.filling&&(i.content.style.borderTop="#000000"===e.colors[3]?"1px solid rgba(0,0,0,0.15)":"1px solid rgba(255,255,255,0.15)"),"#000000"===e.colors[3]?i.header.classList.add("jsPanel-hdr-light"):i.header.classList.add("jsPanel-hdr-dark"),e.filling)switch(e.filling){case"filled":jsPanel.setStyle(i.content,{backgroundColor:e.colors[2],color:e.colors[3]});break;case"filledlight":i.content.style.backgroundColor=e.colors[1];break;case"filleddark":jsPanel.setStyle(i.content,{backgroundColor:e.colors[6],color:e.colors[7]});break;default:i.content.style.backgroundColor=e.filling,i.content.style.color=jsPanel.perceivedBrightness(e.filling)<=jsPanel.colorBrightnessThreshold?"#fff":"#000"}return i},i.applyCustomTheme=function(e){var t,n={bgPanel:"#fff",bgContent:"#fff",colorHeader:"#000",colorContent:"#000"},o=(t="object"===_typeof(e)?Object.assign(n,e):n).bgPanel,a=t.bgContent,r=t.colorHeader,l=t.colorContent;if(jsPanel.colorNames[o]?i.style.background="#"+jsPanel.colorNames[o]:i.style.background=o,jsPanel.colorNames[r]&&(r="#"+jsPanel.colorNames[r]),[".jsPanel-headerlogo",".jsPanel-title",".jsPanel-hdr-toolbar"].forEach(function(e){i.querySelector(e).style.color=r}),i.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(function(e){e.style.color=r}),jsPanel.colorNames[a]?i.content.style.background="#"+jsPanel.colorNames[a]:i.content.style.background=a,jsPanel.colorNames[l]?i.content.style.color="#"+jsPanel.colorNames[l]:i.content.style.color=l,jsPanel.perceivedBrightness(r)>jsPanel.colorBrightnessThreshold?i.header.classList.add("jsPanel-hdr-dark"):i.header.classList.add("jsPanel-hdr-light"),jsPanel.perceivedBrightness(l)>jsPanel.colorBrightnessThreshold?i.content.style.borderTop="1px solid rgba(255,255,255,0.15)":i.content.style.borderTop="1px solid rgba(0,0,0,0.15)",t.border){var s=t.border,c=s.lastIndexOf(" "),d=s.slice(++c);jsPanel.colorNames[d]&&(s=s.replace(d,"#"+jsPanel.colorNames[d])),i.style.border=s}return i},i.setBorder=function(e){var t=jsPanel.pOborder(e);return t[2].length?jsPanel.colorNames[t[2]]&&(t[2]="#"+jsPanel.colorNames[t[2]]):t[2]=i.style.backgroundColor,t=t.join(" "),i.style.border=t,i.options.border=t,i},i.setBorderRadius=function(e){"number"==typeof e&&(e+="px"),i.style.borderRadius=e;var t=getComputedStyle(i);return i.options.header?(i.header.style.borderTopLeftRadius=t.borderTopLeftRadius,i.header.style.borderTopRightRadius=t.borderTopRightRadius):(i.content.style.borderTopLeftRadius=t.borderTopLeftRadius,i.content.style.borderTopRightRadius=t.borderTopRightRadius),i.options.footerToolbar?(i.footer.style.borderBottomRightRadius=t.borderBottomRightRadius,i.footer.style.borderBottomLeftRadius=t.borderBottomLeftRadius):(i.content.style.borderBottomRightRadius=t.borderBottomRightRadius,i.content.style.borderBottomLeftRadius=t.borderBottomLeftRadius),i},i.setTheme=function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:t.theme,o=arguments.length>1?arguments[1]:void 0;if("minimized"===i.status&&(e=!0,i.normalize()),i.clearTheme(),"object"===_typeof(n))t.border=void 0,i.applyCustomTheme(n);else{"none"===n&&(n="white");var a=i.getThemeDetails(n);i.applyColorTheme(a)}return e&&i.minimize(),o&&o.call(i,i),i},i.remove=function(e,t,n){i.parentElement.removeChild(i),document.getElementById(e)?n&&n.call(i,e,i):(i.removeMinimizedReplacement(),t&&document.dispatchEvent(P),document.dispatchEvent(j),i.options.onclosed&&jsPanel.processCallbacks(i,i.options.onclosed,"every",t),jsPanel.autopositionRemaining(i),n&&n.call(e,e)),window.removeEventListener("resize",i.windowResizeHandler),document.removeEventListener("jspanelresize",i.parentResizeHandler)},i.close=function(e,t){if(i.closetimer&&window.clearInterval(i.closetimer),document.dispatchEvent(w),i.options.onbeforeclose&&i.options.onbeforeclose.length>0&&!jsPanel.processCallbacks(i,i.options.onbeforeclose,"some",i.status,t))return i;i.options.animateOut?(i.options.animateIn&&jsPanel.remClass(i,i.options.animateIn),jsPanel.setClass(i,i.options.animateOut),i.addEventListener("animationend",function(n){n.stopPropagation(),i.remove(i.id,t,e)})):i.remove(i.id,t,e)},i.maximize=function(e,n){if(i.statusBefore=i.status,t.onbeforemaximize&&t.onbeforemaximize.length>0&&!jsPanel.processCallbacks(i,t.onbeforemaximize,"some",i.statusBefore))return i;document.dispatchEvent(p);var o=i.parentElement,a=jsPanel.pOcontainment(t.maximizedMargin);return o===document.body?(i.style.width=document.documentElement.clientWidth-a[1]-a[3]+"px",i.style.height=document.documentElement.clientHeight-a[0]-a[2]+"px",i.style.left=a[3]+"px",i.style.top=a[0]+"px"):(i.style.width=o.clientWidth-a[1]-a[3]+"px",i.style.height=o.clientHeight-a[0]-a[2]+"px",i.style.left=a[3]+"px",i.style.top=a[0]+"px"),F.style.transform="unset",i.removeMinimizedReplacement(),i.status="maximized",i.setControls([".jsPanel-btn-maximize"]),n||i.front(),document.dispatchEvent(h),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore),e&&e.call(i,i,i.statusBefore),t.onmaximized&&jsPanel.processCallbacks(i,t.onmaximized,"every",i.statusBefore),i},i.minimize=function(e){if("minimized"===i.status)return i;if(i.statusBefore=i.status,t.onbeforeminimize&&t.onbeforeminimize.length>0&&!jsPanel.processCallbacks(i,t.onbeforeminimize,"some",i.statusBefore))return i;if(document.dispatchEvent(f),!document.getElementById("jsPanel-replacement-container")){var n=document.createElement("div");n.id="jsPanel-replacement-container",document.body.append(n)}if(i.style.left="-9999px",i.status="minimized",document.dispatchEvent(u),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore),t.minimizeTo){var o,a,r,l=i.createMinimizedReplacement();switch(t.minimizeTo){case"default":document.getElementById("jsPanel-replacement-container").append(l);break;case"parentpanel":(o=(r=(a=i.closest(".jsPanel-content").parentElement).querySelectorAll(".jsPanel-minimized-box"))[r.length-1]).append(l);break;case"parent":(o=(a=i.parentElement).querySelector(".jsPanel-minimized-container"))||((o=document.createElement("div")).className="jsPanel-minimized-container",a.append(o)),o.append(l);break;default:document.querySelector(t.minimizeTo).append(l)}}return e&&e.call(i,i,i.statusBefore),t.onminimized&&jsPanel.processCallbacks(i,t.onminimized,"every",i.statusBefore),i},i.normalize=function(e){return"normalized"===i.status?i:(i.statusBefore=i.status,t.onbeforenormalize&&t.onbeforenormalize.length>0&&!jsPanel.processCallbacks(i,t.onbeforenormalize,"some",i.statusBefore)?i:(document.dispatchEvent(c),i.style.width=i.currentData.width,i.style.height=i.currentData.height,i.snapped?i.snap(i.snapped,!0):(i.style.left=i.currentData.left,i.style.top=i.currentData.top),F.style.transform="unset",i.removeMinimizedReplacement(),i.status="normalized",i.setControls([".jsPanel-btn-normalize"]),i.front(),document.dispatchEvent(d),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore),e&&e.call(i,i,i.statusBefore),t.onnormalized&&jsPanel.processCallbacks(i,t.onnormalized,"every",i.statusBefore),i))},i.smallify=function(e){if("smallified"===i.status||"smallifiedmax"===i.status)return i;if(i.statusBefore=i.status,t.onbeforesmallify&&t.onbeforesmallify.length>0&&!jsPanel.processCallbacks(i,t.onbeforesmallify,"some",i.statusBefore))return i;document.dispatchEvent(m),i.style.overflow="hidden";var n=window.getComputedStyle(i),o=parseFloat(window.getComputedStyle(i.headerbar).height);i.style.height=parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth)+o+"px",F.style.transform="rotate(180deg)","normalized"===i.status?(i.setControls([".jsPanel-btn-normalize"]),i.status="smallified",document.dispatchEvent(g),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore)):"maximized"===i.status&&(i.setControls([".jsPanel-btn-maximize"]),i.status="smallifiedmax",document.dispatchEvent(b),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore));var a=i.querySelectorAll(".jsPanel-minimized-box");return a[a.length-1].style.display="none",e&&e.call(i,i,i.statusBefore),t.onsmallified&&jsPanel.processCallbacks(i,t.onsmallified,"every",i.statusBefore),i},i.unsmallify=function(e){if(i.statusBefore=i.status,"smallified"===i.status||"smallifiedmax"===i.status){if(t.onbeforeunsmallify&&t.onbeforeunsmallify.length>0&&!jsPanel.processCallbacks(i,t.onbeforeunsmallify,"some",i.statusBefore))return i;document.dispatchEvent(y),i.style.overflow="visible",i.front(),"smallified"===i.status?(i.style.height=i.currentData.height,i.setControls([".jsPanel-btn-normalize"]),i.status="normalized",document.dispatchEvent(d),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore)):"smallifiedmax"===i.status?i.maximize():"minimized"===i.status&&i.normalize(),F.style.transform="rotate(0deg)";var n=i.querySelectorAll(".jsPanel-minimized-box");n[n.length-1].style.display="flex",e&&e.call(i,i,i.statusBefore),t.onunsmallified&&jsPanel.processCallbacks(i,t.onunsmallified,"every",i.statusBefore)}return i},i.front=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("minimized"===i.status)"maximized"===i.statusBefore?i.maximize():i.normalize();else{var o=Array.prototype.slice.call(document.querySelectorAll(".jsPanel-standard")).map(function(e){return e.style.zIndex});Math.max.apply(Math,_toConsumableArray(o))>i.style.zIndex&&(i.style.zIndex=jsPanel.zi.next()),jsPanel.resetZi()}return document.dispatchEvent(v),e&&e.call(i,i),t.onfronted&&n&&jsPanel.processCallbacks(i,t.onfronted,"every",i.status),i},i.snap=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(t||(i.currentData.beforeSnap={width:i.currentData.width,height:i.currentData.height}),e&&"function"==typeof e&&!t)e.call(i,i,i.snappableTo);else if(!1!==e){var n=[0,0];if(i.options.dragit.snap.containment&&i.options.dragit.containment){var o=jsPanel.pOcontainment(i.options.dragit.containment),a=i.snappableTo;a.startsWith("left")?n[0]=o[3]:a.startsWith("right")&&(n[0]=-o[1]),a.endsWith("top")?n[1]=o[0]:a.endsWith("bottom")&&(n[1]=-o[2])}i.reposition("".concat(i.snappableTo," ").concat(n[0]," ").concat(n[1]))}t||(i.snapped=i.snappableTo)},i.move=function(e,t){var n=i.overlaps(e,"paddingbox"),o=i.parentElement;return e.appendChild(i),i.options.container=e,i.style.left=n.left+"px",i.style.top=n.top+"px",i.saveCurrentDimensions(),i.saveCurrentPosition(),i.calcSizeFactors(),t&&t.call(i,i,e,o),i},i.closeChildpanels=function(e){return i.getChildpanels().forEach(function(e){return e.close()}),e&&e.call(i,i),i},i.getChildpanels=function(e){var t=i.content.querySelectorAll(".jsPanel");return e&&t.forEach(function(t,n,o){e.call(t,t,n,o)}),t},i.isChildpanel=function(e){var t=i.closest(".jsPanel-content"),n=t?t.parentElement:null;return e&&e.call(i,i,n),!!t&&n},i.contentRemove=function(e){return jsPanel.emptyNode(i.content),e&&e.call(i,i),i},i.createMinimizedReplacement=function(){var e=jsPanel.createMinimizedTemplate(),n=window.getComputedStyle(i.headertitle).color,o=window.getComputedStyle(i),a=t.iconfont,r=e.querySelector(".jsPanel-controlbar");return"auto-show-hide"!==i.options.header?jsPanel.setStyle(e,{backgroundColor:o.backgroundColor,backgroundPositionX:o.backgroundPositionX,backgroundPositionY:o.backgroundPositionY,backgroundRepeat:o.backgroundRepeat,backgroundAttachment:o.backgroundAttachment,backgroundImage:o.backgroundImage,backgroundSize:o.backgroundSize,backgroundOrigin:o.backgroundOrigin,backgroundClip:o.backgroundClip}):e.style.backgroundColor=window.getComputedStyle(i.header).backgroundColor,e.id=i.id+"-min",e.querySelector(".jsPanel-headerbar").replaceChild(i.headerlogo.cloneNode(!0),e.querySelector(".jsPanel-headerlogo")),e.querySelector(".jsPanel-titlebar").replaceChild(i.headertitle.cloneNode(!0),e.querySelector(".jsPanel-title")),e.querySelector(".jsPanel-titlebar").setAttribute("title",i.headertitle.textContent),e.querySelector(".jsPanel-title").style.color=n,r.style.color=n,r.querySelectorAll("button").forEach(function(e){e.style.color=n}),["jsPanel-hdr-dark","jsPanel-hdr-light"].forEach(function(t){i.header.classList.contains(t)&&e.querySelector(".jsPanel-hdr").classList.add(t)}),i.setIconfont(a,e),"enabled"===i.dataset.btnnormalize?jsPanel.pointerup.forEach(function(t){e.querySelector(".jsPanel-btn-normalize").addEventListener(t,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.normalize()})}):r.querySelector(".jsPanel-btn-normalize").style.display="none","enabled"===i.dataset.btnmaximize?jsPanel.pointerup.forEach(function(t){e.querySelector(".jsPanel-btn-maximize").addEventListener(t,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.maximize()})}):r.querySelector(".jsPanel-btn-maximize").style.display="none","enabled"===i.dataset.btnclose?jsPanel.pointerup.forEach(function(t){e.querySelector(".jsPanel-btn-close").addEventListener(t,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.close(null,!0)})}):r.querySelector(".jsPanel-btn-close").style.display="none",e},i.removeMinimizedReplacement=function(){var e=document.getElementById("".concat(i.id,"-min"));e&&e.parentElement.removeChild(e)},i.drag=function(){var e,t,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=new CustomEvent("jspaneldragstart",{detail:i.id}),r=new CustomEvent("jspaneldrag",{detail:i.id}),l=new CustomEvent("jspaneldragstop",{detail:i.id});[a,r,l].forEach(function(e){e.panel=i});var s=function(e){var t=e.split("-");return t.forEach(function(e,n){t[n]=e.charAt(0).toUpperCase()+e.slice(1)}),"snap"+t.join("")};function c(e){null===e.relatedTarget&&jsPanel.pointermove.forEach(function(e){document.removeEventListener(e,t,!1),i.style.opacity=1})}var d=o.handles||jsPanel.defaults.dragit.handles,p=o.cursor||jsPanel.defaults.dragit.cursor;function h(o,a){if(jsPanel.pointermove.forEach(function(e){document.removeEventListener(e,t)}),jsPanel.removeSnapAreas(),e){if(i.style.opacity=1,e=void 0,n.snap){switch(i.snappableTo){case"left-top":i.snap(n.snap.snapLeftTop);break;case"center-top":i.snap(n.snap.snapCenterTop);break;case"right-top":i.snap(n.snap.snapRightTop);break;case"right-center":i.snap(n.snap.snapRightCenter);break;case"right-bottom":i.snap(n.snap.snapRightBottom);break;case"center-bottom":i.snap(n.snap.snapCenterBottom);break;case"left-bottom":i.snap(n.snap.snapLeftBottom);break;case"left-center":i.snap(n.snap.snapLeftCenter)}n.snap.callback&&i.snappableTo&&"function"==typeof n.snap.callback&&(n.snap.callback.call(i,i),n.snap.repositionOnSnap&&!1!==n.snap[s(i.snappableTo)]&&i.repositionOnSnap(i.snappableTo)),i.snappableTo&&n.snap.repositionOnSnap&&n.snap[s(i.snappableTo)]&&i.repositionOnSnap(i.snappableTo)}if(i.droppableTo&&i.droppableTo){var r=i.parentElement;i.move(i.droppableTo),n.drop.callback&&n.drop.callback.call(i,i,i.droppableTo,r)}if(document.dispatchEvent(l),n.stop.length){var c=window.getComputedStyle(i),d={left:parseFloat(c.left),top:parseFloat(c.top),width:parseFloat(c.width),height:parseFloat(c.height)};jsPanel.processCallbacks(i,n.stop,!1,d,o)}i.saveCurrentPosition(),i.calcSizeFactors()}i.controlbar.style.pointerEvents="inherit",i.content.style.pointerEvents="inherit",document.querySelectorAll("iframe").forEach(function(e){e.style.pointerEvents="auto"}),document.removeEventListener(a,h)}return i.querySelectorAll(d).forEach(function(l){l.style.touchAction="none",l.style.cursor=p,jsPanel.pointerdown.forEach(function(s){l.addEventListener(s,function(l){if(l.button&&l.button>0)return!1;if((n=Object.assign({},jsPanel.defaults.dragit,o)).disableOnMaximized&&"maximized"===i.status)return!1;if((n.containment||0===n.containment)&&(n.containment=jsPanel.pOcontainment(n.containment)),n.grid&&Array.isArray(n.grid)&&1===n.grid.length&&(n.grid[1]=n.grid[0]),n.snap&&("object"===_typeof(n.snap)?n.snap=Object.assign({},jsPanel.defaultSnapConfig,n.snap):n.snap=jsPanel.defaultSnapConfig),!l.target.closest(".jsPanel-ftr-btn")){i.controlbar.style.pointerEvents="none",i.content.style.pointerEvents="none",document.querySelectorAll("iframe").forEach(function(e){e.style.pointerEvents="none"});var s=window.getComputedStyle(i),d=parseFloat(s.left),p=parseFloat(s.top),h=parseFloat(s.width),f=parseFloat(s.height),u=l.touches?l.touches[0].clientX:l.clientX,m=l.touches?l.touches[0].clientY:l.clientY,g=i.parentElement,b=g.getBoundingClientRect(),y=window.getComputedStyle(g),v=i.getScaleFactor(),w=0;t=function(t){if(t.preventDefault(),!e){if(document.dispatchEvent(a),i.style.opacity=n.opacity,i.snapped&&n.snap.resizeToPreSnap&&i.currentData.beforeSnap){i.resize(i.currentData.beforeSnap.width+" "+i.currentData.beforeSnap.height),i.setControls([".jsPanel-btn-normalize"]);var o=i.getBoundingClientRect(),l=u-(o.left+o.width),s=o.width/2;l>-s&&(w=l+s)}if(i.front(),i.snapped=!1,"maximized"===i.status&&(i.setControls([".jsPanel-btn-normalize"]),i.status="normalized"),n.drop&&n.drop.dropZones){var c=n.drop.dropZones.map(function(e){return jsPanel.pOcontainer(e)}),j=[];c.forEach(function(e){e.length?e.forEach(function(e){j.push(e)}):j.push(e)}),j=j.filter(function(e,t,n){return n.indexOf(e)===t}),n.drop.dropZones=j}n.start.length&&jsPanel.processCallbacks(i,n.start,!1,{left:d,top:p,width:h,height:f},t)}var P,E,x,C,F,z,S,A,k,B;e=1;var T,L=t.touches?t.touches[0].clientX:t.clientX,R=t.touches?t.touches[0].clientY:t.clientY,W=window.getComputedStyle(i);if(g===document.body){var D=i.getBoundingClientRect();k=window.innerWidth-parseInt(y.borderLeftWidth,10)-parseInt(y.borderRightWidth,10)-(D.left+D.width),B=window.innerHeight-parseInt(y.borderTopWidth,10)-parseInt(y.borderBottomWidth,10)-(D.top+D.height)}else k=parseInt(y.width,10)-parseInt(y.borderLeftWidth,10)-parseInt(y.borderRightWidth,10)-(parseInt(W.left,10)+parseInt(W.width,10)),B=parseInt(y.height,10)-parseInt(y.borderTopWidth,10)-parseInt(y.borderBottomWidth,10)-(parseInt(W.top,10)+parseInt(W.height,10));P=parseFloat(W.left),x=parseFloat(W.top),F=k,S=B,n.snap&&("panel"===n.snap.trigger?(E=Math.pow(P,2),C=Math.pow(x,2),z=Math.pow(F,2),A=Math.pow(S,2)):"pointer"===n.snap.trigger&&("window"===i.options.container?(P=L,x=R,F=window.innerWidth-L,S=window.innerHeight-R,E=Math.pow(L,2),C=Math.pow(x,2),z=Math.pow(F,2),A=Math.pow(S,2)):(P=(T=i.overlaps(g,"paddingbox",t)).pointer.left,x=T.pointer.top,F=T.pointer.right,S=T.pointer.bottom,E=Math.pow(T.pointer.left,2),C=Math.pow(T.pointer.top,2),z=Math.pow(T.pointer.right,2),A=Math.pow(T.pointer.bottom,2))));var q=Math.sqrt(E+C),O=Math.sqrt(E+A),M=Math.sqrt(z+C),I=Math.sqrt(z+A),H=Math.abs(P-F)/2,N=Math.abs(x-S)/2,_=Math.sqrt(E+Math.pow(N,2)),X=Math.sqrt(C+Math.pow(H,2)),Y=Math.sqrt(z+Math.pow(N,2)),$=Math.sqrt(A+Math.pow(H,2));if(window.getSelection().removeAllRanges(),document.dispatchEvent(r),n.axis&&"x"!==n.axis||(i.style.left=d+(L-u)/v.x+w+"px"),n.axis&&"y"!==n.axis||(i.style.top=p+(R-m)/v.y+"px"),n.grid){var V=n.grid,Z=n.axis,U=V[0]*Math.round((d+(L-u))/V[0]),K=V[1]*Math.round((p+(R-m))/V[1]);Z&&"x"!==Z||(i.style.left="".concat(U,"px")),Z&&"y"!==Z||(i.style.top="".concat(K,"px"))}if(n.containment||0===n.containment){var G,J,Q=n.containment;if(i.options.container===document.body)G=window.innerWidth-parseFloat(W.width)-Q[1],J=window.innerHeight-parseFloat(W.height)-Q[2];else{var ee=parseFloat(y.borderLeftWidth)+parseFloat(y.borderRightWidth),te=parseFloat(y.borderTopWidth)+parseFloat(y.borderBottomWidth);G=b.width/v.x-parseFloat(W.width)-Q[1]-ee,J=b.height/v.y-parseFloat(W.height)-Q[2]-te}parseFloat(i.style.left)<=Q[3]&&(i.style.left=Q[3]+"px"),parseFloat(i.style.top)<=Q[0]&&(i.style.top=Q[0]+"px"),parseFloat(i.style.left)>=G&&(i.style.left=G+"px"),parseFloat(i.style.top)>=J&&(i.style.top=J+"px")}if(n.drag.length){var ne={left:P,top:x,right:F,bottom:S,width:parseFloat(W.width),height:parseFloat(W.height)};jsPanel.processCallbacks(i,n.drag,!1,ne,t)}if(n.snap){var oe=n.snap.sensitivity,ae=g===document.body?window.innerWidth/8:b.width/8,re=g===document.body?window.innerHeight/8:b.height/8;i.snappableTo=!1,jsPanel.removeSnapAreas(),q0&&T.pointer.top>0?(i.snappableTo="left-top",jsPanel.createSnapArea(i,"lt",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="left-top",jsPanel.createSnapArea(i,"lt",oe))):O0&&T.pointer.bottom>0?(i.snappableTo="left-bottom",jsPanel.createSnapArea(i,"lb",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="left-bottom",jsPanel.createSnapArea(i,"lb",oe))):M0&&T.pointer.top>0?(i.snappableTo="right-top",jsPanel.createSnapArea(i,"rt",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="right-top",jsPanel.createSnapArea(i,"rt",oe))):I0&&T.pointer.bottom>0?(i.snappableTo="right-bottom",jsPanel.createSnapArea(i,"rb",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="right-bottom",jsPanel.createSnapArea(i,"rb",oe))):x0?(i.snappableTo="center-top",jsPanel.createSnapArea(i,"ct",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="center-top",jsPanel.createSnapArea(i,"ct",oe))):P0?(i.snappableTo="left-center",jsPanel.createSnapArea(i,"lc",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="left-center",jsPanel.createSnapArea(i,"lc",oe))):F0?(i.snappableTo="right-center",jsPanel.createSnapArea(i,"rc",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="right-center",jsPanel.createSnapArea(i,"rc",oe))):S0?(i.snappableTo="center-bottom",jsPanel.createSnapArea(i,"cb",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="center-bottom",jsPanel.createSnapArea(i,"cb",oe)))}if(n.drop&&n.drop.dropZones){var ie=jsPanel.isIE?"msElementsFromPoint":"elementsFromPoint",le=document[ie](t.clientX,t.clientY);Array.isArray(le)||(le=Array.prototype.slice.call(le)),n.drop.dropZones.forEach(function(e){le.includes(e)&&(i.droppableTo=e)}),le.includes(i.droppableTo)||(i.droppableTo=!1)}},jsPanel.pointermove.forEach(function(e){document.addEventListener(e,t)}),window.addEventListener("mouseout",c,!1)}})}),jsPanel.pointerup.forEach(function(e){document.addEventListener(e,h),window.removeEventListener("mouseout",c)}),o.disable&&(l.style.pointerEvents="none")}),i},i.dragit=function(e){var n=Object.assign({},jsPanel.defaults.dragit,t.dragit),o=i.querySelectorAll(n.handles);return"disable"===e?o.forEach(function(e){e.style.pointerEvents="none"}):o.forEach(function(e){e.style.pointerEvents="auto"}),i},i.sizeit=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new CustomEvent("jspanelresizestart",{detail:i.id}),n=new CustomEvent("jspanelresize",{detail:i.id}),o=new CustomEvent("jspanelresizestop",{detail:i.id});[t,n,o].forEach(function(e){e.panel=i});var a,r,l,s,c,d,p={};p.handles=e.handles||jsPanel.defaults.resizeit.handles,p.handles.split(",").forEach(function(e){var t=document.createElement("DIV");t.className="jsPanel-resizeit-handle jsPanel-resizeit-".concat(e.trim()),i.append(t)});var h=!!e.aspectRatio&&e.aspectRatio;function f(e){null===e.relatedTarget&&jsPanel.pointermove.forEach(function(e){document.removeEventListener(e,a,!1)})}return i.querySelectorAll(".jsPanel-resizeit-handle").forEach(function(u){u.style.touchAction="none",jsPanel.pointerdown.forEach(function(o){u.addEventListener(o,function(o){if(o.preventDefault(),o.stopPropagation(),o.button&&o.button>0)return!1;var h=1;if(((p=Object.assign({},jsPanel.defaults.resizeit,e)).containment||0===p.containment)&&(p.containment=jsPanel.pOcontainment(p.containment)),p.aspectRatio&&!0===p.aspectRatio&&(p.aspectRatio="panel"),jsPanel.modifier){var u=jsPanel.modifier;u.altKey?p.aspectRatio="content":u.ctrlKey?p.aspectRatio="panel":u.shiftKey&&(p.aspectRatio=!1,h=2)}var m="function"==typeof p.maxWidth?p.maxWidth():p.maxWidth||1e4,g="function"==typeof p.maxHeight?p.maxHeight():p.maxHeight||1e4,b="function"==typeof p.minWidth?p.minWidth():p.minWidth,y="function"==typeof p.minHeight?p.minHeight():p.minHeight;i.content.style.pointerEvents="none",document.querySelectorAll("iframe").forEach(function(e){e.style.pointerEvents="none"});var v=i.parentElement,w=v.tagName.toLowerCase(),j=i.getBoundingClientRect(),P=v.getBoundingClientRect(),E=window.getComputedStyle(v,null),x=parseInt(E.borderLeftWidth,10),C=parseInt(E.borderTopWidth,10),F=E.getPropertyValue("position"),z=o.clientX||o.touches[0].clientX,S=o.clientY||o.touches[0].clientY,A=z/S,k=o.target.classList,B=i.getScaleFactor(),T=j.width/j.height,L=i.content.getBoundingClientRect(),R=L.width/L.height,W=i.header.getBoundingClientRect().height,D=i.footer.getBoundingClientRect().height||0,q=j.left,O=j.top,M=1e4,I=1e4,H=1e4,N=1e4;c=j.width,d=j.height,"body"!==w&&(q=j.left-P.left+v.scrollLeft,O=j.top-P.top+v.scrollTop),"body"===w&&p.containment?(M=document.documentElement.clientWidth-j.left,H=document.documentElement.clientHeight-j.top,I=j.width+j.left,N=j.height+j.top):p.containment&&("static"===F?(M=P.width-j.left+x,H=P.height+P.top-j.top+C,I=j.width+(j.left-P.left)-x,N=j.height+(j.top-P.top)-C):(M=v.clientWidth-(j.left-P.left)/B.x+x,H=v.clientHeight-(j.top-P.top)/B.y+C,I=(j.width+j.left-P.left)/B.x-x,N=i.clientHeight+(j.top-P.top)/B.y-C)),p.containment&&(I-=p.containment[3],N-=p.containment[0],M-=p.containment[1],H-=p.containment[2]);var _=window.getComputedStyle(i),X=parseFloat(_.width)-j.width,Y=parseFloat(_.height)-j.height,$=parseFloat(_.left)-j.left,V=parseFloat(_.top)-j.top;v!==document.body&&($+=P.left,V+=P.top);var Z=parseInt(_.borderTopWidth,10),U=parseInt(_.borderRightWidth,10),K=parseInt(_.borderBottomWidth,10),G=parseInt(_.borderLeftWidth,10);a=function(e){e.preventDefault(),r||(document.dispatchEvent(t),p.start.length&&jsPanel.processCallbacks(i,p.start,!1,{width:c,height:d,left:q,top:O},e),i.front(),j.height>d+5&&(i.status="normalized",i.setControls([".jsPanel-btn-normalize"]))),r=1,document.dispatchEvent(n);var o=e.touches?e.touches[0].clientX:e.clientX,a=e.touches?e.touches[0].clientY:e.clientY;k.contains("jsPanel-resizeit-e")?((l=c+(o-z)*h/B.x+X)>=M&&(l=M),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px",2===h&&(i.style.left=q-(o-z)+"px"),"content"===p.aspectRatio?(i.style.height=(l-U-G)/R+W+D+Z+K+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*R+"px")):"panel"===p.aspectRatio&&(i.style.height=l/T+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*T+"px"))):k.contains("jsPanel-resizeit-s")?((s=d+(a-S)*h/B.y+Y)>=H&&(s=H),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px",2===h&&(i.style.top=O-(a-S)+"px"),"content"===p.aspectRatio?(i.style.width=(s-W-D-Z-K)*R+Z+K+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/R+"px")):"panel"===p.aspectRatio&&(i.style.width=s*T+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/T+"px"))):k.contains("jsPanel-resizeit-w")?((l=c+(z-o)*h/B.x+X)<=m&&l>=b&&l<=I&&(i.style.left=q+(o-z)/B.x+$+"px"),l>=I&&(l=I),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px","content"===p.aspectRatio?(i.style.height=(l-U-G)/R+W+D+Z+K+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*R+"px")):"panel"===p.aspectRatio&&(i.style.height=l/T+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*T+"px"))):k.contains("jsPanel-resizeit-n")?((s=d+(S-a)*h/B.y+Y)<=g&&s>=y&&s<=N&&(i.style.top=O+(a-S)/B.y+V+"px"),s>=N&&(s=N),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px","content"===p.aspectRatio?(i.style.width=(s-W-D-Z-K)*R+Z+K+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/R+"px")):"panel"===p.aspectRatio&&(i.style.width=s*T+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/T+"px"))):k.contains("jsPanel-resizeit-se")?((l=c+(o-z)*h/B.x+X)>=M&&(l=M),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px",2===h&&(i.style.left=q-(o-z)+"px"),p.aspectRatio&&(i.style.height=l/T+"px"),(s=d+(a-S)*h/B.y+Y)>=H&&(s=H),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px",2===h&&(i.style.top=O-(a-S)+"px"),"content"===p.aspectRatio?(i.style.width=(s-W-D-Z-K)*R+Z+K+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/R+"px")):"panel"===p.aspectRatio&&(i.style.width=s*T+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/T+"px"))):k.contains("jsPanel-resizeit-sw")?((s=d+(a-S)*h/B.y+Y)>=H&&(s=H),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px",2===h&&(i.style.top=O-(a-S)+"px"),p.aspectRatio&&(i.style.width=s*T+"px"),(l=c+(z-o)*h/B.x+X)<=m&&l>=b&&l<=I&&(i.style.left=q+(o-z)/B.x+$+"px"),l>=I&&(l=I),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px","content"===p.aspectRatio?(i.style.height=(l-U-G)/R+W+D+Z+K+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*R+"px")):"panel"===p.aspectRatio&&(i.style.height=l/T+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*T+"px"))):k.contains("jsPanel-resizeit-ne")?((l=c+(o-z)*h/B.x+X)>=M&&(l=M),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px",2===h&&(i.style.left=q-(o-z)+"px"),p.aspectRatio&&(i.style.height=l/T+"px"),(s=d+(S-a)*h/B.y+Y)<=g&&s>=y&&s<=N&&(i.style.top=O+(a-S)/B.y+V+"px"),s>=N&&(s=N),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px","content"===p.aspectRatio?(i.style.width=(s-W-D-Z-K)*R+Z+K+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/R+"px")):"panel"===p.aspectRatio&&(i.style.width=s*T+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/T+"px"))):k.contains("jsPanel-resizeit-nw")&&(p.aspectRatio&&k.contains("jsPanel-resizeit-nw")&&(a=(o=a*A)/A),(l=c+(z-o)*h/B.x+X)<=m&&l>=b&&l<=I&&(i.style.left=q+(o-z)/B.x+$+"px"),l>=I&&(l=I),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px",p.aspectRatio&&(i.style.height=l/T+"px"),(s=d+(S-a)*h/B.y+Y)<=g&&s>=y&&s<=N&&(i.style.top=O+(a-S)/B.y+V+"px"),s>=N&&(s=N),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px","content"===p.aspectRatio?i.style.width=(s-W-D-Z-K)*R+Z+K+"px":"panel"===p.aspectRatio&&(i.style.width=s*T+"px")),window.getSelection().removeAllRanges();var f=window.getComputedStyle(i),u={left:parseFloat(f.left),top:parseFloat(f.top),right:parseFloat(f.right),bottom:parseFloat(f.bottom),width:parseFloat(f.width),height:parseFloat(f.height)};p.resize.length&&jsPanel.processCallbacks(i,p.resize,!1,u,e)},jsPanel.pointermove.forEach(function(e){document.addEventListener(e,a,!1)}),window.addEventListener("mouseout",f,!1)})}),jsPanel.pointerup.forEach(function(e){document.addEventListener(e,function(e){if(jsPanel.pointermove.forEach(function(e){document.removeEventListener(e,a,!1)}),e.target.classList&&e.target.classList.contains("jsPanel-resizeit-handle")){var t,n,l=e.target.className;if(l.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)&&(t=!0),l.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)&&(n=!0),p.grid&&Array.isArray(p.grid)){1===p.grid.length&&(p.grid[1]=p.grid[0]);var s=parseFloat(i.style.width),c=parseFloat(i.style.height),f=s%p.grid[0],u=c%p.grid[1],m=parseFloat(i.style.left),g=parseFloat(i.style.top),b=m%p.grid[0],y=g%p.grid[1];fd+5&&(v.style.transform="rotate(0deg)"),document.dispatchEvent(o),p.stop.length){var j=window.getComputedStyle(i),P={left:parseFloat(j.left),top:parseFloat(j.top),width:parseFloat(j.width),height:parseFloat(j.height)};jsPanel.processCallbacks(i,p.stop,!1,P,e)}}i.content.style.pointerEvents="inherit",document.querySelectorAll("iframe").forEach(function(e){e.style.pointerEvents="auto"}),p.aspectRatio=h},!1),window.removeEventListener("mouseout",f)}),e.disable&&(u.style.pointerEvents="none")}),i},i.resizeit=function(e){var t=i.querySelectorAll(".jsPanel-resizeit-handle");return"disable"===e?t.forEach(function(e){e.style.pointerEvents="none"}):t.forEach(function(e){e.style.pointerEvents="auto"}),i},i.getScaleFactor=function(){var e=i.getBoundingClientRect();return{x:e.width/i.offsetWidth,y:e.height/i.offsetHeight}},i.calcSizeFactors=function(){var e=window.getComputedStyle(i);if("window"===t.container)i.hf=parseFloat(e.left)/(window.innerWidth-parseFloat(e.width)),i.vf=parseFloat(e.top)/(window.innerHeight-parseFloat(e.height));else if(i.parentElement){var n=i.parentElement.getBoundingClientRect();i.hf=parseFloat(e.left)/(n.width-parseFloat(e.width)),i.vf=parseFloat(e.top)/(n.height-parseFloat(e.height))}},i.saveCurrentDimensions=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=window.getComputedStyle(i);i.currentData.width=t.width,"normalized"===i.status&&(i.currentData.height=t.height),e&&(i.style.height=t.height)},i.saveCurrentPosition=function(){var e=window.getComputedStyle(i);i.currentData.left=e.left,i.currentData.top=e.top},i.reposition=function(){for(var e,n=t.position,o=!0,a=arguments.length,r=new Array(a),l=0;lo.left,u=a.topo.top;return{overlaps:f&&u,top:a.top-o.top-s.top,right:o.right-a.right-s.right,bottom:o.bottom-a.bottom-s.bottom,left:a.left-o.left-s.left,parentBorderWidth:s,panelRect:a,referenceRect:o,pointer:{clientX:c,clientY:d,left:p-s.left,top:h-s.top,right:o.width-p-s.right,bottom:o.height-h-s.bottom}}},i.setSize=function(){if(t.panelSize){var e=jsPanel.pOsize(i,t.panelSize);i.style.width=e.width,i.style.height=e.height}else if(t.contentSize){var n=jsPanel.pOsize(i,t.contentSize);i.content.style.width=n.width,i.content.style.height=n.height,i.style.width=n.width,i.content.style.width="100%"}return i},i.resize=function(){for(var e,t=window.getComputedStyle(i),n={width:t.width,height:t.height},o=!0,a=arguments.length,r=new Array(a),l=0;l1&&void 0!==arguments[1]?arguments[1]:"enable",n=arguments.length>2?arguments[2]:void 0,o=i.controlbar.querySelector(".jsPanel-btn-".concat(e));switch(t){case"disable":"removed"!==i.getAttribute("data-btn".concat(e))&&(i.setAttribute("data-btn".concat(e),"disabled"),o.style.pointerEvents="none",o.style.opacity=.4,o.style.cursor="default");break;case"hide":"removed"!==i.getAttribute("data-btn".concat(e))&&(i.setAttribute("data-btn".concat(e),"hidden"),o.style.display="none");break;case"show":"removed"!==i.getAttribute("data-btn".concat(e))&&(i.setAttribute("data-btn".concat(e),"enabled"),o.style.display="block",o.style.pointerEvents="auto",o.style.opacity=1,o.style.cursor="pointer");break;case"enable":"removed"!==i.getAttribute("data-btn".concat(e))&&("hidden"===i.getAttribute("data-btn".concat(e))&&(o.style.display="block"),i.setAttribute("data-btn".concat(e),"enabled"),o.style.pointerEvents="auto",o.style.opacity=1,o.style.cursor="pointer");break;case"remove":i.controlbar.removeChild(o),i.setAttribute("data-btn".concat(e),"removed")}return n&&n.call(i,i),i},i.setControlSize=function(e){var t=e.toLowerCase();i.controlbar.querySelectorAll(".jsPanel-btn").forEach(function(e){["jsPanel-btn-xl","jsPanel-btn-lg","jsPanel-btn-md","jsPanel-btn-sm","jsPanel-btn-xs"].forEach(function(t){e.classList.remove(t)}),e.classList.add("jsPanel-btn-".concat(t))}),"xl"===t?i.titlebar.style.fontSize="1.5rem":"lg"===t?i.titlebar.style.fontSize="1.25rem":"md"===t?i.titlebar.style.fontSize="1.05rem":"sm"===t?i.titlebar.style.fontSize=".9rem":"xs"===t&&(i.titlebar.style.fontSize=".8rem")},i.setHeaderControls=function(e){if(i.options.headerControls.add){var n=i.options.headerControls.add;Array.isArray(n)||(n=[n]),n.forEach(function(e){i.addControl(e)})}var o=[];i.controlbar.querySelectorAll(".jsPanel-btn").forEach(function(e){var t=e.className.match(/jsPanel-btn-[a-z0-9]{3,}/i)[0].substring(12);o.push(t)});var a=jsPanel.pOheaderControls(t.headerControls);return t.headerControls=a,o.forEach(function(e){a[e]&&i.setControlStatus(e,a[e])}),i.setControlSize(a.size),e&&e.call(i,i),i},i.setHeaderLogo=function(e,t){var n=[i.headerlogo],o=document.querySelector("#"+i.id+"-min");return o&&n.push(o.querySelector(".jsPanel-headerlogo")),"string"==typeof e?"<"!==e.substr(0,1)?n.forEach(function(t){jsPanel.emptyNode(t);var n=document.createElement("img");n.src=e,t.append(n)}):n.forEach(function(t){t.innerHTML=e}):n.forEach(function(t){jsPanel.emptyNode(t),t.append(e)}),i.headerlogo.childNodes.forEach(function(e){e.nodeName&&"IMG"===e.nodeName&&e.setAttribute("draggable","false")}),t&&t.call(i,i),i},i.setHeaderRemove=function(e){return i.removeChild(i.header),i.content.classList.add("jsPanel-content-noheader"),["close","maximize","normalize","minimize","smallify"].forEach(function(e){i.setAttribute("data-btn".concat(e),"removed")}),e&&e.call(i,i),i},i.setHeaderTitle=function(e,t){var n=[i.headertitle],o=document.querySelector("#"+i.id+"-min");return o&&n.push(o.querySelector(".jsPanel-title")),"string"==typeof e?n.forEach(function(t){t.innerHTML=e}):"function"==typeof e?n.forEach(function(t){jsPanel.emptyNode(t),t.innerHTML=e()}):n.forEach(function(t){jsPanel.emptyNode(t),t.append(e)}),t&&t.call(i,i),i},i.setIconfont=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i,n=arguments.length>2?arguments[2]:void 0;if(e){var o,a;if("fa"===e||"far"===e||"fal"===e||"fas"===e||"fad"===e)o=["".concat(e," fa-window-close"),"".concat(e," fa-window-maximize"),"".concat(e," fa-window-restore"),"".concat(e," fa-window-minimize"),"".concat(e," fa-chevron-up")];else if("material-icons"===e)o=[e,e,e,e,e,e],a=["close","fullscreen","fullscreen_exit","call_received","expand_less"];else if(Array.isArray(e))o=["custom-control-icon ".concat(e[4]),"custom-control-icon ".concat(e[3]),"custom-control-icon ".concat(e[2]),"custom-control-icon ".concat(e[1]),"custom-control-icon ".concat(e[0])];else{if("bootstrap"!==e&&"glyphicon"!==e)return t;o=["glyphicon glyphicon-remove","glyphicon glyphicon-fullscreen","glyphicon glyphicon-resize-full","glyphicon glyphicon-minus","glyphicon glyphicon-chevron-up"]}t.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(function(e){jsPanel.emptyNode(e).innerHTML=""}),Array.prototype.slice.call(t.querySelectorAll(".jsPanel-controlbar .jsPanel-btn > span")).reverse().forEach(function(t,n){t.className=o[n],"material-icons"===e&&(t.textContent=a[n])})}return n&&n.call(t,t),t},i.addToolbar=function(e,t,n){if("header"===e?e=i.headertoolbar:"footer"===e&&(e=i.footer),"string"==typeof t)e.innerHTML=t;else if(Array.isArray(t))t.forEach(function(t){"string"==typeof t?e.innerHTML+=t:e.append(t)});else if("function"==typeof t){var o=t.call(i,i);"string"==typeof o?e.innerHTML=o:e.append(o)}else e.append(t);return e.classList.add("active"),n&&n.call(i,i),i},i.addCloseControl=function(){var e=document.createElement("button"),t=i.content.style.color;return e.classList.add("jsPanel-addCloseCtrl"),e.innerHTML=jsPanel.icons.close,e.style.color=t,i.options.rtl&&e.classList.add("rtl"),i.appendChild(e),jsPanel.pointerup.forEach(function(t){e.addEventListener(t,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.close(null,!0)})}),jsPanel.pointerdown.forEach(function(t){e.addEventListener(t,function(e){e.preventDefault()})}),i},i.addControl=function(e){if(!e.html)return i;e.position||(e.position=1);var n=i.controlbar.querySelectorAll(".jsPanel-btn").length,o=document.createElement("button");o.innerHTML=e.html,o.className="jsPanel-btn jsPanel-btn-".concat(e.name," jsPanel-btn-").concat(t.headerControls.size),o.style.color=i.header.style.color,e.position>n?i.controlbar.append(o):i.controlbar.insertBefore(o,i.querySelector(".jsPanel-controlbar .jsPanel-btn:nth-child(".concat(e.position,")")));var a=e.ariaLabel||e.name;return a&&o.setAttribute("aria-label",a),jsPanel.pointerup.forEach(function(t){o.addEventListener(t,function(t){if(t.preventDefault(),t.button&&t.button>0)return!1;e.handler.call(i,i,o)})}),e.afterInsert&&e.afterInsert.call(o,o),i},i.setRtl=function(){[i.header,i.content,i.footer].forEach(function(e){e.dir="rtl",t.rtl.lang&&(e.lang=t.rtl.lang)})},i.id=t.id,i.classList.add("jsPanel-"+t.paneltype),"standard"===t.paneltype&&(i.style.zIndex=this.zi.next()),r.append(i),i.front(!1,!1),i.setTheme(t.theme),t.boxShadow&&i.classList.add("jsPanel-depth-".concat(t.boxShadow)),t.header){if(t.headerLogo&&i.setHeaderLogo(t.headerLogo),i.setIconfont(t.iconfont),i.setHeaderTitle(t.headerTitle),i.setHeaderControls(),jsPanel.isIE){var k=[i.headerbar,i.controlbar];switch(i.options.headerControls.size){case"md":k.forEach(function(e){e.style.height="34px"});break;case"xs":k.forEach(function(e){e.style.height="26px"});break;case"sm":k.forEach(function(e){e.style.height="30px"});break;case"lg":k.forEach(function(e){e.style.height="38px"});break;case"xl":k.forEach(function(e){e.style.height="42px"})}}if("auto-show-hide"===t.header){var B="jsPanel-depth-"+t.boxShadow;i.header.style.opacity=0,i.style.backgroundColor="transparent",this.remClass(i,B),this.setClass(i.content,B),i.header.addEventListener("mouseenter",function(){i.header.style.opacity=1,jsPanel.setClass(i,B),jsPanel.remClass(i.content,B)}),i.header.addEventListener("mouseleave",function(){i.header.style.opacity=0,jsPanel.remClass(i,B),jsPanel.setClass(i.content,B)})}}else i.setHeaderRemove(),t.addCloseControl&&i.addCloseControl();if(t.headerToolbar&&i.addToolbar(i.headertoolbar,t.headerToolbar),t.footerToolbar&&i.addToolbar(i.footer,t.footerToolbar),t.border&&i.setBorder(t.border),t.borderRadius&&i.setBorderRadius(t.borderRadius),t.content&&("function"==typeof t.content?t.content.call(i,i):"string"==typeof t.content?i.content.innerHTML=t.content:i.content.append(t.content)),t.contentAjax&&this.ajax(t.contentAjax,i),t.contentFetch&&this.fetch(t.contentFetch,i),t.contentOverflow){var T=t.contentOverflow.split(" ");1===T.length?i.content.style.overflow=T[0]:2===T.length&&(i.content.style.overflowX=T[0],i.content.style.overflowY=T[1])}if(t.autoclose){"number"==typeof t.autoclose?t.autoclose={time:t.autoclose+"ms"}:"string"==typeof t.autoclose&&(t.autoclose={time:t.autoclose});var L=Object.assign({},jsPanel.defaultAutocloseConfig,t.autoclose);L.time&&"number"==typeof L.time&&(L.time+="ms");var R=i.progressbar.querySelector("div");R.addEventListener("animationend",function(e){e.stopPropagation(),i.progressbar.classList.remove("active"),i.close()}),L.progressbar&&(i.progressbar.classList.add("active"),L.background?jsPanel.themes.indexOf(L.background)>-1?i.progressbar.classList.add(L.background+"-bg"):jsPanel.colorNames[L.background]?i.progressbar.style.background="#"+jsPanel.colorNames[L.background]:i.progressbar.style.background=L.background:i.progressbar.classList.add("success-bg")),R.style.animation="".concat(L.time," progressbar")}if(t.rtl&&i.setRtl(),i.setSize(),i.status="normalized",t.position?this.position(i,t.position):i.style.opacity=1,document.dispatchEvent(d),i.calcSizeFactors(),t.animateIn&&(i.addEventListener("animationend",function(){e.remClass(i,t.animateIn)}),this.setClass(i,t.animateIn)),t.syncMargins){var W=this.pOcontainment(t.maximizedMargin);t.dragit&&(t.dragit.containment=W,!0===t.dragit.snap?(t.dragit.snap=jsPanel.defaultSnapConfig,t.dragit.snap.containment=!0):t.dragit.snap&&(t.dragit.snap.containment=!0)),t.resizeit&&(t.resizeit.containment=W)}if(t.dragit?(["start","drag","stop"].forEach(function(e){t.dragit[e]?"function"==typeof t.dragit[e]&&(t.dragit[e]=[t.dragit[e]]):t.dragit[e]=[]}),i.drag(t.dragit),i.addEventListener("jspaneldragstop",function(e){e.panel===i&&i.calcSizeFactors()},!1)):i.titlebar.style.cursor="default",t.resizeit){["start","resize","stop"].forEach(function(e){t.resizeit[e]?"function"==typeof t.resizeit[e]&&(t.resizeit[e]=[t.resizeit[e]]):t.resizeit[e]=[]}),i.sizeit(t.resizeit);var D=void 0;i.addEventListener("jspanelresizestart",function(e){e.panel===i&&(D=i.status)},!1),i.addEventListener("jspanelresizestop",function(e){e.panel===i&&("smallified"===D||"smallifiedmax"===D||"maximized"===D)&&parseFloat(i.style.height)>parseFloat(window.getComputedStyle(i.header).height)&&(i.setControls([".jsPanel-btn-normalize"]),i.status="normalized",document.dispatchEvent(d),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every"),i.calcSizeFactors())},!1)}if(i.saveCurrentDimensions(!0),i.saveCurrentPosition(),t.setStatus&&("smallifiedmax"===t.setStatus?i.maximize().smallify():"smallified"===t.setStatus?i.smallify():i[t.setStatus.substr(0,t.setStatus.length-1)]()),this.pointerdown.forEach(function(e){i.addEventListener(e,function(e){e.target.closest(".jsPanel-btn-close")||e.target.closest(".jsPanel-btn-minimize")||"standard"!==t.paneltype||i.front()},!1)}),t.onwindowresize&&"window"===i.options.container&&window.addEventListener("resize",i.windowResizeHandler,!1),t.onparentresize){var q=t.onparentresize,O=i.isChildpanel();if(O){var M=O.content,I=[];i.parentResizeHandler=function(e){if(e.panel===O){I[0]=M.offsetWidth,I[1]=M.offsetHeight;var t,n,o=i.status;"maximized"===o&&q?i.maximize():i.snapped&&"minimized"!==o?i.snap(i.snapped,!0):"normalized"===o||"smallified"===o||"maximized"===o?"function"==typeof q?q.call(i,i,{width:I[0],height:I[1]}):(t=(I[0]-i.offsetWidth)*i.hf,i.style.left=t<=0?0:t+"px",n=(I[1]-i.offsetHeight)*i.vf,i.style.top=n<=0?0:n+"px"):"smallifiedmax"===o&&q&&i.maximize().smallify()}},document.addEventListener("jspanelresize",i.parentResizeHandler,!1)}}return this.globalCallbacks&&(Array.isArray(this.globalCallbacks)?this.globalCallbacks.forEach(function(e){e.call(i,i)}):this.globalCallbacks.call(i,i)),t.callback&&(Array.isArray(t.callback)?t.callback.forEach(function(e){e.call(i,i)}):t.callback.call(i,i)),n&&n.call(i,i),document.dispatchEvent(l),i}};"undefined"!=typeof module&&(module.exports=jsPanel); \ No newline at end of file +"use strict";function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n',maximize:'',normalize:'',minimize:'',smallify:''},idCounter:0,isIE:navigator.appVersion.match(/Trident/),pointerdown:"ontouchend"in window?["touchstart","mousedown"]:["mousedown"],pointermove:"ontouchend"in window?["touchmove","mousemove"]:["mousemove"],pointerup:"ontouchend"in window?["touchend","mouseup"]:["mouseup"],polyfills:(Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(null==e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),n=1;n=0&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),function(){if("function"==typeof window.CustomEvent)return!1;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}(),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){return tthis.length)&&-1!==this.indexOf(e,t)}),Number.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},void(Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var a,r,i=0|t,l=Math.max(i>=0?i:o-Math.abs(i),0);l1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e},l=n<.5?n*(1+t):n+t-n*t,s=2*n-l;o=i(s,l,e+1/3),a=i(s,l,e),r=i(s,l,e-1/3)}return[Math.round(255*o),Math.round(255*a),Math.round(255*r)]},rgbToHsl:function(e,t,n){e/=255,t/=255,n/=255;var o,a,r=Math.max(e,t,n),i=Math.min(e,t,n),l=(r+i)/2;if(r===i)o=a=0;else{var s=r-i;switch(a=l>.5?s/(2-r-i):s/(r+i),r){case e:o=(t-n)/s+(t=0&&(h=this.applyPositionAutopos(e,h,t)),(t.offsetX||t.offsetY)&&(h=this.applyPositionOffset(e,h,t)),(t.minLeft||t.minTop||t.maxLeft||t.maxTop)&&(h=this.applyPositionMinMax(e,h,t)),t.modify&&(h=this.applyPositionModify(e,h,t)),"number"==typeof e.options.opacity?e.style.opacity=e.options.opacity:e.style.opacity=1,e},applyPositionAutopos:function(e,t,n){var o="".concat(n.my,"-").concat(n.autoposition.toLowerCase());e.classList.add(o);var a=Array.prototype.slice.call(document.querySelectorAll(".".concat(o))),r=a.indexOf(e);if(a.length>1){switch(n.autoposition){case"down":a.forEach(function(e,n){n>0&&n<=r&&(t.top=parseFloat(t.top)+a[--n].getBoundingClientRect().height+jsPanel.autopositionSpacing+"px")});break;case"up":a.forEach(function(e,n){n>0&&n<=r&&(t.top=parseFloat(t.top)-a[--n].getBoundingClientRect().height-jsPanel.autopositionSpacing+"px")});break;case"right":a.forEach(function(e,n){n>0&&n<=r&&(t.left=parseFloat(t.left)+a[--n].getBoundingClientRect().width+jsPanel.autopositionSpacing+"px")});break;case"left":a.forEach(function(e,n){n>0&&n<=r&&(t.left=parseFloat(t.left)-a[--n].getBoundingClientRect().width-jsPanel.autopositionSpacing+"px")})}e.style.left=t.left,e.style.top=t.top}return{left:t.left,top:t.top}},applyPositionOffset:function(e,t,n){["offsetX","offsetY"].forEach(function(e){n[e]?("function"==typeof n[e]&&(n[e]=n[e].call(t,t,n)),!1===isNaN(n[e])&&(n[e]="".concat(n[e],"px"))):n[e]="0px"}),e.style.left="calc(".concat(e.style.left," + ").concat(n.offsetX,")"),e.style.top="calc(".concat(e.style.top," + ").concat(n.offsetY,")");var o=getComputedStyle(e);return{left:o.left,top:o.top}},applyPositionMinMax:function(e,t,n){if(["minLeft","minTop","maxLeft","maxTop"].forEach(function(e){n[e]&&("function"==typeof n[e]&&(n[e]=n[e].call(t,t,n)),(Number.isInteger(n[e])||n[e].match(/^\d+$/))&&(n[e]="".concat(n[e],"px")))}),n.minLeft){e.style.left=n.minLeft;var o=getComputedStyle(e).left;parseFloat(o)parseFloat(t.left)?e.style.left=t.left:t.left=r}if(n.maxTop){e.style.top=n.maxTop;var i=getComputedStyle(e).top;parseFloat(i)>parseFloat(t.top)?e.style.top=t.top:t.top=i}var l=getComputedStyle(e);return{left:l.left,top:l.top}},applyPositionModify:function(e,t,n){if(n.modify&&"function"==typeof n.modify){var o=n.modify.call(t,t,n);e.style.left=Number.isInteger(o.left)||o.left.match(/^\d+$/)?"".concat(o.left,"px"):o.left,e.style.top=Number.isInteger(o.top)||o.top.match(/^\d+$/)?"".concat(o.top,"px"):o.top}var a=getComputedStyle(e);return{left:a.left,top:a.top}},autopositionRemaining:function(e){var t,n=e.options.container;(["left-top-down","left-top-right","center-top-down","right-top-down","right-top-left","left-bottom-up","left-bottom-right","center-bottom-up","right-bottom-up","right-bottom-left"].forEach(function(n){e.classList.contains(n)&&(t=n)}),t)&&("window"===n?document.body:"string"==typeof n?document.querySelector(n):n).querySelectorAll(".".concat(t)).forEach(function(e){e.reposition()})},addScript:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"application/javascript",n=arguments.length>2?arguments[2]:void 0;if(!document.querySelector('script[src="'.concat(e,'"]'))){var o=document.createElement("script");n&&(o.onload=n),o.src=e,o.type=t,document.head.appendChild(o)}},ajax:function(e,t){var n,o,a=new XMLHttpRequest,r={method:"GET",async:!0,user:"",pwd:"",done:function(){if(t){var e=jsPanel.strToHtml(this.responseText);n.urlSelector&&(e=e.querySelector(n.urlSelector)),t.contentRemove(),t.content.append(e)}},autoresize:!0,autoreposition:!0};if(t&&"string"==typeof e)n=Object.assign({},r,{url:e});else{if("object"!==_typeof(e)||!e.url){if(this.errorReporting){jsPanel.errorpanel("XMLHttpRequest seems to miss the url parameter!")}return}(n=Object.assign({},r,e)).url=e.url,!1===n.async&&(n.timeout=0,n.withCredentials&&(n.withCredentials=void 0),n.responseType&&(n.responseType=void 0))}o=n.url.trim().split(/\s+/),n.url=encodeURI(o[0]),o.length>1&&(o.shift(),n.urlSelector=o.join(" ")),a.onreadystatechange=function(){4===a.readyState&&(200===a.status?t?n.done.call(a,a,t):n.done.call(a,a):n.fail&&(t?n.fail.call(a,a,t):n.fail.call(a,a)),n.always&&(t?n.always.call(a,a,t):n.always.call(a,a)),t&&(n.autoresize||n.autoreposition)&&jsPanel.ajaxAutoresizeAutoreposition(t,n),jsPanel.ajaxAlwaysCallbacks.length&&jsPanel.ajaxAlwaysCallbacks.forEach(function(e){t?e.call(a,a,t):e.call(a,a)}))},a.open(n.method,n.url,n.async,n.user,n.pwd),a.timeout=n.timeout||0,n.withCredentials&&(a.withCredentials=n.withCredentials),n.responseType&&(a.responseType=n.responseType),n.beforeSend&&(t?n.beforeSend.call(a,a,t):n.beforeSend.call(a,a)),n.data?a.send(n.data):a.send(null)},ajaxAutoresizeAutoreposition:function(e,t){var n=e.options.contentSize;if("string"==typeof n&&n.match(/auto/i)){var o=n.split(" "),a=Object.assign({},{width:o[0],height:o[1]});t.autoresize&&e.resize(a),e.classList.contains("jsPanel-contextmenu")||t.autoreposition&&e.reposition()}else if("object"===_typeof(n)&&("auto"===n.width||"auto"===n.height)){var r=Object.assign({},n);t.autoresize&&e.resize(r),e.classList.contains("jsPanel-contextmenu")||t.autoreposition&&e.reposition()}},createPanelTemplate:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=document.createElement("div");return t.className="jsPanel",t.style.left="0",t.style.top="0",e&&["close","maximize","normalize","minimize","smallify"].forEach(function(e){t.setAttribute("data-btn".concat(e),"enabled")}),t.innerHTML='
\n
\n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
'),t},createMinimizedTemplate:function(){var e=document.createElement("div");return e.className="jsPanel-replacement",e.innerHTML='
\n
\n \n
\n
\n
\n
\n \n \n \n
\n
\n
"),e},createSnapArea:function(e,t,n){var o=document.createElement("div"),a=e.parentElement;o.className="jsPanel-snap-area jsPanel-snap-area-".concat(t),"lt"===t||"rt"===t||"rb"===t||"lb"===t?(o.style.width=n+"px",o.style.height=n+"px"):"ct"===t||"cb"===t?o.style.height=n+"px":"lc"!==t&&"rc"!==t||(o.style.width=n+"px"),a!==document.body&&(o.style.position="absolute"),document.querySelector(".jsPanel-snap-area.jsPanel-snap-area-".concat(t))||e.parentElement.appendChild(o)},emptyNode:function(e){for(;e.firstChild;)e.removeChild(e.firstChild);return e},extend:function(e){if("[object Object]"===Object.prototype.toString.call(e))for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(this.extensions[t]=e[t])},fetch:function(e){function t(t,n){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var n,o={bodyMethod:"text",autoresize:!0,autoreposition:!0,done:function(e,t){if(t){var n=jsPanel.strToHtml(e);t.contentRemove(),t.content.append(n)}}};if(t&&"string"==typeof e)n=Object.assign({},o,{resource:encodeURI(e)});else{if("object"!==_typeof(e)||!e.resource){if(this.errorReporting){jsPanel.errorpanel("Fetch Request seems to miss the resource parameter!")}return}(n=Object.assign({},o,e)).resource=encodeURI(e.resource)}var a=n.fetchInit||{};n.beforeSend&&(t?n.beforeSend.call(e,e,t):n.beforeSend.call(e,e)),fetch(n.resource,a).then(function(e){if(e.ok)return e[n.bodyMethod]()}).then(function(e){t?n.done.call(e,e,t):n.done.call(e,e),t&&(n.autoresize||n.autoreposition)&&jsPanel.ajaxAutoresizeAutoreposition(t,n)})}),getPanels:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return this.classList.contains("jsPanel-standard")};return Array.prototype.slice.call(document.querySelectorAll(".jsPanel")).filter(function(t){return e.call(t,t)}).sort(function(e,t){return t.style.zIndex-e.style.zIndex})},pOcontainer:function(e){if("window"===e)return document.body;if("string"==typeof e){var t=document.querySelectorAll(e);return!!(t.length&&t.length>0)&&t}return 1===e.nodeType?e:!!e.length&&e[0]},pOcontainment:function(e){var t=e;if("function"==typeof e&&(t=e()),"number"==typeof t)return[t,t,t,t];if(Array.isArray(t)){if(1===t.length)return[t[0],t[0],t[0],t[0]];if(2===t.length)return t.concat(t);3===t.length&&(t[3]=t[1])}return t},pOsize:function(e,t){var n=t||this.defaults.contentSize,o=e.parentElement;if("string"==typeof n){var a=n.trim().split(" ");(n={}).width=a[0],2===a.length?n.height=a[1]:n.height=a[0]}else n.width&&!n.height?n.height=n.width:n.height&&!n.width&&(n.width=n.height);if(String(n.width).match(/^[0-9.]+$/gi))n.width+="px";else if("string"==typeof n.width&&n.width.endsWith("%"))if(o===document.body)n.width=window.innerWidth*(parseFloat(n.width)/100)+"px";else{var r=window.getComputedStyle(o),i=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);n.width=(parseFloat(r.width)-i)*(parseFloat(n.width)/100)+"px"}else"function"==typeof n.width&&(n.width=n.width.call(e,e),"number"==typeof n.width?n.width+="px":"string"==typeof n.width&&n.width.match(/^[0-9.]+$/gi)&&(n.width+="px"));if(String(n.height).match(/^[0-9.]+$/gi))n.height+="px";else if("string"==typeof n.height&&n.height.endsWith("%"))if(o===document.body)n.height=window.innerHeight*(parseFloat(n.height)/100)+"px";else{var l=window.getComputedStyle(o),s=parseFloat(l.borderTopWidth)+parseFloat(l.borderBottomWidth);n.height=(parseFloat(l.height)-s)*(parseFloat(n.height)/100)+"px"}else"function"==typeof n.height&&(n.height=n.height.call(e,e),"number"==typeof n.height?n.height+="px":"string"==typeof n.height&&n.height.match(/^[0-9.]+$/gi)&&(n.height+="px"));return n},pOborder:function(e){e=e.trim();var t=new Array(3),n=e.match(/\s*(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset)\s*/gi),o=e.match(/\s*(thin|medium|thick)|(\d*\.?\d+[a-zA-Z]{2,4})\s*/gi);return n?(t[1]=n[0].trim(),e=e.replace(t[1],"")):t[1]="solid",o?(t[0]=o[0].trim(),e=e.replace(t[0],"")):t[0]="medium",t[2]=e.trim(),t},pOheaderControls:function(e){if("string"==typeof e){var t={},n=e.toLowerCase(),o=n.match(/xl|lg|md|sm|xs/),a=n.match(/closeonly|none/);return o&&(t.size=o[0]),a&&(t=Object.assign({},t,{maximize:"remove",normalize:"remove",minimize:"remove",smallify:"remove"}),"none"===a[0]&&(t.close="remove")),Object.assign({},this.defaults.headerControls,t)}return Object.assign({},this.defaults.headerControls,e)},processCallbacks:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"some",o=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0;if("function"==typeof t&&(t=[t]),n)return t[n](function(t){return t.call(e,e,o,a)});t.forEach(function(t){t.call(e,e,o,a)})},removeSnapAreas:function(){document.querySelectorAll(".jsPanel-snap-area").forEach(function(e){e.parentElement.removeChild(e)})},resetZi:function(){this.zi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:jsPanel.ziBase;return{next:function(){return e++}}}(),Array.prototype.slice.call(document.querySelectorAll(".jsPanel-standard")).sort(function(e,t){return e.style.zIndex-t.style.zIndex}).forEach(function(e){e.style.zIndex=jsPanel.zi.next()})},setClass:function(e,t){return t.trim().split(/\s+/).forEach(function(t){return e.classList.add(t)}),e},remClass:function(e,t){return t.trim().split(/\s+/).forEach(function(t){return e.classList.remove(t)}),e},toggleClass:function(e,t){return t.trim().split(/\s+/).forEach(function(t){e.classList.contains(t)?e.classList.remove(t):e.classList.add(t)}),e},setStyles:function(e,t){for(var n in t)n in e.style?e.style[n]=t[n]:e.style.setProperty(n,t[n]);return e},setStyle:function(e,t){return this.setStyles.call(e,e,t)},strToHtml:function(e){return document.createRange().createContextualFragment(e)},errorpanel:function(e){this.create({paneltype:"error",dragit:!1,resizeit:!1,theme:{bgPanel:"white",bgContent:"white",colorHeader:"rebeccapurple",colorContent:"#333",border:"2px solid rebeccapurple"},borderRadius:".33rem",headerControls:"closeonly xs",headerTitle:"⚠ jsPanel Error",contentSize:{width:"50%",height:"auto"},position:"center-top 0 5 down",animateIn:"jsPanelFadeIn",content:'

'.concat(e,"

")})},create:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;jsPanel.zi||(jsPanel.zi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:jsPanel.ziBase;return{next:function(){return e++}}}()),t.config?delete(t=Object.assign({},this.defaults,t.config,t)).config:t=Object.assign({},this.defaults,t),t.id?"function"==typeof t.id&&(t.id=t.id()):t.id="jsPanel-".concat(jsPanel.idCounter+=1);var o=document.getElementById(t.id);if(null!==o){if(o.classList.contains("jsPanel")&&o.front(),this.errorReporting){var a="◀ COULD NOT CREATE NEW JSPANEL ►
An element with the ID ".concat(t.id," already exists in the document.");jsPanel.errorpanel(a)}return!1}var r=this.pOcontainer(t.container);if("object"===_typeof(r)&&r.length&&r.length>0&&(r=r[0]),!r){if(this.errorReporting){jsPanel.errorpanel("◀ COULD NOT CREATE NEW JSPANEL ►
The container to append the panel to does not exist")}return!1}["onbeforeclose","onbeforemaximize","onbeforeminimize","onbeforenormalize","onbeforesmallify","onbeforeunsmallify","onclosed","onfronted","onmaximized","onminimized","onnormalized","onsmallified","onstatuschange","onunsmallified"].forEach(function(e){t[e]?"function"==typeof t[e]&&(t[e]=[t[e]]):t[e]=[]});var i=t.template?t.template:this.createPanelTemplate();i.options=t,i.closetimer=void 0,i.status="initialized",i.currentData={},i.header=i.querySelector(".jsPanel-hdr"),i.headerbar=i.header.querySelector(".jsPanel-headerbar"),i.titlebar=i.header.querySelector(".jsPanel-titlebar"),i.headerlogo=i.headerbar.querySelector(".jsPanel-headerlogo"),i.headertitle=i.headerbar.querySelector(".jsPanel-title"),i.controlbar=i.headerbar.querySelector(".jsPanel-controlbar"),i.headertoolbar=i.header.querySelector(".jsPanel-hdr-toolbar"),i.content=i.querySelector(".jsPanel-content"),i.footer=i.querySelector(".jsPanel-ftr"),i.snappableTo=!1,i.snapped=!1,i.droppableTo=!1,i.progressbar=i.autocloseProgressbar=i.querySelector(".jsPanel-progressbar");var l=new CustomEvent("jspanelloaded",{detail:t.id,cancelable:!0}),s=new CustomEvent("jspanelstatuschange",{detail:t.id,cancelable:!0}),c=new CustomEvent("jspanelbeforenormalize",{detail:t.id,cancelable:!0}),d=new CustomEvent("jspanelnormalized",{detail:t.id,cancelable:!0}),p=new CustomEvent("jspanelbeforemaximize",{detail:t.id,cancelable:!0}),h=new CustomEvent("jspanelmaximized",{detail:t.id,cancelable:!0}),f=new CustomEvent("jspanelbeforeminimize",{detail:t.id,cancelable:!0}),u=new CustomEvent("jspanelminimized",{detail:t.id,cancelable:!0}),m=new CustomEvent("jspanelbeforesmallify",{detail:t.id,cancelable:!0}),g=new CustomEvent("jspanelsmallified",{detail:t.id,cancelable:!0}),b=new CustomEvent("jspanelsmallifiedmax",{detail:t.id,cancelable:!0}),y=new CustomEvent("jspanelbeforeunsmallify",{detail:t.id,cancelable:!0}),v=new CustomEvent("jspanelfronted",{detail:t.id,cancelable:!0}),w=new CustomEvent("jspanelbeforeclose",{detail:t.id,cancelable:!0}),j=new CustomEvent("jspanelclosed",{detail:t.id,cancelable:!0}),P=new CustomEvent("jspanelcloseduser",{detail:t.id,cancelable:!0});[l,s,c,d,p,h,f,u,m,g,b,y,v,w].forEach(function(e){e.panel=i});var E=i.querySelector(".jsPanel-btn-close"),x=i.querySelector(".jsPanel-btn-maximize"),C=i.querySelector(".jsPanel-btn-normalize"),F=i.querySelector(".jsPanel-btn-smallify"),z=i.querySelector(".jsPanel-btn-minimize");E&&jsPanel.pointerup.forEach(function(e){E.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.close(null,!0)})}),x&&jsPanel.pointerup.forEach(function(e){x.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.maximize()})}),C&&jsPanel.pointerup.forEach(function(e){C.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.normalize()})}),F&&jsPanel.pointerup.forEach(function(e){F.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;"normalized"===i.status||"maximized"===i.status?i.smallify():"smallified"!==i.status&&"smallifiedmax"!==i.status||i.unsmallify()})}),z&&jsPanel.pointerup.forEach(function(e){z.addEventListener(e,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.minimize()})});var S=jsPanel.extensions;for(var A in S)Object.prototype.hasOwnProperty.call(S,A)&&(i[A]=S[A]);if(i.clearTheme=function(e){return jsPanel.themes.forEach(function(e){["panel","jsPanel-theme-".concat(e),"panel-".concat(e),"".concat(e,"-color")].forEach(function(e){i.classList.remove(e)}),i.header.classList.remove("jsPanel-theme-".concat(e))}),i.content.classList.remove("jsPanel-content-filled","jsPanel-content-filledlight"),i.header.classList.remove("jsPanel-hdr-light"),i.header.classList.remove("jsPanel-hdr-dark"),i.style.backgroundColor="",jsPanel.setStyle(i.headertoolbar,{boxShadow:"",width:"",marginLeft:"",borderTopColor:"transparent"}),jsPanel.setStyle(i.content,{background:"",borderTopColor:"transparent"}),i.header.style.background="",Array.prototype.slice.call(i.controlbar.querySelectorAll(".jsPanel-icon")).concat([i.headerlogo,i.headertitle,i.headertoolbar,i.content]).forEach(function(e){e.style.color=""}),e&&e.call(i,i),i},i.getThemeDetails=function(e){var t=e.toLowerCase(),n={color:!1,colors:!1,filling:!1},o=t.split("fill");if(n.color=o[0].trim().replace(/\s*/g,""),2===o.length)if(o[1].startsWith("edlight"))n.filling="filledlight";else if(o[1].startsWith("eddark"))n.filling="filleddark";else if(o[1].startsWith("ed"))n.filling="filled";else if(o[1].startsWith("color")){var a=o[1].split("color"),r=a[a.length-1].trim().replace(/\s*/g,"");jsPanel.colorNames[r]&&(r=jsPanel.colorNames[r]),r.match(/^([0-9a-f]{3}|[0-9a-f]{6})$/gi)&&(r="#"+r),n.filling=r}if(jsPanel.themes.some(function(e){return e===n.color.split(/\s/i)[0]})){var i=n.color.split(/\s/i)[0],l=document.createElement("button");l.className=i+"-bg",document.body.appendChild(l),n.color=getComputedStyle(l).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(l),l=void 0}else if(n.color.startsWith("bootstrap-")){var s=n.color.indexOf("-"),c=document.createElement("button");c.className="btn btn"+n.color.slice(s),document.body.appendChild(c),n.color=getComputedStyle(c).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(c),c=void 0}else if(n.color.startsWith("mdb-")){var d,p=n.color.indexOf("-")+1,h=document.createElement("span");d=n.color.endsWith("-dark")?(d=n.color.slice(p)).replace("-dark","-color-dark"):n.color.slice(p)+"-color",h.className=d,document.body.appendChild(h),n.color=getComputedStyle(h).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(h),h=void 0}return n.colors=jsPanel.calcColors(n.color),n},i.applyColorTheme=function(e){if(i.style.backgroundColor=e.colors[0],i.header.style.backgroundColor=e.colors[0],i.header.style.color=e.colors[3],[".jsPanel-headerlogo",".jsPanel-title",".jsPanel-hdr-toolbar"].forEach(function(t){i.querySelector(t).style.color=e.colors[3]}),i.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(function(t){t.style.color=e.colors[3]}),"string"==typeof i.options.theme&&"filled"===e.filling&&(i.content.style.borderTop="#000000"===e.colors[3]?"1px solid rgba(0,0,0,0.15)":"1px solid rgba(255,255,255,0.15)"),"#000000"===e.colors[3]?i.header.classList.add("jsPanel-hdr-light"):i.header.classList.add("jsPanel-hdr-dark"),e.filling)switch(e.filling){case"filled":jsPanel.setStyle(i.content,{backgroundColor:e.colors[2],color:e.colors[3]});break;case"filledlight":i.content.style.backgroundColor=e.colors[1];break;case"filleddark":jsPanel.setStyle(i.content,{backgroundColor:e.colors[6],color:e.colors[7]});break;default:i.content.style.backgroundColor=e.filling,i.content.style.color=jsPanel.perceivedBrightness(e.filling)<=jsPanel.colorBrightnessThreshold?"#fff":"#000"}return i},i.applyCustomTheme=function(e){var t,n={bgPanel:"#fff",bgContent:"#fff",colorHeader:"#000",colorContent:"#000"},o=(t="object"===_typeof(e)?Object.assign(n,e):n).bgPanel,a=t.bgContent,r=t.colorHeader,l=t.colorContent;if(jsPanel.colorNames[o]?i.style.background="#"+jsPanel.colorNames[o]:i.style.background=o,jsPanel.colorNames[r]&&(r="#"+jsPanel.colorNames[r]),[".jsPanel-headerlogo",".jsPanel-title",".jsPanel-hdr-toolbar"].forEach(function(e){i.querySelector(e).style.color=r}),i.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(function(e){e.style.color=r}),jsPanel.colorNames[a]?i.content.style.background="#"+jsPanel.colorNames[a]:i.content.style.background=a,jsPanel.colorNames[l]?i.content.style.color="#"+jsPanel.colorNames[l]:i.content.style.color=l,jsPanel.perceivedBrightness(r)>jsPanel.colorBrightnessThreshold?i.header.classList.add("jsPanel-hdr-dark"):i.header.classList.add("jsPanel-hdr-light"),jsPanel.perceivedBrightness(l)>jsPanel.colorBrightnessThreshold?i.content.style.borderTop="1px solid rgba(255,255,255,0.15)":i.content.style.borderTop="1px solid rgba(0,0,0,0.15)",t.border){var s=t.border,c=s.lastIndexOf(" "),d=s.slice(++c);jsPanel.colorNames[d]&&(s=s.replace(d,"#"+jsPanel.colorNames[d])),i.style.border=s}return i},i.setBorder=function(e){var t=jsPanel.pOborder(e);return t[2].length?jsPanel.colorNames[t[2]]&&(t[2]="#"+jsPanel.colorNames[t[2]]):t[2]=i.style.backgroundColor,t=t.join(" "),i.style.border=t,i.options.border=t,i},i.setBorderRadius=function(e){"number"==typeof e&&(e+="px"),i.style.borderRadius=e;var t=getComputedStyle(i);return i.options.header?(i.header.style.borderTopLeftRadius=t.borderTopLeftRadius,i.header.style.borderTopRightRadius=t.borderTopRightRadius):(i.content.style.borderTopLeftRadius=t.borderTopLeftRadius,i.content.style.borderTopRightRadius=t.borderTopRightRadius),i.options.footerToolbar?(i.footer.style.borderBottomRightRadius=t.borderBottomRightRadius,i.footer.style.borderBottomLeftRadius=t.borderBottomLeftRadius):(i.content.style.borderBottomRightRadius=t.borderBottomRightRadius,i.content.style.borderBottomLeftRadius=t.borderBottomLeftRadius),i},i.setTheme=function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:t.theme,o=arguments.length>1?arguments[1]:void 0;if("minimized"===i.status&&(e=!0,i.normalize()),i.clearTheme(),"object"===_typeof(n))t.border=void 0,i.applyCustomTheme(n);else{"none"===n&&(n="white");var a=i.getThemeDetails(n);i.applyColorTheme(a)}return e&&i.minimize(),o&&o.call(i,i),i},i.remove=function(e,t,n){i.parentElement.removeChild(i),document.getElementById(e)?n&&n.call(i,e,i):(i.removeMinimizedReplacement(),t&&document.dispatchEvent(P),document.dispatchEvent(j),i.options.onclosed&&jsPanel.processCallbacks(i,i.options.onclosed,"every",t),jsPanel.autopositionRemaining(i),n&&n.call(e,e)),window.removeEventListener("resize",i.windowResizeHandler),document.removeEventListener("jspanelresize",i.parentResizeHandler)},i.close=function(e,t){if(i.closetimer&&window.clearInterval(i.closetimer),document.dispatchEvent(w),i.options.onbeforeclose&&i.options.onbeforeclose.length>0&&!jsPanel.processCallbacks(i,i.options.onbeforeclose,"some",i.status,t))return i;i.options.animateOut?(i.options.animateIn&&jsPanel.remClass(i,i.options.animateIn),jsPanel.setClass(i,i.options.animateOut),i.addEventListener("animationend",function(n){n.stopPropagation(),i.remove(i.id,t,e)})):i.remove(i.id,t,e)},i.maximize=function(e,n){if(i.statusBefore=i.status,t.onbeforemaximize&&t.onbeforemaximize.length>0&&!jsPanel.processCallbacks(i,t.onbeforemaximize,"some",i.statusBefore))return i;document.dispatchEvent(p);var o=i.parentElement,a=jsPanel.pOcontainment(t.maximizedMargin);return o===document.body?(i.style.width=document.documentElement.clientWidth-a[1]-a[3]+"px",i.style.height=document.documentElement.clientHeight-a[0]-a[2]+"px",i.style.left=a[3]+"px",i.style.top=a[0]+"px"):(i.style.width=o.clientWidth-a[1]-a[3]+"px",i.style.height=o.clientHeight-a[0]-a[2]+"px",i.style.left=a[3]+"px",i.style.top=a[0]+"px"),F.style.transform="unset",i.removeMinimizedReplacement(),i.status="maximized",i.setControls([".jsPanel-btn-maximize"]),n||i.front(),document.dispatchEvent(h),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore),e&&e.call(i,i,i.statusBefore),t.onmaximized&&jsPanel.processCallbacks(i,t.onmaximized,"every",i.statusBefore),i},i.minimize=function(e){if("minimized"===i.status)return i;if(i.statusBefore=i.status,t.onbeforeminimize&&t.onbeforeminimize.length>0&&!jsPanel.processCallbacks(i,t.onbeforeminimize,"some",i.statusBefore))return i;if(document.dispatchEvent(f),!document.getElementById("jsPanel-replacement-container")){var n=document.createElement("div");n.id="jsPanel-replacement-container",document.body.append(n)}if(i.style.left="-9999px",i.status="minimized",document.dispatchEvent(u),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore),t.minimizeTo){var o,a,r,l=i.createMinimizedReplacement();switch(t.minimizeTo){case"default":document.getElementById("jsPanel-replacement-container").append(l);break;case"parentpanel":(o=(r=(a=i.closest(".jsPanel-content").parentElement).querySelectorAll(".jsPanel-minimized-box"))[r.length-1]).append(l);break;case"parent":(o=(a=i.parentElement).querySelector(".jsPanel-minimized-container"))||((o=document.createElement("div")).className="jsPanel-minimized-container",a.append(o)),o.append(l);break;default:document.querySelector(t.minimizeTo).append(l)}}return e&&e.call(i,i,i.statusBefore),t.onminimized&&jsPanel.processCallbacks(i,t.onminimized,"every",i.statusBefore),i},i.normalize=function(e){return"normalized"===i.status?i:(i.statusBefore=i.status,t.onbeforenormalize&&t.onbeforenormalize.length>0&&!jsPanel.processCallbacks(i,t.onbeforenormalize,"some",i.statusBefore)?i:(document.dispatchEvent(c),i.style.width=i.currentData.width,i.style.height=i.currentData.height,i.snapped?i.snap(i.snapped,!0):(i.style.left=i.currentData.left,i.style.top=i.currentData.top),F.style.transform="unset",i.removeMinimizedReplacement(),i.status="normalized",i.setControls([".jsPanel-btn-normalize"]),i.front(),document.dispatchEvent(d),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore),e&&e.call(i,i,i.statusBefore),t.onnormalized&&jsPanel.processCallbacks(i,t.onnormalized,"every",i.statusBefore),i))},i.smallify=function(e){if("smallified"===i.status||"smallifiedmax"===i.status)return i;if(i.statusBefore=i.status,t.onbeforesmallify&&t.onbeforesmallify.length>0&&!jsPanel.processCallbacks(i,t.onbeforesmallify,"some",i.statusBefore))return i;document.dispatchEvent(m),i.style.overflow="hidden";var n=window.getComputedStyle(i),o=parseFloat(window.getComputedStyle(i.headerbar).height);i.style.height=parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth)+o+"px",F.style.transform="rotate(180deg)","normalized"===i.status?(i.setControls([".jsPanel-btn-normalize"]),i.status="smallified",document.dispatchEvent(g),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore)):"maximized"===i.status&&(i.setControls([".jsPanel-btn-maximize"]),i.status="smallifiedmax",document.dispatchEvent(b),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore));var a=i.querySelectorAll(".jsPanel-minimized-box");return a[a.length-1].style.display="none",e&&e.call(i,i,i.statusBefore),t.onsmallified&&jsPanel.processCallbacks(i,t.onsmallified,"every",i.statusBefore),i},i.unsmallify=function(e){if(i.statusBefore=i.status,"smallified"===i.status||"smallifiedmax"===i.status){if(t.onbeforeunsmallify&&t.onbeforeunsmallify.length>0&&!jsPanel.processCallbacks(i,t.onbeforeunsmallify,"some",i.statusBefore))return i;document.dispatchEvent(y),i.style.overflow="visible",i.front(),"smallified"===i.status?(i.style.height=i.currentData.height,i.setControls([".jsPanel-btn-normalize"]),i.status="normalized",document.dispatchEvent(d),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every",i.statusBefore)):"smallifiedmax"===i.status?i.maximize():"minimized"===i.status&&i.normalize(),F.style.transform="rotate(0deg)";var n=i.querySelectorAll(".jsPanel-minimized-box");n[n.length-1].style.display="flex",e&&e.call(i,i,i.statusBefore),t.onunsmallified&&jsPanel.processCallbacks(i,t.onunsmallified,"every",i.statusBefore)}return i},i.front=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("minimized"===i.status)"maximized"===i.statusBefore?i.maximize():i.normalize();else{var o=Array.prototype.slice.call(document.querySelectorAll(".jsPanel-standard")).map(function(e){return e.style.zIndex});Math.max.apply(Math,_toConsumableArray(o))>i.style.zIndex&&(i.style.zIndex=jsPanel.zi.next()),jsPanel.resetZi()}return document.dispatchEvent(v),e&&e.call(i,i),t.onfronted&&n&&jsPanel.processCallbacks(i,t.onfronted,"every",i.status),i},i.snap=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(t||(i.currentData.beforeSnap={width:i.currentData.width,height:i.currentData.height}),e&&"function"==typeof e&&!t)e.call(i,i,i.snappableTo);else if(!1!==e){var n=[0,0];if(i.options.dragit.snap.containment&&i.options.dragit.containment){var o=jsPanel.pOcontainment(i.options.dragit.containment),a=i.snappableTo;a.startsWith("left")?n[0]=o[3]:a.startsWith("right")&&(n[0]=-o[1]),a.endsWith("top")?n[1]=o[0]:a.endsWith("bottom")&&(n[1]=-o[2])}i.reposition("".concat(i.snappableTo," ").concat(n[0]," ").concat(n[1]))}t||(i.snapped=i.snappableTo)},i.move=function(e,t){var n=i.overlaps(e,"paddingbox"),o=i.parentElement;return e.appendChild(i),i.options.container=e,i.style.left=n.left+"px",i.style.top=n.top+"px",i.saveCurrentDimensions(),i.saveCurrentPosition(),i.calcSizeFactors(),t&&t.call(i,i,e,o),i},i.closeChildpanels=function(e){return i.getChildpanels().forEach(function(e){return e.close()}),e&&e.call(i,i),i},i.getChildpanels=function(e){var t=i.content.querySelectorAll(".jsPanel");return e&&t.forEach(function(t,n,o){e.call(t,t,n,o)}),t},i.isChildpanel=function(e){var t=i.closest(".jsPanel-content"),n=t?t.parentElement:null;return e&&e.call(i,i,n),!!t&&n},i.contentRemove=function(e){return jsPanel.emptyNode(i.content),e&&e.call(i,i),i},i.createMinimizedReplacement=function(){var e=jsPanel.createMinimizedTemplate(),n=window.getComputedStyle(i.headertitle).color,o=window.getComputedStyle(i),a=t.iconfont,r=e.querySelector(".jsPanel-controlbar");return"auto-show-hide"!==i.options.header?jsPanel.setStyle(e,{backgroundColor:o.backgroundColor,backgroundPositionX:o.backgroundPositionX,backgroundPositionY:o.backgroundPositionY,backgroundRepeat:o.backgroundRepeat,backgroundAttachment:o.backgroundAttachment,backgroundImage:o.backgroundImage,backgroundSize:o.backgroundSize,backgroundOrigin:o.backgroundOrigin,backgroundClip:o.backgroundClip}):e.style.backgroundColor=window.getComputedStyle(i.header).backgroundColor,e.id=i.id+"-min",e.querySelector(".jsPanel-headerbar").replaceChild(i.headerlogo.cloneNode(!0),e.querySelector(".jsPanel-headerlogo")),e.querySelector(".jsPanel-titlebar").replaceChild(i.headertitle.cloneNode(!0),e.querySelector(".jsPanel-title")),e.querySelector(".jsPanel-titlebar").setAttribute("title",i.headertitle.textContent),e.querySelector(".jsPanel-title").style.color=n,r.style.color=n,r.querySelectorAll("button").forEach(function(e){e.style.color=n}),["jsPanel-hdr-dark","jsPanel-hdr-light"].forEach(function(t){i.header.classList.contains(t)&&e.querySelector(".jsPanel-hdr").classList.add(t)}),i.setIconfont(a,e),"enabled"===i.dataset.btnnormalize?jsPanel.pointerup.forEach(function(t){e.querySelector(".jsPanel-btn-normalize").addEventListener(t,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.normalize()})}):r.querySelector(".jsPanel-btn-normalize").style.display="none","enabled"===i.dataset.btnmaximize?jsPanel.pointerup.forEach(function(t){e.querySelector(".jsPanel-btn-maximize").addEventListener(t,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.maximize()})}):r.querySelector(".jsPanel-btn-maximize").style.display="none","enabled"===i.dataset.btnclose?jsPanel.pointerup.forEach(function(t){e.querySelector(".jsPanel-btn-close").addEventListener(t,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.close(null,!0)})}):r.querySelector(".jsPanel-btn-close").style.display="none",e},i.removeMinimizedReplacement=function(){var e=document.getElementById("".concat(i.id,"-min"));e&&e.parentElement.removeChild(e)},i.drag=function(){var e,t,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=new CustomEvent("jspaneldragstart",{detail:i.id}),r=new CustomEvent("jspaneldrag",{detail:i.id}),l=new CustomEvent("jspaneldragstop",{detail:i.id});[a,r,l].forEach(function(e){e.panel=i});var s=function(e){var t=e.split("-");return t.forEach(function(e,n){t[n]=e.charAt(0).toUpperCase()+e.slice(1)}),"snap"+t.join("")};function c(e){null===e.relatedTarget&&jsPanel.pointermove.forEach(function(e){document.removeEventListener(e,t,!1),i.style.opacity=1})}var d=o.handles||jsPanel.defaults.dragit.handles,p=o.cursor||jsPanel.defaults.dragit.cursor;function h(o){if(jsPanel.pointermove.forEach(function(e){document.removeEventListener(e,t)}),jsPanel.removeSnapAreas(),e){if(i.style.opacity=1,e=void 0,n.snap){switch(i.snappableTo){case"left-top":i.snap(n.snap.snapLeftTop);break;case"center-top":i.snap(n.snap.snapCenterTop);break;case"right-top":i.snap(n.snap.snapRightTop);break;case"right-center":i.snap(n.snap.snapRightCenter);break;case"right-bottom":i.snap(n.snap.snapRightBottom);break;case"center-bottom":i.snap(n.snap.snapCenterBottom);break;case"left-bottom":i.snap(n.snap.snapLeftBottom);break;case"left-center":i.snap(n.snap.snapLeftCenter)}n.snap.callback&&i.snappableTo&&"function"==typeof n.snap.callback&&(n.snap.callback.call(i,i),n.snap.repositionOnSnap&&!1!==n.snap[s(i.snappableTo)]&&i.repositionOnSnap(i.snappableTo)),i.snappableTo&&n.snap.repositionOnSnap&&n.snap[s(i.snappableTo)]&&i.repositionOnSnap(i.snappableTo)}if(i.droppableTo&&i.droppableTo){var a=i.parentElement;i.move(i.droppableTo),n.drop.callback&&n.drop.callback.call(i,i,i.droppableTo,a)}if(document.dispatchEvent(l),n.stop.length){var r=window.getComputedStyle(i),c={left:parseFloat(r.left),top:parseFloat(r.top),width:parseFloat(r.width),height:parseFloat(r.height)};jsPanel.processCallbacks(i,n.stop,!1,c,o)}i.saveCurrentPosition(),i.calcSizeFactors()}i.controlbar.style.pointerEvents="inherit",i.content.style.pointerEvents="inherit",document.querySelectorAll("iframe").forEach(function(e){e.style.pointerEvents="auto"}),document.removeEventListener(o,h)}return i.querySelectorAll(d).forEach(function(l){l.style.touchAction="none",l.style.cursor=p,jsPanel.pointerdown.forEach(function(s){l.addEventListener(s,function(l){if(l.button&&l.button>0)return!1;if((n=Object.assign({},jsPanel.defaults.dragit,o)).disableOnMaximized&&"maximized"===i.status)return!1;if((n.containment||0===n.containment)&&(n.containment=jsPanel.pOcontainment(n.containment)),n.grid&&Array.isArray(n.grid)&&1===n.grid.length&&(n.grid[1]=n.grid[0]),n.snap&&("object"===_typeof(n.snap)?n.snap=Object.assign({},jsPanel.defaultSnapConfig,n.snap):n.snap=jsPanel.defaultSnapConfig),!l.target.closest(".jsPanel-ftr-btn")){i.controlbar.style.pointerEvents="none",i.content.style.pointerEvents="none",document.querySelectorAll("iframe").forEach(function(e){e.style.pointerEvents="none"});var s=window.getComputedStyle(i),d=parseFloat(s.left),p=parseFloat(s.top),h=parseFloat(s.width),f=parseFloat(s.height),u=l.touches?l.touches[0].clientX:l.clientX,m=l.touches?l.touches[0].clientY:l.clientY,g=i.parentElement,b=g.getBoundingClientRect(),y=window.getComputedStyle(g),v=i.getScaleFactor(),w=0;t=function(t){if(t.preventDefault(),!e){if(document.dispatchEvent(a),i.style.opacity=n.opacity,i.snapped&&n.snap.resizeToPreSnap&&i.currentData.beforeSnap){i.resize(i.currentData.beforeSnap.width+" "+i.currentData.beforeSnap.height),i.setControls([".jsPanel-btn-normalize"]);var o=i.getBoundingClientRect(),l=u-(o.left+o.width),s=o.width/2;l>-s&&(w=l+s)}if(i.front(),i.snapped=!1,"maximized"===i.status&&(i.setControls([".jsPanel-btn-normalize"]),i.status="normalized"),n.drop&&n.drop.dropZones){var c=n.drop.dropZones.map(function(e){return jsPanel.pOcontainer(e)}),j=[];c.forEach(function(e){e.length?e.forEach(function(e){j.push(e)}):j.push(e)}),j=j.filter(function(e,t,n){return n.indexOf(e)===t}),n.drop.dropZones=j}n.start.length&&jsPanel.processCallbacks(i,n.start,!1,{left:d,top:p,width:h,height:f},t)}var P,E,x,C,F,z,S,A,k,B;e=1;var T,L=t.touches?t.touches[0].clientX:t.clientX,R=t.touches?t.touches[0].clientY:t.clientY,W=window.getComputedStyle(i);if(g===document.body){var D=i.getBoundingClientRect();k=window.innerWidth-parseInt(y.borderLeftWidth,10)-parseInt(y.borderRightWidth,10)-(D.left+D.width),B=window.innerHeight-parseInt(y.borderTopWidth,10)-parseInt(y.borderBottomWidth,10)-(D.top+D.height)}else k=parseInt(y.width,10)-parseInt(y.borderLeftWidth,10)-parseInt(y.borderRightWidth,10)-(parseInt(W.left,10)+parseInt(W.width,10)),B=parseInt(y.height,10)-parseInt(y.borderTopWidth,10)-parseInt(y.borderBottomWidth,10)-(parseInt(W.top,10)+parseInt(W.height,10));P=parseFloat(W.left),x=parseFloat(W.top),F=k,S=B,n.snap&&("panel"===n.snap.trigger?(E=Math.pow(P,2),C=Math.pow(x,2),z=Math.pow(F,2),A=Math.pow(S,2)):"pointer"===n.snap.trigger&&("window"===i.options.container?(P=L,x=R,F=window.innerWidth-L,S=window.innerHeight-R,E=Math.pow(L,2),C=Math.pow(x,2),z=Math.pow(F,2),A=Math.pow(S,2)):(P=(T=i.overlaps(g,"paddingbox",t)).pointer.left,x=T.pointer.top,F=T.pointer.right,S=T.pointer.bottom,E=Math.pow(T.pointer.left,2),C=Math.pow(T.pointer.top,2),z=Math.pow(T.pointer.right,2),A=Math.pow(T.pointer.bottom,2))));var q=Math.sqrt(E+C),O=Math.sqrt(E+A),M=Math.sqrt(z+C),I=Math.sqrt(z+A),H=Math.abs(P-F)/2,N=Math.abs(x-S)/2,_=Math.sqrt(E+Math.pow(N,2)),X=Math.sqrt(C+Math.pow(H,2)),Y=Math.sqrt(z+Math.pow(N,2)),$=Math.sqrt(A+Math.pow(H,2));if(window.getSelection().removeAllRanges(),document.dispatchEvent(r),n.axis&&"x"!==n.axis||(i.style.left=d+(L-u)/v.x+w+"px"),n.axis&&"y"!==n.axis||(i.style.top=p+(R-m)/v.y+"px"),n.grid){var V=n.grid,Z=n.axis,U=V[0]*Math.round((d+(L-u))/V[0]),K=V[1]*Math.round((p+(R-m))/V[1]);Z&&"x"!==Z||(i.style.left="".concat(U,"px")),Z&&"y"!==Z||(i.style.top="".concat(K,"px"))}if(n.containment||0===n.containment){var G,J,Q=n.containment;if(i.options.container===document.body)G=window.innerWidth-parseFloat(W.width)-Q[1],J=window.innerHeight-parseFloat(W.height)-Q[2];else{var ee=parseFloat(y.borderLeftWidth)+parseFloat(y.borderRightWidth),te=parseFloat(y.borderTopWidth)+parseFloat(y.borderBottomWidth);G=b.width/v.x-parseFloat(W.width)-Q[1]-ee,J=b.height/v.y-parseFloat(W.height)-Q[2]-te}parseFloat(i.style.left)<=Q[3]&&(i.style.left=Q[3]+"px"),parseFloat(i.style.top)<=Q[0]&&(i.style.top=Q[0]+"px"),parseFloat(i.style.left)>=G&&(i.style.left=G+"px"),parseFloat(i.style.top)>=J&&(i.style.top=J+"px")}if(n.drag.length){var ne={left:P,top:x,right:F,bottom:S,width:parseFloat(W.width),height:parseFloat(W.height)};jsPanel.processCallbacks(i,n.drag,!1,ne,t)}if(n.snap){var oe=n.snap.sensitivity,ae=g===document.body?window.innerWidth/8:b.width/8,re=g===document.body?window.innerHeight/8:b.height/8;i.snappableTo=!1,jsPanel.removeSnapAreas(),q0&&T.pointer.top>0?(i.snappableTo="left-top",jsPanel.createSnapArea(i,"lt",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="left-top",jsPanel.createSnapArea(i,"lt",oe))):O0&&T.pointer.bottom>0?(i.snappableTo="left-bottom",jsPanel.createSnapArea(i,"lb",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="left-bottom",jsPanel.createSnapArea(i,"lb",oe))):M0&&T.pointer.top>0?(i.snappableTo="right-top",jsPanel.createSnapArea(i,"rt",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="right-top",jsPanel.createSnapArea(i,"rt",oe))):I0&&T.pointer.bottom>0?(i.snappableTo="right-bottom",jsPanel.createSnapArea(i,"rb",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="right-bottom",jsPanel.createSnapArea(i,"rb",oe))):x0?(i.snappableTo="center-top",jsPanel.createSnapArea(i,"ct",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="center-top",jsPanel.createSnapArea(i,"ct",oe))):P0?(i.snappableTo="left-center",jsPanel.createSnapArea(i,"lc",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="left-center",jsPanel.createSnapArea(i,"lc",oe))):F0?(i.snappableTo="right-center",jsPanel.createSnapArea(i,"rc",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="right-center",jsPanel.createSnapArea(i,"rc",oe))):S0?(i.snappableTo="center-bottom",jsPanel.createSnapArea(i,"cb",oe)):(i.snappableTo=!1,jsPanel.removeSnapAreas())):(i.snappableTo="center-bottom",jsPanel.createSnapArea(i,"cb",oe)))}if(n.drop&&n.drop.dropZones){var ie=jsPanel.isIE?"msElementsFromPoint":"elementsFromPoint",le=document[ie](t.clientX,t.clientY);Array.isArray(le)||(le=Array.prototype.slice.call(le)),n.drop.dropZones.forEach(function(e){le.includes(e)&&(i.droppableTo=e)}),le.includes(i.droppableTo)||(i.droppableTo=!1)}},jsPanel.pointermove.forEach(function(e){document.addEventListener(e,t)}),window.addEventListener("mouseout",c,!1)}})}),jsPanel.pointerup.forEach(function(e){document.addEventListener(e,h),window.removeEventListener("mouseout",c)}),o.disable&&(l.style.pointerEvents="none")}),i},i.dragit=function(e){var n=Object.assign({},jsPanel.defaults.dragit,t.dragit),o=i.querySelectorAll(n.handles);return"disable"===e?o.forEach(function(e){e.style.pointerEvents="none"}):o.forEach(function(e){e.style.pointerEvents="auto"}),i},i.sizeit=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new CustomEvent("jspanelresizestart",{detail:i.id}),n=new CustomEvent("jspanelresize",{detail:i.id}),o=new CustomEvent("jspanelresizestop",{detail:i.id});[t,n,o].forEach(function(e){e.panel=i});var a,r,l,s,c,d,p={};p.handles=e.handles||jsPanel.defaults.resizeit.handles,p.handles.split(",").forEach(function(e){var t=document.createElement("DIV");t.className="jsPanel-resizeit-handle jsPanel-resizeit-".concat(e.trim()),i.append(t)});var h=!!e.aspectRatio&&e.aspectRatio;function f(e){null===e.relatedTarget&&jsPanel.pointermove.forEach(function(e){document.removeEventListener(e,a,!1)})}function u(e){if(jsPanel.pointermove.forEach(function(e){document.removeEventListener(e,a,!1)}),e.target.classList&&e.target.classList.contains("jsPanel-resizeit-handle")){var t,n,l=e.target.className;if(l.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)&&(t=!0),l.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)&&(n=!0),p.grid&&Array.isArray(p.grid)){1===p.grid.length&&(p.grid[1]=p.grid[0]);var s=parseFloat(i.style.width),c=parseFloat(i.style.height),f=s%p.grid[0],m=c%p.grid[1],g=parseFloat(i.style.left),b=parseFloat(i.style.top),y=g%p.grid[0],v=b%p.grid[1];fd+5&&(w.style.transform="rotate(0deg)"),document.dispatchEvent(o),p.stop.length){var P=window.getComputedStyle(i),E={left:parseFloat(P.left),top:parseFloat(P.top),width:parseFloat(P.width),height:parseFloat(P.height)};jsPanel.processCallbacks(i,p.stop,!1,E,e)}}i.content.style.pointerEvents="inherit",document.querySelectorAll("iframe").forEach(function(e){e.style.pointerEvents="auto"}),p.aspectRatio=h,document.removeEventListener(e,u)}return i.querySelectorAll(".jsPanel-resizeit-handle").forEach(function(o){o.style.touchAction="none",jsPanel.pointerdown.forEach(function(h){o.addEventListener(h,function(o){if(o.preventDefault(),o.stopPropagation(),o.button&&o.button>0)return!1;var h=1;if(((p=Object.assign({},jsPanel.defaults.resizeit,e)).containment||0===p.containment)&&(p.containment=jsPanel.pOcontainment(p.containment)),p.aspectRatio&&!0===p.aspectRatio&&(p.aspectRatio="panel"),jsPanel.modifier){var u=jsPanel.modifier;u.altKey?p.aspectRatio="content":u.ctrlKey?p.aspectRatio="panel":u.shiftKey&&(p.aspectRatio=!1,h=2)}var m="function"==typeof p.maxWidth?p.maxWidth():p.maxWidth||1e4,g="function"==typeof p.maxHeight?p.maxHeight():p.maxHeight||1e4,b="function"==typeof p.minWidth?p.minWidth():p.minWidth,y="function"==typeof p.minHeight?p.minHeight():p.minHeight;i.content.style.pointerEvents="none",document.querySelectorAll("iframe").forEach(function(e){e.style.pointerEvents="none"});var v=i.parentElement,w=v.tagName.toLowerCase(),j=i.getBoundingClientRect(),P=v.getBoundingClientRect(),E=window.getComputedStyle(v,null),x=parseInt(E.borderLeftWidth,10),C=parseInt(E.borderTopWidth,10),F=E.getPropertyValue("position"),z=o.clientX||o.touches[0].clientX,S=o.clientY||o.touches[0].clientY,A=z/S,k=o.target.classList,B=i.getScaleFactor(),T=j.width/j.height,L=i.content.getBoundingClientRect(),R=L.width/L.height,W=i.header.getBoundingClientRect().height,D=i.footer.getBoundingClientRect().height||0,q=j.left,O=j.top,M=1e4,I=1e4,H=1e4,N=1e4;c=j.width,d=j.height,"body"!==w&&(q=j.left-P.left+v.scrollLeft,O=j.top-P.top+v.scrollTop),"body"===w&&p.containment?(M=document.documentElement.clientWidth-j.left,H=document.documentElement.clientHeight-j.top,I=j.width+j.left,N=j.height+j.top):p.containment&&("static"===F?(M=P.width-j.left+x,H=P.height+P.top-j.top+C,I=j.width+(j.left-P.left)-x,N=j.height+(j.top-P.top)-C):(M=v.clientWidth-(j.left-P.left)/B.x+x,H=v.clientHeight-(j.top-P.top)/B.y+C,I=(j.width+j.left-P.left)/B.x-x,N=i.clientHeight+(j.top-P.top)/B.y-C)),p.containment&&(I-=p.containment[3],N-=p.containment[0],M-=p.containment[1],H-=p.containment[2]);var _=window.getComputedStyle(i),X=parseFloat(_.width)-j.width,Y=parseFloat(_.height)-j.height,$=parseFloat(_.left)-j.left,V=parseFloat(_.top)-j.top;v!==document.body&&($+=P.left,V+=P.top);var Z=parseInt(_.borderTopWidth,10),U=parseInt(_.borderRightWidth,10),K=parseInt(_.borderBottomWidth,10),G=parseInt(_.borderLeftWidth,10);a=function(e){e.preventDefault(),r||(document.dispatchEvent(t),p.start.length&&jsPanel.processCallbacks(i,p.start,!1,{width:c,height:d,left:q,top:O},e),i.front(),j.height>d+5&&(i.status="normalized",i.setControls([".jsPanel-btn-normalize"]))),r=1,document.dispatchEvent(n);var o=e.touches?e.touches[0].clientX:e.clientX,a=e.touches?e.touches[0].clientY:e.clientY;k.contains("jsPanel-resizeit-e")?((l=c+(o-z)*h/B.x+X)>=M&&(l=M),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px",2===h&&(i.style.left=q-(o-z)+"px"),"content"===p.aspectRatio?(i.style.height=(l-U-G)/R+W+D+Z+K+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*R+"px")):"panel"===p.aspectRatio&&(i.style.height=l/T+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*T+"px"))):k.contains("jsPanel-resizeit-s")?((s=d+(a-S)*h/B.y+Y)>=H&&(s=H),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px",2===h&&(i.style.top=O-(a-S)+"px"),"content"===p.aspectRatio?(i.style.width=(s-W-D-Z-K)*R+Z+K+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/R+"px")):"panel"===p.aspectRatio&&(i.style.width=s*T+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/T+"px"))):k.contains("jsPanel-resizeit-w")?((l=c+(z-o)*h/B.x+X)<=m&&l>=b&&l<=I&&(i.style.left=q+(o-z)/B.x+$+"px"),l>=I&&(l=I),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px","content"===p.aspectRatio?(i.style.height=(l-U-G)/R+W+D+Z+K+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*R+"px")):"panel"===p.aspectRatio&&(i.style.height=l/T+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*T+"px"))):k.contains("jsPanel-resizeit-n")?((s=d+(S-a)*h/B.y+Y)<=g&&s>=y&&s<=N&&(i.style.top=O+(a-S)/B.y+V+"px"),s>=N&&(s=N),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px","content"===p.aspectRatio?(i.style.width=(s-W-D-Z-K)*R+Z+K+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/R+"px")):"panel"===p.aspectRatio&&(i.style.width=s*T+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/T+"px"))):k.contains("jsPanel-resizeit-se")?((l=c+(o-z)*h/B.x+X)>=M&&(l=M),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px",2===h&&(i.style.left=q-(o-z)+"px"),p.aspectRatio&&(i.style.height=l/T+"px"),(s=d+(a-S)*h/B.y+Y)>=H&&(s=H),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px",2===h&&(i.style.top=O-(a-S)+"px"),"content"===p.aspectRatio?(i.style.width=(s-W-D-Z-K)*R+Z+K+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/R+"px")):"panel"===p.aspectRatio&&(i.style.width=s*T+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/T+"px"))):k.contains("jsPanel-resizeit-sw")?((s=d+(a-S)*h/B.y+Y)>=H&&(s=H),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px",2===h&&(i.style.top=O-(a-S)+"px"),p.aspectRatio&&(i.style.width=s*T+"px"),(l=c+(z-o)*h/B.x+X)<=m&&l>=b&&l<=I&&(i.style.left=q+(o-z)/B.x+$+"px"),l>=I&&(l=I),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px","content"===p.aspectRatio?(i.style.height=(l-U-G)/R+W+D+Z+K+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*R+"px")):"panel"===p.aspectRatio&&(i.style.height=l/T+"px",p.containment&&i.overlaps(v).bottom<=p.containment[2]&&(i.style.height=H+"px",i.style.width=H*T+"px"))):k.contains("jsPanel-resizeit-ne")?((l=c+(o-z)*h/B.x+X)>=M&&(l=M),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px",2===h&&(i.style.left=q-(o-z)+"px"),p.aspectRatio&&(i.style.height=l/T+"px"),(s=d+(S-a)*h/B.y+Y)<=g&&s>=y&&s<=N&&(i.style.top=O+(a-S)/B.y+V+"px"),s>=N&&(s=N),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px","content"===p.aspectRatio?(i.style.width=(s-W-D-Z-K)*R+Z+K+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/R+"px")):"panel"===p.aspectRatio&&(i.style.width=s*T+"px",p.containment&&i.overlaps(v).right<=p.containment[1]&&(i.style.width=M+"px",i.style.height=M/T+"px"))):k.contains("jsPanel-resizeit-nw")&&(p.aspectRatio&&k.contains("jsPanel-resizeit-nw")&&(a=(o=a*A)/A),(l=c+(z-o)*h/B.x+X)<=m&&l>=b&&l<=I&&(i.style.left=q+(o-z)/B.x+$+"px"),l>=I&&(l=I),l>=m&&(l=m),l<=b&&(l=b),i.style.width=l+"px",p.aspectRatio&&(i.style.height=l/T+"px"),(s=d+(S-a)*h/B.y+Y)<=g&&s>=y&&s<=N&&(i.style.top=O+(a-S)/B.y+V+"px"),s>=N&&(s=N),s>=g&&(s=g),s<=y&&(s=y),i.style.height=s+"px","content"===p.aspectRatio?i.style.width=(s-W-D-Z-K)*R+Z+K+"px":"panel"===p.aspectRatio&&(i.style.width=s*T+"px")),window.getSelection().removeAllRanges();var f=window.getComputedStyle(i),u={left:parseFloat(f.left),top:parseFloat(f.top),right:parseFloat(f.right),bottom:parseFloat(f.bottom),width:parseFloat(f.width),height:parseFloat(f.height)};p.resize.length&&jsPanel.processCallbacks(i,p.resize,!1,u,e)},jsPanel.pointermove.forEach(function(e){document.addEventListener(e,a,!1)}),window.addEventListener("mouseout",f,!1)})}),jsPanel.pointerup.forEach(function(e){document.addEventListener(e,u),window.removeEventListener("mouseout",f)}),e.disable&&(o.style.pointerEvents="none")}),i},i.resizeit=function(e){var t=i.querySelectorAll(".jsPanel-resizeit-handle");return"disable"===e?t.forEach(function(e){e.style.pointerEvents="none"}):t.forEach(function(e){e.style.pointerEvents="auto"}),i},i.getScaleFactor=function(){var e=i.getBoundingClientRect();return{x:e.width/i.offsetWidth,y:e.height/i.offsetHeight}},i.calcSizeFactors=function(){var e=window.getComputedStyle(i);if("window"===t.container)i.hf=parseFloat(e.left)/(window.innerWidth-parseFloat(e.width)),i.vf=parseFloat(e.top)/(window.innerHeight-parseFloat(e.height));else if(i.parentElement){var n=i.parentElement.getBoundingClientRect();i.hf=parseFloat(e.left)/(n.width-parseFloat(e.width)),i.vf=parseFloat(e.top)/(n.height-parseFloat(e.height))}},i.saveCurrentDimensions=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=window.getComputedStyle(i);i.currentData.width=t.width,"normalized"===i.status&&(i.currentData.height=t.height),e&&(i.style.height=t.height)},i.saveCurrentPosition=function(){var e=window.getComputedStyle(i);i.currentData.left=e.left,i.currentData.top=e.top},i.reposition=function(){for(var e,n=t.position,o=!0,a=arguments.length,r=new Array(a),l=0;l0&&i.slaves.forEach(function(e){e.reposition()}),o&&i.saveCurrentPosition(),e&&e.call(i,i),i},i.repositionOnSnap=function(e){var n="0",o="0",a=jsPanel.pOcontainment(t.dragit.containment);if(t.dragit.snap.containment)switch(e){case"left-top":n=a[3],o=a[0];break;case"right-top":n=-a[1],o=a[0];break;case"right-bottom":n=-a[1],o=-a[2];break;case"left-bottom":n=a[3],o=-a[2];break;case"center-top":n=a[3]/2-a[1]/2,o=a[0];break;case"center-bottom":n=a[3]/2-a[1]/2,o=-a[2];break;case"left-center":n=a[3],o=a[0]/2-a[2]/2;break;case"right-center":n=-a[1],o=a[0]/2-a[2]/2}jsPanel.position(i,e),jsPanel.setStyle(i,{left:"calc(".concat(i.style.left," + ").concat(n,"px)"),top:"calc(".concat(i.style.top," + ").concat(o,"px)")})},i.overlaps=function(e,t,n){var o,a=i.getBoundingClientRect(),r=getComputedStyle(i.parentElement),l=i.getScaleFactor(),s={top:0,right:0,bottom:0,left:0},c=0,d=0,p=0,h=0;"window"!==i.options.container&&"paddingbox"===t&&(s.top=parseInt(r.borderTopWidth,10)*l.y,s.right=parseInt(r.borderRightWidth,10)*l.x,s.bottom=parseInt(r.borderBottomWidth,10)*l.y,s.left=parseInt(r.borderLeftWidth,10)*l.x),o="string"==typeof e?"window"===e?{left:0,top:0,right:window.innerWidth,bottom:window.innerHeight}:"parent"===e?i.parentElement.getBoundingClientRect():document.querySelector(e).getBoundingClientRect():e.getBoundingClientRect(),n&&(c=n.touches?n.touches[0].clientX:n.clientX,d=n.touches?n.touches[0].clientY:n.clientY,p=c-o.left,h=d-o.top);var f=a.lefto.left,u=a.topo.top;return{overlaps:f&&u,top:a.top-o.top-s.top,right:o.right-a.right-s.right,bottom:o.bottom-a.bottom-s.bottom,left:a.left-o.left-s.left,parentBorderWidth:s,panelRect:a,referenceRect:o,pointer:{clientX:c,clientY:d,left:p-s.left,top:h-s.top,right:o.width-p-s.right,bottom:o.height-h-s.bottom}}},i.setSize=function(){if(t.panelSize){var e=jsPanel.pOsize(i,t.panelSize);i.style.width=e.width,i.style.height=e.height}else if(t.contentSize){var n=jsPanel.pOsize(i,t.contentSize);i.content.style.width=n.width,i.content.style.height=n.height,i.style.width=n.width,i.content.style.width="100%"}return i},i.resize=function(){for(var e,t=window.getComputedStyle(i),n={width:t.width,height:t.height},o=!0,a=arguments.length,r=new Array(a),l=0;l0&&i.slaves.forEach(function(e){e.reposition()}),o&&i.saveCurrentDimensions(),i.status="normalized";var c=i.controlbar.querySelector(".jsPanel-btn-smallify");return c&&(c.style.transform="rotate(0deg)"),e&&e.call(i,i),i.calcSizeFactors(),i},i.windowResizeHandler=function(e){if(e.target===window){var n,o,a=i.status,r=t.onwindowresize;"maximized"===a&&r?i.maximize(!1,!0):i.snapped&&"minimized"!==a?i.snap(i.snapped,!0):"normalized"===a||"smallified"===a||"maximized"===a?"function"==typeof r?r.call(i,e,i):(n=(window.innerWidth-i.offsetWidth)*i.hf,i.style.left=n<=0?0:n+"px",o=(window.innerHeight-i.offsetHeight)*i.vf,i.style.top=o<=0?0:o+"px"):"smallifiedmax"===a&&r&&i.maximize(!1,!0).smallify(),i.slaves&&i.slaves.size>0&&i.slaves.forEach(function(e){e.reposition()})}},i.setControls=function(e,t){return i.header.querySelectorAll(".jsPanel-btn").forEach(function(e){var t=e.className.split("-"),n=t[t.length-1];"hidden"!==i.getAttribute("data-btn".concat(n))&&(e.style.display="block")}),e.forEach(function(e){var t=i.controlbar.querySelector(e);t&&(t.style.display="none")}),t&&t.call(i,i),i},i.setControlStatus=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"enable",n=arguments.length>2?arguments[2]:void 0,o=i.controlbar.querySelector(".jsPanel-btn-".concat(e));switch(t){case"disable":"removed"!==i.getAttribute("data-btn".concat(e))&&(i.setAttribute("data-btn".concat(e),"disabled"),o.style.pointerEvents="none",o.style.opacity=.4,o.style.cursor="default");break;case"hide":"removed"!==i.getAttribute("data-btn".concat(e))&&(i.setAttribute("data-btn".concat(e),"hidden"),o.style.display="none");break;case"show":"removed"!==i.getAttribute("data-btn".concat(e))&&(i.setAttribute("data-btn".concat(e),"enabled"),o.style.display="block",o.style.pointerEvents="auto",o.style.opacity=1,o.style.cursor="pointer");break;case"enable":"removed"!==i.getAttribute("data-btn".concat(e))&&("hidden"===i.getAttribute("data-btn".concat(e))&&(o.style.display="block"),i.setAttribute("data-btn".concat(e),"enabled"),o.style.pointerEvents="auto",o.style.opacity=1,o.style.cursor="pointer");break;case"remove":i.controlbar.removeChild(o),i.setAttribute("data-btn".concat(e),"removed")}return n&&n.call(i,i),i},i.setControlSize=function(e){var t=e.toLowerCase();i.controlbar.querySelectorAll(".jsPanel-btn").forEach(function(e){["jsPanel-btn-xl","jsPanel-btn-lg","jsPanel-btn-md","jsPanel-btn-sm","jsPanel-btn-xs"].forEach(function(t){e.classList.remove(t)}),e.classList.add("jsPanel-btn-".concat(t))}),"xl"===t?i.titlebar.style.fontSize="1.5rem":"lg"===t?i.titlebar.style.fontSize="1.25rem":"md"===t?i.titlebar.style.fontSize="1.05rem":"sm"===t?i.titlebar.style.fontSize=".9rem":"xs"===t&&(i.titlebar.style.fontSize=".8rem")},i.setHeaderControls=function(e){if(i.options.headerControls.add){var n=i.options.headerControls.add;Array.isArray(n)||(n=[n]),n.forEach(function(e){i.addControl(e)})}var o=[];i.controlbar.querySelectorAll(".jsPanel-btn").forEach(function(e){var t=e.className.match(/jsPanel-btn-[a-z0-9]{3,}/i)[0].substring(12);o.push(t)});var a=jsPanel.pOheaderControls(t.headerControls);return t.headerControls=a,o.forEach(function(e){a[e]&&i.setControlStatus(e,a[e])}),i.setControlSize(a.size),e&&e.call(i,i),i},i.setHeaderLogo=function(e,t){var n=[i.headerlogo],o=document.querySelector("#"+i.id+"-min");return o&&n.push(o.querySelector(".jsPanel-headerlogo")),"string"==typeof e?"<"!==e.substr(0,1)?n.forEach(function(t){jsPanel.emptyNode(t);var n=document.createElement("img");n.src=e,t.append(n)}):n.forEach(function(t){t.innerHTML=e}):n.forEach(function(t){jsPanel.emptyNode(t),t.append(e)}),i.headerlogo.childNodes.forEach(function(e){e.nodeName&&"IMG"===e.nodeName&&e.setAttribute("draggable","false")}),t&&t.call(i,i),i},i.setHeaderRemove=function(e){return i.removeChild(i.header),i.content.classList.add("jsPanel-content-noheader"),["close","maximize","normalize","minimize","smallify"].forEach(function(e){i.setAttribute("data-btn".concat(e),"removed")}),e&&e.call(i,i),i},i.setHeaderTitle=function(e,t){var n=[i.headertitle],o=document.querySelector("#"+i.id+"-min");return o&&n.push(o.querySelector(".jsPanel-title")),"string"==typeof e?n.forEach(function(t){t.innerHTML=e}):"function"==typeof e?n.forEach(function(t){jsPanel.emptyNode(t),t.innerHTML=e()}):n.forEach(function(t){jsPanel.emptyNode(t),t.append(e)}),t&&t.call(i,i),i},i.setIconfont=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i,n=arguments.length>2?arguments[2]:void 0;if(e){var o,a;if("fa"===e||"far"===e||"fal"===e||"fas"===e||"fad"===e)o=["".concat(e," fa-window-close"),"".concat(e," fa-window-maximize"),"".concat(e," fa-window-restore"),"".concat(e," fa-window-minimize"),"".concat(e," fa-chevron-up")];else if("material-icons"===e)o=[e,e,e,e,e,e],a=["close","fullscreen","fullscreen_exit","call_received","expand_less"];else if(Array.isArray(e))o=["custom-control-icon ".concat(e[4]),"custom-control-icon ".concat(e[3]),"custom-control-icon ".concat(e[2]),"custom-control-icon ".concat(e[1]),"custom-control-icon ".concat(e[0])];else{if("bootstrap"!==e&&"glyphicon"!==e)return t;o=["glyphicon glyphicon-remove","glyphicon glyphicon-fullscreen","glyphicon glyphicon-resize-full","glyphicon glyphicon-minus","glyphicon glyphicon-chevron-up"]}t.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(function(e){jsPanel.emptyNode(e).innerHTML=""}),Array.prototype.slice.call(t.querySelectorAll(".jsPanel-controlbar .jsPanel-btn > span")).reverse().forEach(function(t,n){t.className=o[n],"material-icons"===e&&(t.textContent=a[n])})}return n&&n.call(t,t),t},i.addToolbar=function(e,t,n){if("header"===e?e=i.headertoolbar:"footer"===e&&(e=i.footer),"string"==typeof t)e.innerHTML=t;else if(Array.isArray(t))t.forEach(function(t){"string"==typeof t?e.innerHTML+=t:e.append(t)});else if("function"==typeof t){var o=t.call(i,i);"string"==typeof o?e.innerHTML=o:e.append(o)}else e.append(t);return e.classList.add("active"),n&&n.call(i,i),i},i.addCloseControl=function(){var e=document.createElement("button"),t=i.content.style.color;return e.classList.add("jsPanel-addCloseCtrl"),e.innerHTML=jsPanel.icons.close,e.style.color=t,i.options.rtl&&e.classList.add("rtl"),i.appendChild(e),jsPanel.pointerup.forEach(function(t){e.addEventListener(t,function(e){if(e.preventDefault(),e.button&&e.button>0)return!1;i.close(null,!0)})}),jsPanel.pointerdown.forEach(function(t){e.addEventListener(t,function(e){e.preventDefault()})}),i},i.addControl=function(e){if(!e.html)return i;e.position||(e.position=1);var n=i.controlbar.querySelectorAll(".jsPanel-btn").length,o=document.createElement("button");o.innerHTML=e.html,o.className="jsPanel-btn jsPanel-btn-".concat(e.name," jsPanel-btn-").concat(t.headerControls.size),o.style.color=i.header.style.color,e.position>n?i.controlbar.append(o):i.controlbar.insertBefore(o,i.querySelector(".jsPanel-controlbar .jsPanel-btn:nth-child(".concat(e.position,")")));var a=e.ariaLabel||e.name;return a&&o.setAttribute("aria-label",a),jsPanel.pointerup.forEach(function(t){o.addEventListener(t,function(t){if(t.preventDefault(),t.button&&t.button>0)return!1;e.handler.call(i,i,o)})}),e.afterInsert&&e.afterInsert.call(o,o),i},i.setRtl=function(){[i.header,i.content,i.footer].forEach(function(e){e.dir="rtl",t.rtl.lang&&(e.lang=t.rtl.lang)})},i.id=t.id,i.classList.add("jsPanel-"+t.paneltype),"standard"===t.paneltype&&(i.style.zIndex=this.zi.next()),r.append(i),i.front(!1,!1),i.setTheme(t.theme),t.boxShadow&&i.classList.add("jsPanel-depth-".concat(t.boxShadow)),t.header){if(t.headerLogo&&i.setHeaderLogo(t.headerLogo),i.setIconfont(t.iconfont),i.setHeaderTitle(t.headerTitle),i.setHeaderControls(),jsPanel.isIE){var k=[i.headerbar,i.controlbar];switch(i.options.headerControls.size){case"md":k.forEach(function(e){e.style.height="34px"});break;case"xs":k.forEach(function(e){e.style.height="26px"});break;case"sm":k.forEach(function(e){e.style.height="30px"});break;case"lg":k.forEach(function(e){e.style.height="38px"});break;case"xl":k.forEach(function(e){e.style.height="42px"})}}if("auto-show-hide"===t.header){var B="jsPanel-depth-"+t.boxShadow;i.header.style.opacity=0,i.style.backgroundColor="transparent",this.remClass(i,B),this.setClass(i.content,B),i.header.addEventListener("mouseenter",function(){i.header.style.opacity=1,jsPanel.setClass(i,B),jsPanel.remClass(i.content,B)}),i.header.addEventListener("mouseleave",function(){i.header.style.opacity=0,jsPanel.remClass(i,B),jsPanel.setClass(i.content,B)})}}else i.setHeaderRemove(),t.addCloseControl&&i.addCloseControl();if(t.headerToolbar&&i.addToolbar(i.headertoolbar,t.headerToolbar),t.footerToolbar&&i.addToolbar(i.footer,t.footerToolbar),t.border&&i.setBorder(t.border),t.borderRadius&&i.setBorderRadius(t.borderRadius),t.content&&("function"==typeof t.content?t.content.call(i,i):"string"==typeof t.content?i.content.innerHTML=t.content:i.content.append(t.content)),t.contentAjax&&this.ajax(t.contentAjax,i),t.contentFetch&&this.fetch(t.contentFetch,i),t.contentOverflow){var T=t.contentOverflow.split(" ");1===T.length?i.content.style.overflow=T[0]:2===T.length&&(i.content.style.overflowX=T[0],i.content.style.overflowY=T[1])}if(t.autoclose){"number"==typeof t.autoclose?t.autoclose={time:t.autoclose+"ms"}:"string"==typeof t.autoclose&&(t.autoclose={time:t.autoclose});var L=Object.assign({},jsPanel.defaultAutocloseConfig,t.autoclose);L.time&&"number"==typeof L.time&&(L.time+="ms");var R=i.progressbar.querySelector("div");R.addEventListener("animationend",function(e){e.stopPropagation(),i.progressbar.classList.remove("active"),i.close()}),L.progressbar&&(i.progressbar.classList.add("active"),L.background?jsPanel.themes.indexOf(L.background)>-1?i.progressbar.classList.add(L.background+"-bg"):jsPanel.colorNames[L.background]?i.progressbar.style.background="#"+jsPanel.colorNames[L.background]:i.progressbar.style.background=L.background:i.progressbar.classList.add("success-bg")),R.style.animation="".concat(L.time," progressbar")}if(t.rtl&&i.setRtl(),i.setSize(),i.status="normalized",t.position?this.position(i,t.position):i.style.opacity=1,document.dispatchEvent(d),i.calcSizeFactors(),t.animateIn&&(i.addEventListener("animationend",function(){e.remClass(i,t.animateIn)}),this.setClass(i,t.animateIn)),t.syncMargins){var W=this.pOcontainment(t.maximizedMargin);t.dragit&&(t.dragit.containment=W,!0===t.dragit.snap?(t.dragit.snap=jsPanel.defaultSnapConfig,t.dragit.snap.containment=!0):t.dragit.snap&&(t.dragit.snap.containment=!0)),t.resizeit&&(t.resizeit.containment=W)}if(t.dragit?(["start","drag","stop"].forEach(function(e){t.dragit[e]?"function"==typeof t.dragit[e]&&(t.dragit[e]=[t.dragit[e]]):t.dragit[e]=[]}),i.drag(t.dragit),i.addEventListener("jspaneldragstop",function(e){e.panel===i&&i.calcSizeFactors()},!1)):i.titlebar.style.cursor="default",t.resizeit){["start","resize","stop"].forEach(function(e){t.resizeit[e]?"function"==typeof t.resizeit[e]&&(t.resizeit[e]=[t.resizeit[e]]):t.resizeit[e]=[]}),i.sizeit(t.resizeit);var D=void 0;i.addEventListener("jspanelresizestart",function(e){e.panel===i&&(D=i.status)},!1),i.addEventListener("jspanelresizestop",function(e){e.panel===i&&("smallified"===D||"smallifiedmax"===D||"maximized"===D)&&parseFloat(i.style.height)>parseFloat(window.getComputedStyle(i.header).height)&&(i.setControls([".jsPanel-btn-normalize"]),i.status="normalized",document.dispatchEvent(d),document.dispatchEvent(s),t.onstatuschange&&jsPanel.processCallbacks(i,t.onstatuschange,"every"),i.calcSizeFactors())},!1)}if(i.saveCurrentDimensions(!0),i.saveCurrentPosition(),t.setStatus&&("smallifiedmax"===t.setStatus?i.maximize().smallify():"smallified"===t.setStatus?i.smallify():i[t.setStatus.substr(0,t.setStatus.length-1)]()),this.pointerdown.forEach(function(e){i.addEventListener(e,function(e){e.target.closest(".jsPanel-btn-close")||e.target.closest(".jsPanel-btn-minimize")||"standard"!==t.paneltype||i.front()},!1)}),t.onwindowresize&&"window"===i.options.container&&window.addEventListener("resize",i.windowResizeHandler,!1),t.onparentresize){var q=t.onparentresize,O=i.isChildpanel();if(O){var M=O.content,I=[];i.parentResizeHandler=function(e){if(e.panel===O){I[0]=M.offsetWidth,I[1]=M.offsetHeight;var t,n,o=i.status;"maximized"===o&&q?i.maximize():i.snapped&&"minimized"!==o?i.snap(i.snapped,!0):"normalized"===o||"smallified"===o||"maximized"===o?"function"==typeof q?q.call(i,i,{width:I[0],height:I[1]}):(t=(I[0]-i.offsetWidth)*i.hf,i.style.left=t<=0?0:t+"px",n=(I[1]-i.offsetHeight)*i.vf,i.style.top=n<=0?0:n+"px"):"smallifiedmax"===o&&q&&i.maximize().smallify()}},document.addEventListener("jspanelresize",i.parentResizeHandler,!1)}}return this.globalCallbacks&&(Array.isArray(this.globalCallbacks)?this.globalCallbacks.forEach(function(e){e.call(i,i)}):this.globalCallbacks.call(i,i)),t.callback&&(Array.isArray(t.callback)?t.callback.forEach(function(e){e.call(i,i)}):t.callback.call(i,i)),n&&n.call(i,i),document.dispatchEvent(l),i}};"undefined"!=typeof module&&(module.exports=jsPanel); \ No newline at end of file diff --git a/es6module/extensions/contextmenu/jspanel.contextmenu.js b/es6module/extensions/contextmenu/jspanel.contextmenu.js index a1da40d..415d4a2 100644 --- a/es6module/extensions/contextmenu/jspanel.contextmenu.js +++ b/es6module/extensions/contextmenu/jspanel.contextmenu.js @@ -11,8 +11,8 @@ import {jsPanel} from '../../jspanel.js'; if (!jsPanel.contextmenu) { jsPanel.contextmenu = { - version: '1.1.3', - date: '2020-04-26 08:07', + version: '1.2.0', + date: '2021-01-13 10:40', defaults: { //position: is set in jsPanel.contextmenu.create() @@ -20,7 +20,8 @@ if (!jsPanel.contextmenu) { dragit: false, resizeit: false, header: false, - headerControls: 'none' + headerControls: 'none', + closeOnMouseleave: true }, cmOverflow(elmt) { @@ -106,13 +107,15 @@ if (!jsPanel.contextmenu) { // update left/top values if menu overflows browser viewport jsPanel.contextmenu.cmOverflow(cm); - cm.addEventListener( - 'mouseleave', - () => { - cm.close(); - }, - false - ); + if (opts.closeOnMouseleave) { + cm.addEventListener( + 'mouseleave', + () => { + cm.close(); + }, + false + ); + } // don't close contextmenu on mousedown in contextmenu jsPanel.pointerdown.forEach(function(evt) { cm.addEventListener(evt, function(e) { diff --git a/es6module/extensions/contextmenu/jspanel.contextmenu.min.js b/es6module/extensions/contextmenu/jspanel.contextmenu.min.js index 1cb33b2..d187a10 100644 --- a/es6module/extensions/contextmenu/jspanel.contextmenu.min.js +++ b/es6module/extensions/contextmenu/jspanel.contextmenu.min.js @@ -1 +1 @@ -import{jsPanel}from"../../jspanel.js";jsPanel.contextmenu||(jsPanel.contextmenu={version:"1.1.3",date:"2020-04-26 08:07",defaults:{dragit:!1,resizeit:!1,header:!1,headerControls:"none"},cmOverflow(e){let t=e.cmEvent.clientX,n=e.cmEvent.clientY,o=e.offsetWidth,s=e.offsetHeight,l=window.innerWidth-(t+o),a=window.innerHeight-(n+s);l<0&&(e.style.left=t+(window.scrollX||window.pageXOffset)-o+"px"),a<0&&(e.style.top=n+(window.scrollY||window.pageYOffset)-s+"px")},create(e={},t="contextmenu"){e.paneltype="contextmenu";let n=e.target;if(!n)return!1;"string"==typeof n&&(n=document.querySelector(n)),n.addEventListener(t,t=>{t.preventDefault(),document.querySelectorAll(".jsPanel-contextmenu").forEach(e=>{e.close()});let o=(t.pageX||t.touches[0].pageX)+"px",s=(t.pageY||t.touches[0].pageY)+"px",l=e;e.config&&delete(l=Object.assign({},e.config,e)).config,l=Object.assign({},this.defaults,l,{position:!1,container:"body"}),jsPanel.create(l,e=>{jsPanel.setStyle(e,{position:"absolute",left:o,top:s});let l=n.closest(".jsPanel-modal");if(l)e.style.zIndex=l.style.zIndex;else{let t=n.closest(".jsPanel");t&&t.front(),e.style.zIndex=jsPanel.zi.next()}e.cmEvent=t,jsPanel.contextmenu.cmOverflow(e),e.addEventListener("mouseleave",()=>{e.close()},!1),jsPanel.pointerdown.forEach(function(t){e.addEventListener(t,function(e){e.stopPropagation()})})})},!1)}},jsPanel.ajaxAlwaysCallbacks.push(function(e,t){t&&t.classList&&t.classList.contains("jsPanel-contextmenu")&&jsPanel.contextmenu.cmOverflow(t)}),jsPanel.pointerdown.forEach(function(e){document.addEventListener(e,function(e){document.querySelectorAll(".jsPanel-contextmenu").forEach(function(t){e.target.closest(".jsPanel-contextmenu")||t.close()})},!1)})); \ No newline at end of file +import{jsPanel}from"../../jspanel.js";jsPanel.contextmenu||(jsPanel.contextmenu={version:"1.2.0",date:"2021-01-13 10:40",defaults:{dragit:!1,resizeit:!1,header:!1,headerControls:"none",closeOnMouseleave:!0},cmOverflow(e){let t=e.cmEvent.clientX,n=e.cmEvent.clientY,o=e.offsetWidth,s=e.offsetHeight,l=window.innerWidth-(t+o),a=window.innerHeight-(n+s);l<0&&(e.style.left=t+(window.scrollX||window.pageXOffset)-o+"px"),a<0&&(e.style.top=n+(window.scrollY||window.pageYOffset)-s+"px")},create(e={},t="contextmenu"){e.paneltype="contextmenu";let n=e.target;if(!n)return!1;"string"==typeof n&&(n=document.querySelector(n)),n.addEventListener(t,t=>{t.preventDefault(),document.querySelectorAll(".jsPanel-contextmenu").forEach(e=>{e.close()});let o=(t.pageX||t.touches[0].pageX)+"px",s=(t.pageY||t.touches[0].pageY)+"px",l=e;e.config&&delete(l=Object.assign({},e.config,e)).config,l=Object.assign({},this.defaults,l,{position:!1,container:"body"}),jsPanel.create(l,e=>{jsPanel.setStyle(e,{position:"absolute",left:o,top:s});let a=n.closest(".jsPanel-modal");if(a)e.style.zIndex=a.style.zIndex;else{let t=n.closest(".jsPanel");t&&t.front(),e.style.zIndex=jsPanel.zi.next()}e.cmEvent=t,jsPanel.contextmenu.cmOverflow(e),l.closeOnMouseleave&&e.addEventListener("mouseleave",()=>{e.close()},!1),jsPanel.pointerdown.forEach(function(t){e.addEventListener(t,function(e){e.stopPropagation()})})})},!1)}},jsPanel.ajaxAlwaysCallbacks.push(function(e,t){t&&t.classList&&t.classList.contains("jsPanel-contextmenu")&&jsPanel.contextmenu.cmOverflow(t)}),jsPanel.pointerdown.forEach(function(e){document.addEventListener(e,function(e){document.querySelectorAll(".jsPanel-contextmenu").forEach(function(t){e.target.closest(".jsPanel-contextmenu")||t.close()})},!1)})); \ No newline at end of file diff --git a/es6module/extensions/layout/jspanel.layout.js b/es6module/extensions/layout/jspanel.layout.js index fa9a910..4135801 100644 --- a/es6module/extensions/layout/jspanel.layout.js +++ b/es6module/extensions/layout/jspanel.layout.js @@ -11,8 +11,8 @@ import {jsPanel} from '../../jspanel.js'; if (!jsPanel.layout) { jsPanel.layout = { - version: '1.4.0', - date: '2020-03-09 13:54', + version: '1.4.1', + date: '2021-01-19 10:50', storage: localStorage, save(saveConfig = {}) { @@ -116,7 +116,7 @@ if (!jsPanel.layout) { }; let useConfig = Object.assign({}, config, savedConfig); - jsPanel.create(useConfig, panel => { + return jsPanel.create(useConfig, panel => { panel.style.zIndex = savedConfig.zIndex; panel.saveCurrentDimensions(); panel.saveCurrentPosition(); diff --git a/es6module/extensions/layout/jspanel.layout.min.js b/es6module/extensions/layout/jspanel.layout.min.js index 66b6b8f..001e0af 100644 --- a/es6module/extensions/layout/jspanel.layout.min.js +++ b/es6module/extensions/layout/jspanel.layout.min.js @@ -1 +1 @@ -import{jsPanel}from"../../jspanel.js";jsPanel.layout||(jsPanel.layout={version:"1.4.0",date:"2020-03-09 13:54",storage:localStorage,save(e={}){let t=e.selector?e.selector:".jsPanel-standard",s=e.storagename?e.storagename:"jspanels";const i=document.querySelectorAll(t);let a=[];i.forEach(e=>{let t=e.currentData;t.status=e.status,t.zIndex=e.style.zIndex,t.id=e.id,t.data=e.options.data||void 0,a.push(t)}),a.sort(function(e,t){return e.zIndex-t.zIndex}),this.storage.removeItem(s);let r=JSON.stringify(a);return this.storage.setItem(s,r),r},getAll(e="jspanels"){return!!this.storage[e]&&JSON.parse(this.storage[e])},getDataset(e,t="id",s="jspanels",i=!1){if(this.storage[s]){let a,r=this.getAll(s);return i&&(a=[]),r.forEach(s=>{let i=typeof s[t];if("string"===i||"number"===i)s[t]===e&&(a?a.push(s):a=s);else if(Array.isArray(s[t]))s[t].includes(e)&&(a?a.push(s):a=s);else if("object"==typeof s[t])for(const i in s[t])if(s[t][i]===e){if(!a){a=s;break}a.push(s)}}),a||!1}return!1},restoreId(e={}){let t,s,i;if(!e.id||!e.config)return console.error("Id or predefined panel configuration is missing!"),!1;t=e.id,s=e.config,i=e.storagename?e.storagename:"jspanels";let a=this.getDataset(t,"id",i);if(a){let e={id:a.id,panelSize:{width:a.width,height:a.height},position:`left-top ${a.left} ${a.top}`,zIndex:a.zIndex},t=Object.assign({},s,e);jsPanel.create(t,t=>{t.style.zIndex=e.zIndex,t.saveCurrentDimensions(),t.saveCurrentPosition(),t.calcSizeFactors(),"normalized"!==a.status&&("minimized"===a.status?t.minimize():"maximized"===a.status?t.maximize():"smallified"===a.status?t.smallify():"smallifiedmax"===a.status&&t.maximize().smallify())})}},restore(e={}){let t,s;if(!e.configs)return console.error("Object with predefined panel configurations is missing!"),!1;if(t=e.configs,s=e.storagename?e.storagename:"jspanels",!this.storage[s])return!1;this.getAll(s).forEach(function(e){let i=e.id;for(let e in t)Object.prototype.hasOwnProperty.call(t,e)&&t[e].id===i&&jsPanel.layout.restoreId({id:i,config:t[e],storagename:s})})}}); \ No newline at end of file +import{jsPanel}from"../../jspanel.js";jsPanel.layout||(jsPanel.layout={version:"1.4.1",date:"2021-01-19 10:50",storage:localStorage,save(e={}){let t=e.selector?e.selector:".jsPanel-standard",s=e.storagename?e.storagename:"jspanels";const i=document.querySelectorAll(t);let a=[];i.forEach(e=>{let t=e.currentData;t.status=e.status,t.zIndex=e.style.zIndex,t.id=e.id,t.data=e.options.data||void 0,a.push(t)}),a.sort(function(e,t){return e.zIndex-t.zIndex}),this.storage.removeItem(s);let r=JSON.stringify(a);return this.storage.setItem(s,r),r},getAll(e="jspanels"){return!!this.storage[e]&&JSON.parse(this.storage[e])},getDataset(e,t="id",s="jspanels",i=!1){if(this.storage[s]){let a,r=this.getAll(s);return i&&(a=[]),r.forEach(s=>{let i=typeof s[t];if("string"===i||"number"===i)s[t]===e&&(a?a.push(s):a=s);else if(Array.isArray(s[t]))s[t].includes(e)&&(a?a.push(s):a=s);else if("object"==typeof s[t])for(const i in s[t])if(s[t][i]===e){if(!a){a=s;break}a.push(s)}}),a||!1}return!1},restoreId(e={}){let t,s,i;if(!e.id||!e.config)return console.error("Id or predefined panel configuration is missing!"),!1;t=e.id,s=e.config,i=e.storagename?e.storagename:"jspanels";let a=this.getDataset(t,"id",i);if(a){let e={id:a.id,panelSize:{width:a.width,height:a.height},position:`left-top ${a.left} ${a.top}`,zIndex:a.zIndex},t=Object.assign({},s,e);return jsPanel.create(t,t=>{t.style.zIndex=e.zIndex,t.saveCurrentDimensions(),t.saveCurrentPosition(),t.calcSizeFactors(),"normalized"!==a.status&&("minimized"===a.status?t.minimize():"maximized"===a.status?t.maximize():"smallified"===a.status?t.smallify():"smallifiedmax"===a.status&&t.maximize().smallify())})}},restore(e={}){let t,s;if(!e.configs)return console.error("Object with predefined panel configurations is missing!"),!1;if(t=e.configs,s=e.storagename?e.storagename:"jspanels",!this.storage[s])return!1;this.getAll(s).forEach(function(e){let i=e.id;for(let e in t)Object.prototype.hasOwnProperty.call(t,e)&&t[e].id===i&&jsPanel.layout.restoreId({id:i,config:t[e],storagename:s})})}}); \ No newline at end of file diff --git a/es6module/jspanel.js b/es6module/jspanel.js index ce2e390..74c1e9a 100644 --- a/es6module/jspanel.js +++ b/es6module/jspanel.js @@ -9,8 +9,8 @@ export // eslint-disable-next-line no-redeclare let jsPanel = { - version: '4.11.2', - date: '2020-12-09 10:10', + version: '4.11.3', + date: '2021-02-03 16:21', ajaxAlwaysCallbacks: [], autopositionSpacing: 4, closeOnEscape: (() => { @@ -3128,7 +3128,7 @@ let jsPanel = { let handles = options.handles || jsPanel.defaults.dragit.handles; let cursor = options.cursor || jsPanel.defaults.dragit.cursor; - function pointerUpHandler(e, event) { + function pointerUpHandlerDragit(e) { jsPanel.pointermove.forEach((e) => { document.removeEventListener(e, dragElmt); }); @@ -3202,7 +3202,7 @@ let jsPanel = { document.querySelectorAll('iframe').forEach((frame) => { frame.style.pointerEvents = 'auto'; }); - document.removeEventListener(event, pointerUpHandler); + document.removeEventListener(e, pointerUpHandlerDragit); } self.querySelectorAll(handles).forEach((handle) => { @@ -3652,7 +3652,7 @@ let jsPanel = { }); jsPanel.pointerup.forEach((event) => { - document.addEventListener(event, pointerUpHandler); + document.addEventListener(event, pointerUpHandlerDragit); window.removeEventListener('mouseout', windowListener); }); @@ -3713,6 +3713,96 @@ let jsPanel = { } } + function pointerUpHandlerResizeit(e) { + jsPanel.pointermove.forEach((evt) => { + document.removeEventListener(evt, resizePanel, false); + }); + if (e.target.classList && e.target.classList.contains('jsPanel-resizeit-handle')) { + let isLeftChange, + isTopChange, + cl = e.target.className; + if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)) { + isLeftChange = true; + } + if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)) { + isTopChange = true; + } + + // snap panel to grid (doesn't work that well if inside function resizePanel) + if (opts.grid && Array.isArray(opts.grid)) { + if (opts.grid.length === 1) { + opts.grid[1] = opts.grid[0]; + } + const cw = parseFloat(self.style.width), + ch = parseFloat(self.style.height), + modW = cw % opts.grid[0], + modH = ch % opts.grid[1], + cx = parseFloat(self.style.left), + cy = parseFloat(self.style.top), + modX = cx % opts.grid[0], + modY = cy % opts.grid[1]; + + if (modW < opts.grid[0] / 2) { + self.style.width = cw - modW + 'px'; + } else { + self.style.width = cw + (opts.grid[0] - modW) + 'px'; + } + if (modH < opts.grid[1] / 2) { + self.style.height = ch - modH + 'px'; + } else { + self.style.height = ch + (opts.grid[1] - modH) + 'px'; + } + + if (isLeftChange) { + if (modX < opts.grid[0] / 2) { + self.style.left = cx - modX + 'px'; + } else { + self.style.left = cx + (opts.grid[0] - modX) + 'px'; + } + } + if (isTopChange) { + if (modY < opts.grid[1] / 2) { + self.style.top = cy - modY + 'px'; + } else { + self.style.top = cy + (opts.grid[1] - modY) + 'px'; + } + } + } + } + if (resizestarted) { + self.content.style.pointerEvents = 'inherit'; + resizestarted = undefined; + self.saveCurrentDimensions(); + self.saveCurrentPosition(); + self.calcSizeFactors(); + let smallifyBtn = self.controlbar.querySelector('.jsPanel-btn-smallify'); + let elmtRect = self.getBoundingClientRect(); + if (smallifyBtn && elmtRect.height > startHeight + 5) { + smallifyBtn.style.transform = 'rotate(0deg)'; + } + document.dispatchEvent(jspanelresizestop); + + if (opts.stop.length) { + let stopStyles = window.getComputedStyle(self), + paneldata = { + left: parseFloat(stopStyles.left), + top: parseFloat(stopStyles.top), + width: parseFloat(stopStyles.width), + height: parseFloat(stopStyles.height), + }; + jsPanel.processCallbacks(self, opts.stop, false, paneldata, e); + } + } + self.content.style.pointerEvents = 'inherit'; + // restore other panel's css pointer-events + document.querySelectorAll('iframe').forEach((frame) => { + frame.style.pointerEvents = 'auto'; + }); + // restore option aspectRatio to original configuration + opts.aspectRatio = cachedOptionAspectRatio; + document.removeEventListener(e, pointerUpHandlerResizeit); + } + self.querySelectorAll('.jsPanel-resizeit-handle').forEach((handle) => { handle.style.touchAction = 'none'; @@ -4307,101 +4397,7 @@ let jsPanel = { }); jsPanel.pointerup.forEach(function (event) { - document.addEventListener( - event, - (e) => { - jsPanel.pointermove.forEach((evt) => { - document.removeEventListener(evt, resizePanel, false); - }); - - if (e.target.classList && e.target.classList.contains('jsPanel-resizeit-handle')) { - let isLeftChange, - isTopChange, - cl = e.target.className; - if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)) { - isLeftChange = true; - } - if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)) { - isTopChange = true; - } - - // snap panel to grid (doesn't work that well if inside function resizePanel) - if (opts.grid && Array.isArray(opts.grid)) { - if (opts.grid.length === 1) { - opts.grid[1] = opts.grid[0]; - } - const cw = parseFloat(self.style.width), - ch = parseFloat(self.style.height), - modW = cw % opts.grid[0], - modH = ch % opts.grid[1], - cx = parseFloat(self.style.left), - cy = parseFloat(self.style.top), - modX = cx % opts.grid[0], - modY = cy % opts.grid[1]; - - if (modW < opts.grid[0] / 2) { - self.style.width = cw - modW + 'px'; - } else { - self.style.width = cw + (opts.grid[0] - modW) + 'px'; - } - if (modH < opts.grid[1] / 2) { - self.style.height = ch - modH + 'px'; - } else { - self.style.height = ch + (opts.grid[1] - modH) + 'px'; - } - - if (isLeftChange) { - if (modX < opts.grid[0] / 2) { - self.style.left = cx - modX + 'px'; - } else { - self.style.left = cx + (opts.grid[0] - modX) + 'px'; - } - } - if (isTopChange) { - if (modY < opts.grid[1] / 2) { - self.style.top = cy - modY + 'px'; - } else { - self.style.top = cy + (opts.grid[1] - modY) + 'px'; - } - } - } - } - - if (resizestarted) { - self.content.style.pointerEvents = 'inherit'; - resizestarted = undefined; - self.saveCurrentDimensions(); - self.saveCurrentPosition(); - self.calcSizeFactors(); - let smallifyBtn = self.controlbar.querySelector('.jsPanel-btn-smallify'); - let elmtRect = self.getBoundingClientRect(); - if (smallifyBtn && elmtRect.height > startHeight + 5) { - smallifyBtn.style.transform = 'rotate(0deg)'; - } - document.dispatchEvent(jspanelresizestop); - - if (opts.stop.length) { - let stopStyles = window.getComputedStyle(self), - paneldata = { - left: parseFloat(stopStyles.left), - top: parseFloat(stopStyles.top), - width: parseFloat(stopStyles.width), - height: parseFloat(stopStyles.height), - }; - jsPanel.processCallbacks(self, opts.stop, false, paneldata, e); - } - } - - self.content.style.pointerEvents = 'inherit'; - // restore other panel's css pointer-events - document.querySelectorAll('iframe').forEach((frame) => { - frame.style.pointerEvents = 'auto'; - }); - // restore option aspectRatio to original configuration - opts.aspectRatio = cachedOptionAspectRatio; - }, - false - ); + document.addEventListener(event, pointerUpHandlerResizeit); window.removeEventListener('mouseout', windowListener); }); @@ -4477,6 +4473,14 @@ let jsPanel = { }); jsPanel.position(self, pos); + + // check whether self has docked panels -> reposition docked panels as well + if (self.slaves && self.slaves.size > 0) { + self.slaves.forEach((slave) => { + slave.reposition(); + }); + } + if (updateCache) { self.saveCurrentPosition(); } @@ -4636,6 +4640,14 @@ let jsPanel = { let values = jsPanel.pOsize(self, size); self.style.width = values.width; self.style.height = values.height; + + // check whether self has docked panels -> reposition docked panels + if (self.slaves && self.slaves.size > 0) { + self.slaves.forEach((slave) => { + slave.reposition(); + }); + } + if (updateCache) { self.saveCurrentDimensions(); } @@ -4673,6 +4685,14 @@ let jsPanel = { } else if (status === 'smallifiedmax' && onWindowResize) { self.maximize(false, true).smallify(); } + + // check whether self has docked panels -> reposition docked panels as well + if (self.slaves && self.slaves.size > 0) { + self.slaves.forEach((slave) => { + slave.reposition(); + }); + } + } }; diff --git a/es6module/jspanel.min.js b/es6module/jspanel.min.js index 866eeb7..3041405 100644 --- a/es6module/jspanel.min.js +++ b/es6module/jspanel.min.js @@ -1 +1 @@ -export let jsPanel={version:"4.11.2",date:"2020-12-09 10:10",ajaxAlwaysCallbacks:[],autopositionSpacing:4,closeOnEscape:void document.addEventListener("keydown",e=>{"Escape"!==e.key&&"Escape"!==e.code&&"Esc"!==e.key||jsPanel.getPanels(function(){return this.classList.contains("jsPanel")}).some(e=>!!e.options.closeOnEscape&&(e.close(null,!0),!0))},!1),defaults:{boxShadow:3,container:"window",contentSize:{width:"400px",height:"200px"},dragit:{cursor:"move",handles:".jsPanel-headerlogo, .jsPanel-titlebar, .jsPanel-ftr",opacity:.8,disableOnMaximized:!0},header:!0,headerTitle:"jsPanel",headerControls:{size:"md"},iconfont:void 0,maximizedMargin:0,minimizeTo:"default",paneltype:"standard",position:{my:"center",at:"center"},resizeit:{handles:"n, e, s, w, ne, se, sw, nw",minWidth:128,minHeight:38},theme:"default"},defaultAutocloseConfig:{time:"8s",progressbar:!0},defaultSnapConfig:{sensitivity:70,trigger:"panel",active:"both"},extensions:{},globalCallbacks:!1,icons:{close:'',maximize:'',normalize:'',minimize:'',smallify:''},idCounter:0,isIE:(()=>navigator.appVersion.match(/Trident/))(),pointerdown:"ontouchend"in window?["touchstart","mousedown"]:["mousedown"],pointermove:"ontouchend"in window?["touchmove","mousemove"]:["mousemove"],pointerup:"ontouchend"in window?["touchend","mouseup"]:["mouseup"],polyfills:(Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(null==e)throw new TypeError("Cannot convert first argument to object");let t=Object(e);for(let e=1;e=0&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),function(){if("function"==typeof window.CustomEvent)return!1;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};let n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}(),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){return tthis.length)&&-1!==this.indexOf(e,t)}),Number.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},void(Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');let n=Object(this),o=n.length>>>0;if(0===o)return!1;let a=0|t,l=Math.max(a>=0?a:o-Math.abs(a),0);for(;l{jsPanel.modifier=e}),void document.addEventListener("keyup",()=>{jsPanel.modifier=!1})),color(e){let t,n,o,a,l,s,r,i,c,d=e.toLowerCase(),p={};const h=/^rgba?\(([0-9]{1,3}),([0-9]{1,3}),([0-9]{1,3}),?(0|1|0\.[0-9]{1,2}|\.[0-9]{1,2})?\)$/gi,f=/^hsla?\(([0-9]{1,3}),([0-9]{1,3}%),([0-9]{1,3}%),?(0|1|0\.[0-9]{1,2}|\.[0-9]{1,2})?\)$/gi,m=this.colorNames;return m[d]&&(d=m[d]),null!==d.match(/^#?([0-9a-f]{3}|[0-9a-f]{6})$/gi)?((d=d.replace("#","")).length%2==1?(t=String(d.substr(0,1))+d.substr(0,1),n=String(d.substr(1,1))+d.substr(1,1),o=String(d.substr(2,1))+d.substr(2,1),p.rgb={r:parseInt(t,16),g:parseInt(n,16),b:parseInt(o,16)},p.hex=`#${t}${n}${o}`):(p.rgb={r:parseInt(d.substr(0,2),16),g:parseInt(d.substr(2,2),16),b:parseInt(d.substr(4,2),16)},p.hex=`#${d}`),c=this.rgbToHsl(p.rgb.r,p.rgb.g,p.rgb.b),p.hsl=c,p.rgb.css=`rgb(${p.rgb.r},${p.rgb.g},${p.rgb.b})`):d.match(h)?(r=h.exec(d),p.rgb={css:d,r:r[1],g:r[2],b:r[3]},p.hex=this.rgbToHex(r[1],r[2],r[3]),c=this.rgbToHsl(r[1],r[2],r[3]),p.hsl=c):d.match(f)?(a=(r=f.exec(d))[1]/360,l=r[2].substr(0,r[2].length-1)/100,s=r[3].substr(0,r[3].length-1)/100,i=this.hslToRgb(a,l,s),p.rgb={css:`rgb(${i[0]},${i[1]},${i[2]})`,r:i[0],g:i[1],b:i[2]},p.hex=this.rgbToHex(p.rgb.r,p.rgb.g,p.rgb.b),p.hsl={css:`hsl(${r[1]},${r[2]},${r[3]})`,h:r[1],s:r[2],l:r[3]}):(p.hex="#f5f5f5",p.rgb={css:"rgb(245,245,245)",r:245,g:245,b:245},p.hsl={css:"hsl(0,0%,96%)",h:0,s:"0%",l:"96%"}),p},calcColors(e){const t=this.colorBrightnessThreshold,n=this.color(e),o=this.lighten(e,this.colorFilledLight),a=this.darken(e,this.colorFilled),l=this.perceivedBrightness(e)<=t?"#ffffff":"#000000",s=this.perceivedBrightness(o)<=t?"#ffffff":"#000000",r=this.perceivedBrightness(a)<=t?"#ffffff":"#000000",i=this.lighten(e,this.colorFilledDark),c=this.perceivedBrightness(i)<=t?"#ffffff":"#000000";return[n.hsl.css,o,a,l,s,r,i,c]},darken(e,t){const n=this.color(e).hsl,o=parseFloat(n.l),a=Math.round(o-o*t)+"%";return`hsl(${n.h},${n.s},${a})`},lighten(e,t){const n=this.color(e).hsl,o=parseFloat(n.l),a=Math.round(o+(100-o)*t)+"%";return`hsl(${n.h},${n.s},${a})`},hslToRgb(e,t,n){let o,a,l;if(0===t)o=a=l=n;else{let s=(e,t,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e),r=n<.5?n*(1+t):n+t-n*t,i=2*n-r;o=s(i,r,e+1/3),a=s(i,r,e),l=s(i,r,e-1/3)}return[Math.round(255*o),Math.round(255*a),Math.round(255*l)]},rgbToHsl(e,t,n){e/=255,t/=255,n/=255;let o,a,l=Math.max(e,t,n),s=Math.min(e,t,n),r=(l+s)/2;if(l===s)o=a=0;else{let i=l-s;switch(a=r>.5?i/(2-l-s):i/(l+s),l){case e:o=(t-n)/i+(te.match(/^(down|right|up|left)$/i));o.length&&(t.autoposition=o[0],n.splice(n.indexOf(o[0]),1));let a=n.filter(e=>e.match(/^(left-|right-)(top|center|bottom)$|(^center-)(top|bottom)$|(^center$)/i));a.length?(t.my=a[0],t.at=a[1]||a[0],n.splice(n.indexOf(a[0]),1),a[1]&&n.splice(n.indexOf(a[1]),1)):(t.my="center",t.at="center");let l=n.filter(e=>e.match(/^[+-]?\d*\.?\d+[a-z%]*$/i));return l.length&&(t.offsetX=l[0].match(/^[+-]?\d*\.?\d+$/i)?`${l[0]}px`:l[0],l[1]?t.offsetY=l[1].match(/^[+-]?\d*\.?\d+$/i)?`${l[1]}px`:l[1]:t.offsetY=t.offsetX,n.splice(n.indexOf(l[0]),1),l[1]&&n.splice(n.indexOf(l[1]),1)),n.length&&(t.of=n.join(" ")),t},position(e,t){if(!t)return e.style.opacity=1,e;t="string"==typeof t?Object.assign({},this.defaults.position,this.pOposition(t)):Object.assign({},this.defaults.position,t),["my","at","of"].forEach(n=>{"function"==typeof t[n]&&(t[n]=t[n].call(e,e))}),"window"===e.options.container&&(e.style.position="fixed"),"string"==typeof e?e=document.querySelector(e):Object.getPrototypeOf(e).jquery&&(e=e[0]);const n="window"===e.options.container?"window":e.parentElement,o=e.getBoundingClientRect(),a=e.parentElement.getBoundingClientRect(),l="window"===n?{left:0,top:0,width:document.documentElement.clientWidth,height:window.innerHeight}:{width:a.width,height:a.height,left:a.left,top:a.top},s="window"===n?{x:1,y:1}:{x:l.width/n.offsetWidth,y:l.height/n.offsetHeight},r="window"===n?{borderTopWidth:"0px",borderRightWidth:"0px",borderBottomWidth:"0px",borderLeftWidth:"0px"}:window.getComputedStyle(n);let i;l.width-=(parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth))*s.x,l.height-=(parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth))*s.y,i=t.of?"string"==typeof t.of?"window"===t.of?{borderTopWidth:"0px",borderRightWidth:"0px",borderBottomWidth:"0px",borderLeftWidth:"0px"}:document.querySelector(t.of).getBoundingClientRect():Object.getPrototypeOf(t.of).jquery?t.of[0].getBoundingClientRect():t.of.getBoundingClientRect():l;let c="0px";t.my.startsWith("left-")?t.at.startsWith("left-")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+"px":"0px":t.at.startsWith("center")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+i.width/2+"px":l.width/2+"px":t.at.startsWith("right-")&&(c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+i.width+"px":l.width+"px"):t.my.startsWith("center")?t.at.startsWith("left-")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)-o.width/2+"px":-o.width/2+"px":t.at.startsWith("center")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)-(o.width-i.width)/2+"px":l.width/2-o.width/2+"px":t.at.startsWith("right-")&&(c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+(i.width-o.width/2)+"px":l.width-o.width/2+"px"):t.my.startsWith("right-")&&(t.at.startsWith("left-")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)-o.width+"px":-o.width+"px":t.at.startsWith("center")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)-o.width+i.width/2+"px":l.width/2-o.width+"px":t.at.startsWith("right-")&&(c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+i.width-o.width+"px":l.width-o.width+"px"));let d="0px";t.my.endsWith("-top")?t.at.endsWith("-top")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)+"px":"0px":t.at.endsWith("center")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)+i.height/2+"px":l.height/2+"px":t.at.endsWith("-bottom")&&(d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)+i.height+"px":l.height+"px"):t.my.endsWith("center")?t.at.endsWith("-top")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height/2+"px":-o.height/2+"px":t.at.endsWith("center")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height/2+i.height/2+"px":l.height/2-o.height/2+"px":t.at.endsWith("-bottom")&&(d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height/2+i.height+"px":l.height-o.height/2+"px"):t.my.endsWith("-bottom")&&(t.at.endsWith("-top")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height+"px":-o.height+"px":t.at.endsWith("center")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height+i.height/2+"px":l.height/2-o.height+"px":t.at.endsWith("-bottom")&&(d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height+i.height+"px":l.height-o.height+"px")),e.style.left=1===s.x?c:parseFloat(c)/s.x+"px",e.style.top=1===s.y?d:parseFloat(d)/s.y+"px";let p=getComputedStyle(e),h={left:p.left,top:p.top};return t.autoposition&&t.my===t.at&&["left-top","center-top","right-top","left-bottom","center-bottom","right-bottom"].indexOf(t.my)>=0&&(h=this.applyPositionAutopos(e,h,t)),(t.offsetX||t.offsetY)&&(h=this.applyPositionOffset(e,h,t)),(t.minLeft||t.minTop||t.maxLeft||t.maxTop)&&(h=this.applyPositionMinMax(e,h,t)),t.modify&&(h=this.applyPositionModify(e,h,t)),"number"==typeof e.options.opacity?e.style.opacity=e.options.opacity:e.style.opacity=1,e},applyPositionAutopos(e,t,n){const o=`${n.my}-${n.autoposition.toLowerCase()}`;e.classList.add(o);const a=Array.prototype.slice.call(document.querySelectorAll(`.${o}`)),l=a.indexOf(e);if(a.length>1){switch(n.autoposition){case"down":a.forEach((e,n)=>{n>0&&n<=l&&(t.top=parseFloat(t.top)+a[--n].getBoundingClientRect().height+jsPanel.autopositionSpacing+"px")});break;case"up":a.forEach((e,n)=>{n>0&&n<=l&&(t.top=parseFloat(t.top)-a[--n].getBoundingClientRect().height-jsPanel.autopositionSpacing+"px")});break;case"right":a.forEach((e,n)=>{n>0&&n<=l&&(t.left=parseFloat(t.left)+a[--n].getBoundingClientRect().width+jsPanel.autopositionSpacing+"px")});break;case"left":a.forEach((e,n)=>{n>0&&n<=l&&(t.left=parseFloat(t.left)-a[--n].getBoundingClientRect().width-jsPanel.autopositionSpacing+"px")})}e.style.left=t.left,e.style.top=t.top}return{left:t.left,top:t.top}},applyPositionOffset(e,t,n){["offsetX","offsetY"].forEach(e=>{n[e]?("function"==typeof n[e]&&(n[e]=n[e].call(t,t,n)),!1===isNaN(n[e])&&(n[e]=`${n[e]}px`)):n[e]="0px"}),e.style.left=`calc(${e.style.left} + ${n.offsetX})`,e.style.top=`calc(${e.style.top} + ${n.offsetY})`;const o=getComputedStyle(e);return{left:o.left,top:o.top}},applyPositionMinMax(e,t,n){if(["minLeft","minTop","maxLeft","maxTop"].forEach(e=>{n[e]&&("function"==typeof n[e]&&(n[e]=n[e].call(t,t,n)),(Number.isInteger(n[e])||n[e].match(/^\d+$/))&&(n[e]=`${n[e]}px`))}),n.minLeft){e.style.left=n.minLeft;let o=getComputedStyle(e).left;parseFloat(o)parseFloat(t.left)?e.style.left=t.left:t.left=o}if(n.maxTop){e.style.top=n.maxTop;let o=getComputedStyle(e).top;parseFloat(o)>parseFloat(t.top)?e.style.top=t.top:t.top=o}const o=getComputedStyle(e);return{left:o.left,top:o.top}},applyPositionModify(e,t,n){if(n.modify&&"function"==typeof n.modify){const o=n.modify.call(t,t,n);e.style.left=Number.isInteger(o.left)||o.left.match(/^\d+$/)?`${o.left}px`:o.left,e.style.top=Number.isInteger(o.top)||o.top.match(/^\d+$/)?`${o.top}px`:o.top}const o=getComputedStyle(e);return{left:o.left,top:o.top}},autopositionRemaining(e){let t,n=e.options.container;if(["left-top-down","left-top-right","center-top-down","right-top-down","right-top-left","left-bottom-up","left-bottom-right","center-bottom-up","right-bottom-up","right-bottom-left"].forEach(n=>{e.classList.contains(n)&&(t=n)}),t){("window"===n?document.body:"string"==typeof n?document.querySelector(n):n).querySelectorAll(`.${t}`).forEach(e=>{e.reposition()})}},addScript(e,t="application/javascript",n){if(!document.querySelector(`script[src="${e}"]`)){const o=document.createElement("script");n&&(o.onload=n),o.src=e,o.type=t,document.head.appendChild(o)}},ajax(e,t){let n,o,a=new XMLHttpRequest;const l={method:"GET",async:!0,user:"",pwd:"",done:function(){if(t){let e=jsPanel.strToHtml(this.responseText);n.urlSelector&&(e=e.querySelector(n.urlSelector)),t.contentRemove(),t.content.append(e)}},autoresize:!0,autoreposition:!0};if(t&&"string"==typeof e)n=Object.assign({},l,{url:e});else{if("object"!=typeof e||!e.url){if(this.errorReporting){let e="XMLHttpRequest seems to miss the url parameter!";jsPanel.errorpanel(e)}return}(n=Object.assign({},l,e)).url=e.url,!1===n.async&&(n.timeout=0,n.withCredentials&&(n.withCredentials=void 0),n.responseType&&(n.responseType=void 0))}o=n.url.trim().split(/\s+/),n.url=encodeURI(o[0]),o.length>1&&(o.shift(),n.urlSelector=o.join(" ")),a.onreadystatechange=(()=>{4===a.readyState&&(200===a.status?t?n.done.call(a,a,t):n.done.call(a,a):n.fail&&(t?n.fail.call(a,a,t):n.fail.call(a,a)),n.always&&(t?n.always.call(a,a,t):n.always.call(a,a)),t&&(n.autoresize||n.autoreposition)&&jsPanel.ajaxAutoresizeAutoreposition(t,n),jsPanel.ajaxAlwaysCallbacks.length&&jsPanel.ajaxAlwaysCallbacks.forEach(e=>{t?e.call(a,a,t):e.call(a,a)}))}),a.open(n.method,n.url,n.async,n.user,n.pwd),a.timeout=n.timeout||0,n.withCredentials&&(a.withCredentials=n.withCredentials),n.responseType&&(a.responseType=n.responseType),n.beforeSend&&(t?n.beforeSend.call(a,a,t):n.beforeSend.call(a,a)),n.data?a.send(n.data):a.send(null)},ajaxAutoresizeAutoreposition(e,t){const n=e.options.contentSize;if("string"==typeof n&&n.match(/auto/i)){const o=n.split(" "),a=Object.assign({},{width:o[0],height:o[1]});t.autoresize&&e.resize(a),e.classList.contains("jsPanel-contextmenu")||t.autoreposition&&e.reposition()}else if("object"==typeof n&&("auto"===n.width||"auto"===n.height)){const o=Object.assign({},n);t.autoresize&&e.resize(o),e.classList.contains("jsPanel-contextmenu")||t.autoreposition&&e.reposition()}},createPanelTemplate(e=!0){const t=document.createElement("div");return t.className="jsPanel",t.style.left="0",t.style.top="0",e&&["close","maximize","normalize","minimize","smallify"].forEach(e=>{t.setAttribute(`data-btn${e}`,"enabled")}),t.innerHTML=`
\n
\n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
`,t},createMinimizedTemplate(){const e=document.createElement("div");return e.className="jsPanel-replacement",e.innerHTML=`
\n
\n \n
\n
\n
\n
\n \n \n \n
\n
\n
`,e},createSnapArea(e,t,n){const o=document.createElement("div"),a=e.parentElement;o.className=`jsPanel-snap-area jsPanel-snap-area-${t}`,"lt"===t||"rt"===t||"rb"===t||"lb"===t?(o.style.width=n+"px",o.style.height=n+"px"):"ct"===t||"cb"===t?o.style.height=n+"px":"lc"!==t&&"rc"!==t||(o.style.width=n+"px"),a!==document.body&&(o.style.position="absolute"),document.querySelector(`.jsPanel-snap-area.jsPanel-snap-area-${t}`)||e.parentElement.appendChild(o)},emptyNode(e){for(;e.firstChild;)e.removeChild(e.firstChild);return e},extend(e){if("[object Object]"===Object.prototype.toString.call(e))for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(this.extensions[t]=e[t])},fetch(e,t){let n;const o={bodyMethod:"text",autoresize:!0,autoreposition:!0,done:function(e,t){if(t){let n=jsPanel.strToHtml(e);t.contentRemove(),t.content.append(n)}}};if(t&&"string"==typeof e)n=Object.assign({},o,{resource:encodeURI(e)});else{if("object"!=typeof e||!e.resource){if(this.errorReporting){let e="Fetch Request seems to miss the resource parameter!";jsPanel.errorpanel(e)}return}(n=Object.assign({},o,e)).resource=encodeURI(e.resource)}const a=n.fetchInit||{};n.beforeSend&&(t?n.beforeSend.call(e,e,t):n.beforeSend.call(e,e)),fetch(n.resource,a).then(e=>{if(e.ok)return e[n.bodyMethod]()}).then(e=>{t?n.done.call(e,e,t):n.done.call(e,e),t&&(n.autoresize||n.autoreposition)&&jsPanel.ajaxAutoresizeAutoreposition(t,n)})},getPanels:(e=function(){return this.classList.contains("jsPanel-standard")})=>Array.prototype.slice.call(document.querySelectorAll(".jsPanel")).filter(t=>e.call(t,t)).sort((e,t)=>t.style.zIndex-e.style.zIndex),pOcontainer(e){if("window"===e)return document.body;if("string"==typeof e){let t=document.querySelectorAll(e);return!!(t.length&&t.length>0)&&t}return 1===e.nodeType?e:!!e.length&&e[0]},pOcontainment(e){let t=e;if("function"==typeof e&&(t=e()),"number"==typeof t)return[t,t,t,t];if(Array.isArray(t)){if(1===t.length)return[t[0],t[0],t[0],t[0]];if(2===t.length)return t.concat(t);3===t.length&&(t[3]=t[1])}return t},pOsize(e,t){let n=t||this.defaults.contentSize;const o=e.parentElement;if("string"==typeof n){const e=n.trim().split(" ");(n={}).width=e[0],2===e.length?n.height=e[1]:n.height=e[0]}else n.width&&!n.height?n.height=n.width:n.height&&!n.width&&(n.width=n.height);if(String(n.width).match(/^[0-9.]+$/gi))n.width+="px";else if("string"==typeof n.width&&n.width.endsWith("%"))if(o===document.body)n.width=window.innerWidth*(parseFloat(n.width)/100)+"px";else{const e=window.getComputedStyle(o),t=parseFloat(e.borderLeftWidth)+parseFloat(e.borderRightWidth);n.width=(parseFloat(e.width)-t)*(parseFloat(n.width)/100)+"px"}else"function"==typeof n.width&&(n.width=n.width.call(e,e),"number"==typeof n.width?n.width+="px":"string"==typeof n.width&&n.width.match(/^[0-9.]+$/gi)&&(n.width+="px"));if(String(n.height).match(/^[0-9.]+$/gi))n.height+="px";else if("string"==typeof n.height&&n.height.endsWith("%"))if(o===document.body)n.height=window.innerHeight*(parseFloat(n.height)/100)+"px";else{const e=window.getComputedStyle(o),t=parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth);n.height=(parseFloat(e.height)-t)*(parseFloat(n.height)/100)+"px"}else"function"==typeof n.height&&(n.height=n.height.call(e,e),"number"==typeof n.height?n.height+="px":"string"==typeof n.height&&n.height.match(/^[0-9.]+$/gi)&&(n.height+="px"));return n},pOborder(e){e=e.trim();const t=new Array(3),n=e.match(/\s*(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset)\s*/gi),o=e.match(/\s*(thin|medium|thick)|(\d*\.?\d+[a-zA-Z]{2,4})\s*/gi);return n?(t[1]=n[0].trim(),e=e.replace(t[1],"")):t[1]="solid",o?(t[0]=o[0].trim(),e=e.replace(t[0],"")):t[0]="medium",t[2]=e.trim(),t},pOheaderControls(e){if("string"==typeof e){let t={},n=e.toLowerCase(),o=n.match(/xl|lg|md|sm|xs/),a=n.match(/closeonly|none/);return o&&(t.size=o[0]),a&&(t=Object.assign({},t,{maximize:"remove",normalize:"remove",minimize:"remove",smallify:"remove"}),"none"===a[0]&&(t.close="remove")),Object.assign({},this.defaults.headerControls,t)}return Object.assign({},this.defaults.headerControls,e)},processCallbacks(e,t,n="some",o,a){if("function"==typeof t&&(t=[t]),n)return t[n](t=>t.call(e,e,o,a));t.forEach(t=>{t.call(e,e,o,a)})},removeSnapAreas(){document.querySelectorAll(".jsPanel-snap-area").forEach(e=>{e.parentElement.removeChild(e)})},resetZi(){this.zi=((e=jsPanel.ziBase)=>{let t=e;return{next:()=>t++}})(),Array.prototype.slice.call(document.querySelectorAll(".jsPanel-standard")).sort((e,t)=>e.style.zIndex-t.style.zIndex).forEach(e=>{e.style.zIndex=jsPanel.zi.next()})},setClass:(e,t)=>(t.trim().split(/\s+/).forEach(t=>e.classList.add(t)),e),remClass:(e,t)=>(t.trim().split(/\s+/).forEach(t=>e.classList.remove(t)),e),toggleClass:(e,t)=>(t.trim().split(/\s+/).forEach(t=>{e.classList.contains(t)?e.classList.remove(t):e.classList.add(t)}),e),setStyles(e,t){for(let n in t)n in e.style?e.style[n]=t[n]:e.style.setProperty(n,t[n]);return e},setStyle(e,t){return this.setStyles.call(e,e,t)},strToHtml:e=>document.createRange().createContextualFragment(e),errorpanel(e){this.create({paneltype:"error",dragit:!1,resizeit:!1,theme:{bgPanel:"white",bgContent:"white",colorHeader:"rebeccapurple",colorContent:"#333",border:"2px solid rebeccapurple"},borderRadius:".33rem",headerControls:"closeonly xs",headerTitle:"⚠ jsPanel Error",contentSize:{width:"50%",height:"auto"},position:"center-top 0 5 down",animateIn:"jsPanelFadeIn",content:`

${e}

`})},create(e={},t){jsPanel.zi||(jsPanel.zi=((e=jsPanel.ziBase)=>{let t=e;return{next:()=>t++}})()),e.config?delete(e=Object.assign({},this.defaults,e.config,e)).config:e=Object.assign({},this.defaults,e),e.id?"function"==typeof e.id&&(e.id=e.id()):e.id=`jsPanel-${jsPanel.idCounter+=1}`;const n=document.getElementById(e.id);if(null!==n){if(n.classList.contains("jsPanel")&&n.front(),this.errorReporting){let t=`◀ COULD NOT CREATE NEW JSPANEL ►
An element with the ID ${e.id} already exists in the document.`;jsPanel.errorpanel(t)}return!1}let o=this.pOcontainer(e.container);if("object"==typeof o&&o.length&&o.length>0&&(o=o[0]),!o){if(this.errorReporting){let e="◀ COULD NOT CREATE NEW JSPANEL ►
The container to append the panel to does not exist";jsPanel.errorpanel(e)}return!1}["onbeforeclose","onbeforemaximize","onbeforeminimize","onbeforenormalize","onbeforesmallify","onbeforeunsmallify","onclosed","onfronted","onmaximized","onminimized","onnormalized","onsmallified","onstatuschange","onunsmallified"].forEach(t=>{e[t]?"function"==typeof e[t]&&(e[t]=[e[t]]):e[t]=[]});const a=e.template?e.template:this.createPanelTemplate();a.options=e,a.closetimer=void 0,a.status="initialized",a.currentData={},a.header=a.querySelector(".jsPanel-hdr"),a.headerbar=a.header.querySelector(".jsPanel-headerbar"),a.titlebar=a.header.querySelector(".jsPanel-titlebar"),a.headerlogo=a.headerbar.querySelector(".jsPanel-headerlogo"),a.headertitle=a.headerbar.querySelector(".jsPanel-title"),a.controlbar=a.headerbar.querySelector(".jsPanel-controlbar"),a.headertoolbar=a.header.querySelector(".jsPanel-hdr-toolbar"),a.content=a.querySelector(".jsPanel-content"),a.footer=a.querySelector(".jsPanel-ftr"),a.snappableTo=!1,a.snapped=!1,a.droppableTo=!1,a.progressbar=a.autocloseProgressbar=a.querySelector(".jsPanel-progressbar");const l=new CustomEvent("jspanelloaded",{detail:e.id,cancelable:!0}),s=new CustomEvent("jspanelstatuschange",{detail:e.id,cancelable:!0}),r=new CustomEvent("jspanelbeforenormalize",{detail:e.id,cancelable:!0}),i=new CustomEvent("jspanelnormalized",{detail:e.id,cancelable:!0}),c=new CustomEvent("jspanelbeforemaximize",{detail:e.id,cancelable:!0}),d=new CustomEvent("jspanelmaximized",{detail:e.id,cancelable:!0}),p=new CustomEvent("jspanelbeforeminimize",{detail:e.id,cancelable:!0}),h=new CustomEvent("jspanelminimized",{detail:e.id,cancelable:!0}),f=new CustomEvent("jspanelbeforesmallify",{detail:e.id,cancelable:!0}),m=new CustomEvent("jspanelsmallified",{detail:e.id,cancelable:!0}),u=new CustomEvent("jspanelsmallifiedmax",{detail:e.id,cancelable:!0}),g=new CustomEvent("jspanelbeforeunsmallify",{detail:e.id,cancelable:!0}),b=new CustomEvent("jspanelfronted",{detail:e.id,cancelable:!0}),y=new CustomEvent("jspanelbeforeclose",{detail:e.id,cancelable:!0}),w=new CustomEvent("jspanelclosed",{detail:e.id,cancelable:!0}),j=new CustomEvent("jspanelcloseduser",{detail:e.id,cancelable:!0});[l,s,r,i,c,d,p,h,f,m,u,g,b,y].forEach(e=>{e.panel=a});const v=a.querySelector(".jsPanel-btn-close"),P=a.querySelector(".jsPanel-btn-maximize"),E=a.querySelector(".jsPanel-btn-normalize"),x=a.querySelector(".jsPanel-btn-smallify"),C=a.querySelector(".jsPanel-btn-minimize");v&&jsPanel.pointerup.forEach(e=>{v.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.close(null,!0)})}),P&&jsPanel.pointerup.forEach(e=>{P.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.maximize()})}),E&&jsPanel.pointerup.forEach(e=>{E.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.normalize()})}),x&&jsPanel.pointerup.forEach(e=>{x.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;"normalized"===a.status||"maximized"===a.status?a.smallify():"smallified"!==a.status&&"smallifiedmax"!==a.status||a.unsmallify()})}),C&&jsPanel.pointerup.forEach(e=>{C.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.minimize()})});let F=jsPanel.extensions;for(let e in F)Object.prototype.hasOwnProperty.call(F,e)&&(a[e]=F[e]);if(a.clearTheme=(e=>(jsPanel.themes.forEach(e=>{["panel",`jsPanel-theme-${e}`,`panel-${e}`,`${e}-color`].forEach(e=>{a.classList.remove(e)}),a.header.classList.remove(`jsPanel-theme-${e}`)}),a.content.classList.remove("jsPanel-content-filled","jsPanel-content-filledlight"),a.header.classList.remove("jsPanel-hdr-light"),a.header.classList.remove("jsPanel-hdr-dark"),a.style.backgroundColor="",jsPanel.setStyle(a.headertoolbar,{boxShadow:"",width:"",marginLeft:"",borderTopColor:"transparent"}),jsPanel.setStyle(a.content,{background:"",borderTopColor:"transparent"}),a.header.style.background="",Array.prototype.slice.call(a.controlbar.querySelectorAll(".jsPanel-icon")).concat([a.headerlogo,a.headertitle,a.headertoolbar,a.content]).forEach(e=>{e.style.color=""}),e&&e.call(a,a),a)),a.getThemeDetails=(e=>{const t=e.toLowerCase(),n={color:!1,colors:!1,filling:!1},o=t.split("fill");if(n.color=o[0].trim().replace(/\s*/g,""),2===o.length)if(o[1].startsWith("edlight"))n.filling="filledlight";else if(o[1].startsWith("eddark"))n.filling="filleddark";else if(o[1].startsWith("ed"))n.filling="filled";else if(o[1].startsWith("color")){let e=o[1].split("color"),t=e[e.length-1].trim().replace(/\s*/g,"");jsPanel.colorNames[t]&&(t=jsPanel.colorNames[t]),t.match(/^([0-9a-f]{3}|[0-9a-f]{6})$/gi)&&(t="#"+t),n.filling=t}if(jsPanel.themes.some(e=>e===n.color.split(/\s/i)[0])){let e=n.color.split(/\s/i)[0],t=document.createElement("button");t.className=e+"-bg",document.body.appendChild(t),n.color=getComputedStyle(t).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(t),t=void 0}else if(n.color.startsWith("bootstrap-")){let e=n.color.indexOf("-"),t=document.createElement("button");t.className="btn btn"+n.color.slice(e),document.body.appendChild(t),n.color=getComputedStyle(t).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(t),t=void 0}else if(n.color.startsWith("mdb-")){let e,t=n.color.indexOf("-")+1,o=document.createElement("span");e=n.color.endsWith("-dark")?(e=n.color.slice(t)).replace("-dark","-color-dark"):n.color.slice(t)+"-color",o.className=e,document.body.appendChild(o),n.color=getComputedStyle(o).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(o),o=void 0}return n.colors=jsPanel.calcColors(n.color),n}),a.applyColorTheme=(e=>{if(a.style.backgroundColor=e.colors[0],a.header.style.backgroundColor=e.colors[0],a.header.style.color=e.colors[3],[".jsPanel-headerlogo",".jsPanel-title",".jsPanel-hdr-toolbar"].forEach(t=>{a.querySelector(t).style.color=e.colors[3]}),a.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(t=>{t.style.color=e.colors[3]}),"string"==typeof a.options.theme&&"filled"===e.filling&&(a.content.style.borderTop="#000000"===e.colors[3]?"1px solid rgba(0,0,0,0.15)":"1px solid rgba(255,255,255,0.15)"),"#000000"===e.colors[3]?a.header.classList.add("jsPanel-hdr-light"):a.header.classList.add("jsPanel-hdr-dark"),e.filling)switch(e.filling){case"filled":jsPanel.setStyle(a.content,{backgroundColor:e.colors[2],color:e.colors[3]});break;case"filledlight":a.content.style.backgroundColor=e.colors[1];break;case"filleddark":jsPanel.setStyle(a.content,{backgroundColor:e.colors[6],color:e.colors[7]});break;default:a.content.style.backgroundColor=e.filling,a.content.style.color=jsPanel.perceivedBrightness(e.filling)<=jsPanel.colorBrightnessThreshold?"#fff":"#000"}return a}),a.applyCustomTheme=(e=>{let t,n={bgPanel:"#fff",bgContent:"#fff",colorHeader:"#000",colorContent:"#000"},o=(t="object"==typeof e?Object.assign(n,e):n).bgPanel,l=t.bgContent,s=t.colorHeader,r=t.colorContent;if(jsPanel.colorNames[o]?a.style.background="#"+jsPanel.colorNames[o]:a.style.background=o,jsPanel.colorNames[s]&&(s="#"+jsPanel.colorNames[s]),[".jsPanel-headerlogo",".jsPanel-title",".jsPanel-hdr-toolbar"].forEach(e=>{a.querySelector(e).style.color=s}),a.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(e=>{e.style.color=s}),jsPanel.colorNames[l]?a.content.style.background="#"+jsPanel.colorNames[l]:a.content.style.background=l,jsPanel.colorNames[r]?a.content.style.color="#"+jsPanel.colorNames[r]:a.content.style.color=r,jsPanel.perceivedBrightness(s)>jsPanel.colorBrightnessThreshold?a.header.classList.add("jsPanel-hdr-dark"):a.header.classList.add("jsPanel-hdr-light"),jsPanel.perceivedBrightness(r)>jsPanel.colorBrightnessThreshold?a.content.style.borderTop="1px solid rgba(255,255,255,0.15)":a.content.style.borderTop="1px solid rgba(0,0,0,0.15)",t.border){let e=t.border,n=e.lastIndexOf(" "),o=e.slice(++n);jsPanel.colorNames[o]&&(e=e.replace(o,"#"+jsPanel.colorNames[o])),a.style.border=e}return a}),a.setBorder=(e=>{let t=jsPanel.pOborder(e);return t[2].length?jsPanel.colorNames[t[2]]&&(t[2]="#"+jsPanel.colorNames[t[2]]):t[2]=a.style.backgroundColor,t=t.join(" "),a.style.border=t,a.options.border=t,a}),a.setBorderRadius=(e=>{"number"==typeof e&&(e+="px"),a.style.borderRadius=e;const t=getComputedStyle(a);return a.options.header?(a.header.style.borderTopLeftRadius=t.borderTopLeftRadius,a.header.style.borderTopRightRadius=t.borderTopRightRadius):(a.content.style.borderTopLeftRadius=t.borderTopLeftRadius,a.content.style.borderTopRightRadius=t.borderTopRightRadius),a.options.footerToolbar?(a.footer.style.borderBottomRightRadius=t.borderBottomRightRadius,a.footer.style.borderBottomLeftRadius=t.borderBottomLeftRadius):(a.content.style.borderBottomRightRadius=t.borderBottomRightRadius,a.content.style.borderBottomLeftRadius=t.borderBottomLeftRadius),a}),a.setTheme=((t=e.theme,n)=>{let o;if("minimized"===a.status&&(o=!0,a.normalize()),a.clearTheme(),"object"==typeof t)e.border=void 0,a.applyCustomTheme(t);else{"none"===t&&(t="white");let e=a.getThemeDetails(t);a.applyColorTheme(e)}return o&&a.minimize(),n&&n.call(a,a),a}),a.remove=((e,t,n)=>{a.parentElement.removeChild(a),document.getElementById(e)?n&&n.call(a,e,a):(a.removeMinimizedReplacement(),t&&document.dispatchEvent(j),document.dispatchEvent(w),a.options.onclosed&&jsPanel.processCallbacks(a,a.options.onclosed,"every",t),jsPanel.autopositionRemaining(a),n&&n.call(e,e)),window.removeEventListener("resize",a.windowResizeHandler),document.removeEventListener("jspanelresize",a.parentResizeHandler)}),a.close=((e,t)=>{if(a.closetimer&&window.clearInterval(a.closetimer),document.dispatchEvent(y),a.options.onbeforeclose&&a.options.onbeforeclose.length>0&&!jsPanel.processCallbacks(a,a.options.onbeforeclose,"some",a.status,t))return a;a.options.animateOut?(a.options.animateIn&&jsPanel.remClass(a,a.options.animateIn),jsPanel.setClass(a,a.options.animateOut),a.addEventListener("animationend",n=>{n.stopPropagation(),a.remove(a.id,t,e)})):a.remove(a.id,t,e)}),a.maximize=((t,n)=>{if(a.statusBefore=a.status,e.onbeforemaximize&&e.onbeforemaximize.length>0&&!jsPanel.processCallbacks(a,e.onbeforemaximize,"some",a.statusBefore))return a;document.dispatchEvent(c);const o=a.parentElement,l=jsPanel.pOcontainment(e.maximizedMargin);return o===document.body?(a.style.width=document.documentElement.clientWidth-l[1]-l[3]+"px",a.style.height=document.documentElement.clientHeight-l[0]-l[2]+"px",a.style.left=l[3]+"px",a.style.top=l[0]+"px"):(a.style.width=o.clientWidth-l[1]-l[3]+"px",a.style.height=o.clientHeight-l[0]-l[2]+"px",a.style.left=l[3]+"px",a.style.top=l[0]+"px"),x.style.transform="unset",a.removeMinimizedReplacement(),a.status="maximized",a.setControls([".jsPanel-btn-maximize"]),n||a.front(),document.dispatchEvent(d),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore),t&&t.call(a,a,a.statusBefore),e.onmaximized&&jsPanel.processCallbacks(a,e.onmaximized,"every",a.statusBefore),a}),a.minimize=(t=>{if("minimized"===a.status)return a;if(a.statusBefore=a.status,e.onbeforeminimize&&e.onbeforeminimize.length>0&&!jsPanel.processCallbacks(a,e.onbeforeminimize,"some",a.statusBefore))return a;if(document.dispatchEvent(p),!document.getElementById("jsPanel-replacement-container")){const e=document.createElement("div");e.id="jsPanel-replacement-container",document.body.append(e)}if(a.style.left="-9999px",a.status="minimized",document.dispatchEvent(h),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore),e.minimizeTo){let t,n,o,l=a.createMinimizedReplacement();switch(e.minimizeTo){case"default":document.getElementById("jsPanel-replacement-container").append(l);break;case"parentpanel":(t=(o=(n=a.closest(".jsPanel-content").parentElement).querySelectorAll(".jsPanel-minimized-box"))[o.length-1]).append(l);break;case"parent":(t=(n=a.parentElement).querySelector(".jsPanel-minimized-container"))||((t=document.createElement("div")).className="jsPanel-minimized-container",n.append(t)),t.append(l);break;default:document.querySelector(e.minimizeTo).append(l)}}return t&&t.call(a,a,a.statusBefore),e.onminimized&&jsPanel.processCallbacks(a,e.onminimized,"every",a.statusBefore),a}),a.normalize=(t=>"normalized"===a.status?a:(a.statusBefore=a.status,e.onbeforenormalize&&e.onbeforenormalize.length>0&&!jsPanel.processCallbacks(a,e.onbeforenormalize,"some",a.statusBefore)?a:(document.dispatchEvent(r),a.style.width=a.currentData.width,a.style.height=a.currentData.height,a.snapped?a.snap(a.snapped,!0):(a.style.left=a.currentData.left,a.style.top=a.currentData.top),x.style.transform="unset",a.removeMinimizedReplacement(),a.status="normalized",a.setControls([".jsPanel-btn-normalize"]),a.front(),document.dispatchEvent(i),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore),t&&t.call(a,a,a.statusBefore),e.onnormalized&&jsPanel.processCallbacks(a,e.onnormalized,"every",a.statusBefore),a))),a.smallify=(t=>{if("smallified"===a.status||"smallifiedmax"===a.status)return a;if(a.statusBefore=a.status,e.onbeforesmallify&&e.onbeforesmallify.length>0&&!jsPanel.processCallbacks(a,e.onbeforesmallify,"some",a.statusBefore))return a;document.dispatchEvent(f),a.style.overflow="hidden";const n=window.getComputedStyle(a),o=parseFloat(window.getComputedStyle(a.headerbar).height);a.style.height=parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth)+o+"px",x.style.transform="rotate(180deg)","normalized"===a.status?(a.setControls([".jsPanel-btn-normalize"]),a.status="smallified",document.dispatchEvent(m),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore)):"maximized"===a.status&&(a.setControls([".jsPanel-btn-maximize"]),a.status="smallifiedmax",document.dispatchEvent(u),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore));const l=a.querySelectorAll(".jsPanel-minimized-box");return l[l.length-1].style.display="none",t&&t.call(a,a,a.statusBefore),e.onsmallified&&jsPanel.processCallbacks(a,e.onsmallified,"every",a.statusBefore),a}),a.unsmallify=(t=>{if(a.statusBefore=a.status,"smallified"===a.status||"smallifiedmax"===a.status){if(e.onbeforeunsmallify&&e.onbeforeunsmallify.length>0&&!jsPanel.processCallbacks(a,e.onbeforeunsmallify,"some",a.statusBefore))return a;document.dispatchEvent(g),a.style.overflow="visible",a.front(),"smallified"===a.status?(a.style.height=a.currentData.height,a.setControls([".jsPanel-btn-normalize"]),a.status="normalized",document.dispatchEvent(i),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore)):"smallifiedmax"===a.status?a.maximize():"minimized"===a.status&&a.normalize(),x.style.transform="rotate(0deg)";const n=a.querySelectorAll(".jsPanel-minimized-box");n[n.length-1].style.display="flex",t&&t.call(a,a,a.statusBefore),e.onunsmallified&&jsPanel.processCallbacks(a,e.onunsmallified,"every",a.statusBefore)}return a}),a.front=((t,n=!0)=>{if("minimized"===a.status)"maximized"===a.statusBefore?a.maximize():a.normalize();else{const e=Array.prototype.slice.call(document.querySelectorAll(".jsPanel-standard")).map(e=>e.style.zIndex);Math.max(...e)>a.style.zIndex&&(a.style.zIndex=jsPanel.zi.next()),jsPanel.resetZi()}return document.dispatchEvent(b),t&&t.call(a,a),e.onfronted&&n&&jsPanel.processCallbacks(a,e.onfronted,"every",a.status),a}),a.snap=((e,t=!1)=>{if(t||(a.currentData.beforeSnap={width:a.currentData.width,height:a.currentData.height}),e&&"function"==typeof e&&!t)e.call(a,a,a.snappableTo);else if(!1!==e){const e=[0,0];if(a.options.dragit.snap.containment&&a.options.dragit.containment){const t=jsPanel.pOcontainment(a.options.dragit.containment),n=a.snappableTo;n.startsWith("left")?e[0]=t[3]:n.startsWith("right")&&(e[0]=-t[1]),n.endsWith("top")?e[1]=t[0]:n.endsWith("bottom")&&(e[1]=-t[2])}a.reposition(`${a.snappableTo} ${e[0]} ${e[1]}`)}t||(a.snapped=a.snappableTo)}),a.move=((e,t)=>{let n=a.overlaps(e,"paddingbox"),o=a.parentElement;return e.appendChild(a),a.options.container=e,a.style.left=n.left+"px",a.style.top=n.top+"px",a.saveCurrentDimensions(),a.saveCurrentPosition(),a.calcSizeFactors(),t&&t.call(a,a,e,o),a}),a.closeChildpanels=(e=>(a.getChildpanels().forEach(e=>e.close()),e&&e.call(a,a),a)),a.getChildpanels=(e=>{const t=a.content.querySelectorAll(".jsPanel");return e&&t.forEach((t,n,o)=>{e.call(t,t,n,o)}),t}),a.isChildpanel=(e=>{const t=a.closest(".jsPanel-content"),n=t?t.parentElement:null;return e&&e.call(a,a,n),!!t&&n}),a.contentRemove=(e=>(jsPanel.emptyNode(a.content),e&&e.call(a,a),a)),a.createMinimizedReplacement=(()=>{const t=jsPanel.createMinimizedTemplate(),n=window.getComputedStyle(a.headertitle).color,o=window.getComputedStyle(a),l=e.iconfont,s=t.querySelector(".jsPanel-controlbar");return"auto-show-hide"!==a.options.header?jsPanel.setStyle(t,{backgroundColor:o.backgroundColor,backgroundPositionX:o.backgroundPositionX,backgroundPositionY:o.backgroundPositionY,backgroundRepeat:o.backgroundRepeat,backgroundAttachment:o.backgroundAttachment,backgroundImage:o.backgroundImage,backgroundSize:o.backgroundSize,backgroundOrigin:o.backgroundOrigin,backgroundClip:o.backgroundClip}):t.style.backgroundColor=window.getComputedStyle(a.header).backgroundColor,t.id=a.id+"-min",t.querySelector(".jsPanel-headerbar").replaceChild(a.headerlogo.cloneNode(!0),t.querySelector(".jsPanel-headerlogo")),t.querySelector(".jsPanel-titlebar").replaceChild(a.headertitle.cloneNode(!0),t.querySelector(".jsPanel-title")),t.querySelector(".jsPanel-titlebar").setAttribute("title",a.headertitle.textContent),t.querySelector(".jsPanel-title").style.color=n,s.style.color=n,s.querySelectorAll("button").forEach(e=>{e.style.color=n}),["jsPanel-hdr-dark","jsPanel-hdr-light"].forEach(e=>{a.header.classList.contains(e)&&t.querySelector(".jsPanel-hdr").classList.add(e)}),a.setIconfont(l,t),"enabled"===a.dataset.btnnormalize?jsPanel.pointerup.forEach(e=>{t.querySelector(".jsPanel-btn-normalize").addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.normalize()})}):s.querySelector(".jsPanel-btn-normalize").style.display="none","enabled"===a.dataset.btnmaximize?jsPanel.pointerup.forEach(e=>{t.querySelector(".jsPanel-btn-maximize").addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.maximize()})}):s.querySelector(".jsPanel-btn-maximize").style.display="none","enabled"===a.dataset.btnclose?jsPanel.pointerup.forEach(e=>{t.querySelector(".jsPanel-btn-close").addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.close(null,!0)})}):s.querySelector(".jsPanel-btn-close").style.display="none",t}),a.removeMinimizedReplacement=(()=>{const e=document.getElementById(`${a.id}-min`);e&&e.parentElement.removeChild(e)}),a.drag=((e={})=>{let t,n,o;const l=new CustomEvent("jspaneldragstart",{detail:a.id}),s=new CustomEvent("jspaneldrag",{detail:a.id}),r=new CustomEvent("jspaneldragstop",{detail:a.id});[l,s,r].forEach(e=>{e.panel=a});const i=e=>{let t=e.split("-");return t.forEach((e,n)=>{t[n]=e.charAt(0).toUpperCase()+e.slice(1)}),"snap"+t.join("")};function c(e){null===e.relatedTarget&&jsPanel.pointermove.forEach(e=>{document.removeEventListener(e,n,!1),a.style.opacity=1})}let d=e.handles||jsPanel.defaults.dragit.handles,p=e.cursor||jsPanel.defaults.dragit.cursor;function h(e,l){if(jsPanel.pointermove.forEach(e=>{document.removeEventListener(e,n)}),jsPanel.removeSnapAreas(),t){if(a.style.opacity=1,t=void 0,o.snap){switch(a.snappableTo){case"left-top":a.snap(o.snap.snapLeftTop);break;case"center-top":a.snap(o.snap.snapCenterTop);break;case"right-top":a.snap(o.snap.snapRightTop);break;case"right-center":a.snap(o.snap.snapRightCenter);break;case"right-bottom":a.snap(o.snap.snapRightBottom);break;case"center-bottom":a.snap(o.snap.snapCenterBottom);break;case"left-bottom":a.snap(o.snap.snapLeftBottom);break;case"left-center":a.snap(o.snap.snapLeftCenter)}o.snap.callback&&a.snappableTo&&"function"==typeof o.snap.callback&&(o.snap.callback.call(a,a),o.snap.repositionOnSnap&&!1!==o.snap[i(a.snappableTo)]&&a.repositionOnSnap(a.snappableTo)),a.snappableTo&&o.snap.repositionOnSnap&&o.snap[i(a.snappableTo)]&&a.repositionOnSnap(a.snappableTo)}if(a.droppableTo&&a.droppableTo){let e=a.parentElement;a.move(a.droppableTo),o.drop.callback&&o.drop.callback.call(a,a,a.droppableTo,e)}if(document.dispatchEvent(r),o.stop.length){let t=window.getComputedStyle(a),n={left:parseFloat(t.left),top:parseFloat(t.top),width:parseFloat(t.width),height:parseFloat(t.height)};jsPanel.processCallbacks(a,o.stop,!1,n,e)}a.saveCurrentPosition(),a.calcSizeFactors()}a.controlbar.style.pointerEvents="inherit",a.content.style.pointerEvents="inherit",document.querySelectorAll("iframe").forEach(e=>{e.style.pointerEvents="auto"}),document.removeEventListener(l,h)}return a.querySelectorAll(d).forEach(r=>{r.style.touchAction="none",r.style.cursor=p,jsPanel.pointerdown.forEach(i=>{r.addEventListener(i,r=>{if(r.button&&r.button>0)return!1;if((o=Object.assign({},jsPanel.defaults.dragit,e)).disableOnMaximized&&"maximized"===a.status)return!1;if((o.containment||0===o.containment)&&(o.containment=jsPanel.pOcontainment(o.containment)),o.grid&&Array.isArray(o.grid)&&1===o.grid.length&&(o.grid[1]=o.grid[0]),o.snap&&("object"==typeof o.snap?o.snap=Object.assign({},jsPanel.defaultSnapConfig,o.snap):o.snap=jsPanel.defaultSnapConfig),r.target.closest(".jsPanel-ftr-btn"))return;a.controlbar.style.pointerEvents="none",a.content.style.pointerEvents="none",document.querySelectorAll("iframe").forEach(e=>{e.style.pointerEvents="none"});let i=window.getComputedStyle(a),d=parseFloat(i.left),p=parseFloat(i.top),h=parseFloat(i.width),f=parseFloat(i.height),m=r.touches?r.touches[0].clientX:r.clientX,u=r.touches?r.touches[0].clientY:r.clientY,g=a.parentElement,b=g.getBoundingClientRect(),y=window.getComputedStyle(g),w=a.getScaleFactor(),j=0;n=(e=>{if(e.preventDefault(),!t){if(document.dispatchEvent(l),a.style.opacity=o.opacity,a.snapped&&o.snap.resizeToPreSnap&&a.currentData.beforeSnap){a.resize(a.currentData.beforeSnap.width+" "+a.currentData.beforeSnap.height),a.setControls([".jsPanel-btn-normalize"]);let e=a.getBoundingClientRect(),t=m-(e.left+e.width),n=e.width/2;t>-n&&(j=t+n)}if(a.front(),a.snapped=!1,"maximized"===a.status&&(a.setControls([".jsPanel-btn-normalize"]),a.status="normalized"),o.drop&&o.drop.dropZones){let e=o.drop.dropZones.map(e=>jsPanel.pOcontainer(e)),t=[];e.forEach(function(e){e.length?e.forEach(function(e){t.push(e)}):t.push(e)}),t=t.filter(function(e,t,n){return n.indexOf(e)===t}),o.drop.dropZones=t}o.start.length&&jsPanel.processCallbacks(a,o.start,!1,{left:d,top:p,width:h,height:f},e)}let n,r,i,c,v,P,E,x,C,F;t=1;let z,S=e.touches?e.touches[0].clientX:e.clientX,A=e.touches?e.touches[0].clientY:e.clientY,k=window.getComputedStyle(a);if(g===document.body){let e=a.getBoundingClientRect();C=window.innerWidth-parseInt(y.borderLeftWidth,10)-parseInt(y.borderRightWidth,10)-(e.left+e.width),F=window.innerHeight-parseInt(y.borderTopWidth,10)-parseInt(y.borderBottomWidth,10)-(e.top+e.height)}else C=parseInt(y.width,10)-parseInt(y.borderLeftWidth,10)-parseInt(y.borderRightWidth,10)-(parseInt(k.left,10)+parseInt(k.width,10)),F=parseInt(y.height,10)-parseInt(y.borderTopWidth,10)-parseInt(y.borderBottomWidth,10)-(parseInt(k.top,10)+parseInt(k.height,10));n=parseFloat(k.left),i=parseFloat(k.top),v=C,E=F,o.snap&&("panel"===o.snap.trigger?(r=n**2,c=i**2,P=v**2,x=E**2):"pointer"===o.snap.trigger&&("window"===a.options.container?(n=S,r=S**2,c=(i=A)**2,P=(v=window.innerWidth-S)**2,x=(E=window.innerHeight-A)**2):(n=(z=a.overlaps(g,"paddingbox",e)).pointer.left,i=z.pointer.top,v=z.pointer.right,E=z.pointer.bottom,r=z.pointer.left**2,c=z.pointer.top**2,P=z.pointer.right**2,x=z.pointer.bottom**2)));let B=Math.sqrt(r+c),T=Math.sqrt(r+x),L=Math.sqrt(P+c),R=Math.sqrt(P+x),W=Math.abs(n-v)/2,D=Math.abs(i-E)/2,$=Math.sqrt(r+D**2),q=Math.sqrt(c+W**2),O=Math.sqrt(P+D**2),I=Math.sqrt(x+W**2);if(window.getSelection().removeAllRanges(),document.dispatchEvent(s),o.axis&&"x"!==o.axis||(a.style.left=d+(S-m)/w.x+j+"px"),o.axis&&"y"!==o.axis||(a.style.top=p+(A-u)/w.y+"px"),o.grid){let e=o.grid,t=o.axis,n=e[0]*Math.round((d+(S-m))/e[0]),l=e[1]*Math.round((p+(A-u))/e[1]);t&&"x"!==t||(a.style.left=`${n}px`),t&&"y"!==t||(a.style.top=`${l}px`)}if(o.containment||0===o.containment){let e,t,n=o.containment;if(a.options.container===document.body)e=window.innerWidth-parseFloat(k.width)-n[1],t=window.innerHeight-parseFloat(k.height)-n[2];else{let o=parseFloat(y.borderLeftWidth)+parseFloat(y.borderRightWidth),a=parseFloat(y.borderTopWidth)+parseFloat(y.borderBottomWidth);e=b.width/w.x-parseFloat(k.width)-n[1]-o,t=b.height/w.y-parseFloat(k.height)-n[2]-a}parseFloat(a.style.left)<=n[3]&&(a.style.left=n[3]+"px"),parseFloat(a.style.top)<=n[0]&&(a.style.top=n[0]+"px"),parseFloat(a.style.left)>=e&&(a.style.left=e+"px"),parseFloat(a.style.top)>=t&&(a.style.top=t+"px")}if(o.drag.length){let t={left:n,top:i,right:v,bottom:E,width:parseFloat(k.width),height:parseFloat(k.height)};jsPanel.processCallbacks(a,o.drag,!1,t,e)}if(o.snap){let e=o.snap.sensitivity,t=g===document.body?window.innerWidth/8:b.width/8,l=g===document.body?window.innerHeight/8:b.height/8;a.snappableTo=!1,jsPanel.removeSnapAreas(),B0&&z.pointer.top>0?(a.snappableTo="left-top",jsPanel.createSnapArea(a,"lt",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="left-top",jsPanel.createSnapArea(a,"lt",e))):T0&&z.pointer.bottom>0?(a.snappableTo="left-bottom",jsPanel.createSnapArea(a,"lb",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="left-bottom",jsPanel.createSnapArea(a,"lb",e))):L0&&z.pointer.top>0?(a.snappableTo="right-top",jsPanel.createSnapArea(a,"rt",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="right-top",jsPanel.createSnapArea(a,"rt",e))):R0&&z.pointer.bottom>0?(a.snappableTo="right-bottom",jsPanel.createSnapArea(a,"rb",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="right-bottom",jsPanel.createSnapArea(a,"rb",e))):i0?(a.snappableTo="center-top",jsPanel.createSnapArea(a,"ct",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="center-top",jsPanel.createSnapArea(a,"ct",e))):n0?(a.snappableTo="left-center",jsPanel.createSnapArea(a,"lc",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="left-center",jsPanel.createSnapArea(a,"lc",e))):v0?(a.snappableTo="right-center",jsPanel.createSnapArea(a,"rc",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="right-center",jsPanel.createSnapArea(a,"rc",e))):E0?(a.snappableTo="center-bottom",jsPanel.createSnapArea(a,"cb",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="center-bottom",jsPanel.createSnapArea(a,"cb",e)))}if(o.drop&&o.drop.dropZones){let t=jsPanel.isIE?"msElementsFromPoint":"elementsFromPoint",n=document[t](e.clientX,e.clientY);Array.isArray(n)||(n=Array.prototype.slice.call(n)),o.drop.dropZones.forEach(e=>{n.includes(e)&&(a.droppableTo=e)}),n.includes(a.droppableTo)||(a.droppableTo=!1)}}),jsPanel.pointermove.forEach(e=>{document.addEventListener(e,n)}),window.addEventListener("mouseout",c,!1)})}),jsPanel.pointerup.forEach(e=>{document.addEventListener(e,h),window.removeEventListener("mouseout",c)}),e.disable&&(r.style.pointerEvents="none")}),a}),a.dragit=(t=>{const n=Object.assign({},jsPanel.defaults.dragit,e.dragit),o=a.querySelectorAll(n.handles);return"disable"===t?o.forEach(e=>{e.style.pointerEvents="none"}):o.forEach(e=>{e.style.pointerEvents="auto"}),a}),a.sizeit=((e={})=>{const t=new CustomEvent("jspanelresizestart",{detail:a.id}),n=new CustomEvent("jspanelresize",{detail:a.id}),o=new CustomEvent("jspanelresizestop",{detail:a.id});[t,n,o].forEach(e=>{e.panel=a});let l,s,r,i,c,d,p={};p.handles=e.handles||jsPanel.defaults.resizeit.handles,p.handles.split(",").forEach(e=>{const t=document.createElement("DIV");t.className=`jsPanel-resizeit-handle jsPanel-resizeit-${e.trim()}`,a.append(t)});let h=!!e.aspectRatio&&e.aspectRatio;function f(e){null===e.relatedTarget&&jsPanel.pointermove.forEach(e=>{document.removeEventListener(e,l,!1)})}return a.querySelectorAll(".jsPanel-resizeit-handle").forEach(m=>{m.style.touchAction="none",jsPanel.pointerdown.forEach(o=>{m.addEventListener(o,o=>{if(o.preventDefault(),o.stopPropagation(),o.button&&o.button>0)return!1;let h=1;if(((p=Object.assign({},jsPanel.defaults.resizeit,e)).containment||0===p.containment)&&(p.containment=jsPanel.pOcontainment(p.containment)),p.aspectRatio&&!0===p.aspectRatio&&(p.aspectRatio="panel"),jsPanel.modifier){let e=jsPanel.modifier;e.altKey?p.aspectRatio="content":e.ctrlKey?p.aspectRatio="panel":e.shiftKey&&(p.aspectRatio=!1,h=2)}let m="function"==typeof p.maxWidth?p.maxWidth():p.maxWidth||1e4,u="function"==typeof p.maxHeight?p.maxHeight():p.maxHeight||1e4,g="function"==typeof p.minWidth?p.minWidth():p.minWidth,b="function"==typeof p.minHeight?p.minHeight():p.minHeight;a.content.style.pointerEvents="none",document.querySelectorAll("iframe").forEach(e=>{e.style.pointerEvents="none"});const y=a.parentElement,w=y.tagName.toLowerCase(),j=a.getBoundingClientRect(),v=y.getBoundingClientRect(),P=window.getComputedStyle(y,null),E=parseInt(P.borderLeftWidth,10),x=parseInt(P.borderTopWidth,10),C=P.getPropertyValue("position"),F=o.clientX||o.touches[0].clientX,z=o.clientY||o.touches[0].clientY,S=F/z,A=o.target.classList,k=a.getScaleFactor(),B=j.width/j.height,T=a.content.getBoundingClientRect(),L=T.width/T.height,R=a.header.getBoundingClientRect().height,W=a.footer.getBoundingClientRect().height||0;let D=j.left,$=j.top,q=1e4,O=1e4,I=1e4,M=1e4;c=j.width,d=j.height,"body"!==w&&(D=j.left-v.left+y.scrollLeft,$=j.top-v.top+y.scrollTop),"body"===w&&p.containment?(q=document.documentElement.clientWidth-j.left,I=document.documentElement.clientHeight-j.top,O=j.width+j.left,M=j.height+j.top):p.containment&&("static"===C?(q=v.width-j.left+E,I=v.height+v.top-j.top+x,O=j.width+(j.left-v.left)-E,M=j.height+(j.top-v.top)-x):(q=y.clientWidth-(j.left-v.left)/k.x+E,I=y.clientHeight-(j.top-v.top)/k.y+x,O=(j.width+j.left-v.left)/k.x-E,M=a.clientHeight+(j.top-v.top)/k.y-x)),p.containment&&(O-=p.containment[3],M-=p.containment[0],q-=p.containment[1],I-=p.containment[2]);const H=window.getComputedStyle(a),N=parseFloat(H.width)-j.width,X=parseFloat(H.height)-j.height;let Y=parseFloat(H.left)-j.left,V=parseFloat(H.top)-j.top;y!==document.body&&(Y+=v.left,V+=v.top);let Z=parseInt(H.borderTopWidth,10),U=parseInt(H.borderRightWidth,10),K=parseInt(H.borderBottomWidth,10),_=parseInt(H.borderLeftWidth,10);l=(e=>{e.preventDefault(),s||(document.dispatchEvent(t),p.start.length&&jsPanel.processCallbacks(a,p.start,!1,{width:c,height:d,left:D,top:$},e),a.front(),j.height>d+5&&(a.status="normalized",a.setControls([".jsPanel-btn-normalize"]))),s=1,document.dispatchEvent(n);let o,l=e.touches?e.touches[0].clientX:e.clientX,f=e.touches?e.touches[0].clientY:e.clientY;A.contains("jsPanel-resizeit-e")?((r=c+(l-F)*h/k.x+N)>=q&&(r=q),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px",2===h&&(a.style.left=D-(l-F)+"px"),"content"===p.aspectRatio?(a.style.height=(r-U-_)/L+R+W+Z+K+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*L+"px")):"panel"===p.aspectRatio&&(a.style.height=r/B+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*B+"px"))):A.contains("jsPanel-resizeit-s")?((i=d+(f-z)*h/k.y+X)>=I&&(i=I),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px",2===h&&(a.style.top=$-(f-z)+"px"),"content"===p.aspectRatio?(a.style.width=(i-R-W-Z-K)*L+Z+K+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/L+"px")):"panel"===p.aspectRatio&&(a.style.width=i*B+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/B+"px"))):A.contains("jsPanel-resizeit-w")?((r=c+(F-l)*h/k.x+N)<=m&&r>=g&&r<=O&&(a.style.left=D+(l-F)/k.x+Y+"px"),r>=O&&(r=O),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px","content"===p.aspectRatio?(a.style.height=(r-U-_)/L+R+W+Z+K+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*L+"px")):"panel"===p.aspectRatio&&(a.style.height=r/B+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*B+"px"))):A.contains("jsPanel-resizeit-n")?((i=d+(z-f)*h/k.y+X)<=u&&i>=b&&i<=M&&(a.style.top=$+(f-z)/k.y+V+"px"),i>=M&&(i=M),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px","content"===p.aspectRatio?(a.style.width=(i-R-W-Z-K)*L+Z+K+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/L+"px")):"panel"===p.aspectRatio&&(a.style.width=i*B+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/B+"px"))):A.contains("jsPanel-resizeit-se")?((r=c+(l-F)*h/k.x+N)>=q&&(r=q),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px",2===h&&(a.style.left=D-(l-F)+"px"),p.aspectRatio&&(a.style.height=r/B+"px"),(i=d+(f-z)*h/k.y+X)>=I&&(i=I),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px",2===h&&(a.style.top=$-(f-z)+"px"),"content"===p.aspectRatio?(a.style.width=(i-R-W-Z-K)*L+Z+K+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/L+"px")):"panel"===p.aspectRatio&&(a.style.width=i*B+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/B+"px"))):A.contains("jsPanel-resizeit-sw")?((i=d+(f-z)*h/k.y+X)>=I&&(i=I),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px",2===h&&(a.style.top=$-(f-z)+"px"),p.aspectRatio&&(a.style.width=i*B+"px"),(r=c+(F-l)*h/k.x+N)<=m&&r>=g&&r<=O&&(a.style.left=D+(l-F)/k.x+Y+"px"),r>=O&&(r=O),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px","content"===p.aspectRatio?(a.style.height=(r-U-_)/L+R+W+Z+K+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*L+"px")):"panel"===p.aspectRatio&&(a.style.height=r/B+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*B+"px"))):A.contains("jsPanel-resizeit-ne")?((r=c+(l-F)*h/k.x+N)>=q&&(r=q),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px",2===h&&(a.style.left=D-(l-F)+"px"),p.aspectRatio&&(a.style.height=r/B+"px"),(i=d+(z-f)*h/k.y+X)<=u&&i>=b&&i<=M&&(a.style.top=$+(f-z)/k.y+V+"px"),i>=M&&(i=M),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px","content"===p.aspectRatio?(a.style.width=(i-R-W-Z-K)*L+Z+K+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/L+"px")):"panel"===p.aspectRatio&&(a.style.width=i*B+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/B+"px"))):A.contains("jsPanel-resizeit-nw")&&(p.aspectRatio&&A.contains("jsPanel-resizeit-nw")&&(f=(l=f*S)/S),(r=c+(F-l)*h/k.x+N)<=m&&r>=g&&r<=O&&(a.style.left=D+(l-F)/k.x+Y+"px"),r>=O&&(r=O),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px",p.aspectRatio&&(a.style.height=r/B+"px"),(i=d+(z-f)*h/k.y+X)<=u&&i>=b&&i<=M&&(a.style.top=$+(f-z)/k.y+V+"px"),i>=M&&(i=M),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px","content"===p.aspectRatio?a.style.width=(i-R-W-Z-K)*L+Z+K+"px":"panel"===p.aspectRatio&&(a.style.width=i*B+"px")),window.getSelection().removeAllRanges();const w=window.getComputedStyle(a),v={left:parseFloat(w.left),top:parseFloat(w.top),right:parseFloat(w.right),bottom:parseFloat(w.bottom),width:parseFloat(w.width),height:parseFloat(w.height)};p.resize.length&&jsPanel.processCallbacks(a,p.resize,!1,v,e)}),jsPanel.pointermove.forEach(e=>{document.addEventListener(e,l,!1)}),window.addEventListener("mouseout",f,!1)})}),jsPanel.pointerup.forEach(function(e){document.addEventListener(e,e=>{if(jsPanel.pointermove.forEach(e=>{document.removeEventListener(e,l,!1)}),e.target.classList&&e.target.classList.contains("jsPanel-resizeit-handle")){let t,n,o=e.target.className;if(o.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)&&(t=!0),o.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)&&(n=!0),p.grid&&Array.isArray(p.grid)){1===p.grid.length&&(p.grid[1]=p.grid[0]);const e=parseFloat(a.style.width),o=parseFloat(a.style.height),l=e%p.grid[0],s=o%p.grid[1],r=parseFloat(a.style.left),i=parseFloat(a.style.top),c=r%p.grid[0],d=i%p.grid[1];ld+5&&(t.style.transform="rotate(0deg)"),document.dispatchEvent(o),p.stop.length){let t=window.getComputedStyle(a),n={left:parseFloat(t.left),top:parseFloat(t.top),width:parseFloat(t.width),height:parseFloat(t.height)};jsPanel.processCallbacks(a,p.stop,!1,n,e)}}a.content.style.pointerEvents="inherit",document.querySelectorAll("iframe").forEach(e=>{e.style.pointerEvents="auto"}),p.aspectRatio=h},!1),window.removeEventListener("mouseout",f)}),e.disable&&(m.style.pointerEvents="none")}),a}),a.resizeit=(e=>{const t=a.querySelectorAll(".jsPanel-resizeit-handle");return"disable"===e?t.forEach(e=>{e.style.pointerEvents="none"}):t.forEach(e=>{e.style.pointerEvents="auto"}),a}),a.getScaleFactor=(()=>{const e=a.getBoundingClientRect();return{x:e.width/a.offsetWidth,y:e.height/a.offsetHeight}}),a.calcSizeFactors=(()=>{const t=window.getComputedStyle(a);if("window"===e.container)a.hf=parseFloat(t.left)/(window.innerWidth-parseFloat(t.width)),a.vf=parseFloat(t.top)/(window.innerHeight-parseFloat(t.height));else if(a.parentElement){let e=a.parentElement.getBoundingClientRect();a.hf=parseFloat(t.left)/(e.width-parseFloat(t.width)),a.vf=parseFloat(t.top)/(e.height-parseFloat(t.height))}}),a.saveCurrentDimensions=((e=!1)=>{const t=window.getComputedStyle(a);a.currentData.width=t.width,"normalized"===a.status&&(a.currentData.height=t.height),e&&(a.style.height=t.height)}),a.saveCurrentPosition=(()=>{const e=window.getComputedStyle(a);a.currentData.left=e.left,a.currentData.top=e.top}),a.reposition=((...t)=>{let n,o=e.position,l=!0;return t.forEach(e=>{"string"==typeof e||"object"==typeof e?o=e:"boolean"==typeof e?l=e:"function"==typeof e&&(n=e)}),jsPanel.position(a,o),l&&a.saveCurrentPosition(),n&&n.call(a,a),a}),a.repositionOnSnap=(t=>{let n="0",o="0",l=jsPanel.pOcontainment(e.dragit.containment);if(e.dragit.snap.containment)switch(t){case"left-top":n=l[3],o=l[0];break;case"right-top":n=-l[1],o=l[0];break;case"right-bottom":n=-l[1],o=-l[2];break;case"left-bottom":n=l[3],o=-l[2];break;case"center-top":n=l[3]/2-l[1]/2,o=l[0];break;case"center-bottom":n=l[3]/2-l[1]/2,o=-l[2];break;case"left-center":n=l[3],o=l[0]/2-l[2]/2;break;case"right-center":n=-l[1],o=l[0]/2-l[2]/2}jsPanel.position(a,t),jsPanel.setStyle(a,{left:`calc(${a.style.left} + ${n}px)`,top:`calc(${a.style.top} + ${o}px)`})}),a.overlaps=((e,t,n)=>{let o,l=a.getBoundingClientRect(),s=getComputedStyle(a.parentElement),r=a.getScaleFactor(),i={top:0,right:0,bottom:0,left:0},c=0,d=0,p=0,h=0;"window"!==a.options.container&&"paddingbox"===t&&(i.top=parseInt(s.borderTopWidth,10)*r.y,i.right=parseInt(s.borderRightWidth,10)*r.x,i.bottom=parseInt(s.borderBottomWidth,10)*r.y,i.left=parseInt(s.borderLeftWidth,10)*r.x),o="string"==typeof e?"window"===e?{left:0,top:0,right:window.innerWidth,bottom:window.innerHeight}:"parent"===e?a.parentElement.getBoundingClientRect():document.querySelector(e).getBoundingClientRect():e.getBoundingClientRect(),n&&(c=n.touches?n.touches[0].clientX:n.clientX,d=n.touches?n.touches[0].clientY:n.clientY,p=c-o.left,h=d-o.top);let f=l.lefto.left,m=l.topo.top;return{overlaps:f&&m,top:l.top-o.top-i.top,right:o.right-l.right-i.right,bottom:o.bottom-l.bottom-i.bottom,left:l.left-o.left-i.left,parentBorderWidth:i,panelRect:l,referenceRect:o,pointer:{clientX:c,clientY:d,left:p-i.left,top:h-i.top,right:o.width-p-i.right,bottom:o.height-h-i.bottom}}}),a.setSize=(()=>{if(e.panelSize){const t=jsPanel.pOsize(a,e.panelSize);a.style.width=t.width,a.style.height=t.height}else if(e.contentSize){const t=jsPanel.pOsize(a,e.contentSize);a.content.style.width=t.width,a.content.style.height=t.height,a.style.width=t.width,a.content.style.width="100%"}return a}),a.resize=((...e)=>{let t,n=window.getComputedStyle(a),o={width:n.width,height:n.height},l=!0;e.forEach(e=>{"string"==typeof e?o=e:"object"==typeof e?o=Object.assign(o,e):"boolean"==typeof e?l=e:"function"==typeof e&&(t=e)});let s=jsPanel.pOsize(a,o);a.style.width=s.width,a.style.height=s.height,l&&a.saveCurrentDimensions(),a.status="normalized";let r=a.controlbar.querySelector(".jsPanel-btn-smallify");return r&&(r.style.transform="rotate(0deg)"),t&&t.call(a,a),a.calcSizeFactors(),a}),a.windowResizeHandler=(t=>{if(t.target===window){let n,o,l=a.status,s=e.onwindowresize;"maximized"===l&&s?a.maximize(!1,!0):a.snapped&&"minimized"!==l?a.snap(a.snapped,!0):"normalized"===l||"smallified"===l||"maximized"===l?"function"==typeof s?s.call(a,t,a):(n=(window.innerWidth-a.offsetWidth)*a.hf,a.style.left=n<=0?0:n+"px",o=(window.innerHeight-a.offsetHeight)*a.vf,a.style.top=o<=0?0:o+"px"):"smallifiedmax"===l&&s&&a.maximize(!1,!0).smallify()}}),a.setControls=((e,t)=>(a.header.querySelectorAll(".jsPanel-btn").forEach(e=>{const t=e.className.split("-"),n=t[t.length-1];"hidden"!==a.getAttribute(`data-btn${n}`)&&(e.style.display="block")}),e.forEach(e=>{const t=a.controlbar.querySelector(e);t&&(t.style.display="none")}),t&&t.call(a,a),a)),a.setControlStatus=((e,t="enable",n)=>{const o=a.controlbar.querySelector(`.jsPanel-btn-${e}`);switch(t){case"disable":"removed"!==a.getAttribute(`data-btn${e}`)&&(a.setAttribute(`data-btn${e}`,"disabled"),o.style.pointerEvents="none",o.style.opacity=.4,o.style.cursor="default");break;case"hide":"removed"!==a.getAttribute(`data-btn${e}`)&&(a.setAttribute(`data-btn${e}`,"hidden"),o.style.display="none");break;case"show":"removed"!==a.getAttribute(`data-btn${e}`)&&(a.setAttribute(`data-btn${e}`,"enabled"),o.style.display="block",o.style.pointerEvents="auto",o.style.opacity=1,o.style.cursor="pointer");break;case"enable":"removed"!==a.getAttribute(`data-btn${e}`)&&("hidden"===a.getAttribute(`data-btn${e}`)&&(o.style.display="block"),a.setAttribute(`data-btn${e}`,"enabled"),o.style.pointerEvents="auto",o.style.opacity=1,o.style.cursor="pointer");break;case"remove":a.controlbar.removeChild(o),a.setAttribute(`data-btn${e}`,"removed")}return n&&n.call(a,a),a}),a.setControlSize=(e=>{const t=e.toLowerCase();a.controlbar.querySelectorAll(".jsPanel-btn").forEach(e=>{["jsPanel-btn-xl","jsPanel-btn-lg","jsPanel-btn-md","jsPanel-btn-sm","jsPanel-btn-xs"].forEach(t=>{e.classList.remove(t)}),e.classList.add(`jsPanel-btn-${t}`)}),"xl"===t?a.titlebar.style.fontSize="1.5rem":"lg"===t?a.titlebar.style.fontSize="1.25rem":"md"===t?a.titlebar.style.fontSize="1.05rem":"sm"===t?a.titlebar.style.fontSize=".9rem":"xs"===t&&(a.titlebar.style.fontSize=".8rem")}),a.setHeaderControls=(t=>{if(a.options.headerControls.add){let e=a.options.headerControls.add;Array.isArray(e)||(e=[e]),e.forEach(e=>{a.addControl(e)})}let n=[];a.controlbar.querySelectorAll(".jsPanel-btn").forEach(e=>{let t=e.className.match(/jsPanel-btn-[a-z0-9]{3,}/i)[0].substring(12);n.push(t)});const o=jsPanel.pOheaderControls(e.headerControls);return e.headerControls=o,n.forEach(e=>{o[e]&&a.setControlStatus(e,o[e])}),a.setControlSize(o.size),t&&t.call(a,a),a}),a.setHeaderLogo=((e,t)=>{let n=[a.headerlogo],o=document.querySelector("#"+a.id+"-min");return o&&n.push(o.querySelector(".jsPanel-headerlogo")),"string"==typeof e?"<"!==e.substr(0,1)?n.forEach(t=>{jsPanel.emptyNode(t);let n=document.createElement("img");n.src=e,t.append(n)}):n.forEach(t=>{t.innerHTML=e}):n.forEach(t=>{jsPanel.emptyNode(t),t.append(e)}),a.headerlogo.childNodes.forEach(e=>{e.nodeName&&"IMG"===e.nodeName&&e.setAttribute("draggable","false")}),t&&t.call(a,a),a}),a.setHeaderRemove=(e=>(a.removeChild(a.header),a.content.classList.add("jsPanel-content-noheader"),["close","maximize","normalize","minimize","smallify"].forEach(e=>{a.setAttribute(`data-btn${e}`,"removed")}),e&&e.call(a,a),a)),a.setHeaderTitle=((e,t)=>{let n=[a.headertitle],o=document.querySelector("#"+a.id+"-min");return o&&n.push(o.querySelector(".jsPanel-title")),"string"==typeof e?n.forEach(t=>{t.innerHTML=e}):"function"==typeof e?n.forEach(t=>{jsPanel.emptyNode(t),t.innerHTML=e()}):n.forEach(t=>{jsPanel.emptyNode(t),t.append(e)}),t&&t.call(a,a),a}),a.setIconfont=((e,t=a,n)=>{if(e){let n,o;if("fa"===e||"far"===e||"fal"===e||"fas"===e||"fad"===e)n=[`${e} fa-window-close`,`${e} fa-window-maximize`,`${e} fa-window-restore`,`${e} fa-window-minimize`,`${e} fa-chevron-up`];else if("material-icons"===e)n=[e,e,e,e,e,e],o=["close","fullscreen","fullscreen_exit","call_received","expand_less"];else if(Array.isArray(e))n=[`custom-control-icon ${e[4]}`,`custom-control-icon ${e[3]}`,`custom-control-icon ${e[2]}`,`custom-control-icon ${e[1]}`,`custom-control-icon ${e[0]}`];else{if("bootstrap"!==e&&"glyphicon"!==e)return t;n=["glyphicon glyphicon-remove","glyphicon glyphicon-fullscreen","glyphicon glyphicon-resize-full","glyphicon glyphicon-minus","glyphicon glyphicon-chevron-up"]}t.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(e=>{jsPanel.emptyNode(e).innerHTML=""}),Array.prototype.slice.call(t.querySelectorAll(".jsPanel-controlbar .jsPanel-btn > span")).reverse().forEach((t,a)=>{t.className=n[a],"material-icons"===e&&(t.textContent=o[a])})}return n&&n.call(t,t),t}),a.addToolbar=((e,t,n)=>{if("header"===e?e=a.headertoolbar:"footer"===e&&(e=a.footer),"string"==typeof t)e.innerHTML=t;else if(Array.isArray(t))t.forEach(t=>{"string"==typeof t?e.innerHTML+=t:e.append(t)});else if("function"==typeof t){let n=t.call(a,a);"string"==typeof n?e.innerHTML=n:e.append(n)}else e.append(t);return e.classList.add("active"),n&&n.call(a,a),a}),a.addCloseControl=(()=>{let e=document.createElement("button"),t=a.content.style.color;return e.classList.add("jsPanel-addCloseCtrl"),e.innerHTML=jsPanel.icons.close,e.style.color=t,a.options.rtl&&e.classList.add("rtl"),a.appendChild(e),jsPanel.pointerup.forEach(t=>{e.addEventListener(t,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.close(null,!0)})}),jsPanel.pointerdown.forEach(t=>{e.addEventListener(t,e=>{e.preventDefault()})}),a}),a.addControl=(t=>{if(!t.html)return a;t.position||(t.position=1);const n=a.controlbar.querySelectorAll(".jsPanel-btn").length;let o=document.createElement("button");o.innerHTML=t.html,o.className=`jsPanel-btn jsPanel-btn-${t.name} jsPanel-btn-${e.headerControls.size}`,o.style.color=a.header.style.color,t.position>n?a.controlbar.append(o):a.controlbar.insertBefore(o,a.querySelector(`.jsPanel-controlbar .jsPanel-btn:nth-child(${t.position})`));const l=t.ariaLabel||t.name;return l&&o.setAttribute("aria-label",l),jsPanel.pointerup.forEach(e=>{o.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;t.handler.call(a,a,o)})}),t.afterInsert&&t.afterInsert.call(o,o),a}),a.setRtl=(()=>{[a.header,a.content,a.footer].forEach(t=>{t.dir="rtl",e.rtl.lang&&(t.lang=e.rtl.lang)})}),a.id=e.id,a.classList.add("jsPanel-"+e.paneltype),"standard"===e.paneltype&&(a.style.zIndex=this.zi.next()),o.append(a),a.front(!1,!1),a.setTheme(e.theme),e.boxShadow&&a.classList.add(`jsPanel-depth-${e.boxShadow}`),e.header){if(e.headerLogo&&a.setHeaderLogo(e.headerLogo),a.setIconfont(e.iconfont),a.setHeaderTitle(e.headerTitle),a.setHeaderControls(),jsPanel.isIE){let e=[a.headerbar,a.controlbar];switch(a.options.headerControls.size){case"md":e.forEach(e=>{e.style.height="34px"});break;case"xs":e.forEach(e=>{e.style.height="26px"});break;case"sm":e.forEach(e=>{e.style.height="30px"});break;case"lg":e.forEach(e=>{e.style.height="38px"});break;case"xl":e.forEach(e=>{e.style.height="42px"})}}if("auto-show-hide"===e.header){let t="jsPanel-depth-"+e.boxShadow;a.header.style.opacity=0,a.style.backgroundColor="transparent",this.remClass(a,t),this.setClass(a.content,t),a.header.addEventListener("mouseenter",()=>{a.header.style.opacity=1,jsPanel.setClass(a,t),jsPanel.remClass(a.content,t)}),a.header.addEventListener("mouseleave",()=>{a.header.style.opacity=0,jsPanel.remClass(a,t),jsPanel.setClass(a.content,t)})}}else a.setHeaderRemove(),e.addCloseControl&&a.addCloseControl();if(e.headerToolbar&&a.addToolbar(a.headertoolbar,e.headerToolbar),e.footerToolbar&&a.addToolbar(a.footer,e.footerToolbar),e.border&&a.setBorder(e.border),e.borderRadius&&a.setBorderRadius(e.borderRadius),e.content&&("function"==typeof e.content?e.content.call(a,a):"string"==typeof e.content?a.content.innerHTML=e.content:a.content.append(e.content)),e.contentAjax&&this.ajax(e.contentAjax,a),e.contentFetch&&this.fetch(e.contentFetch,a),e.contentOverflow){const t=e.contentOverflow.split(" ");1===t.length?a.content.style.overflow=t[0]:2===t.length&&(a.content.style.overflowX=t[0],a.content.style.overflowY=t[1])}if(e.autoclose){"number"==typeof e.autoclose?e.autoclose={time:e.autoclose+"ms"}:"string"==typeof e.autoclose&&(e.autoclose={time:e.autoclose});let t=Object.assign({},jsPanel.defaultAutocloseConfig,e.autoclose);t.time&&"number"==typeof t.time&&(t.time+="ms");let n=a.progressbar.querySelector("div");n.addEventListener("animationend",e=>{e.stopPropagation(),a.progressbar.classList.remove("active"),a.close()}),t.progressbar&&(a.progressbar.classList.add("active"),t.background?jsPanel.themes.indexOf(t.background)>-1?a.progressbar.classList.add(t.background+"-bg"):jsPanel.colorNames[t.background]?a.progressbar.style.background="#"+jsPanel.colorNames[t.background]:a.progressbar.style.background=t.background:a.progressbar.classList.add("success-bg")),n.style.animation=`${t.time} progressbar`}if(e.rtl&&a.setRtl(),a.setSize(),a.status="normalized",e.position?this.position(a,e.position):a.style.opacity=1,document.dispatchEvent(i),a.calcSizeFactors(),e.animateIn&&(a.addEventListener("animationend",()=>{this.remClass(a,e.animateIn)}),this.setClass(a,e.animateIn)),e.syncMargins){let t=this.pOcontainment(e.maximizedMargin);e.dragit&&(e.dragit.containment=t,!0===e.dragit.snap?(e.dragit.snap=jsPanel.defaultSnapConfig,e.dragit.snap.containment=!0):e.dragit.snap&&(e.dragit.snap.containment=!0)),e.resizeit&&(e.resizeit.containment=t)}if(e.dragit?(["start","drag","stop"].forEach(t=>{e.dragit[t]?"function"==typeof e.dragit[t]&&(e.dragit[t]=[e.dragit[t]]):e.dragit[t]=[]}),a.drag(e.dragit),a.addEventListener("jspaneldragstop",e=>{e.panel===a&&a.calcSizeFactors()},!1)):a.titlebar.style.cursor="default",e.resizeit){["start","resize","stop"].forEach(t=>{e.resizeit[t]?"function"==typeof e.resizeit[t]&&(e.resizeit[t]=[e.resizeit[t]]):e.resizeit[t]=[]}),a.sizeit(e.resizeit);let t=void 0;a.addEventListener("jspanelresizestart",e=>{e.panel===a&&(t=a.status)},!1),a.addEventListener("jspanelresizestop",n=>{n.panel===a&&("smallified"===t||"smallifiedmax"===t||"maximized"===t)&&parseFloat(a.style.height)>parseFloat(window.getComputedStyle(a.header).height)&&(a.setControls([".jsPanel-btn-normalize"]),a.status="normalized",document.dispatchEvent(i),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every"),a.calcSizeFactors())},!1)}if(a.saveCurrentDimensions(!0),a.saveCurrentPosition(),e.setStatus&&("smallifiedmax"===e.setStatus?a.maximize().smallify():"smallified"===e.setStatus?a.smallify():a[e.setStatus.substr(0,e.setStatus.length-1)]()),this.pointerdown.forEach(t=>{a.addEventListener(t,t=>{t.target.closest(".jsPanel-btn-close")||t.target.closest(".jsPanel-btn-minimize")||"standard"!==e.paneltype||a.front()},!1)}),e.onwindowresize&&"window"===a.options.container&&window.addEventListener("resize",a.windowResizeHandler,!1),e.onparentresize){let t=e.onparentresize,n=a.isChildpanel();if(n){const e=n.content;let o=[];a.parentResizeHandler=(l=>{if(l.panel===n){o[0]=e.offsetWidth,o[1]=e.offsetHeight;let n,l,s=a.status;"maximized"===s&&t?a.maximize():a.snapped&&"minimized"!==s?a.snap(a.snapped,!0):"normalized"===s||"smallified"===s||"maximized"===s?"function"==typeof t?t.call(a,a,{width:o[0],height:o[1]}):(n=(o[0]-a.offsetWidth)*a.hf,a.style.left=n<=0?0:n+"px",l=(o[1]-a.offsetHeight)*a.vf,a.style.top=l<=0?0:l+"px"):"smallifiedmax"===s&&t&&a.maximize().smallify()}}),document.addEventListener("jspanelresize",a.parentResizeHandler,!1)}}return this.globalCallbacks&&(Array.isArray(this.globalCallbacks)?this.globalCallbacks.forEach(e=>{e.call(a,a)}):this.globalCallbacks.call(a,a)),e.callback&&(Array.isArray(e.callback)?e.callback.forEach(e=>{e.call(a,a)}):e.callback.call(a,a)),t&&t.call(a,a),document.dispatchEvent(l),a}}; \ No newline at end of file +export let jsPanel={version:"4.11.3",date:"2021-02-03 16:21",ajaxAlwaysCallbacks:[],autopositionSpacing:4,closeOnEscape:void document.addEventListener("keydown",e=>{"Escape"!==e.key&&"Escape"!==e.code&&"Esc"!==e.key||jsPanel.getPanels(function(){return this.classList.contains("jsPanel")}).some(e=>!!e.options.closeOnEscape&&(e.close(null,!0),!0))},!1),defaults:{boxShadow:3,container:"window",contentSize:{width:"400px",height:"200px"},dragit:{cursor:"move",handles:".jsPanel-headerlogo, .jsPanel-titlebar, .jsPanel-ftr",opacity:.8,disableOnMaximized:!0},header:!0,headerTitle:"jsPanel",headerControls:{size:"md"},iconfont:void 0,maximizedMargin:0,minimizeTo:"default",paneltype:"standard",position:{my:"center",at:"center"},resizeit:{handles:"n, e, s, w, ne, se, sw, nw",minWidth:128,minHeight:38},theme:"default"},defaultAutocloseConfig:{time:"8s",progressbar:!0},defaultSnapConfig:{sensitivity:70,trigger:"panel",active:"both"},extensions:{},globalCallbacks:!1,icons:{close:'',maximize:'',normalize:'',minimize:'',smallify:''},idCounter:0,isIE:(()=>navigator.appVersion.match(/Trident/))(),pointerdown:"ontouchend"in window?["touchstart","mousedown"]:["mousedown"],pointermove:"ontouchend"in window?["touchmove","mousemove"]:["mousemove"],pointerup:"ontouchend"in window?["touchend","mouseup"]:["mouseup"],polyfills:(Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(null==e)throw new TypeError("Cannot convert first argument to object");let t=Object(e);for(let e=1;e=0&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),function(){if("function"==typeof window.CustomEvent)return!1;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};let n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}(),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){return tthis.length)&&-1!==this.indexOf(e,t)}),Number.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},void(Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');let n=Object(this),o=n.length>>>0;if(0===o)return!1;let a=0|t,l=Math.max(a>=0?a:o-Math.abs(a),0);for(;l{jsPanel.modifier=e}),void document.addEventListener("keyup",()=>{jsPanel.modifier=!1})),color(e){let t,n,o,a,l,s,r,i,c,d=e.toLowerCase(),p={};const h=/^rgba?\(([0-9]{1,3}),([0-9]{1,3}),([0-9]{1,3}),?(0|1|0\.[0-9]{1,2}|\.[0-9]{1,2})?\)$/gi,f=/^hsla?\(([0-9]{1,3}),([0-9]{1,3}%),([0-9]{1,3}%),?(0|1|0\.[0-9]{1,2}|\.[0-9]{1,2})?\)$/gi,m=this.colorNames;return m[d]&&(d=m[d]),null!==d.match(/^#?([0-9a-f]{3}|[0-9a-f]{6})$/gi)?((d=d.replace("#","")).length%2==1?(t=String(d.substr(0,1))+d.substr(0,1),n=String(d.substr(1,1))+d.substr(1,1),o=String(d.substr(2,1))+d.substr(2,1),p.rgb={r:parseInt(t,16),g:parseInt(n,16),b:parseInt(o,16)},p.hex=`#${t}${n}${o}`):(p.rgb={r:parseInt(d.substr(0,2),16),g:parseInt(d.substr(2,2),16),b:parseInt(d.substr(4,2),16)},p.hex=`#${d}`),c=this.rgbToHsl(p.rgb.r,p.rgb.g,p.rgb.b),p.hsl=c,p.rgb.css=`rgb(${p.rgb.r},${p.rgb.g},${p.rgb.b})`):d.match(h)?(r=h.exec(d),p.rgb={css:d,r:r[1],g:r[2],b:r[3]},p.hex=this.rgbToHex(r[1],r[2],r[3]),c=this.rgbToHsl(r[1],r[2],r[3]),p.hsl=c):d.match(f)?(a=(r=f.exec(d))[1]/360,l=r[2].substr(0,r[2].length-1)/100,s=r[3].substr(0,r[3].length-1)/100,i=this.hslToRgb(a,l,s),p.rgb={css:`rgb(${i[0]},${i[1]},${i[2]})`,r:i[0],g:i[1],b:i[2]},p.hex=this.rgbToHex(p.rgb.r,p.rgb.g,p.rgb.b),p.hsl={css:`hsl(${r[1]},${r[2]},${r[3]})`,h:r[1],s:r[2],l:r[3]}):(p.hex="#f5f5f5",p.rgb={css:"rgb(245,245,245)",r:245,g:245,b:245},p.hsl={css:"hsl(0,0%,96%)",h:0,s:"0%",l:"96%"}),p},calcColors(e){const t=this.colorBrightnessThreshold,n=this.color(e),o=this.lighten(e,this.colorFilledLight),a=this.darken(e,this.colorFilled),l=this.perceivedBrightness(e)<=t?"#ffffff":"#000000",s=this.perceivedBrightness(o)<=t?"#ffffff":"#000000",r=this.perceivedBrightness(a)<=t?"#ffffff":"#000000",i=this.lighten(e,this.colorFilledDark),c=this.perceivedBrightness(i)<=t?"#ffffff":"#000000";return[n.hsl.css,o,a,l,s,r,i,c]},darken(e,t){const n=this.color(e).hsl,o=parseFloat(n.l),a=Math.round(o-o*t)+"%";return`hsl(${n.h},${n.s},${a})`},lighten(e,t){const n=this.color(e).hsl,o=parseFloat(n.l),a=Math.round(o+(100-o)*t)+"%";return`hsl(${n.h},${n.s},${a})`},hslToRgb(e,t,n){let o,a,l;if(0===t)o=a=l=n;else{let s=(e,t,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e),r=n<.5?n*(1+t):n+t-n*t,i=2*n-r;o=s(i,r,e+1/3),a=s(i,r,e),l=s(i,r,e-1/3)}return[Math.round(255*o),Math.round(255*a),Math.round(255*l)]},rgbToHsl(e,t,n){e/=255,t/=255,n/=255;let o,a,l=Math.max(e,t,n),s=Math.min(e,t,n),r=(l+s)/2;if(l===s)o=a=0;else{let i=l-s;switch(a=r>.5?i/(2-l-s):i/(l+s),l){case e:o=(t-n)/i+(te.match(/^(down|right|up|left)$/i));o.length&&(t.autoposition=o[0],n.splice(n.indexOf(o[0]),1));let a=n.filter(e=>e.match(/^(left-|right-)(top|center|bottom)$|(^center-)(top|bottom)$|(^center$)/i));a.length?(t.my=a[0],t.at=a[1]||a[0],n.splice(n.indexOf(a[0]),1),a[1]&&n.splice(n.indexOf(a[1]),1)):(t.my="center",t.at="center");let l=n.filter(e=>e.match(/^[+-]?\d*\.?\d+[a-z%]*$/i));return l.length&&(t.offsetX=l[0].match(/^[+-]?\d*\.?\d+$/i)?`${l[0]}px`:l[0],l[1]?t.offsetY=l[1].match(/^[+-]?\d*\.?\d+$/i)?`${l[1]}px`:l[1]:t.offsetY=t.offsetX,n.splice(n.indexOf(l[0]),1),l[1]&&n.splice(n.indexOf(l[1]),1)),n.length&&(t.of=n.join(" ")),t},position(e,t){if(!t)return e.style.opacity=1,e;t="string"==typeof t?Object.assign({},this.defaults.position,this.pOposition(t)):Object.assign({},this.defaults.position,t),["my","at","of"].forEach(n=>{"function"==typeof t[n]&&(t[n]=t[n].call(e,e))}),"window"===e.options.container&&(e.style.position="fixed"),"string"==typeof e?e=document.querySelector(e):Object.getPrototypeOf(e).jquery&&(e=e[0]);const n="window"===e.options.container?"window":e.parentElement,o=e.getBoundingClientRect(),a=e.parentElement.getBoundingClientRect(),l="window"===n?{left:0,top:0,width:document.documentElement.clientWidth,height:window.innerHeight}:{width:a.width,height:a.height,left:a.left,top:a.top},s="window"===n?{x:1,y:1}:{x:l.width/n.offsetWidth,y:l.height/n.offsetHeight},r="window"===n?{borderTopWidth:"0px",borderRightWidth:"0px",borderBottomWidth:"0px",borderLeftWidth:"0px"}:window.getComputedStyle(n);let i;l.width-=(parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth))*s.x,l.height-=(parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth))*s.y,i=t.of?"string"==typeof t.of?"window"===t.of?{borderTopWidth:"0px",borderRightWidth:"0px",borderBottomWidth:"0px",borderLeftWidth:"0px"}:document.querySelector(t.of).getBoundingClientRect():Object.getPrototypeOf(t.of).jquery?t.of[0].getBoundingClientRect():t.of.getBoundingClientRect():l;let c="0px";t.my.startsWith("left-")?t.at.startsWith("left-")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+"px":"0px":t.at.startsWith("center")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+i.width/2+"px":l.width/2+"px":t.at.startsWith("right-")&&(c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+i.width+"px":l.width+"px"):t.my.startsWith("center")?t.at.startsWith("left-")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)-o.width/2+"px":-o.width/2+"px":t.at.startsWith("center")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)-(o.width-i.width)/2+"px":l.width/2-o.width/2+"px":t.at.startsWith("right-")&&(c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+(i.width-o.width/2)+"px":l.width-o.width/2+"px"):t.my.startsWith("right-")&&(t.at.startsWith("left-")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)-o.width+"px":-o.width+"px":t.at.startsWith("center")?c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)-o.width+i.width/2+"px":l.width/2-o.width+"px":t.at.startsWith("right-")&&(c=t.of?i.left-l.left-parseFloat(r.borderLeftWidth)+i.width-o.width+"px":l.width-o.width+"px"));let d="0px";t.my.endsWith("-top")?t.at.endsWith("-top")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)+"px":"0px":t.at.endsWith("center")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)+i.height/2+"px":l.height/2+"px":t.at.endsWith("-bottom")&&(d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)+i.height+"px":l.height+"px"):t.my.endsWith("center")?t.at.endsWith("-top")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height/2+"px":-o.height/2+"px":t.at.endsWith("center")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height/2+i.height/2+"px":l.height/2-o.height/2+"px":t.at.endsWith("-bottom")&&(d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height/2+i.height+"px":l.height-o.height/2+"px"):t.my.endsWith("-bottom")&&(t.at.endsWith("-top")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height+"px":-o.height+"px":t.at.endsWith("center")?d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height+i.height/2+"px":l.height/2-o.height+"px":t.at.endsWith("-bottom")&&(d=t.of?i.top-l.top-parseFloat(r.borderTopWidth)-o.height+i.height+"px":l.height-o.height+"px")),e.style.left=1===s.x?c:parseFloat(c)/s.x+"px",e.style.top=1===s.y?d:parseFloat(d)/s.y+"px";let p=getComputedStyle(e),h={left:p.left,top:p.top};return t.autoposition&&t.my===t.at&&["left-top","center-top","right-top","left-bottom","center-bottom","right-bottom"].indexOf(t.my)>=0&&(h=this.applyPositionAutopos(e,h,t)),(t.offsetX||t.offsetY)&&(h=this.applyPositionOffset(e,h,t)),(t.minLeft||t.minTop||t.maxLeft||t.maxTop)&&(h=this.applyPositionMinMax(e,h,t)),t.modify&&(h=this.applyPositionModify(e,h,t)),"number"==typeof e.options.opacity?e.style.opacity=e.options.opacity:e.style.opacity=1,e},applyPositionAutopos(e,t,n){const o=`${n.my}-${n.autoposition.toLowerCase()}`;e.classList.add(o);const a=Array.prototype.slice.call(document.querySelectorAll(`.${o}`)),l=a.indexOf(e);if(a.length>1){switch(n.autoposition){case"down":a.forEach((e,n)=>{n>0&&n<=l&&(t.top=parseFloat(t.top)+a[--n].getBoundingClientRect().height+jsPanel.autopositionSpacing+"px")});break;case"up":a.forEach((e,n)=>{n>0&&n<=l&&(t.top=parseFloat(t.top)-a[--n].getBoundingClientRect().height-jsPanel.autopositionSpacing+"px")});break;case"right":a.forEach((e,n)=>{n>0&&n<=l&&(t.left=parseFloat(t.left)+a[--n].getBoundingClientRect().width+jsPanel.autopositionSpacing+"px")});break;case"left":a.forEach((e,n)=>{n>0&&n<=l&&(t.left=parseFloat(t.left)-a[--n].getBoundingClientRect().width-jsPanel.autopositionSpacing+"px")})}e.style.left=t.left,e.style.top=t.top}return{left:t.left,top:t.top}},applyPositionOffset(e,t,n){["offsetX","offsetY"].forEach(e=>{n[e]?("function"==typeof n[e]&&(n[e]=n[e].call(t,t,n)),!1===isNaN(n[e])&&(n[e]=`${n[e]}px`)):n[e]="0px"}),e.style.left=`calc(${e.style.left} + ${n.offsetX})`,e.style.top=`calc(${e.style.top} + ${n.offsetY})`;const o=getComputedStyle(e);return{left:o.left,top:o.top}},applyPositionMinMax(e,t,n){if(["minLeft","minTop","maxLeft","maxTop"].forEach(e=>{n[e]&&("function"==typeof n[e]&&(n[e]=n[e].call(t,t,n)),(Number.isInteger(n[e])||n[e].match(/^\d+$/))&&(n[e]=`${n[e]}px`))}),n.minLeft){e.style.left=n.minLeft;let o=getComputedStyle(e).left;parseFloat(o)parseFloat(t.left)?e.style.left=t.left:t.left=o}if(n.maxTop){e.style.top=n.maxTop;let o=getComputedStyle(e).top;parseFloat(o)>parseFloat(t.top)?e.style.top=t.top:t.top=o}const o=getComputedStyle(e);return{left:o.left,top:o.top}},applyPositionModify(e,t,n){if(n.modify&&"function"==typeof n.modify){const o=n.modify.call(t,t,n);e.style.left=Number.isInteger(o.left)||o.left.match(/^\d+$/)?`${o.left}px`:o.left,e.style.top=Number.isInteger(o.top)||o.top.match(/^\d+$/)?`${o.top}px`:o.top}const o=getComputedStyle(e);return{left:o.left,top:o.top}},autopositionRemaining(e){let t,n=e.options.container;if(["left-top-down","left-top-right","center-top-down","right-top-down","right-top-left","left-bottom-up","left-bottom-right","center-bottom-up","right-bottom-up","right-bottom-left"].forEach(n=>{e.classList.contains(n)&&(t=n)}),t){("window"===n?document.body:"string"==typeof n?document.querySelector(n):n).querySelectorAll(`.${t}`).forEach(e=>{e.reposition()})}},addScript(e,t="application/javascript",n){if(!document.querySelector(`script[src="${e}"]`)){const o=document.createElement("script");n&&(o.onload=n),o.src=e,o.type=t,document.head.appendChild(o)}},ajax(e,t){let n,o,a=new XMLHttpRequest;const l={method:"GET",async:!0,user:"",pwd:"",done:function(){if(t){let e=jsPanel.strToHtml(this.responseText);n.urlSelector&&(e=e.querySelector(n.urlSelector)),t.contentRemove(),t.content.append(e)}},autoresize:!0,autoreposition:!0};if(t&&"string"==typeof e)n=Object.assign({},l,{url:e});else{if("object"!=typeof e||!e.url){if(this.errorReporting){let e="XMLHttpRequest seems to miss the url parameter!";jsPanel.errorpanel(e)}return}(n=Object.assign({},l,e)).url=e.url,!1===n.async&&(n.timeout=0,n.withCredentials&&(n.withCredentials=void 0),n.responseType&&(n.responseType=void 0))}o=n.url.trim().split(/\s+/),n.url=encodeURI(o[0]),o.length>1&&(o.shift(),n.urlSelector=o.join(" ")),a.onreadystatechange=(()=>{4===a.readyState&&(200===a.status?t?n.done.call(a,a,t):n.done.call(a,a):n.fail&&(t?n.fail.call(a,a,t):n.fail.call(a,a)),n.always&&(t?n.always.call(a,a,t):n.always.call(a,a)),t&&(n.autoresize||n.autoreposition)&&jsPanel.ajaxAutoresizeAutoreposition(t,n),jsPanel.ajaxAlwaysCallbacks.length&&jsPanel.ajaxAlwaysCallbacks.forEach(e=>{t?e.call(a,a,t):e.call(a,a)}))}),a.open(n.method,n.url,n.async,n.user,n.pwd),a.timeout=n.timeout||0,n.withCredentials&&(a.withCredentials=n.withCredentials),n.responseType&&(a.responseType=n.responseType),n.beforeSend&&(t?n.beforeSend.call(a,a,t):n.beforeSend.call(a,a)),n.data?a.send(n.data):a.send(null)},ajaxAutoresizeAutoreposition(e,t){const n=e.options.contentSize;if("string"==typeof n&&n.match(/auto/i)){const o=n.split(" "),a=Object.assign({},{width:o[0],height:o[1]});t.autoresize&&e.resize(a),e.classList.contains("jsPanel-contextmenu")||t.autoreposition&&e.reposition()}else if("object"==typeof n&&("auto"===n.width||"auto"===n.height)){const o=Object.assign({},n);t.autoresize&&e.resize(o),e.classList.contains("jsPanel-contextmenu")||t.autoreposition&&e.reposition()}},createPanelTemplate(e=!0){const t=document.createElement("div");return t.className="jsPanel",t.style.left="0",t.style.top="0",e&&["close","maximize","normalize","minimize","smallify"].forEach(e=>{t.setAttribute(`data-btn${e}`,"enabled")}),t.innerHTML=`
\n
\n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
`,t},createMinimizedTemplate(){const e=document.createElement("div");return e.className="jsPanel-replacement",e.innerHTML=`
\n
\n \n
\n
\n
\n
\n \n \n \n
\n
\n
`,e},createSnapArea(e,t,n){const o=document.createElement("div"),a=e.parentElement;o.className=`jsPanel-snap-area jsPanel-snap-area-${t}`,"lt"===t||"rt"===t||"rb"===t||"lb"===t?(o.style.width=n+"px",o.style.height=n+"px"):"ct"===t||"cb"===t?o.style.height=n+"px":"lc"!==t&&"rc"!==t||(o.style.width=n+"px"),a!==document.body&&(o.style.position="absolute"),document.querySelector(`.jsPanel-snap-area.jsPanel-snap-area-${t}`)||e.parentElement.appendChild(o)},emptyNode(e){for(;e.firstChild;)e.removeChild(e.firstChild);return e},extend(e){if("[object Object]"===Object.prototype.toString.call(e))for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(this.extensions[t]=e[t])},fetch(e,t){let n;const o={bodyMethod:"text",autoresize:!0,autoreposition:!0,done:function(e,t){if(t){let n=jsPanel.strToHtml(e);t.contentRemove(),t.content.append(n)}}};if(t&&"string"==typeof e)n=Object.assign({},o,{resource:encodeURI(e)});else{if("object"!=typeof e||!e.resource){if(this.errorReporting){let e="Fetch Request seems to miss the resource parameter!";jsPanel.errorpanel(e)}return}(n=Object.assign({},o,e)).resource=encodeURI(e.resource)}const a=n.fetchInit||{};n.beforeSend&&(t?n.beforeSend.call(e,e,t):n.beforeSend.call(e,e)),fetch(n.resource,a).then(e=>{if(e.ok)return e[n.bodyMethod]()}).then(e=>{t?n.done.call(e,e,t):n.done.call(e,e),t&&(n.autoresize||n.autoreposition)&&jsPanel.ajaxAutoresizeAutoreposition(t,n)})},getPanels:(e=function(){return this.classList.contains("jsPanel-standard")})=>Array.prototype.slice.call(document.querySelectorAll(".jsPanel")).filter(t=>e.call(t,t)).sort((e,t)=>t.style.zIndex-e.style.zIndex),pOcontainer(e){if("window"===e)return document.body;if("string"==typeof e){let t=document.querySelectorAll(e);return!!(t.length&&t.length>0)&&t}return 1===e.nodeType?e:!!e.length&&e[0]},pOcontainment(e){let t=e;if("function"==typeof e&&(t=e()),"number"==typeof t)return[t,t,t,t];if(Array.isArray(t)){if(1===t.length)return[t[0],t[0],t[0],t[0]];if(2===t.length)return t.concat(t);3===t.length&&(t[3]=t[1])}return t},pOsize(e,t){let n=t||this.defaults.contentSize;const o=e.parentElement;if("string"==typeof n){const e=n.trim().split(" ");(n={}).width=e[0],2===e.length?n.height=e[1]:n.height=e[0]}else n.width&&!n.height?n.height=n.width:n.height&&!n.width&&(n.width=n.height);if(String(n.width).match(/^[0-9.]+$/gi))n.width+="px";else if("string"==typeof n.width&&n.width.endsWith("%"))if(o===document.body)n.width=window.innerWidth*(parseFloat(n.width)/100)+"px";else{const e=window.getComputedStyle(o),t=parseFloat(e.borderLeftWidth)+parseFloat(e.borderRightWidth);n.width=(parseFloat(e.width)-t)*(parseFloat(n.width)/100)+"px"}else"function"==typeof n.width&&(n.width=n.width.call(e,e),"number"==typeof n.width?n.width+="px":"string"==typeof n.width&&n.width.match(/^[0-9.]+$/gi)&&(n.width+="px"));if(String(n.height).match(/^[0-9.]+$/gi))n.height+="px";else if("string"==typeof n.height&&n.height.endsWith("%"))if(o===document.body)n.height=window.innerHeight*(parseFloat(n.height)/100)+"px";else{const e=window.getComputedStyle(o),t=parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth);n.height=(parseFloat(e.height)-t)*(parseFloat(n.height)/100)+"px"}else"function"==typeof n.height&&(n.height=n.height.call(e,e),"number"==typeof n.height?n.height+="px":"string"==typeof n.height&&n.height.match(/^[0-9.]+$/gi)&&(n.height+="px"));return n},pOborder(e){e=e.trim();const t=new Array(3),n=e.match(/\s*(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset)\s*/gi),o=e.match(/\s*(thin|medium|thick)|(\d*\.?\d+[a-zA-Z]{2,4})\s*/gi);return n?(t[1]=n[0].trim(),e=e.replace(t[1],"")):t[1]="solid",o?(t[0]=o[0].trim(),e=e.replace(t[0],"")):t[0]="medium",t[2]=e.trim(),t},pOheaderControls(e){if("string"==typeof e){let t={},n=e.toLowerCase(),o=n.match(/xl|lg|md|sm|xs/),a=n.match(/closeonly|none/);return o&&(t.size=o[0]),a&&(t=Object.assign({},t,{maximize:"remove",normalize:"remove",minimize:"remove",smallify:"remove"}),"none"===a[0]&&(t.close="remove")),Object.assign({},this.defaults.headerControls,t)}return Object.assign({},this.defaults.headerControls,e)},processCallbacks(e,t,n="some",o,a){if("function"==typeof t&&(t=[t]),n)return t[n](t=>t.call(e,e,o,a));t.forEach(t=>{t.call(e,e,o,a)})},removeSnapAreas(){document.querySelectorAll(".jsPanel-snap-area").forEach(e=>{e.parentElement.removeChild(e)})},resetZi(){this.zi=((e=jsPanel.ziBase)=>{let t=e;return{next:()=>t++}})(),Array.prototype.slice.call(document.querySelectorAll(".jsPanel-standard")).sort((e,t)=>e.style.zIndex-t.style.zIndex).forEach(e=>{e.style.zIndex=jsPanel.zi.next()})},setClass:(e,t)=>(t.trim().split(/\s+/).forEach(t=>e.classList.add(t)),e),remClass:(e,t)=>(t.trim().split(/\s+/).forEach(t=>e.classList.remove(t)),e),toggleClass:(e,t)=>(t.trim().split(/\s+/).forEach(t=>{e.classList.contains(t)?e.classList.remove(t):e.classList.add(t)}),e),setStyles(e,t){for(let n in t)n in e.style?e.style[n]=t[n]:e.style.setProperty(n,t[n]);return e},setStyle(e,t){return this.setStyles.call(e,e,t)},strToHtml:e=>document.createRange().createContextualFragment(e),errorpanel(e){this.create({paneltype:"error",dragit:!1,resizeit:!1,theme:{bgPanel:"white",bgContent:"white",colorHeader:"rebeccapurple",colorContent:"#333",border:"2px solid rebeccapurple"},borderRadius:".33rem",headerControls:"closeonly xs",headerTitle:"⚠ jsPanel Error",contentSize:{width:"50%",height:"auto"},position:"center-top 0 5 down",animateIn:"jsPanelFadeIn",content:`

${e}

`})},create(e={},t){jsPanel.zi||(jsPanel.zi=((e=jsPanel.ziBase)=>{let t=e;return{next:()=>t++}})()),e.config?delete(e=Object.assign({},this.defaults,e.config,e)).config:e=Object.assign({},this.defaults,e),e.id?"function"==typeof e.id&&(e.id=e.id()):e.id=`jsPanel-${jsPanel.idCounter+=1}`;const n=document.getElementById(e.id);if(null!==n){if(n.classList.contains("jsPanel")&&n.front(),this.errorReporting){let t=`◀ COULD NOT CREATE NEW JSPANEL ►
An element with the ID ${e.id} already exists in the document.`;jsPanel.errorpanel(t)}return!1}let o=this.pOcontainer(e.container);if("object"==typeof o&&o.length&&o.length>0&&(o=o[0]),!o){if(this.errorReporting){let e="◀ COULD NOT CREATE NEW JSPANEL ►
The container to append the panel to does not exist";jsPanel.errorpanel(e)}return!1}["onbeforeclose","onbeforemaximize","onbeforeminimize","onbeforenormalize","onbeforesmallify","onbeforeunsmallify","onclosed","onfronted","onmaximized","onminimized","onnormalized","onsmallified","onstatuschange","onunsmallified"].forEach(t=>{e[t]?"function"==typeof e[t]&&(e[t]=[e[t]]):e[t]=[]});const a=e.template?e.template:this.createPanelTemplate();a.options=e,a.closetimer=void 0,a.status="initialized",a.currentData={},a.header=a.querySelector(".jsPanel-hdr"),a.headerbar=a.header.querySelector(".jsPanel-headerbar"),a.titlebar=a.header.querySelector(".jsPanel-titlebar"),a.headerlogo=a.headerbar.querySelector(".jsPanel-headerlogo"),a.headertitle=a.headerbar.querySelector(".jsPanel-title"),a.controlbar=a.headerbar.querySelector(".jsPanel-controlbar"),a.headertoolbar=a.header.querySelector(".jsPanel-hdr-toolbar"),a.content=a.querySelector(".jsPanel-content"),a.footer=a.querySelector(".jsPanel-ftr"),a.snappableTo=!1,a.snapped=!1,a.droppableTo=!1,a.progressbar=a.autocloseProgressbar=a.querySelector(".jsPanel-progressbar");const l=new CustomEvent("jspanelloaded",{detail:e.id,cancelable:!0}),s=new CustomEvent("jspanelstatuschange",{detail:e.id,cancelable:!0}),r=new CustomEvent("jspanelbeforenormalize",{detail:e.id,cancelable:!0}),i=new CustomEvent("jspanelnormalized",{detail:e.id,cancelable:!0}),c=new CustomEvent("jspanelbeforemaximize",{detail:e.id,cancelable:!0}),d=new CustomEvent("jspanelmaximized",{detail:e.id,cancelable:!0}),p=new CustomEvent("jspanelbeforeminimize",{detail:e.id,cancelable:!0}),h=new CustomEvent("jspanelminimized",{detail:e.id,cancelable:!0}),f=new CustomEvent("jspanelbeforesmallify",{detail:e.id,cancelable:!0}),m=new CustomEvent("jspanelsmallified",{detail:e.id,cancelable:!0}),u=new CustomEvent("jspanelsmallifiedmax",{detail:e.id,cancelable:!0}),g=new CustomEvent("jspanelbeforeunsmallify",{detail:e.id,cancelable:!0}),b=new CustomEvent("jspanelfronted",{detail:e.id,cancelable:!0}),y=new CustomEvent("jspanelbeforeclose",{detail:e.id,cancelable:!0}),w=new CustomEvent("jspanelclosed",{detail:e.id,cancelable:!0}),j=new CustomEvent("jspanelcloseduser",{detail:e.id,cancelable:!0});[l,s,r,i,c,d,p,h,f,m,u,g,b,y].forEach(e=>{e.panel=a});const v=a.querySelector(".jsPanel-btn-close"),P=a.querySelector(".jsPanel-btn-maximize"),E=a.querySelector(".jsPanel-btn-normalize"),x=a.querySelector(".jsPanel-btn-smallify"),C=a.querySelector(".jsPanel-btn-minimize");v&&jsPanel.pointerup.forEach(e=>{v.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.close(null,!0)})}),P&&jsPanel.pointerup.forEach(e=>{P.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.maximize()})}),E&&jsPanel.pointerup.forEach(e=>{E.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.normalize()})}),x&&jsPanel.pointerup.forEach(e=>{x.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;"normalized"===a.status||"maximized"===a.status?a.smallify():"smallified"!==a.status&&"smallifiedmax"!==a.status||a.unsmallify()})}),C&&jsPanel.pointerup.forEach(e=>{C.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.minimize()})});let F=jsPanel.extensions;for(let e in F)Object.prototype.hasOwnProperty.call(F,e)&&(a[e]=F[e]);if(a.clearTheme=(e=>(jsPanel.themes.forEach(e=>{["panel",`jsPanel-theme-${e}`,`panel-${e}`,`${e}-color`].forEach(e=>{a.classList.remove(e)}),a.header.classList.remove(`jsPanel-theme-${e}`)}),a.content.classList.remove("jsPanel-content-filled","jsPanel-content-filledlight"),a.header.classList.remove("jsPanel-hdr-light"),a.header.classList.remove("jsPanel-hdr-dark"),a.style.backgroundColor="",jsPanel.setStyle(a.headertoolbar,{boxShadow:"",width:"",marginLeft:"",borderTopColor:"transparent"}),jsPanel.setStyle(a.content,{background:"",borderTopColor:"transparent"}),a.header.style.background="",Array.prototype.slice.call(a.controlbar.querySelectorAll(".jsPanel-icon")).concat([a.headerlogo,a.headertitle,a.headertoolbar,a.content]).forEach(e=>{e.style.color=""}),e&&e.call(a,a),a)),a.getThemeDetails=(e=>{const t=e.toLowerCase(),n={color:!1,colors:!1,filling:!1},o=t.split("fill");if(n.color=o[0].trim().replace(/\s*/g,""),2===o.length)if(o[1].startsWith("edlight"))n.filling="filledlight";else if(o[1].startsWith("eddark"))n.filling="filleddark";else if(o[1].startsWith("ed"))n.filling="filled";else if(o[1].startsWith("color")){let e=o[1].split("color"),t=e[e.length-1].trim().replace(/\s*/g,"");jsPanel.colorNames[t]&&(t=jsPanel.colorNames[t]),t.match(/^([0-9a-f]{3}|[0-9a-f]{6})$/gi)&&(t="#"+t),n.filling=t}if(jsPanel.themes.some(e=>e===n.color.split(/\s/i)[0])){let e=n.color.split(/\s/i)[0],t=document.createElement("button");t.className=e+"-bg",document.body.appendChild(t),n.color=getComputedStyle(t).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(t),t=void 0}else if(n.color.startsWith("bootstrap-")){let e=n.color.indexOf("-"),t=document.createElement("button");t.className="btn btn"+n.color.slice(e),document.body.appendChild(t),n.color=getComputedStyle(t).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(t),t=void 0}else if(n.color.startsWith("mdb-")){let e,t=n.color.indexOf("-")+1,o=document.createElement("span");e=n.color.endsWith("-dark")?(e=n.color.slice(t)).replace("-dark","-color-dark"):n.color.slice(t)+"-color",o.className=e,document.body.appendChild(o),n.color=getComputedStyle(o).backgroundColor.replace(/\s+/gi,""),document.body.removeChild(o),o=void 0}return n.colors=jsPanel.calcColors(n.color),n}),a.applyColorTheme=(e=>{if(a.style.backgroundColor=e.colors[0],a.header.style.backgroundColor=e.colors[0],a.header.style.color=e.colors[3],[".jsPanel-headerlogo",".jsPanel-title",".jsPanel-hdr-toolbar"].forEach(t=>{a.querySelector(t).style.color=e.colors[3]}),a.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(t=>{t.style.color=e.colors[3]}),"string"==typeof a.options.theme&&"filled"===e.filling&&(a.content.style.borderTop="#000000"===e.colors[3]?"1px solid rgba(0,0,0,0.15)":"1px solid rgba(255,255,255,0.15)"),"#000000"===e.colors[3]?a.header.classList.add("jsPanel-hdr-light"):a.header.classList.add("jsPanel-hdr-dark"),e.filling)switch(e.filling){case"filled":jsPanel.setStyle(a.content,{backgroundColor:e.colors[2],color:e.colors[3]});break;case"filledlight":a.content.style.backgroundColor=e.colors[1];break;case"filleddark":jsPanel.setStyle(a.content,{backgroundColor:e.colors[6],color:e.colors[7]});break;default:a.content.style.backgroundColor=e.filling,a.content.style.color=jsPanel.perceivedBrightness(e.filling)<=jsPanel.colorBrightnessThreshold?"#fff":"#000"}return a}),a.applyCustomTheme=(e=>{let t,n={bgPanel:"#fff",bgContent:"#fff",colorHeader:"#000",colorContent:"#000"},o=(t="object"==typeof e?Object.assign(n,e):n).bgPanel,l=t.bgContent,s=t.colorHeader,r=t.colorContent;if(jsPanel.colorNames[o]?a.style.background="#"+jsPanel.colorNames[o]:a.style.background=o,jsPanel.colorNames[s]&&(s="#"+jsPanel.colorNames[s]),[".jsPanel-headerlogo",".jsPanel-title",".jsPanel-hdr-toolbar"].forEach(e=>{a.querySelector(e).style.color=s}),a.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(e=>{e.style.color=s}),jsPanel.colorNames[l]?a.content.style.background="#"+jsPanel.colorNames[l]:a.content.style.background=l,jsPanel.colorNames[r]?a.content.style.color="#"+jsPanel.colorNames[r]:a.content.style.color=r,jsPanel.perceivedBrightness(s)>jsPanel.colorBrightnessThreshold?a.header.classList.add("jsPanel-hdr-dark"):a.header.classList.add("jsPanel-hdr-light"),jsPanel.perceivedBrightness(r)>jsPanel.colorBrightnessThreshold?a.content.style.borderTop="1px solid rgba(255,255,255,0.15)":a.content.style.borderTop="1px solid rgba(0,0,0,0.15)",t.border){let e=t.border,n=e.lastIndexOf(" "),o=e.slice(++n);jsPanel.colorNames[o]&&(e=e.replace(o,"#"+jsPanel.colorNames[o])),a.style.border=e}return a}),a.setBorder=(e=>{let t=jsPanel.pOborder(e);return t[2].length?jsPanel.colorNames[t[2]]&&(t[2]="#"+jsPanel.colorNames[t[2]]):t[2]=a.style.backgroundColor,t=t.join(" "),a.style.border=t,a.options.border=t,a}),a.setBorderRadius=(e=>{"number"==typeof e&&(e+="px"),a.style.borderRadius=e;const t=getComputedStyle(a);return a.options.header?(a.header.style.borderTopLeftRadius=t.borderTopLeftRadius,a.header.style.borderTopRightRadius=t.borderTopRightRadius):(a.content.style.borderTopLeftRadius=t.borderTopLeftRadius,a.content.style.borderTopRightRadius=t.borderTopRightRadius),a.options.footerToolbar?(a.footer.style.borderBottomRightRadius=t.borderBottomRightRadius,a.footer.style.borderBottomLeftRadius=t.borderBottomLeftRadius):(a.content.style.borderBottomRightRadius=t.borderBottomRightRadius,a.content.style.borderBottomLeftRadius=t.borderBottomLeftRadius),a}),a.setTheme=((t=e.theme,n)=>{let o;if("minimized"===a.status&&(o=!0,a.normalize()),a.clearTheme(),"object"==typeof t)e.border=void 0,a.applyCustomTheme(t);else{"none"===t&&(t="white");let e=a.getThemeDetails(t);a.applyColorTheme(e)}return o&&a.minimize(),n&&n.call(a,a),a}),a.remove=((e,t,n)=>{a.parentElement.removeChild(a),document.getElementById(e)?n&&n.call(a,e,a):(a.removeMinimizedReplacement(),t&&document.dispatchEvent(j),document.dispatchEvent(w),a.options.onclosed&&jsPanel.processCallbacks(a,a.options.onclosed,"every",t),jsPanel.autopositionRemaining(a),n&&n.call(e,e)),window.removeEventListener("resize",a.windowResizeHandler),document.removeEventListener("jspanelresize",a.parentResizeHandler)}),a.close=((e,t)=>{if(a.closetimer&&window.clearInterval(a.closetimer),document.dispatchEvent(y),a.options.onbeforeclose&&a.options.onbeforeclose.length>0&&!jsPanel.processCallbacks(a,a.options.onbeforeclose,"some",a.status,t))return a;a.options.animateOut?(a.options.animateIn&&jsPanel.remClass(a,a.options.animateIn),jsPanel.setClass(a,a.options.animateOut),a.addEventListener("animationend",n=>{n.stopPropagation(),a.remove(a.id,t,e)})):a.remove(a.id,t,e)}),a.maximize=((t,n)=>{if(a.statusBefore=a.status,e.onbeforemaximize&&e.onbeforemaximize.length>0&&!jsPanel.processCallbacks(a,e.onbeforemaximize,"some",a.statusBefore))return a;document.dispatchEvent(c);const o=a.parentElement,l=jsPanel.pOcontainment(e.maximizedMargin);return o===document.body?(a.style.width=document.documentElement.clientWidth-l[1]-l[3]+"px",a.style.height=document.documentElement.clientHeight-l[0]-l[2]+"px",a.style.left=l[3]+"px",a.style.top=l[0]+"px"):(a.style.width=o.clientWidth-l[1]-l[3]+"px",a.style.height=o.clientHeight-l[0]-l[2]+"px",a.style.left=l[3]+"px",a.style.top=l[0]+"px"),x.style.transform="unset",a.removeMinimizedReplacement(),a.status="maximized",a.setControls([".jsPanel-btn-maximize"]),n||a.front(),document.dispatchEvent(d),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore),t&&t.call(a,a,a.statusBefore),e.onmaximized&&jsPanel.processCallbacks(a,e.onmaximized,"every",a.statusBefore),a}),a.minimize=(t=>{if("minimized"===a.status)return a;if(a.statusBefore=a.status,e.onbeforeminimize&&e.onbeforeminimize.length>0&&!jsPanel.processCallbacks(a,e.onbeforeminimize,"some",a.statusBefore))return a;if(document.dispatchEvent(p),!document.getElementById("jsPanel-replacement-container")){const e=document.createElement("div");e.id="jsPanel-replacement-container",document.body.append(e)}if(a.style.left="-9999px",a.status="minimized",document.dispatchEvent(h),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore),e.minimizeTo){let t,n,o,l=a.createMinimizedReplacement();switch(e.minimizeTo){case"default":document.getElementById("jsPanel-replacement-container").append(l);break;case"parentpanel":(t=(o=(n=a.closest(".jsPanel-content").parentElement).querySelectorAll(".jsPanel-minimized-box"))[o.length-1]).append(l);break;case"parent":(t=(n=a.parentElement).querySelector(".jsPanel-minimized-container"))||((t=document.createElement("div")).className="jsPanel-minimized-container",n.append(t)),t.append(l);break;default:document.querySelector(e.minimizeTo).append(l)}}return t&&t.call(a,a,a.statusBefore),e.onminimized&&jsPanel.processCallbacks(a,e.onminimized,"every",a.statusBefore),a}),a.normalize=(t=>"normalized"===a.status?a:(a.statusBefore=a.status,e.onbeforenormalize&&e.onbeforenormalize.length>0&&!jsPanel.processCallbacks(a,e.onbeforenormalize,"some",a.statusBefore)?a:(document.dispatchEvent(r),a.style.width=a.currentData.width,a.style.height=a.currentData.height,a.snapped?a.snap(a.snapped,!0):(a.style.left=a.currentData.left,a.style.top=a.currentData.top),x.style.transform="unset",a.removeMinimizedReplacement(),a.status="normalized",a.setControls([".jsPanel-btn-normalize"]),a.front(),document.dispatchEvent(i),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore),t&&t.call(a,a,a.statusBefore),e.onnormalized&&jsPanel.processCallbacks(a,e.onnormalized,"every",a.statusBefore),a))),a.smallify=(t=>{if("smallified"===a.status||"smallifiedmax"===a.status)return a;if(a.statusBefore=a.status,e.onbeforesmallify&&e.onbeforesmallify.length>0&&!jsPanel.processCallbacks(a,e.onbeforesmallify,"some",a.statusBefore))return a;document.dispatchEvent(f),a.style.overflow="hidden";const n=window.getComputedStyle(a),o=parseFloat(window.getComputedStyle(a.headerbar).height);a.style.height=parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth)+o+"px",x.style.transform="rotate(180deg)","normalized"===a.status?(a.setControls([".jsPanel-btn-normalize"]),a.status="smallified",document.dispatchEvent(m),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore)):"maximized"===a.status&&(a.setControls([".jsPanel-btn-maximize"]),a.status="smallifiedmax",document.dispatchEvent(u),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore));const l=a.querySelectorAll(".jsPanel-minimized-box");return l[l.length-1].style.display="none",t&&t.call(a,a,a.statusBefore),e.onsmallified&&jsPanel.processCallbacks(a,e.onsmallified,"every",a.statusBefore),a}),a.unsmallify=(t=>{if(a.statusBefore=a.status,"smallified"===a.status||"smallifiedmax"===a.status){if(e.onbeforeunsmallify&&e.onbeforeunsmallify.length>0&&!jsPanel.processCallbacks(a,e.onbeforeunsmallify,"some",a.statusBefore))return a;document.dispatchEvent(g),a.style.overflow="visible",a.front(),"smallified"===a.status?(a.style.height=a.currentData.height,a.setControls([".jsPanel-btn-normalize"]),a.status="normalized",document.dispatchEvent(i),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every",a.statusBefore)):"smallifiedmax"===a.status?a.maximize():"minimized"===a.status&&a.normalize(),x.style.transform="rotate(0deg)";const n=a.querySelectorAll(".jsPanel-minimized-box");n[n.length-1].style.display="flex",t&&t.call(a,a,a.statusBefore),e.onunsmallified&&jsPanel.processCallbacks(a,e.onunsmallified,"every",a.statusBefore)}return a}),a.front=((t,n=!0)=>{if("minimized"===a.status)"maximized"===a.statusBefore?a.maximize():a.normalize();else{const e=Array.prototype.slice.call(document.querySelectorAll(".jsPanel-standard")).map(e=>e.style.zIndex);Math.max(...e)>a.style.zIndex&&(a.style.zIndex=jsPanel.zi.next()),jsPanel.resetZi()}return document.dispatchEvent(b),t&&t.call(a,a),e.onfronted&&n&&jsPanel.processCallbacks(a,e.onfronted,"every",a.status),a}),a.snap=((e,t=!1)=>{if(t||(a.currentData.beforeSnap={width:a.currentData.width,height:a.currentData.height}),e&&"function"==typeof e&&!t)e.call(a,a,a.snappableTo);else if(!1!==e){const e=[0,0];if(a.options.dragit.snap.containment&&a.options.dragit.containment){const t=jsPanel.pOcontainment(a.options.dragit.containment),n=a.snappableTo;n.startsWith("left")?e[0]=t[3]:n.startsWith("right")&&(e[0]=-t[1]),n.endsWith("top")?e[1]=t[0]:n.endsWith("bottom")&&(e[1]=-t[2])}a.reposition(`${a.snappableTo} ${e[0]} ${e[1]}`)}t||(a.snapped=a.snappableTo)}),a.move=((e,t)=>{let n=a.overlaps(e,"paddingbox"),o=a.parentElement;return e.appendChild(a),a.options.container=e,a.style.left=n.left+"px",a.style.top=n.top+"px",a.saveCurrentDimensions(),a.saveCurrentPosition(),a.calcSizeFactors(),t&&t.call(a,a,e,o),a}),a.closeChildpanels=(e=>(a.getChildpanels().forEach(e=>e.close()),e&&e.call(a,a),a)),a.getChildpanels=(e=>{const t=a.content.querySelectorAll(".jsPanel");return e&&t.forEach((t,n,o)=>{e.call(t,t,n,o)}),t}),a.isChildpanel=(e=>{const t=a.closest(".jsPanel-content"),n=t?t.parentElement:null;return e&&e.call(a,a,n),!!t&&n}),a.contentRemove=(e=>(jsPanel.emptyNode(a.content),e&&e.call(a,a),a)),a.createMinimizedReplacement=(()=>{const t=jsPanel.createMinimizedTemplate(),n=window.getComputedStyle(a.headertitle).color,o=window.getComputedStyle(a),l=e.iconfont,s=t.querySelector(".jsPanel-controlbar");return"auto-show-hide"!==a.options.header?jsPanel.setStyle(t,{backgroundColor:o.backgroundColor,backgroundPositionX:o.backgroundPositionX,backgroundPositionY:o.backgroundPositionY,backgroundRepeat:o.backgroundRepeat,backgroundAttachment:o.backgroundAttachment,backgroundImage:o.backgroundImage,backgroundSize:o.backgroundSize,backgroundOrigin:o.backgroundOrigin,backgroundClip:o.backgroundClip}):t.style.backgroundColor=window.getComputedStyle(a.header).backgroundColor,t.id=a.id+"-min",t.querySelector(".jsPanel-headerbar").replaceChild(a.headerlogo.cloneNode(!0),t.querySelector(".jsPanel-headerlogo")),t.querySelector(".jsPanel-titlebar").replaceChild(a.headertitle.cloneNode(!0),t.querySelector(".jsPanel-title")),t.querySelector(".jsPanel-titlebar").setAttribute("title",a.headertitle.textContent),t.querySelector(".jsPanel-title").style.color=n,s.style.color=n,s.querySelectorAll("button").forEach(e=>{e.style.color=n}),["jsPanel-hdr-dark","jsPanel-hdr-light"].forEach(e=>{a.header.classList.contains(e)&&t.querySelector(".jsPanel-hdr").classList.add(e)}),a.setIconfont(l,t),"enabled"===a.dataset.btnnormalize?jsPanel.pointerup.forEach(e=>{t.querySelector(".jsPanel-btn-normalize").addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.normalize()})}):s.querySelector(".jsPanel-btn-normalize").style.display="none","enabled"===a.dataset.btnmaximize?jsPanel.pointerup.forEach(e=>{t.querySelector(".jsPanel-btn-maximize").addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.maximize()})}):s.querySelector(".jsPanel-btn-maximize").style.display="none","enabled"===a.dataset.btnclose?jsPanel.pointerup.forEach(e=>{t.querySelector(".jsPanel-btn-close").addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.close(null,!0)})}):s.querySelector(".jsPanel-btn-close").style.display="none",t}),a.removeMinimizedReplacement=(()=>{const e=document.getElementById(`${a.id}-min`);e&&e.parentElement.removeChild(e)}),a.drag=((e={})=>{let t,n,o;const l=new CustomEvent("jspaneldragstart",{detail:a.id}),s=new CustomEvent("jspaneldrag",{detail:a.id}),r=new CustomEvent("jspaneldragstop",{detail:a.id});[l,s,r].forEach(e=>{e.panel=a});const i=e=>{let t=e.split("-");return t.forEach((e,n)=>{t[n]=e.charAt(0).toUpperCase()+e.slice(1)}),"snap"+t.join("")};function c(e){null===e.relatedTarget&&jsPanel.pointermove.forEach(e=>{document.removeEventListener(e,n,!1),a.style.opacity=1})}let d=e.handles||jsPanel.defaults.dragit.handles,p=e.cursor||jsPanel.defaults.dragit.cursor;function h(e){if(jsPanel.pointermove.forEach(e=>{document.removeEventListener(e,n)}),jsPanel.removeSnapAreas(),t){if(a.style.opacity=1,t=void 0,o.snap){switch(a.snappableTo){case"left-top":a.snap(o.snap.snapLeftTop);break;case"center-top":a.snap(o.snap.snapCenterTop);break;case"right-top":a.snap(o.snap.snapRightTop);break;case"right-center":a.snap(o.snap.snapRightCenter);break;case"right-bottom":a.snap(o.snap.snapRightBottom);break;case"center-bottom":a.snap(o.snap.snapCenterBottom);break;case"left-bottom":a.snap(o.snap.snapLeftBottom);break;case"left-center":a.snap(o.snap.snapLeftCenter)}o.snap.callback&&a.snappableTo&&"function"==typeof o.snap.callback&&(o.snap.callback.call(a,a),o.snap.repositionOnSnap&&!1!==o.snap[i(a.snappableTo)]&&a.repositionOnSnap(a.snappableTo)),a.snappableTo&&o.snap.repositionOnSnap&&o.snap[i(a.snappableTo)]&&a.repositionOnSnap(a.snappableTo)}if(a.droppableTo&&a.droppableTo){let e=a.parentElement;a.move(a.droppableTo),o.drop.callback&&o.drop.callback.call(a,a,a.droppableTo,e)}if(document.dispatchEvent(r),o.stop.length){let t=window.getComputedStyle(a),n={left:parseFloat(t.left),top:parseFloat(t.top),width:parseFloat(t.width),height:parseFloat(t.height)};jsPanel.processCallbacks(a,o.stop,!1,n,e)}a.saveCurrentPosition(),a.calcSizeFactors()}a.controlbar.style.pointerEvents="inherit",a.content.style.pointerEvents="inherit",document.querySelectorAll("iframe").forEach(e=>{e.style.pointerEvents="auto"}),document.removeEventListener(e,h)}return a.querySelectorAll(d).forEach(r=>{r.style.touchAction="none",r.style.cursor=p,jsPanel.pointerdown.forEach(i=>{r.addEventListener(i,r=>{if(r.button&&r.button>0)return!1;if((o=Object.assign({},jsPanel.defaults.dragit,e)).disableOnMaximized&&"maximized"===a.status)return!1;if((o.containment||0===o.containment)&&(o.containment=jsPanel.pOcontainment(o.containment)),o.grid&&Array.isArray(o.grid)&&1===o.grid.length&&(o.grid[1]=o.grid[0]),o.snap&&("object"==typeof o.snap?o.snap=Object.assign({},jsPanel.defaultSnapConfig,o.snap):o.snap=jsPanel.defaultSnapConfig),r.target.closest(".jsPanel-ftr-btn"))return;a.controlbar.style.pointerEvents="none",a.content.style.pointerEvents="none",document.querySelectorAll("iframe").forEach(e=>{e.style.pointerEvents="none"});let i=window.getComputedStyle(a),d=parseFloat(i.left),p=parseFloat(i.top),h=parseFloat(i.width),f=parseFloat(i.height),m=r.touches?r.touches[0].clientX:r.clientX,u=r.touches?r.touches[0].clientY:r.clientY,g=a.parentElement,b=g.getBoundingClientRect(),y=window.getComputedStyle(g),w=a.getScaleFactor(),j=0;n=(e=>{if(e.preventDefault(),!t){if(document.dispatchEvent(l),a.style.opacity=o.opacity,a.snapped&&o.snap.resizeToPreSnap&&a.currentData.beforeSnap){a.resize(a.currentData.beforeSnap.width+" "+a.currentData.beforeSnap.height),a.setControls([".jsPanel-btn-normalize"]);let e=a.getBoundingClientRect(),t=m-(e.left+e.width),n=e.width/2;t>-n&&(j=t+n)}if(a.front(),a.snapped=!1,"maximized"===a.status&&(a.setControls([".jsPanel-btn-normalize"]),a.status="normalized"),o.drop&&o.drop.dropZones){let e=o.drop.dropZones.map(e=>jsPanel.pOcontainer(e)),t=[];e.forEach(function(e){e.length?e.forEach(function(e){t.push(e)}):t.push(e)}),t=t.filter(function(e,t,n){return n.indexOf(e)===t}),o.drop.dropZones=t}o.start.length&&jsPanel.processCallbacks(a,o.start,!1,{left:d,top:p,width:h,height:f},e)}let n,r,i,c,v,P,E,x,C,F;t=1;let z,S=e.touches?e.touches[0].clientX:e.clientX,A=e.touches?e.touches[0].clientY:e.clientY,k=window.getComputedStyle(a);if(g===document.body){let e=a.getBoundingClientRect();C=window.innerWidth-parseInt(y.borderLeftWidth,10)-parseInt(y.borderRightWidth,10)-(e.left+e.width),F=window.innerHeight-parseInt(y.borderTopWidth,10)-parseInt(y.borderBottomWidth,10)-(e.top+e.height)}else C=parseInt(y.width,10)-parseInt(y.borderLeftWidth,10)-parseInt(y.borderRightWidth,10)-(parseInt(k.left,10)+parseInt(k.width,10)),F=parseInt(y.height,10)-parseInt(y.borderTopWidth,10)-parseInt(y.borderBottomWidth,10)-(parseInt(k.top,10)+parseInt(k.height,10));n=parseFloat(k.left),i=parseFloat(k.top),v=C,E=F,o.snap&&("panel"===o.snap.trigger?(r=n**2,c=i**2,P=v**2,x=E**2):"pointer"===o.snap.trigger&&("window"===a.options.container?(n=S,r=S**2,c=(i=A)**2,P=(v=window.innerWidth-S)**2,x=(E=window.innerHeight-A)**2):(n=(z=a.overlaps(g,"paddingbox",e)).pointer.left,i=z.pointer.top,v=z.pointer.right,E=z.pointer.bottom,r=z.pointer.left**2,c=z.pointer.top**2,P=z.pointer.right**2,x=z.pointer.bottom**2)));let B=Math.sqrt(r+c),T=Math.sqrt(r+x),L=Math.sqrt(P+c),R=Math.sqrt(P+x),W=Math.abs(n-v)/2,D=Math.abs(i-E)/2,$=Math.sqrt(r+D**2),q=Math.sqrt(c+W**2),O=Math.sqrt(P+D**2),I=Math.sqrt(x+W**2);if(window.getSelection().removeAllRanges(),document.dispatchEvent(s),o.axis&&"x"!==o.axis||(a.style.left=d+(S-m)/w.x+j+"px"),o.axis&&"y"!==o.axis||(a.style.top=p+(A-u)/w.y+"px"),o.grid){let e=o.grid,t=o.axis,n=e[0]*Math.round((d+(S-m))/e[0]),l=e[1]*Math.round((p+(A-u))/e[1]);t&&"x"!==t||(a.style.left=`${n}px`),t&&"y"!==t||(a.style.top=`${l}px`)}if(o.containment||0===o.containment){let e,t,n=o.containment;if(a.options.container===document.body)e=window.innerWidth-parseFloat(k.width)-n[1],t=window.innerHeight-parseFloat(k.height)-n[2];else{let o=parseFloat(y.borderLeftWidth)+parseFloat(y.borderRightWidth),a=parseFloat(y.borderTopWidth)+parseFloat(y.borderBottomWidth);e=b.width/w.x-parseFloat(k.width)-n[1]-o,t=b.height/w.y-parseFloat(k.height)-n[2]-a}parseFloat(a.style.left)<=n[3]&&(a.style.left=n[3]+"px"),parseFloat(a.style.top)<=n[0]&&(a.style.top=n[0]+"px"),parseFloat(a.style.left)>=e&&(a.style.left=e+"px"),parseFloat(a.style.top)>=t&&(a.style.top=t+"px")}if(o.drag.length){let t={left:n,top:i,right:v,bottom:E,width:parseFloat(k.width),height:parseFloat(k.height)};jsPanel.processCallbacks(a,o.drag,!1,t,e)}if(o.snap){let e=o.snap.sensitivity,t=g===document.body?window.innerWidth/8:b.width/8,l=g===document.body?window.innerHeight/8:b.height/8;a.snappableTo=!1,jsPanel.removeSnapAreas(),B0&&z.pointer.top>0?(a.snappableTo="left-top",jsPanel.createSnapArea(a,"lt",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="left-top",jsPanel.createSnapArea(a,"lt",e))):T0&&z.pointer.bottom>0?(a.snappableTo="left-bottom",jsPanel.createSnapArea(a,"lb",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="left-bottom",jsPanel.createSnapArea(a,"lb",e))):L0&&z.pointer.top>0?(a.snappableTo="right-top",jsPanel.createSnapArea(a,"rt",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="right-top",jsPanel.createSnapArea(a,"rt",e))):R0&&z.pointer.bottom>0?(a.snappableTo="right-bottom",jsPanel.createSnapArea(a,"rb",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="right-bottom",jsPanel.createSnapArea(a,"rb",e))):i0?(a.snappableTo="center-top",jsPanel.createSnapArea(a,"ct",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="center-top",jsPanel.createSnapArea(a,"ct",e))):n0?(a.snappableTo="left-center",jsPanel.createSnapArea(a,"lc",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="left-center",jsPanel.createSnapArea(a,"lc",e))):v0?(a.snappableTo="right-center",jsPanel.createSnapArea(a,"rc",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="right-center",jsPanel.createSnapArea(a,"rc",e))):E0?(a.snappableTo="center-bottom",jsPanel.createSnapArea(a,"cb",e)):(a.snappableTo=!1,jsPanel.removeSnapAreas())):(a.snappableTo="center-bottom",jsPanel.createSnapArea(a,"cb",e)))}if(o.drop&&o.drop.dropZones){let t=jsPanel.isIE?"msElementsFromPoint":"elementsFromPoint",n=document[t](e.clientX,e.clientY);Array.isArray(n)||(n=Array.prototype.slice.call(n)),o.drop.dropZones.forEach(e=>{n.includes(e)&&(a.droppableTo=e)}),n.includes(a.droppableTo)||(a.droppableTo=!1)}}),jsPanel.pointermove.forEach(e=>{document.addEventListener(e,n)}),window.addEventListener("mouseout",c,!1)})}),jsPanel.pointerup.forEach(e=>{document.addEventListener(e,h),window.removeEventListener("mouseout",c)}),e.disable&&(r.style.pointerEvents="none")}),a}),a.dragit=(t=>{const n=Object.assign({},jsPanel.defaults.dragit,e.dragit),o=a.querySelectorAll(n.handles);return"disable"===t?o.forEach(e=>{e.style.pointerEvents="none"}):o.forEach(e=>{e.style.pointerEvents="auto"}),a}),a.sizeit=((e={})=>{const t=new CustomEvent("jspanelresizestart",{detail:a.id}),n=new CustomEvent("jspanelresize",{detail:a.id}),o=new CustomEvent("jspanelresizestop",{detail:a.id});[t,n,o].forEach(e=>{e.panel=a});let l,s,r,i,c,d,p={};p.handles=e.handles||jsPanel.defaults.resizeit.handles,p.handles.split(",").forEach(e=>{const t=document.createElement("DIV");t.className=`jsPanel-resizeit-handle jsPanel-resizeit-${e.trim()}`,a.append(t)});let h=!!e.aspectRatio&&e.aspectRatio;function f(e){null===e.relatedTarget&&jsPanel.pointermove.forEach(e=>{document.removeEventListener(e,l,!1)})}function m(e){if(jsPanel.pointermove.forEach(e=>{document.removeEventListener(e,l,!1)}),e.target.classList&&e.target.classList.contains("jsPanel-resizeit-handle")){let t,n,o=e.target.className;if(o.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)&&(t=!0),o.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)&&(n=!0),p.grid&&Array.isArray(p.grid)){1===p.grid.length&&(p.grid[1]=p.grid[0]);const e=parseFloat(a.style.width),o=parseFloat(a.style.height),l=e%p.grid[0],s=o%p.grid[1],r=parseFloat(a.style.left),i=parseFloat(a.style.top),c=r%p.grid[0],d=i%p.grid[1];ld+5&&(t.style.transform="rotate(0deg)"),document.dispatchEvent(o),p.stop.length){let t=window.getComputedStyle(a),n={left:parseFloat(t.left),top:parseFloat(t.top),width:parseFloat(t.width),height:parseFloat(t.height)};jsPanel.processCallbacks(a,p.stop,!1,n,e)}}a.content.style.pointerEvents="inherit",document.querySelectorAll("iframe").forEach(e=>{e.style.pointerEvents="auto"}),p.aspectRatio=h,document.removeEventListener(e,m)}return a.querySelectorAll(".jsPanel-resizeit-handle").forEach(o=>{o.style.touchAction="none",jsPanel.pointerdown.forEach(h=>{o.addEventListener(h,o=>{if(o.preventDefault(),o.stopPropagation(),o.button&&o.button>0)return!1;let h=1;if(((p=Object.assign({},jsPanel.defaults.resizeit,e)).containment||0===p.containment)&&(p.containment=jsPanel.pOcontainment(p.containment)),p.aspectRatio&&!0===p.aspectRatio&&(p.aspectRatio="panel"),jsPanel.modifier){let e=jsPanel.modifier;e.altKey?p.aspectRatio="content":e.ctrlKey?p.aspectRatio="panel":e.shiftKey&&(p.aspectRatio=!1,h=2)}let m="function"==typeof p.maxWidth?p.maxWidth():p.maxWidth||1e4,u="function"==typeof p.maxHeight?p.maxHeight():p.maxHeight||1e4,g="function"==typeof p.minWidth?p.minWidth():p.minWidth,b="function"==typeof p.minHeight?p.minHeight():p.minHeight;a.content.style.pointerEvents="none",document.querySelectorAll("iframe").forEach(e=>{e.style.pointerEvents="none"});const y=a.parentElement,w=y.tagName.toLowerCase(),j=a.getBoundingClientRect(),v=y.getBoundingClientRect(),P=window.getComputedStyle(y,null),E=parseInt(P.borderLeftWidth,10),x=parseInt(P.borderTopWidth,10),C=P.getPropertyValue("position"),F=o.clientX||o.touches[0].clientX,z=o.clientY||o.touches[0].clientY,S=F/z,A=o.target.classList,k=a.getScaleFactor(),B=j.width/j.height,T=a.content.getBoundingClientRect(),L=T.width/T.height,R=a.header.getBoundingClientRect().height,W=a.footer.getBoundingClientRect().height||0;let D=j.left,$=j.top,q=1e4,O=1e4,I=1e4,M=1e4;c=j.width,d=j.height,"body"!==w&&(D=j.left-v.left+y.scrollLeft,$=j.top-v.top+y.scrollTop),"body"===w&&p.containment?(q=document.documentElement.clientWidth-j.left,I=document.documentElement.clientHeight-j.top,O=j.width+j.left,M=j.height+j.top):p.containment&&("static"===C?(q=v.width-j.left+E,I=v.height+v.top-j.top+x,O=j.width+(j.left-v.left)-E,M=j.height+(j.top-v.top)-x):(q=y.clientWidth-(j.left-v.left)/k.x+E,I=y.clientHeight-(j.top-v.top)/k.y+x,O=(j.width+j.left-v.left)/k.x-E,M=a.clientHeight+(j.top-v.top)/k.y-x)),p.containment&&(O-=p.containment[3],M-=p.containment[0],q-=p.containment[1],I-=p.containment[2]);const H=window.getComputedStyle(a),N=parseFloat(H.width)-j.width,X=parseFloat(H.height)-j.height;let Y=parseFloat(H.left)-j.left,V=parseFloat(H.top)-j.top;y!==document.body&&(Y+=v.left,V+=v.top);let Z=parseInt(H.borderTopWidth,10),U=parseInt(H.borderRightWidth,10),K=parseInt(H.borderBottomWidth,10),_=parseInt(H.borderLeftWidth,10);l=(e=>{e.preventDefault(),s||(document.dispatchEvent(t),p.start.length&&jsPanel.processCallbacks(a,p.start,!1,{width:c,height:d,left:D,top:$},e),a.front(),j.height>d+5&&(a.status="normalized",a.setControls([".jsPanel-btn-normalize"]))),s=1,document.dispatchEvent(n);let o,l=e.touches?e.touches[0].clientX:e.clientX,f=e.touches?e.touches[0].clientY:e.clientY;A.contains("jsPanel-resizeit-e")?((r=c+(l-F)*h/k.x+N)>=q&&(r=q),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px",2===h&&(a.style.left=D-(l-F)+"px"),"content"===p.aspectRatio?(a.style.height=(r-U-_)/L+R+W+Z+K+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*L+"px")):"panel"===p.aspectRatio&&(a.style.height=r/B+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*B+"px"))):A.contains("jsPanel-resizeit-s")?((i=d+(f-z)*h/k.y+X)>=I&&(i=I),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px",2===h&&(a.style.top=$-(f-z)+"px"),"content"===p.aspectRatio?(a.style.width=(i-R-W-Z-K)*L+Z+K+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/L+"px")):"panel"===p.aspectRatio&&(a.style.width=i*B+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/B+"px"))):A.contains("jsPanel-resizeit-w")?((r=c+(F-l)*h/k.x+N)<=m&&r>=g&&r<=O&&(a.style.left=D+(l-F)/k.x+Y+"px"),r>=O&&(r=O),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px","content"===p.aspectRatio?(a.style.height=(r-U-_)/L+R+W+Z+K+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*L+"px")):"panel"===p.aspectRatio&&(a.style.height=r/B+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*B+"px"))):A.contains("jsPanel-resizeit-n")?((i=d+(z-f)*h/k.y+X)<=u&&i>=b&&i<=M&&(a.style.top=$+(f-z)/k.y+V+"px"),i>=M&&(i=M),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px","content"===p.aspectRatio?(a.style.width=(i-R-W-Z-K)*L+Z+K+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/L+"px")):"panel"===p.aspectRatio&&(a.style.width=i*B+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/B+"px"))):A.contains("jsPanel-resizeit-se")?((r=c+(l-F)*h/k.x+N)>=q&&(r=q),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px",2===h&&(a.style.left=D-(l-F)+"px"),p.aspectRatio&&(a.style.height=r/B+"px"),(i=d+(f-z)*h/k.y+X)>=I&&(i=I),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px",2===h&&(a.style.top=$-(f-z)+"px"),"content"===p.aspectRatio?(a.style.width=(i-R-W-Z-K)*L+Z+K+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/L+"px")):"panel"===p.aspectRatio&&(a.style.width=i*B+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/B+"px"))):A.contains("jsPanel-resizeit-sw")?((i=d+(f-z)*h/k.y+X)>=I&&(i=I),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px",2===h&&(a.style.top=$-(f-z)+"px"),p.aspectRatio&&(a.style.width=i*B+"px"),(r=c+(F-l)*h/k.x+N)<=m&&r>=g&&r<=O&&(a.style.left=D+(l-F)/k.x+Y+"px"),r>=O&&(r=O),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px","content"===p.aspectRatio?(a.style.height=(r-U-_)/L+R+W+Z+K+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*L+"px")):"panel"===p.aspectRatio&&(a.style.height=r/B+"px",p.containment&&(o=a.overlaps(y)).bottom<=p.containment[2]&&(a.style.height=I+"px",a.style.width=I*B+"px"))):A.contains("jsPanel-resizeit-ne")?((r=c+(l-F)*h/k.x+N)>=q&&(r=q),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px",2===h&&(a.style.left=D-(l-F)+"px"),p.aspectRatio&&(a.style.height=r/B+"px"),(i=d+(z-f)*h/k.y+X)<=u&&i>=b&&i<=M&&(a.style.top=$+(f-z)/k.y+V+"px"),i>=M&&(i=M),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px","content"===p.aspectRatio?(a.style.width=(i-R-W-Z-K)*L+Z+K+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/L+"px")):"panel"===p.aspectRatio&&(a.style.width=i*B+"px",p.containment&&(o=a.overlaps(y)).right<=p.containment[1]&&(a.style.width=q+"px",a.style.height=q/B+"px"))):A.contains("jsPanel-resizeit-nw")&&(p.aspectRatio&&A.contains("jsPanel-resizeit-nw")&&(f=(l=f*S)/S),(r=c+(F-l)*h/k.x+N)<=m&&r>=g&&r<=O&&(a.style.left=D+(l-F)/k.x+Y+"px"),r>=O&&(r=O),r>=m&&(r=m),r<=g&&(r=g),a.style.width=r+"px",p.aspectRatio&&(a.style.height=r/B+"px"),(i=d+(z-f)*h/k.y+X)<=u&&i>=b&&i<=M&&(a.style.top=$+(f-z)/k.y+V+"px"),i>=M&&(i=M),i>=u&&(i=u),i<=b&&(i=b),a.style.height=i+"px","content"===p.aspectRatio?a.style.width=(i-R-W-Z-K)*L+Z+K+"px":"panel"===p.aspectRatio&&(a.style.width=i*B+"px")),window.getSelection().removeAllRanges();const w=window.getComputedStyle(a),v={left:parseFloat(w.left),top:parseFloat(w.top),right:parseFloat(w.right),bottom:parseFloat(w.bottom),width:parseFloat(w.width),height:parseFloat(w.height)};p.resize.length&&jsPanel.processCallbacks(a,p.resize,!1,v,e)}),jsPanel.pointermove.forEach(e=>{document.addEventListener(e,l,!1)}),window.addEventListener("mouseout",f,!1)})}),jsPanel.pointerup.forEach(function(e){document.addEventListener(e,m),window.removeEventListener("mouseout",f)}),e.disable&&(o.style.pointerEvents="none")}),a}),a.resizeit=(e=>{const t=a.querySelectorAll(".jsPanel-resizeit-handle");return"disable"===e?t.forEach(e=>{e.style.pointerEvents="none"}):t.forEach(e=>{e.style.pointerEvents="auto"}),a}),a.getScaleFactor=(()=>{const e=a.getBoundingClientRect();return{x:e.width/a.offsetWidth,y:e.height/a.offsetHeight}}),a.calcSizeFactors=(()=>{const t=window.getComputedStyle(a);if("window"===e.container)a.hf=parseFloat(t.left)/(window.innerWidth-parseFloat(t.width)),a.vf=parseFloat(t.top)/(window.innerHeight-parseFloat(t.height));else if(a.parentElement){let e=a.parentElement.getBoundingClientRect();a.hf=parseFloat(t.left)/(e.width-parseFloat(t.width)),a.vf=parseFloat(t.top)/(e.height-parseFloat(t.height))}}),a.saveCurrentDimensions=((e=!1)=>{const t=window.getComputedStyle(a);a.currentData.width=t.width,"normalized"===a.status&&(a.currentData.height=t.height),e&&(a.style.height=t.height)}),a.saveCurrentPosition=(()=>{const e=window.getComputedStyle(a);a.currentData.left=e.left,a.currentData.top=e.top}),a.reposition=((...t)=>{let n,o=e.position,l=!0;return t.forEach(e=>{"string"==typeof e||"object"==typeof e?o=e:"boolean"==typeof e?l=e:"function"==typeof e&&(n=e)}),jsPanel.position(a,o),a.slaves&&a.slaves.size>0&&a.slaves.forEach(e=>{e.reposition()}),l&&a.saveCurrentPosition(),n&&n.call(a,a),a}),a.repositionOnSnap=(t=>{let n="0",o="0",l=jsPanel.pOcontainment(e.dragit.containment);if(e.dragit.snap.containment)switch(t){case"left-top":n=l[3],o=l[0];break;case"right-top":n=-l[1],o=l[0];break;case"right-bottom":n=-l[1],o=-l[2];break;case"left-bottom":n=l[3],o=-l[2];break;case"center-top":n=l[3]/2-l[1]/2,o=l[0];break;case"center-bottom":n=l[3]/2-l[1]/2,o=-l[2];break;case"left-center":n=l[3],o=l[0]/2-l[2]/2;break;case"right-center":n=-l[1],o=l[0]/2-l[2]/2}jsPanel.position(a,t),jsPanel.setStyle(a,{left:`calc(${a.style.left} + ${n}px)`,top:`calc(${a.style.top} + ${o}px)`})}),a.overlaps=((e,t,n)=>{let o,l=a.getBoundingClientRect(),s=getComputedStyle(a.parentElement),r=a.getScaleFactor(),i={top:0,right:0,bottom:0,left:0},c=0,d=0,p=0,h=0;"window"!==a.options.container&&"paddingbox"===t&&(i.top=parseInt(s.borderTopWidth,10)*r.y,i.right=parseInt(s.borderRightWidth,10)*r.x,i.bottom=parseInt(s.borderBottomWidth,10)*r.y,i.left=parseInt(s.borderLeftWidth,10)*r.x),o="string"==typeof e?"window"===e?{left:0,top:0,right:window.innerWidth,bottom:window.innerHeight}:"parent"===e?a.parentElement.getBoundingClientRect():document.querySelector(e).getBoundingClientRect():e.getBoundingClientRect(),n&&(c=n.touches?n.touches[0].clientX:n.clientX,d=n.touches?n.touches[0].clientY:n.clientY,p=c-o.left,h=d-o.top);let f=l.lefto.left,m=l.topo.top;return{overlaps:f&&m,top:l.top-o.top-i.top,right:o.right-l.right-i.right,bottom:o.bottom-l.bottom-i.bottom,left:l.left-o.left-i.left,parentBorderWidth:i,panelRect:l,referenceRect:o,pointer:{clientX:c,clientY:d,left:p-i.left,top:h-i.top,right:o.width-p-i.right,bottom:o.height-h-i.bottom}}}),a.setSize=(()=>{if(e.panelSize){const t=jsPanel.pOsize(a,e.panelSize);a.style.width=t.width,a.style.height=t.height}else if(e.contentSize){const t=jsPanel.pOsize(a,e.contentSize);a.content.style.width=t.width,a.content.style.height=t.height,a.style.width=t.width,a.content.style.width="100%"}return a}),a.resize=((...e)=>{let t,n=window.getComputedStyle(a),o={width:n.width,height:n.height},l=!0;e.forEach(e=>{"string"==typeof e?o=e:"object"==typeof e?o=Object.assign(o,e):"boolean"==typeof e?l=e:"function"==typeof e&&(t=e)});let s=jsPanel.pOsize(a,o);a.style.width=s.width,a.style.height=s.height,a.slaves&&a.slaves.size>0&&a.slaves.forEach(e=>{e.reposition()}),l&&a.saveCurrentDimensions(),a.status="normalized";let r=a.controlbar.querySelector(".jsPanel-btn-smallify");return r&&(r.style.transform="rotate(0deg)"),t&&t.call(a,a),a.calcSizeFactors(),a}),a.windowResizeHandler=(t=>{if(t.target===window){let n,o,l=a.status,s=e.onwindowresize;"maximized"===l&&s?a.maximize(!1,!0):a.snapped&&"minimized"!==l?a.snap(a.snapped,!0):"normalized"===l||"smallified"===l||"maximized"===l?"function"==typeof s?s.call(a,t,a):(n=(window.innerWidth-a.offsetWidth)*a.hf,a.style.left=n<=0?0:n+"px",o=(window.innerHeight-a.offsetHeight)*a.vf,a.style.top=o<=0?0:o+"px"):"smallifiedmax"===l&&s&&a.maximize(!1,!0).smallify(),a.slaves&&a.slaves.size>0&&a.slaves.forEach(e=>{e.reposition()})}}),a.setControls=((e,t)=>(a.header.querySelectorAll(".jsPanel-btn").forEach(e=>{const t=e.className.split("-"),n=t[t.length-1];"hidden"!==a.getAttribute(`data-btn${n}`)&&(e.style.display="block")}),e.forEach(e=>{const t=a.controlbar.querySelector(e);t&&(t.style.display="none")}),t&&t.call(a,a),a)),a.setControlStatus=((e,t="enable",n)=>{const o=a.controlbar.querySelector(`.jsPanel-btn-${e}`);switch(t){case"disable":"removed"!==a.getAttribute(`data-btn${e}`)&&(a.setAttribute(`data-btn${e}`,"disabled"),o.style.pointerEvents="none",o.style.opacity=.4,o.style.cursor="default");break;case"hide":"removed"!==a.getAttribute(`data-btn${e}`)&&(a.setAttribute(`data-btn${e}`,"hidden"),o.style.display="none");break;case"show":"removed"!==a.getAttribute(`data-btn${e}`)&&(a.setAttribute(`data-btn${e}`,"enabled"),o.style.display="block",o.style.pointerEvents="auto",o.style.opacity=1,o.style.cursor="pointer");break;case"enable":"removed"!==a.getAttribute(`data-btn${e}`)&&("hidden"===a.getAttribute(`data-btn${e}`)&&(o.style.display="block"),a.setAttribute(`data-btn${e}`,"enabled"),o.style.pointerEvents="auto",o.style.opacity=1,o.style.cursor="pointer");break;case"remove":a.controlbar.removeChild(o),a.setAttribute(`data-btn${e}`,"removed")}return n&&n.call(a,a),a}),a.setControlSize=(e=>{const t=e.toLowerCase();a.controlbar.querySelectorAll(".jsPanel-btn").forEach(e=>{["jsPanel-btn-xl","jsPanel-btn-lg","jsPanel-btn-md","jsPanel-btn-sm","jsPanel-btn-xs"].forEach(t=>{e.classList.remove(t)}),e.classList.add(`jsPanel-btn-${t}`)}),"xl"===t?a.titlebar.style.fontSize="1.5rem":"lg"===t?a.titlebar.style.fontSize="1.25rem":"md"===t?a.titlebar.style.fontSize="1.05rem":"sm"===t?a.titlebar.style.fontSize=".9rem":"xs"===t&&(a.titlebar.style.fontSize=".8rem")}),a.setHeaderControls=(t=>{if(a.options.headerControls.add){let e=a.options.headerControls.add;Array.isArray(e)||(e=[e]),e.forEach(e=>{a.addControl(e)})}let n=[];a.controlbar.querySelectorAll(".jsPanel-btn").forEach(e=>{let t=e.className.match(/jsPanel-btn-[a-z0-9]{3,}/i)[0].substring(12);n.push(t)});const o=jsPanel.pOheaderControls(e.headerControls);return e.headerControls=o,n.forEach(e=>{o[e]&&a.setControlStatus(e,o[e])}),a.setControlSize(o.size),t&&t.call(a,a),a}),a.setHeaderLogo=((e,t)=>{let n=[a.headerlogo],o=document.querySelector("#"+a.id+"-min");return o&&n.push(o.querySelector(".jsPanel-headerlogo")),"string"==typeof e?"<"!==e.substr(0,1)?n.forEach(t=>{jsPanel.emptyNode(t);let n=document.createElement("img");n.src=e,t.append(n)}):n.forEach(t=>{t.innerHTML=e}):n.forEach(t=>{jsPanel.emptyNode(t),t.append(e)}),a.headerlogo.childNodes.forEach(e=>{e.nodeName&&"IMG"===e.nodeName&&e.setAttribute("draggable","false")}),t&&t.call(a,a),a}),a.setHeaderRemove=(e=>(a.removeChild(a.header),a.content.classList.add("jsPanel-content-noheader"),["close","maximize","normalize","minimize","smallify"].forEach(e=>{a.setAttribute(`data-btn${e}`,"removed")}),e&&e.call(a,a),a)),a.setHeaderTitle=((e,t)=>{let n=[a.headertitle],o=document.querySelector("#"+a.id+"-min");return o&&n.push(o.querySelector(".jsPanel-title")),"string"==typeof e?n.forEach(t=>{t.innerHTML=e}):"function"==typeof e?n.forEach(t=>{jsPanel.emptyNode(t),t.innerHTML=e()}):n.forEach(t=>{jsPanel.emptyNode(t),t.append(e)}),t&&t.call(a,a),a}),a.setIconfont=((e,t=a,n)=>{if(e){let n,o;if("fa"===e||"far"===e||"fal"===e||"fas"===e||"fad"===e)n=[`${e} fa-window-close`,`${e} fa-window-maximize`,`${e} fa-window-restore`,`${e} fa-window-minimize`,`${e} fa-chevron-up`];else if("material-icons"===e)n=[e,e,e,e,e,e],o=["close","fullscreen","fullscreen_exit","call_received","expand_less"];else if(Array.isArray(e))n=[`custom-control-icon ${e[4]}`,`custom-control-icon ${e[3]}`,`custom-control-icon ${e[2]}`,`custom-control-icon ${e[1]}`,`custom-control-icon ${e[0]}`];else{if("bootstrap"!==e&&"glyphicon"!==e)return t;n=["glyphicon glyphicon-remove","glyphicon glyphicon-fullscreen","glyphicon glyphicon-resize-full","glyphicon glyphicon-minus","glyphicon glyphicon-chevron-up"]}t.querySelectorAll(".jsPanel-controlbar .jsPanel-btn").forEach(e=>{jsPanel.emptyNode(e).innerHTML=""}),Array.prototype.slice.call(t.querySelectorAll(".jsPanel-controlbar .jsPanel-btn > span")).reverse().forEach((t,a)=>{t.className=n[a],"material-icons"===e&&(t.textContent=o[a])})}return n&&n.call(t,t),t}),a.addToolbar=((e,t,n)=>{if("header"===e?e=a.headertoolbar:"footer"===e&&(e=a.footer),"string"==typeof t)e.innerHTML=t;else if(Array.isArray(t))t.forEach(t=>{"string"==typeof t?e.innerHTML+=t:e.append(t)});else if("function"==typeof t){let n=t.call(a,a);"string"==typeof n?e.innerHTML=n:e.append(n)}else e.append(t);return e.classList.add("active"),n&&n.call(a,a),a}),a.addCloseControl=(()=>{let e=document.createElement("button"),t=a.content.style.color;return e.classList.add("jsPanel-addCloseCtrl"),e.innerHTML=jsPanel.icons.close,e.style.color=t,a.options.rtl&&e.classList.add("rtl"),a.appendChild(e),jsPanel.pointerup.forEach(t=>{e.addEventListener(t,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;a.close(null,!0)})}),jsPanel.pointerdown.forEach(t=>{e.addEventListener(t,e=>{e.preventDefault()})}),a}),a.addControl=(t=>{if(!t.html)return a;t.position||(t.position=1);const n=a.controlbar.querySelectorAll(".jsPanel-btn").length;let o=document.createElement("button");o.innerHTML=t.html,o.className=`jsPanel-btn jsPanel-btn-${t.name} jsPanel-btn-${e.headerControls.size}`,o.style.color=a.header.style.color,t.position>n?a.controlbar.append(o):a.controlbar.insertBefore(o,a.querySelector(`.jsPanel-controlbar .jsPanel-btn:nth-child(${t.position})`));const l=t.ariaLabel||t.name;return l&&o.setAttribute("aria-label",l),jsPanel.pointerup.forEach(e=>{o.addEventListener(e,e=>{if(e.preventDefault(),e.button&&e.button>0)return!1;t.handler.call(a,a,o)})}),t.afterInsert&&t.afterInsert.call(o,o),a}),a.setRtl=(()=>{[a.header,a.content,a.footer].forEach(t=>{t.dir="rtl",e.rtl.lang&&(t.lang=e.rtl.lang)})}),a.id=e.id,a.classList.add("jsPanel-"+e.paneltype),"standard"===e.paneltype&&(a.style.zIndex=this.zi.next()),o.append(a),a.front(!1,!1),a.setTheme(e.theme),e.boxShadow&&a.classList.add(`jsPanel-depth-${e.boxShadow}`),e.header){if(e.headerLogo&&a.setHeaderLogo(e.headerLogo),a.setIconfont(e.iconfont),a.setHeaderTitle(e.headerTitle),a.setHeaderControls(),jsPanel.isIE){let e=[a.headerbar,a.controlbar];switch(a.options.headerControls.size){case"md":e.forEach(e=>{e.style.height="34px"});break;case"xs":e.forEach(e=>{e.style.height="26px"});break;case"sm":e.forEach(e=>{e.style.height="30px"});break;case"lg":e.forEach(e=>{e.style.height="38px"});break;case"xl":e.forEach(e=>{e.style.height="42px"})}}if("auto-show-hide"===e.header){let t="jsPanel-depth-"+e.boxShadow;a.header.style.opacity=0,a.style.backgroundColor="transparent",this.remClass(a,t),this.setClass(a.content,t),a.header.addEventListener("mouseenter",()=>{a.header.style.opacity=1,jsPanel.setClass(a,t),jsPanel.remClass(a.content,t)}),a.header.addEventListener("mouseleave",()=>{a.header.style.opacity=0,jsPanel.remClass(a,t),jsPanel.setClass(a.content,t)})}}else a.setHeaderRemove(),e.addCloseControl&&a.addCloseControl();if(e.headerToolbar&&a.addToolbar(a.headertoolbar,e.headerToolbar),e.footerToolbar&&a.addToolbar(a.footer,e.footerToolbar),e.border&&a.setBorder(e.border),e.borderRadius&&a.setBorderRadius(e.borderRadius),e.content&&("function"==typeof e.content?e.content.call(a,a):"string"==typeof e.content?a.content.innerHTML=e.content:a.content.append(e.content)),e.contentAjax&&this.ajax(e.contentAjax,a),e.contentFetch&&this.fetch(e.contentFetch,a),e.contentOverflow){const t=e.contentOverflow.split(" ");1===t.length?a.content.style.overflow=t[0]:2===t.length&&(a.content.style.overflowX=t[0],a.content.style.overflowY=t[1])}if(e.autoclose){"number"==typeof e.autoclose?e.autoclose={time:e.autoclose+"ms"}:"string"==typeof e.autoclose&&(e.autoclose={time:e.autoclose});let t=Object.assign({},jsPanel.defaultAutocloseConfig,e.autoclose);t.time&&"number"==typeof t.time&&(t.time+="ms");let n=a.progressbar.querySelector("div");n.addEventListener("animationend",e=>{e.stopPropagation(),a.progressbar.classList.remove("active"),a.close()}),t.progressbar&&(a.progressbar.classList.add("active"),t.background?jsPanel.themes.indexOf(t.background)>-1?a.progressbar.classList.add(t.background+"-bg"):jsPanel.colorNames[t.background]?a.progressbar.style.background="#"+jsPanel.colorNames[t.background]:a.progressbar.style.background=t.background:a.progressbar.classList.add("success-bg")),n.style.animation=`${t.time} progressbar`}if(e.rtl&&a.setRtl(),a.setSize(),a.status="normalized",e.position?this.position(a,e.position):a.style.opacity=1,document.dispatchEvent(i),a.calcSizeFactors(),e.animateIn&&(a.addEventListener("animationend",()=>{this.remClass(a,e.animateIn)}),this.setClass(a,e.animateIn)),e.syncMargins){let t=this.pOcontainment(e.maximizedMargin);e.dragit&&(e.dragit.containment=t,!0===e.dragit.snap?(e.dragit.snap=jsPanel.defaultSnapConfig,e.dragit.snap.containment=!0):e.dragit.snap&&(e.dragit.snap.containment=!0)),e.resizeit&&(e.resizeit.containment=t)}if(e.dragit?(["start","drag","stop"].forEach(t=>{e.dragit[t]?"function"==typeof e.dragit[t]&&(e.dragit[t]=[e.dragit[t]]):e.dragit[t]=[]}),a.drag(e.dragit),a.addEventListener("jspaneldragstop",e=>{e.panel===a&&a.calcSizeFactors()},!1)):a.titlebar.style.cursor="default",e.resizeit){["start","resize","stop"].forEach(t=>{e.resizeit[t]?"function"==typeof e.resizeit[t]&&(e.resizeit[t]=[e.resizeit[t]]):e.resizeit[t]=[]}),a.sizeit(e.resizeit);let t=void 0;a.addEventListener("jspanelresizestart",e=>{e.panel===a&&(t=a.status)},!1),a.addEventListener("jspanelresizestop",n=>{n.panel===a&&("smallified"===t||"smallifiedmax"===t||"maximized"===t)&&parseFloat(a.style.height)>parseFloat(window.getComputedStyle(a.header).height)&&(a.setControls([".jsPanel-btn-normalize"]),a.status="normalized",document.dispatchEvent(i),document.dispatchEvent(s),e.onstatuschange&&jsPanel.processCallbacks(a,e.onstatuschange,"every"),a.calcSizeFactors())},!1)}if(a.saveCurrentDimensions(!0),a.saveCurrentPosition(),e.setStatus&&("smallifiedmax"===e.setStatus?a.maximize().smallify():"smallified"===e.setStatus?a.smallify():a[e.setStatus.substr(0,e.setStatus.length-1)]()),this.pointerdown.forEach(t=>{a.addEventListener(t,t=>{t.target.closest(".jsPanel-btn-close")||t.target.closest(".jsPanel-btn-minimize")||"standard"!==e.paneltype||a.front()},!1)}),e.onwindowresize&&"window"===a.options.container&&window.addEventListener("resize",a.windowResizeHandler,!1),e.onparentresize){let t=e.onparentresize,n=a.isChildpanel();if(n){const e=n.content;let o=[];a.parentResizeHandler=(l=>{if(l.panel===n){o[0]=e.offsetWidth,o[1]=e.offsetHeight;let n,l,s=a.status;"maximized"===s&&t?a.maximize():a.snapped&&"minimized"!==s?a.snap(a.snapped,!0):"normalized"===s||"smallified"===s||"maximized"===s?"function"==typeof t?t.call(a,a,{width:o[0],height:o[1]}):(n=(o[0]-a.offsetWidth)*a.hf,a.style.left=n<=0?0:n+"px",l=(o[1]-a.offsetHeight)*a.vf,a.style.top=l<=0?0:l+"px"):"smallifiedmax"===s&&t&&a.maximize().smallify()}}),document.addEventListener("jspanelresize",a.parentResizeHandler,!1)}}return this.globalCallbacks&&(Array.isArray(this.globalCallbacks)?this.globalCallbacks.forEach(e=>{e.call(a,a)}):this.globalCallbacks.call(a,a)),e.callback&&(Array.isArray(e.callback)?e.callback.forEach(e=>{e.call(a,a)}):e.callback.call(a,a)),t&&t.call(a,a),document.dispatchEvent(l),a}}; \ No newline at end of file diff --git a/package.json b/package.json index 3629044..4a3a891 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jspanel4", - "version": "4.11.2", + "version": "4.11.3", "description": "A JavaScript library to create highly configurable multifunctional floating panels that can also be used as modal, tooltip, hint or contextmenu", "keywords": [ "jsPanel", @@ -39,10 +39,10 @@ "email": "info@jspanel.de" }, "devDependencies": { - "@babel/cli": "^7.12.8", - "@babel/core": "^7.12.9", - "@babel/preset-env": "^7.12.7", - "eslint": "^7.15.0", + "@babel/cli": "^7.12.10", + "@babel/core": "^7.12.10", + "@babel/preset-env": "^7.12.11", + "eslint": "^7.19.0", "eslint-config-standard": "^16.0.2", "eslint-plugin-import": "^2.22.1", "eslint-plugin-node": "^11.1.0", @@ -58,7 +58,7 @@ "gulp-rename": "^2.0.0", "gulp-sass": "^4.1.0", "node-sass": "4.14.1", - "npm": "^6.14.9", + "npm": "^6.14.11", "prettier": "^2.2.1" }, "prettier": { diff --git a/source/extensions/contextmenu/jspanel.contextmenu.js b/source/extensions/contextmenu/jspanel.contextmenu.js index d02cd87..99bb499 100644 --- a/source/extensions/contextmenu/jspanel.contextmenu.js +++ b/source/extensions/contextmenu/jspanel.contextmenu.js @@ -1,7 +1,7 @@ if (!jsPanel.contextmenu) { jsPanel.contextmenu = { - version: '1.1.3', - date: '2020-04-26 08:07', + version: '1.2.0', + date: '2021-01-13 10:40', defaults: { //position: is set in jsPanel.contextmenu.create() @@ -9,7 +9,8 @@ if (!jsPanel.contextmenu) { dragit: false, resizeit: false, header: false, - headerControls: 'none' + headerControls: 'none', + closeOnMouseleave: true }, cmOverflow(elmt) { @@ -95,13 +96,15 @@ if (!jsPanel.contextmenu) { // update left/top values if menu overflows browser viewport jsPanel.contextmenu.cmOverflow(cm); - cm.addEventListener( - 'mouseleave', - () => { - cm.close(); - }, - false - ); + if (opts.closeOnMouseleave) { + cm.addEventListener( + 'mouseleave', + () => { + cm.close(); + }, + false + ); + } // don't close contextmenu on mousedown in contextmenu jsPanel.pointerdown.forEach(function(evt) { cm.addEventListener(evt, function(e) { diff --git a/source/extensions/layout/jspanel.layout.js b/source/extensions/layout/jspanel.layout.js index 041ee73..8cf01f1 100644 --- a/source/extensions/layout/jspanel.layout.js +++ b/source/extensions/layout/jspanel.layout.js @@ -1,7 +1,7 @@ if (!jsPanel.layout) { jsPanel.layout = { - version: '1.4.0', - date: '2020-03-09 13:54', + version: '1.4.1', + date: '2021-01-19 10:50', storage: localStorage, save(saveConfig = {}) { @@ -105,7 +105,7 @@ if (!jsPanel.layout) { }; let useConfig = Object.assign({}, config, savedConfig); - jsPanel.create(useConfig, panel => { + return jsPanel.create(useConfig, panel => { panel.style.zIndex = savedConfig.zIndex; panel.saveCurrentDimensions(); panel.saveCurrentPosition(); diff --git a/source/jspanel.js b/source/jspanel.js index 3bff05e..e3d8d09 100644 --- a/source/jspanel.js +++ b/source/jspanel.js @@ -1,7 +1,7 @@ // eslint-disable-next-line no-redeclare let jsPanel = { - version: '4.11.2', - date: '2020-12-09 10:10', + version: '4.11.3', + date: '2021-02-03 16:21', ajaxAlwaysCallbacks: [], autopositionSpacing: 4, closeOnEscape: (() => { @@ -3119,7 +3119,7 @@ let jsPanel = { let handles = options.handles || jsPanel.defaults.dragit.handles; let cursor = options.cursor || jsPanel.defaults.dragit.cursor; - function pointerUpHandler(e, event) { + function pointerUpHandlerDragit(e) { jsPanel.pointermove.forEach((e) => { document.removeEventListener(e, dragElmt); }); @@ -3193,7 +3193,7 @@ let jsPanel = { document.querySelectorAll('iframe').forEach((frame) => { frame.style.pointerEvents = 'auto'; }); - document.removeEventListener(event, pointerUpHandler); + document.removeEventListener(e, pointerUpHandlerDragit); } self.querySelectorAll(handles).forEach((handle) => { @@ -3643,7 +3643,7 @@ let jsPanel = { }); jsPanel.pointerup.forEach((event) => { - document.addEventListener(event, pointerUpHandler); + document.addEventListener(event, pointerUpHandlerDragit); window.removeEventListener('mouseout', windowListener); }); @@ -3704,6 +3704,96 @@ let jsPanel = { } } + function pointerUpHandlerResizeit(e) { + jsPanel.pointermove.forEach((evt) => { + document.removeEventListener(evt, resizePanel, false); + }); + if (e.target.classList && e.target.classList.contains('jsPanel-resizeit-handle')) { + let isLeftChange, + isTopChange, + cl = e.target.className; + if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)) { + isLeftChange = true; + } + if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)) { + isTopChange = true; + } + + // snap panel to grid (doesn't work that well if inside function resizePanel) + if (opts.grid && Array.isArray(opts.grid)) { + if (opts.grid.length === 1) { + opts.grid[1] = opts.grid[0]; + } + const cw = parseFloat(self.style.width), + ch = parseFloat(self.style.height), + modW = cw % opts.grid[0], + modH = ch % opts.grid[1], + cx = parseFloat(self.style.left), + cy = parseFloat(self.style.top), + modX = cx % opts.grid[0], + modY = cy % opts.grid[1]; + + if (modW < opts.grid[0] / 2) { + self.style.width = cw - modW + 'px'; + } else { + self.style.width = cw + (opts.grid[0] - modW) + 'px'; + } + if (modH < opts.grid[1] / 2) { + self.style.height = ch - modH + 'px'; + } else { + self.style.height = ch + (opts.grid[1] - modH) + 'px'; + } + + if (isLeftChange) { + if (modX < opts.grid[0] / 2) { + self.style.left = cx - modX + 'px'; + } else { + self.style.left = cx + (opts.grid[0] - modX) + 'px'; + } + } + if (isTopChange) { + if (modY < opts.grid[1] / 2) { + self.style.top = cy - modY + 'px'; + } else { + self.style.top = cy + (opts.grid[1] - modY) + 'px'; + } + } + } + } + if (resizestarted) { + self.content.style.pointerEvents = 'inherit'; + resizestarted = undefined; + self.saveCurrentDimensions(); + self.saveCurrentPosition(); + self.calcSizeFactors(); + let smallifyBtn = self.controlbar.querySelector('.jsPanel-btn-smallify'); + let elmtRect = self.getBoundingClientRect(); + if (smallifyBtn && elmtRect.height > startHeight + 5) { + smallifyBtn.style.transform = 'rotate(0deg)'; + } + document.dispatchEvent(jspanelresizestop); + + if (opts.stop.length) { + let stopStyles = window.getComputedStyle(self), + paneldata = { + left: parseFloat(stopStyles.left), + top: parseFloat(stopStyles.top), + width: parseFloat(stopStyles.width), + height: parseFloat(stopStyles.height), + }; + jsPanel.processCallbacks(self, opts.stop, false, paneldata, e); + } + } + self.content.style.pointerEvents = 'inherit'; + // restore other panel's css pointer-events + document.querySelectorAll('iframe').forEach((frame) => { + frame.style.pointerEvents = 'auto'; + }); + // restore option aspectRatio to original configuration + opts.aspectRatio = cachedOptionAspectRatio; + document.removeEventListener(e, pointerUpHandlerResizeit); + } + self.querySelectorAll('.jsPanel-resizeit-handle').forEach((handle) => { handle.style.touchAction = 'none'; @@ -4298,101 +4388,7 @@ let jsPanel = { }); jsPanel.pointerup.forEach(function (event) { - document.addEventListener( - event, - (e) => { - jsPanel.pointermove.forEach((evt) => { - document.removeEventListener(evt, resizePanel, false); - }); - - if (e.target.classList && e.target.classList.contains('jsPanel-resizeit-handle')) { - let isLeftChange, - isTopChange, - cl = e.target.className; - if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-w|jsPanel-resizeit-sw/i)) { - isLeftChange = true; - } - if (cl.match(/jsPanel-resizeit-nw|jsPanel-resizeit-n|jsPanel-resizeit-ne/i)) { - isTopChange = true; - } - - // snap panel to grid (doesn't work that well if inside function resizePanel) - if (opts.grid && Array.isArray(opts.grid)) { - if (opts.grid.length === 1) { - opts.grid[1] = opts.grid[0]; - } - const cw = parseFloat(self.style.width), - ch = parseFloat(self.style.height), - modW = cw % opts.grid[0], - modH = ch % opts.grid[1], - cx = parseFloat(self.style.left), - cy = parseFloat(self.style.top), - modX = cx % opts.grid[0], - modY = cy % opts.grid[1]; - - if (modW < opts.grid[0] / 2) { - self.style.width = cw - modW + 'px'; - } else { - self.style.width = cw + (opts.grid[0] - modW) + 'px'; - } - if (modH < opts.grid[1] / 2) { - self.style.height = ch - modH + 'px'; - } else { - self.style.height = ch + (opts.grid[1] - modH) + 'px'; - } - - if (isLeftChange) { - if (modX < opts.grid[0] / 2) { - self.style.left = cx - modX + 'px'; - } else { - self.style.left = cx + (opts.grid[0] - modX) + 'px'; - } - } - if (isTopChange) { - if (modY < opts.grid[1] / 2) { - self.style.top = cy - modY + 'px'; - } else { - self.style.top = cy + (opts.grid[1] - modY) + 'px'; - } - } - } - } - - if (resizestarted) { - self.content.style.pointerEvents = 'inherit'; - resizestarted = undefined; - self.saveCurrentDimensions(); - self.saveCurrentPosition(); - self.calcSizeFactors(); - let smallifyBtn = self.controlbar.querySelector('.jsPanel-btn-smallify'); - let elmtRect = self.getBoundingClientRect(); - if (smallifyBtn && elmtRect.height > startHeight + 5) { - smallifyBtn.style.transform = 'rotate(0deg)'; - } - document.dispatchEvent(jspanelresizestop); - - if (opts.stop.length) { - let stopStyles = window.getComputedStyle(self), - paneldata = { - left: parseFloat(stopStyles.left), - top: parseFloat(stopStyles.top), - width: parseFloat(stopStyles.width), - height: parseFloat(stopStyles.height), - }; - jsPanel.processCallbacks(self, opts.stop, false, paneldata, e); - } - } - - self.content.style.pointerEvents = 'inherit'; - // restore other panel's css pointer-events - document.querySelectorAll('iframe').forEach((frame) => { - frame.style.pointerEvents = 'auto'; - }); - // restore option aspectRatio to original configuration - opts.aspectRatio = cachedOptionAspectRatio; - }, - false - ); + document.addEventListener(event, pointerUpHandlerResizeit); window.removeEventListener('mouseout', windowListener); }); @@ -4468,6 +4464,14 @@ let jsPanel = { }); jsPanel.position(self, pos); + + // check whether self has docked panels -> reposition docked panels as well + if (self.slaves && self.slaves.size > 0) { + self.slaves.forEach((slave) => { + slave.reposition(); + }); + } + if (updateCache) { self.saveCurrentPosition(); } @@ -4627,6 +4631,14 @@ let jsPanel = { let values = jsPanel.pOsize(self, size); self.style.width = values.width; self.style.height = values.height; + + // check whether self has docked panels -> reposition docked panels + if (self.slaves && self.slaves.size > 0) { + self.slaves.forEach((slave) => { + slave.reposition(); + }); + } + if (updateCache) { self.saveCurrentDimensions(); } @@ -4664,6 +4676,14 @@ let jsPanel = { } else if (status === 'smallifiedmax' && onWindowResize) { self.maximize(false, true).smallify(); } + + // check whether self has docked panels -> reposition docked panels as well + if (self.slaves && self.slaves.size > 0) { + self.slaves.forEach((slave) => { + slave.reposition(); + }); + } + } };